decocms 2.300.0 → 2.300.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/client/assets/{AlertCircle-DQvE1HHW.js → AlertCircle-CDtbI_oO.js} +1 -1
  2. package/dist/client/assets/{ArrowNarrowLeft-JeNHsl7t.js → ArrowNarrowLeft-CJ8McWmC.js} +1 -1
  3. package/dist/client/assets/{ArrowUpRight-DrX0ZBVK.js → ArrowUpRight-CfmSEQdr.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-jz1wj0OZ.js → CheckCircle-BfnVNP63.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-CJXiv6mb.js → ChevronDown-BKNJxAvQ.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-jhe98Hpl.js → ChevronRight-DmLVJ7rn.js} +1 -1
  7. package/dist/client/assets/{ChevronUp--G-qrAEM.js → ChevronUp-CsX2yfUc.js} +1 -1
  8. package/dist/client/assets/{Container-LZZyJPZO.js → Container-DASuUdbK.js} +1 -1
  9. package/dist/client/assets/{DotsVertical-B-LaCx0W.js → DotsVertical-CiluvdTj.js} +1 -1
  10. package/dist/client/assets/{LinkExternal01-2sbW7UGS.js → LinkExternal01-CPmlMGsQ.js} +1 -1
  11. package/dist/client/assets/{Lock01-BOEORqQ0.js → Lock01-BjCX4hvk.js} +1 -1
  12. package/dist/client/assets/{Palette-CZdOy-tN.js → Palette-CmFr12m3.js} +1 -1
  13. package/dist/client/assets/{Play-CVmYi0Gz.js → Play-AcQdYeyW.js} +1 -1
  14. package/dist/client/assets/{Plus-0qTCNeQu.js → Plus-DkESyBkp.js} +1 -1
  15. package/dist/client/assets/{RefreshCcw01-CczH9hEb.js → RefreshCcw01-DLpzNYLg.js} +1 -1
  16. package/dist/client/assets/{SearchMd-D3ej9sdm.js → SearchMd-RHgmu5nb.js} +1 -1
  17. package/dist/client/assets/{Settings02-DSMqESXP.js → Settings02-BgsL1r4k.js} +1 -1
  18. package/dist/client/assets/{Shield01-Dk5a3EIz.js → Shield01-BndBIezR.js} +1 -1
  19. package/dist/client/assets/{Star01-BRqpvEVh.js → Star01-CRQ6Bc0M.js} +1 -1
  20. package/dist/client/assets/{Sun-D-zn2wQr.js → Sun-DKXWmMuG.js} +1 -1
  21. package/dist/client/assets/{Tool01-ta8c5owo.js → Tool01-CRyHj4QJ.js} +1 -1
  22. package/dist/client/assets/{Trash01-piYSxXuV.js → Trash01-CfK96-qY.js} +1 -1
  23. package/dist/client/assets/{User01-BRe74tu_.js → User01-KY-MO20F.js} +1 -1
  24. package/dist/client/assets/{Users03-BthJNdjb.js → Users03-BCFGwdah.js} +1 -1
  25. package/dist/client/assets/{X-Bs-K3rP3.js → X-ZLJ81KrS.js} +1 -1
  26. package/dist/client/assets/{XCircle-W80KsA2R.js → XCircle-B2dZZ7-3.js} +1 -1
  27. package/dist/client/assets/{XClose-BvTeI7_p.js → XClose-DXU_tOKb.js} +1 -1
  28. package/dist/client/assets/{Zap-CruZDu0W.js → Zap-25qc4enN.js} +1 -1
  29. package/dist/client/assets/{ZapSquare-oPqMGrmK.js → ZapSquare-D6uI2CIK.js} +1 -1
  30. package/dist/client/assets/{accordion-CbzOgqka.js → accordion-D3bxaM5e.js} +1 -1
  31. package/dist/client/assets/{agent-icon-a5rgdmvn.js → agent-icon-Y41Xl4RB.js} +1 -1
  32. package/dist/client/assets/{agents-list-DUOWHygM.js → agents-list-mS9MVQZN.js} +1 -1
  33. package/dist/client/assets/ai-providers-BRoGM2rY.js +1 -0
  34. package/dist/client/assets/ai-providers-logos-DD3qZ33J.js +1 -0
  35. package/dist/client/assets/{alert-dialog-DpjW0duE.js → alert-dialog-DnoDZh7l.js} +1 -1
  36. package/dist/client/assets/{auth-catchall-DdrEC2nk.js → auth-catchall-BoFlqYg1.js} +1 -1
  37. package/dist/client/assets/{automation-list-row-DmDAOiMK.js → automation-list-row-CAHW7UMQ.js} +1 -1
  38. package/dist/client/assets/{automations-BGpDui88.js → automations-PZEFUnMk.js} +1 -1
  39. package/dist/client/assets/{avatar-C9H5J0ZH.js → avatar-C1td1Be6.js} +1 -1
  40. package/dist/client/assets/{badge-DM1yKdHA.js → badge-BQ5WsTn4.js} +1 -1
  41. package/dist/client/assets/{brand-context-CHgKeNYL.js → brand-context-DIIOMD2x.js} +1 -1
  42. package/dist/client/assets/{card-D3EHlDqN.js → card-DQYOkC6d.js} +1 -1
  43. package/dist/client/assets/{chat-context-BTwAu2wE.js → chat-context-hgW5gAmm.js} +1 -1
  44. package/dist/client/assets/{checkbox-BfEy2ev6.js → checkbox-DkmOdGV4.js} +1 -1
  45. package/dist/client/assets/{collection-detail-CwiJKTp0.js → collection-detail-tXsv3iGO.js} +1 -1
  46. package/dist/client/assets/{collection-display-button-I1MRNJca.js → collection-display-button-8PlYmXiO.js} +1 -1
  47. package/dist/client/assets/{collection-search-BDlHgig4.js → collection-search-B7ehvlGW.js} +1 -1
  48. package/dist/client/assets/{collection-search-DTXYBhEG.js → collection-search-CqdVjZKz.js} +1 -1
  49. package/dist/client/assets/{collection-table-wrapper-BZgayY2v.js → collection-table-wrapper-DtBSTmHD.js} +1 -1
  50. package/dist/client/assets/{collection-tabs-ZB2vm_Ts.js → collection-tabs-BymkuH-J.js} +1 -1
  51. package/dist/client/assets/{collections-B4NDDkQp.js → collections-DusXIGhy.js} +1 -1
  52. package/dist/client/assets/{command-C8axDPx1.js → command-BCmTpu4J.js} +1 -1
  53. package/dist/client/assets/{connection-card-B8zimY_1.js → connection-card-Bfng1y5O.js} +1 -1
  54. package/dist/client/assets/{connection-detail-CteDwS0C.js → connection-detail-BvkQKjE1.js} +1 -1
  55. package/dist/client/assets/{connection-form-helpers-DW_KgaUQ.js → connection-form-helpers-DmVfKyR2.js} +1 -1
  56. package/dist/client/assets/{connections-DDRTvEHs.js → connections-BOpJFAVW.js} +1 -1
  57. package/dist/client/assets/{constants-6-xiUPcQ.js → constants-Da2DvZbd.js} +1 -1
  58. package/dist/client/assets/{constants-o7_eEaEl.js → constants-Dm-yPW31.js} +1 -1
  59. package/dist/client/assets/{dialog-Bt7s8NCP.js → dialog-D0LCITx0.js} +1 -1
  60. package/dist/client/assets/{domain-settings-2mBA4m9S.js → domain-settings-D2GqzT5W.js} +1 -1
  61. package/dist/client/assets/{drawer-a25q5Lla.js → drawer-DWuqMoty.js} +1 -1
  62. package/dist/client/assets/{dropdown-menu-BNdhp1TS.js → dropdown-menu-BooeaeZW.js} +1 -1
  63. package/dist/client/assets/{dynamic-plugin-layout-COSx8up3.js → dynamic-plugin-layout-BBI0fzcH.js} +1 -1
  64. package/dist/client/assets/{empty-state-DfhDT_rL.js → empty-state-DtXUXgFg.js} +1 -1
  65. package/dist/client/assets/{empty-state-TuyNETUf.js → empty-state-V_MWZYVh.js} +1 -1
  66. package/dist/client/assets/{extract-connection-data-D-LoPsgm.js → extract-connection-data-JkyrF-5k.js} +1 -1
  67. package/dist/client/assets/{features-Dlqphz2t.js → features-BRMl1rr6.js} +1 -1
  68. package/dist/client/assets/{form-DdyedIOG.js → form-3xE0OqGj.js} +1 -1
  69. package/dist/client/assets/{general-B4yYUcgX.js → general-CkXiaAh9.js} +1 -1
  70. package/dist/client/assets/{index-CyHkfxs2.js → index-BOmAbn3-.js} +2 -2
  71. package/dist/client/assets/{index-kpfWZVBp.js → index-BSli4TIm.js} +1 -1
  72. package/dist/client/assets/{index-DiI3qNgk.js → index-BUabcSp1.js} +1 -1
  73. package/dist/client/assets/{index-DK4Y3HO1.js → index-BXOHXvkd.js} +1 -1
  74. package/dist/client/assets/{index-EieaBqsE.js → index-Bh9ip1xM.js} +1 -1
  75. package/dist/client/assets/{index-Cpu398f4.js → index-By-OUdid.js} +1 -1
  76. package/dist/client/assets/{index-0ONdtZvR.js → index-C2XzR7MH.js} +1 -1
  77. package/dist/client/assets/index-CUHQFzXU.js +1 -0
  78. package/dist/client/assets/{index-DrWfdeB3.js → index-CdUEwHcT.js} +1 -1
  79. package/dist/client/assets/{index-CFysdS9W.js → index-Cm97pdLv.js} +1 -1
  80. package/dist/client/assets/{index-CPCIVubP.js → index-D1vwSlce.js} +1 -1
  81. package/dist/client/assets/{index-C656JC4f.js → index-D2cvrx8-.js} +1 -1
  82. package/dist/client/assets/{index-DC8ny_LW.js → index-Db1yn84L.js} +3 -3
  83. package/dist/client/assets/{index-CQbllXV7.js → index-DcLrVfh1.js} +1 -1
  84. package/dist/client/assets/{index-prfGmBrm.js → index-DqWkjFjy.js} +1 -1
  85. package/dist/client/assets/{index-BLw8IR3q.js → index-oZ72eHkF.js} +1 -1
  86. package/dist/client/assets/{infiniteQueryObserver-WKNIeKEe.js → infiniteQueryObserver-ruN3KSWZ.js} +1 -1
  87. package/dist/client/assets/{input-DocW6-0a.js → input-DFMPKZJm.js} +1 -1
  88. package/dist/client/assets/{integration-icon-DtlHVjfw.js → integration-icon-Bu4bZk46.js} +1 -1
  89. package/dist/client/assets/{label-DbfzJMol.js → label-DZwWOqq7.js} +1 -1
  90. package/dist/client/assets/{layout-Csh5DA6j.js → layout-DktxHUWV.js} +1 -1
  91. package/dist/client/assets/{lean-canvas-recruit-modal-DUB9h6gA.js → lean-canvas-recruit-modal-KLORFsWq.js} +1 -1
  92. package/dist/client/assets/{login-D1QEp6zv.js → login-Qjtx70Ay.js} +1 -1
  93. package/dist/client/assets/{members-CW5_GrD2.js → members-CB5ygrXY.js} +1 -1
  94. package/dist/client/assets/{monaco-editor-CteNuuJr.js → monaco-editor-BMXf_ICC.js} +1 -1
  95. package/dist/client/assets/{monitoring-stats-row-C3CIix3j.js → monitoring-stats-row-hB6Djn4O.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-DvWEpCtv.js → oauth-callback-Cgk_ji97.js} +1 -1
  97. package/dist/client/assets/{oauth-callback-ai-provider-D6aB3jn_.js → oauth-callback-ai-provider-BWQb53Zq.js} +1 -1
  98. package/dist/client/assets/{onboarding-CSq15NJd.js → onboarding-BJq0uANa.js} +1 -1
  99. package/dist/client/assets/{org-layout-BcG-IuRM.js → org-layout-BOmngSEh.js} +1 -1
  100. package/dist/client/assets/{org-plugin-layout-R-CfCKdC.js → org-plugin-layout-DYC_-fTx.js} +1 -1
  101. package/dist/client/assets/{pair-4EJpDs9f.js → pair-Ds1EbiW2.js} +1 -1
  102. package/dist/client/assets/{plugin-empty-state-C1qJ21wH.js → plugin-empty-state-D34qTA46.js} +1 -1
  103. package/dist/client/assets/{plugin-header-CnnrJKt7.js → plugin-header-D19z2yPe.js} +1 -1
  104. package/dist/client/assets/{plugin-layout-OKTV_231.js → plugin-layout-DBmHNWl4.js} +1 -1
  105. package/dist/client/assets/{popover-BD8OsO_3.js → popover-Cvs9u_0D.js} +1 -1
  106. package/dist/client/assets/{profile-CPpu_rOC.js → profile-_mVuN_Pw.js} +1 -1
  107. package/dist/client/assets/{project-app-view-gL9oMI0P.js → project-app-view-BWTIFTZt.js} +1 -1
  108. package/dist/client/assets/registry-BYjdxPj0.js +2 -0
  109. package/dist/client/assets/{registry-layout-CNGnjhXy.js → registry-layout-BiMLaZ5I.js} +1 -1
  110. package/dist/client/assets/{required-auth-layout-crEy15On.js → required-auth-layout-CGJ5rk5i.js} +1 -1
  111. package/dist/client/assets/{reset-password-kcnAbcv3.js → reset-password-CaWZrhgz.js} +1 -1
  112. package/dist/client/assets/{roles-DYIwGuDN.js → roles-ychtuZ_l.js} +1 -1
  113. package/dist/client/assets/{scroll-area-DuFte1VC.js → scroll-area-DaS5ALMq.js} +1 -1
  114. package/dist/client/assets/{search-input-DQy0Ln81.js → search-input-C4vXNPxO.js} +1 -1
  115. package/dist/client/assets/{select-Ceunqeln.js → select-Czs_bVht.js} +1 -1
  116. package/dist/client/assets/{select-model-UWZWvXzk.js → select-model-BAqBST4u.js} +1 -1
  117. package/dist/client/assets/{settings-layout-DMvCQRt1.js → settings-layout-CKeL2zhm.js} +1 -1
  118. package/dist/client/assets/{settings-section-iYYh-GAG.js → settings-section-D1IZyeMZ.js} +1 -1
  119. package/dist/client/assets/{shell-layout-B8B_ABl6.js → shell-layout-C3cZnoYI.js} +1 -1
  120. package/dist/client/assets/{skeleton-D9tsK-SD.js → skeleton-DFL6A56z.js} +1 -1
  121. package/dist/client/assets/{sso-D0aPF4WO.js → sso-C4f0AfMQ.js} +1 -1
  122. package/dist/client/assets/{store-dscxfYPH.js → store-CEIp74Dt.js} +1 -1
  123. package/dist/client/assets/store-registry-B0W6zcCj.js +2 -0
  124. package/dist/client/assets/{switch-PJFUwNv2.js → switch-CgZ8SLcM.js} +1 -1
  125. package/dist/client/assets/{table-B0qcR2jp.js → table-bZ3KC8o2.js} +1 -1
  126. package/dist/client/assets/{tabs-CbvFgdFf.js → tabs-CQg6na0A.js} +1 -1
  127. package/dist/client/assets/{task-status-C0VnLSBE.js → task-status-ZLGfD6LC.js} +1 -1
  128. package/dist/client/assets/{textarea-BBy60ci1.js → textarea-dZeCqaKZ.js} +1 -1
  129. package/dist/client/assets/{toggle-group-wE6dZdNy.js → toggle-group-BWbe6Sle.js} +1 -1
  130. package/dist/client/assets/{tools-list-B1mXoVnY.js → tools-list-Cs00fcMQ.js} +1 -1
  131. package/dist/client/assets/{tooltip-MEij__fd.js → tooltip-f4eQJmkn.js} +1 -1
  132. package/dist/client/assets/{types-DfUe_JMo.js → types-BxKF_I-u.js} +1 -1
  133. package/dist/client/assets/{use-ai-providers-BsFsk2om.js → use-ai-providers-CTaSMN44.js} +1 -1
  134. package/dist/client/assets/{use-collections-CuFil9_H.js → use-collections-ciAA_3Td.js} +1 -1
  135. package/dist/client/assets/{use-connection-CyKUB7va.js → use-connection-DcySEqVV.js} +1 -1
  136. package/dist/client/assets/{use-copy-L-Votg83.js → use-copy-VDNca3ax.js} +1 -1
  137. package/dist/client/assets/{use-create-virtual-mcp-DCZ_Q4yV.js → use-create-virtual-mcp-BosIHDl_.js} +1 -1
  138. package/dist/client/assets/{use-decopilot-events-BU0YCIkb.js → use-decopilot-events-CJG2rWbg.js} +1 -1
  139. package/dist/client/assets/{use-delete-connection-CH1yR3V8.js → use-delete-connection-BHdNUeNC.js} +1 -1
  140. package/dist/client/assets/{use-infinite-scroll-CQf3beQh.js → use-infinite-scroll-Cd7090oj.js} +1 -1
  141. package/dist/client/assets/{use-list-state-BO6QgJwM.js → use-list-state-B_mnqmDh.js} +1 -1
  142. package/dist/client/assets/{use-mcp-tools-UR7Tvr-a.js → use-mcp-tools-C9cj3BH6.js} +1 -1
  143. package/dist/client/assets/{use-members-0EtHtToT.js → use-members-YqP0IEDf.js} +1 -1
  144. package/dist/client/assets/{use-navigate-to-agent-C4FkilnS.js → use-navigate-to-agent-KmcfdsLb.js} +1 -1
  145. package/dist/client/assets/{use-org-auth-client-DSFb3AOu.js → use-org-auth-client-DKAFGF5X.js} +1 -1
  146. package/dist/client/assets/{use-org-sso-uVWWV8lc.js → use-org-sso-BUVEFfyx.js} +1 -1
  147. package/dist/client/assets/{use-organization-roles-DBQSLgAo.js → use-organization-roles-BY88cyRn.js} +1 -1
  148. package/dist/client/assets/{use-organization-settings-D388Q9Bl.js → use-organization-settings-BrpxY44K.js} +1 -1
  149. package/dist/client/assets/{use-registry-connections-Cdqd9fMq.js → use-registry-connections-C5Res-NO.js} +1 -1
  150. package/dist/client/assets/{use-status-sounds-DcqY0aWN.js → use-status-sounds-DF_LdFlX.js} +1 -1
  151. package/dist/client/assets/{use-tasks-BJrgZKAK.js → use-tasks-DjQnA3sr.js} +1 -1
  152. package/dist/client/assets/{use-view-mode-DLgQEYRO.js → use-view-mode-pmOkpC-l.js} +1 -1
  153. package/dist/client/assets/{use-virtual-mcp-MAVDLFj3.js → use-virtual-mcp-D8YFOZwW.js} +1 -1
  154. package/dist/client/assets/useInfiniteQuery-z1Rh4SPR.js +1 -0
  155. package/dist/client/assets/useSuspenseInfiniteQuery-DmArxoRp.js +1 -0
  156. package/dist/client/assets/{user-DvRNamCQ.js → user-BG2r6Yob.js} +1 -1
  157. package/dist/client/assets/{view-mode-toggle-D8-KKhvu.js → view-mode-toggle-iIz_yTY4.js} +1 -1
  158. package/dist/client/assets/workflow-detail-hy-jKDKn.js +1 -0
  159. package/dist/client/assets/{workflow-C2dwTU43.js → workflow-w5_7cK4m.js} +1 -1
  160. package/dist/client/index.html +1 -1
  161. package/dist/server/cli.js +3 -3
  162. package/dist/server/node_modules/ansi-regex/index.d.ts +33 -0
  163. package/dist/server/node_modules/ansi-regex/index.js +14 -0
  164. package/dist/server/node_modules/ansi-regex/package.json +61 -0
  165. package/dist/server/node_modules/ansi-regex/readme.md +66 -0
  166. package/dist/server/node_modules/ansi-styles/index.d.ts +236 -0
  167. package/dist/server/node_modules/ansi-styles/index.js +223 -0
  168. package/dist/server/node_modules/ansi-styles/license +9 -0
  169. package/dist/server/node_modules/ansi-styles/package.json +54 -0
  170. package/dist/server/node_modules/ansi-styles/readme.md +173 -0
  171. package/dist/server/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  172. package/dist/server/node_modules/emoji-regex/README.md +107 -0
  173. package/dist/server/node_modules/emoji-regex/index.d.ts +3 -0
  174. package/dist/server/node_modules/emoji-regex/index.js +4 -0
  175. package/dist/server/node_modules/emoji-regex/index.mjs +4 -0
  176. package/dist/server/node_modules/emoji-regex/package.json +45 -0
  177. package/dist/server/node_modules/mimic-fn/index.d.ts +54 -0
  178. package/dist/server/node_modules/mimic-fn/index.js +13 -0
  179. package/dist/server/node_modules/mimic-fn/license +9 -0
  180. package/dist/server/node_modules/mimic-fn/package.json +42 -0
  181. package/dist/server/node_modules/mimic-fn/readme.md +69 -0
  182. package/dist/server/node_modules/onetime/index.d.ts +64 -0
  183. package/dist/server/node_modules/onetime/index.js +44 -0
  184. package/dist/server/node_modules/onetime/license +9 -0
  185. package/dist/server/node_modules/onetime/package.json +43 -0
  186. package/dist/server/node_modules/onetime/readme.md +94 -0
  187. package/dist/server/node_modules/pg-int8/LICENSE +13 -0
  188. package/dist/server/node_modules/pg-int8/README.md +16 -0
  189. package/dist/server/node_modules/pg-int8/index.js +100 -0
  190. package/dist/server/node_modules/pg-int8/package.json +24 -0
  191. package/dist/server/node_modules/postgres-array/index.d.ts +4 -0
  192. package/dist/server/node_modules/postgres-array/index.js +97 -0
  193. package/dist/server/node_modules/{pg/LICENSE → postgres-array/license} +6 -6
  194. package/dist/server/node_modules/postgres-array/package.json +35 -0
  195. package/dist/server/node_modules/postgres-array/readme.md +43 -0
  196. package/dist/server/node_modules/postgres-bytea/index.js +33 -0
  197. package/dist/server/node_modules/postgres-bytea/license +21 -0
  198. package/dist/server/node_modules/postgres-bytea/package.json +34 -0
  199. package/dist/server/node_modules/postgres-bytea/readme.md +34 -0
  200. package/dist/server/node_modules/postgres-date/index.js +116 -0
  201. package/dist/server/node_modules/postgres-date/license +21 -0
  202. package/dist/server/node_modules/postgres-date/package.json +33 -0
  203. package/dist/server/node_modules/postgres-date/readme.md +49 -0
  204. package/dist/server/node_modules/postgres-interval/index.d.ts +20 -0
  205. package/dist/server/node_modules/postgres-interval/index.js +125 -0
  206. package/dist/server/node_modules/postgres-interval/license +21 -0
  207. package/dist/server/node_modules/postgres-interval/package.json +36 -0
  208. package/dist/server/node_modules/postgres-interval/readme.md +48 -0
  209. package/dist/server/node_modules/split2/LICENSE +13 -0
  210. package/dist/server/node_modules/split2/README.md +85 -0
  211. package/dist/server/node_modules/split2/bench.js +27 -0
  212. package/dist/server/node_modules/split2/index.js +141 -0
  213. package/dist/server/node_modules/split2/package.json +39 -0
  214. package/dist/server/node_modules/split2/test.js +409 -0
  215. package/dist/server/server.js +2 -2
  216. package/package.json +1 -1
  217. package/dist/client/assets/ai-providers-BrRsZwwm.js +0 -1
  218. package/dist/client/assets/ai-providers-logos-D6a8kmGH.js +0 -1
  219. package/dist/client/assets/index-6xFo1iCj.js +0 -1
  220. package/dist/client/assets/registry-BsoIBUPl.js +0 -2
  221. package/dist/client/assets/store-registry-D40XBFQ3.js +0 -2
  222. package/dist/client/assets/useInfiniteQuery-Cb2JkfVZ.js +0 -1
  223. package/dist/client/assets/useSuspenseInfiniteQuery-JMOXdk3c.js +0 -1
  224. package/dist/client/assets/workflow-detail-BcRuChZH.js +0 -1
  225. package/dist/server/node_modules/get-east-asian-width/index.d.ts +0 -60
  226. package/dist/server/node_modules/get-east-asian-width/index.js +0 -30
  227. package/dist/server/node_modules/get-east-asian-width/lookup-data.js +0 -18
  228. package/dist/server/node_modules/get-east-asian-width/lookup.js +0 -135
  229. package/dist/server/node_modules/get-east-asian-width/package.json +0 -71
  230. package/dist/server/node_modules/get-east-asian-width/readme.md +0 -65
  231. package/dist/server/node_modules/get-east-asian-width/utilities.js +0 -24
  232. package/dist/server/node_modules/pg/README.md +0 -95
  233. package/dist/server/node_modules/pg/esm/index.mjs +0 -20
  234. package/dist/server/node_modules/pg/lib/client.js +0 -743
  235. package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
  236. package/dist/server/node_modules/pg/lib/connection.js +0 -221
  237. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
  238. package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
  239. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
  240. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
  241. package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
  242. package/dist/server/node_modules/pg/lib/defaults.js +0 -91
  243. package/dist/server/node_modules/pg/lib/index.js +0 -73
  244. package/dist/server/node_modules/pg/lib/native/client.js +0 -323
  245. package/dist/server/node_modules/pg/lib/native/index.js +0 -2
  246. package/dist/server/node_modules/pg/lib/native/query.js +0 -165
  247. package/dist/server/node_modules/pg/lib/query.js +0 -252
  248. package/dist/server/node_modules/pg/lib/result.js +0 -109
  249. package/dist/server/node_modules/pg/lib/stream.js +0 -83
  250. package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
  251. package/dist/server/node_modules/pg/lib/utils.js +0 -217
  252. package/dist/server/node_modules/pg/package.json +0 -76
  253. /package/dist/server/node_modules/{get-east-asian-width → ansi-regex}/license +0 -0
@@ -2896,7 +2896,7 @@ Hint: Configure a valid Google account email in Monitor Configuration > Contexto
2896
2896
 
2897
2897
  `);return{toolResults:K,agentSummary:z.length>0?z:null,unexecutedTools:U}}finally{await Y.close?.().catch(()=>{})}}async function cT0(X,Y){let G=X.storage.registry,Q=X.organization.id,J=await G.monitorConnections.findByItemId(Q,Y.id);if(J){if(await X.storage.connections.findById(J.connection_id,Q))return J.connection_id}let $=Hv5(Y);if(!$)throw Error(`Registry item ${Y.id} has no remote URL`);let Z=Wv5(X),W=Kv5(Y),K=await X.storage.connections.create({organization_id:Q,created_by:Z,title:`[MCP Tester] ${Y.title}`,description:`Auto-created monitor connection for ${Y.id}`,app_name:"private-registry-monitor",app_id:`${LM}:monitor`,connection_type:W,connection_url:$,metadata:{monitorConnection:!0,registryItemId:Y.id,pluginId:LM}});return await G.monitorConnections.upsert({organization_id:Q,item_id:Y.id,connection_id:K.id,auth_status:"none"}),K.id}async function Ev5(X){let Y=X.ctx.storage.registry;switch(X.action){case"unlisted":return await Y.items.update(X.organizationId,X.item.id,{is_unlisted:!0}),"unlisted";case"remove_public":return await Y.items.update(X.organizationId,X.item.id,{is_public:!1}),"removed_public";case"remove_private":case"remove_all":return await Y.items.delete(X.organizationId,X.item.id),X.action==="remove_all"?"removed_all":"removed_private";default:return"none"}}async function Pv5(X){let Y=Date.now();if(X.signal.aborted)throw Error("Run cancelled");let G="passed",Q=!1,J=!1,$=null,Z="none",W=null,K=[],H=null,U=async()=>{await X.onProgress?.({status:G,connectionOk:Q,toolsListed:J,toolResults:[...K],agentSummary:W,errorMessage:$,actionTaken:Z,durationMs:Date.now()-Y})};try{let N=await cT0(X.ctx,X.item);H=await X.ctx.createMCPProxy(N),Q=!0;let z=(await XQ1(H.listTools?H.listTools():Promise.resolve({tools:[]}),X.monitorConfig.perMcpTimeoutMs,`listTools ${X.item.id}`)).tools??[];if(J=!0,X.monitorConfig.monitorMode!=="health_check")K.push(...z.map((O)=>dT0(O.name))),await U();if(X.monitorConfig.monitorMode==="full_agent"){let O=await Lv5({ctx:X.ctx,monitorConfig:X.monitorConfig,item:X.item,proxy:H,tools:z,signal:X.signal,onProgress:async(w)=>{K.length=0,K.push(...Q_6({discoveredTools:z,executedResults:w})),G=w.some((E)=>!E.success)?"failed":"passed",await U()}});if(K.length=0,K.push(...Q_6({discoveredTools:z,executedResults:O.toolResults})),W=O.agentSummary,O.toolResults.some((w)=>!w.success))G="failed";if(O.unexecutedTools.length>0){if(G="failed",!$)$=`Agent skipped ${O.unexecutedTools.length} tool(s): ${O.unexecutedTools.join(", ")}`}}else if(X.monitorConfig.monitorMode!=="health_check"){for(let O=0;O<z.length;O++){let w=z[O];if(!w||X.signal.aborted)throw Error("Run cancelled");let E=Date.now();try{let P={},q=await XQ1(H.callTool({name:w.name,arguments:P}),X.monitorConfig.perToolTimeoutMs,`tool ${w.name}`),V=!q.isError,M=Date.now()-E;J_6(K,{toolName:w.name,success:V,input:P,durationMs:M,outputPreview:H_6(q.structuredContent??q.content),error:V?null:CV1(q.content?.find((T)=>T.type==="text")?.text?.slice(0,300)??"Tool returned error")}),await U()}catch(P){let q=Date.now()-E,V=P instanceof Error?P.message:String(P);J_6(K,{toolName:w.name,success:!1,durationMs:q,error:CV1(V)}),await U()}}if(K.some((O)=>!O.success))G="failed"}else for(let O of z)K.push(dT0(O.name));if(X.canApplyFailureAction&&G==="failed"&&X.monitorConfig.onFailure!=="none")Z=await Ev5({ctx:X.ctx,organizationId:X.organizationId,item:X.item,action:X.monitorConfig.onFailure})}catch(N){if($=N instanceof Error?N.message:String(N),Fv5(N))G="needs_auth",await X.ctx.storage.registry.monitorConnections.updateAuthStatus(X.organizationId,X.item.id,"needs_auth");else G="error"}finally{await H?.close?.().catch(()=>{})}return{status:G,connectionOk:Q,toolsListed:J,toolResults:K,agentSummary:W,errorMessage:$,actionTaken:Z,durationMs:Date.now()-Y}}async function qv5(X){let Y=Date.now(),G=X.ctx.storage.registry,J=(await G.items.list(X.organizationId,{includeUnlisted:!0})).items.filter((B)=>{if(X.monitorConfig.testPublicOnly&&!B.is_public)return!1;if(X.monitorConfig.testPrivateOnly&&B.is_public)return!1;return!0}),$=X.monitorConfig.includePendingRequests?(await G.publishRequests.list(X.organizationId,{status:"pending",limit:500})).items.map((B)=>Av5(B)):[],Z=[...J.map((B)=>({item:B,source:"registry_item"})),...$.map((B)=>({item:B,source:"publish_request"}))];if(Z.length===0){await G.monitorRuns.update(X.organizationId,X.runId,{total_items:0,status:"completed",started_at:new Date().toISOString(),finished_at:new Date().toISOString()}),await SV1({ctx:X.ctx,type:"registry.monitor.completed",subject:X.runId,data:{runId:X.runId,total:0}});return}await G.monitorRuns.update(X.organizationId,X.runId,{total_items:Z.length,status:"running",started_at:new Date().toISOString()});let W=0,K=0,H=0,U=0;for(let B=0;B<Z.length;B++){let z=Z[B],O=z?.item;if(!O||X.signal.aborted){await G.monitorRuns.update(X.organizationId,X.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()});return}await G.monitorRuns.update(X.organizationId,X.runId,{current_item_id:O.id});let w=null,E=async(q)=>{if(!w){w=(await G.monitorResults.create({run_id:X.runId,organization_id:X.organizationId,item_id:O.id,item_title:O.title,status:q.status,error_message:q.errorMessage,connection_ok:q.connectionOk,tools_listed:q.toolsListed,tool_results:q.toolResults,agent_summary:q.agentSummary,duration_ms:q.durationMs,action_taken:q.actionTaken})).id;return}await G.monitorResults.update(X.organizationId,w,{status:q.status,error_message:q.errorMessage,connection_ok:q.connectionOk,tools_listed:q.toolsListed,tool_results:q.toolResults,agent_summary:q.agentSummary,duration_ms:q.durationMs,action_taken:q.actionTaken})},P=await Pv5({ctx:X.ctx,organizationId:X.organizationId,item:O,monitorConfig:X.monitorConfig,signal:X.signal,canApplyFailureAction:z.source==="registry_item",onProgress:E});if(await E({status:P.status,connectionOk:P.connectionOk,toolsListed:P.toolsListed,toolResults:P.toolResults,agentSummary:P.agentSummary,errorMessage:P.errorMessage,actionTaken:P.actionTaken,durationMs:P.durationMs}),W+=1,P.status==="passed")K+=1;else if(P.status==="failed"||P.status==="error")H+=1;else U+=1;if(await G.monitorRuns.update(X.organizationId,X.runId,{tested_items:W,passed_items:K,failed_items:H,skipped_items:U}),P.status==="failed"||P.status==="error")await SV1({ctx:X.ctx,type:"registry.monitor.item_failed",subject:O.id,data:{runId:X.runId,itemId:O.id,itemTitle:O.title,status:P.status,errorMessage:P.errorMessage,actionTaken:P.actionTaken}})}let N=Date.now()-Y;await G.monitorRuns.update(X.organizationId,X.runId,{status:"completed",current_item_id:null,finished_at:new Date().toISOString()}),await SV1({ctx:X.ctx,type:"registry.monitor.completed",subject:X.runId,data:{runId:X.runId,total:W,passed:K,failed:H,skipped:U,durationMs:N}})}function Av5(X){return{id:`${pq}${X.id}`,title:X.title,description:X.description,_meta:X._meta,server:X.server,is_public:!1,is_unlisted:!0,created_at:X.created_at,updated_at:X.updated_at}}async function Iv5(X,Y){let G=$v5(X);await G.access.check();let Q=G.storage.registry,J=await Q.monitorRuns.create({organization_id:G.organization.id,status:"pending",config_snapshot:Y,started_at:null}),$=new AbortController;return kV1.set(J.id,$),qv5({ctx:G,runId:J.id,organizationId:G.organization.id,monitorConfig:Y,signal:$.signal}).catch(async(Z)=>{await Q.monitorRuns.update(G.organization.id,J.id,{status:"failed",current_item_id:null,finished_at:new Date().toISOString()}).catch(()=>{}),await SV1({ctx:G,type:"registry.monitor.failed",subject:J.id,data:{runId:J.id,error:Z instanceof Error?Z.message:String(Z)}}),Zv5(`Run ${J.id} failed with uncaught error:`,Z)}).finally(()=>{kV1.delete(J.id)}),{run:{id:J.id}}}var kV1,W_6="[MONITOR-AGENT]",Gv5,Qv5="health_check: not called",N_6;var vV1=D(()=>{y0();u5();IY();aa();zH();kV1=new Map,Gv5=ov6;N_6=l1({name:"REGISTRY_MONITOR_RUN_START",description:"Start an MCP registry monitor run with an isolated set of monitor connections.",inputSchema:IT0,outputSchema:jT0,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=AT0(X.config??{}),{run:J}=await Iv5(Y,Q),Z=await Y.storage.registry.monitorRuns.findById(G.id,J.id);if(!Z)throw Error(`Failed to load monitor run ${J.id}`);return{run:Z}}})});var B_6;var z_6=D(()=>{y0();zH();B_6=l1({name:"REGISTRY_MONITOR_RUN_LIST",description:"List MCP registry monitor runs",inputSchema:MT0,outputSchema:RT0,handler:async(X,Y)=>{let G=s1(Y);return await Y.access.check(),Y.storage.registry.monitorRuns.list(G.id,X)}})});var O_6;var D_6=D(()=>{y0();zH();O_6=l1({name:"REGISTRY_MONITOR_RUN_GET",description:"Get details for one MCP registry monitor run",inputSchema:ST0,outputSchema:kT0,handler:async(X,Y)=>{let G=s1(Y);return await Y.access.check(),{run:await Y.storage.registry.monitorRuns.findById(G.id,X.runId)}}})});var w_6;var L_6=D(()=>{y0();zH();vV1();w_6=l1({name:"REGISTRY_MONITOR_RUN_CANCEL",description:"Cancel a running MCP registry monitor run",inputSchema:TT0,outputSchema:VT0,handler:async(X,Y)=>{let G=s1(Y);return await Y.access.check(),K_6(X.runId),{run:await Y.storage.registry.monitorRuns.update(G.id,X.runId,{status:"cancelled",current_item_id:null,finished_at:new Date().toISOString()})}}})});var E_6;var P_6=D(()=>{y0();zH();E_6=l1({name:"REGISTRY_MONITOR_RESULT_LIST",description:"List results for a given MCP registry monitor run",inputSchema:CT0,outputSchema:vT0,handler:async(X,Y)=>{let G=s1(Y);return await Y.access.check(),Y.storage.registry.monitorResults.listByRun(G.id,X.runId,{status:X.status,limit:X.limit,offset:X.offset})}})});var q_6;var A_6=D(()=>{y0();zH();aa();q_6=l1({name:"REGISTRY_MONITOR_CONNECTION_LIST",description:"List monitor connection mappings for private registry MCP monitor runs, including auth status",inputSchema:_T0,outputSchema:fT0,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry,J=await Q.monitorConnections.list(G.id);return{items:await Promise.all(J.map(async(Z)=>{let W=await Q.items.findById(G.id,Z.item_id);if(!W&&Z.item_id.startsWith(pq)){let U=Z.item_id.slice(pq.length),N=await Q.publishRequests.findById(G.id,U);if(N)W={id:Z.item_id,title:N.title,description:N.description,_meta:N._meta,server:N.server,is_public:!1,is_unlisted:!0,created_at:N.created_at,updated_at:N.updated_at}}let K=W?.server.remotes?.find((U)=>U.url)?.url??null,H=Z.item_id.startsWith(pq)?"request":"store";return{mapping:Z,item:W,remoteUrl:K,source:H}}))}}})});function jv5(X){return{id:`${pq}${X.id}`,title:X.title,description:X.description,_meta:X._meta,server:X.server,is_public:!1,is_unlisted:!0,created_at:X.created_at,updated_at:X.updated_at}}var I_6;var j_6=D(()=>{y0();zH();vV1();aa();I_6=l1({name:"REGISTRY_MONITOR_CONNECTION_SYNC",description:"Ensure every registry item has a dedicated monitor connection mapping for MCP monitors",inputSchema:bT0,outputSchema:yT0,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry,J=(await Q.items.list(G.id,{includeUnlisted:!0})).items,Z=(await Q.publishRequests.list(G.id,{status:"pending",limit:500})).items.map(jv5),W=[...J,...Z],K=await Q.monitorConnections.list(G.id),H=new Set(K.map((N)=>N.item_id)),U=0;for(let N of W){if(!N.server.remotes?.some((B)=>B.url))continue;if(await cT0(Y,N),!H.has(N.id))U+=1}return{created:U,updated:Math.max(W.length-U,0)}}})});var T_6;var V_6=D(()=>{y0();zH();T_6=l1({name:"REGISTRY_MONITOR_CONNECTION_UPDATE_AUTH",description:"Update the auth_status of a monitor connection mapping (by core connection ID)",inputSchema:xT0,outputSchema:hT0,handler:async({connectionId:X,authStatus:Y},G)=>{let Q=s1(G);await G.access.check();let J=G.storage.registry,$=Q.id,Z=await J.monitorConnections.findByConnectionId($,X);if(!Z)throw Error(`No monitor connection mapping found for connection ${X}`);return await J.monitorConnections.updateAuthStatus($,Z.item_id,Y),{success:!0}}})});function YQ1(X){if(!X||typeof X!=="object")return null;let Y=X,G=Y.id;if(typeof G==="string"&&G.length>0)return G;for(let Q of["event","result","structuredContent","content"]){let J=Y[Q],$=YQ1(J);if($)return $}if(Array.isArray(X))for(let Q of X){let J=YQ1(Q);if(J)return J}return null}var M_6;var R_6=D(()=>{y0();u5();zH();M_6=l1({name:"REGISTRY_MONITOR_SCHEDULE_SET",description:"Schedule recurring MCP monitor runs via EVENT_PUBLISH cron",inputSchema:gT0,outputSchema:uT0,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=ZX.SELF(G.id),J=await Y.createMCPProxy(Q);try{let $=await J.callTool({name:"EVENT_PUBLISH",arguments:{type:"registry.monitor.scheduled",subject:"private-registry",cron:X.cronExpression,data:{config:X.config??{}}}});if($.isError)throw Error("Failed to create monitor schedule via EVENT_PUBLISH");let Z=YQ1($.structuredContent)??YQ1($.content)??YQ1($);if(!Z)throw Error("Could not resolve schedule event id from EVENT_PUBLISH");return{scheduleEventId:Z}}finally{await J.close?.().catch(()=>{})}}})});var S_6;var k_6=D(()=>{y0();u5();zH();S_6=l1({name:"REGISTRY_MONITOR_SCHEDULE_CANCEL",description:"Cancel a recurring MCP monitor schedule via EVENT_CANCEL",inputSchema:lT0,outputSchema:mT0,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=ZX.SELF(G.id),J=await Y.createMCPProxy(Q);try{if((await J.callTool({name:"EVENT_CANCEL",arguments:{eventId:X.scheduleEventId}})).isError)throw Error("Failed to cancel monitor schedule via EVENT_CANCEL");return{success:!0}}finally{await J.close?.().catch(()=>{})}}})});function Tv5(X){if(!X)return{};if(typeof X==="string")try{return JSON.parse(X)}catch{return{}}if(typeof X==="object")return X;return{}}async function GQ1(X,Y){let Q=(await X.db.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Y).where("virtual_mcp_plugin_configs.plugin_id","=",LM).execute()).map(($)=>Tv5($.settings)),J={acceptPublishRequests:Q.some(($)=>$.acceptPublishRequests===!0),requireApiToken:Q.some(($)=>$.requireApiToken===!0),storePrivateOnly:Q.some(($)=>$.storePrivateOnly===!0)};if(J.acceptPublishRequests||J.requireApiToken||J.storePrivateOnly)return J;for(let $ of Q)if(Object.keys($).length>0)return $;return{}}var C_6=D(()=>{aa()});function Vv5(X,Y){if(!Y)return X;let G={field:["is_public"],operator:"eq",value:!1};if(!X)return G;return{operator:"and",conditions:[X,G]}}function Mv5(X){let Y=new Map,G=new Map;for(let J of X){let $=J._meta?.["mcp.mesh"];for(let Z of $?.tags??[])Y.set(Z,(Y.get(Z)??0)+1);for(let Z of $?.categories??[])G.set(Z,(G.get(Z)??0)+1)}let Q=(J)=>Array.from(J.entries()).map(([$,Z])=>({value:$,count:Z})).sort(($,Z)=>$.value.localeCompare(Z.value));return{tags:Q(Y),categories:Q(G)}}var v_6,__6,f_6,b_6;var y_6=D(()=>{y0();H0();nY();C_6();v_6=l1({name:"COLLECTION_REGISTRY_APP_LIST",description:"List registry items for Store discovery. Supports private-only mode from plugin settings.",inputSchema:fa,outputSchema:ba,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry,J=await GQ1(Y,G.id);return Q.items.list(G.id,{...X,where:Vv5(X.where,J.storePrivateOnly===!0)})}}),__6=l1({name:"COLLECTION_REGISTRY_APP_GET",description:"Get a registry item for Store details. Respects private-only mode from plugin settings.",inputSchema:gB,outputSchema:ZM,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry,J=await GQ1(Y,G.id),$=X.id??X.name;if(!$)return{item:null};let Z=await Q.items.findByIdOrName(G.id,$);if(!Z)return{item:null};if(J.storePrivateOnly&&Z.is_public)return{item:null};return{item:Z}}}),f_6=l1({name:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get registry item versions for Store details. Respects private-only mode from plugin settings.",inputSchema:gB,outputSchema:F.object({versions:F.array(zU)}),handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry,J=await GQ1(Y,G.id),$=X.id??X.name;if(!$)return{versions:[]};let Z=await Q.items.findByIdOrName(G.id,$);if(!Z)return{versions:[]};if(J.storePrivateOnly&&Z.is_public)return{versions:[]};return{versions:[Z]}}}),b_6=l1({name:"COLLECTION_REGISTRY_APP_FILTERS",description:"List Store filter facets for registry items. Respects private-only mode from plugin settings.",inputSchema:F.object({}),outputSchema:ya,handler:async(X,Y)=>{let G=s1(Y);await Y.access.check();let Q=Y.storage.registry;if(!(await GQ1(Y,G.id)).storePrivateOnly)return Q.items.getFilters(G.id);let $=await Q.items.list(G.id,{limit:1e4,where:{field:["is_public"],operator:"eq",value:!1}});return Mv5($.items)}})});var x_6;var h_6=D(()=>{VV6();RV6();kV6();vV6();fV6();yV6();hV6();uV6();mV6();cV6();pV6();rV6();tV6();sV6();X26();G26();J26();$26();vV1();z_6();D_6();L_6();P_6();A_6();j_6();V_6();R_6();k_6();y_6();x_6=[v_6,__6,f_6,b_6,gV6,lV6,xV6,iV6,SV6,TV6,dV6,CV6,bV6,_V6,MV6,nV6,aV6,oV6,eV6,Y26,Q26,Z26,N_6,B_6,O_6,w_6,E_6,q_6,I_6,T_6,M_6,S_6]});function _V1(X){return new Promise((Y)=>setTimeout(Y,X))}var ta=9000,QQ1="studio-sandbox:local";async function nq(X){try{let Y=await fetch(`${X}/health`,{signal:AbortSignal.timeout(kv5)});if(!Y.ok)return null;let G=await Y.json();if(typeof G==="object"&&G!==null&&typeof G.bootId==="string"&&typeof G.ready==="boolean"&&G.setup&&typeof G.setup.running==="boolean"&&typeof G.setup.done==="boolean")return G;return null}catch{return null}}async function fV1(X){for(let Y=0;Y<g_6;Y++){if(await nq(X)!==null)return;let G=(Math.random()*2-1)*Cv5;await _V1(u_6+G)}throw Error(`sandbox daemon at ${X} did not respond on /health within ${g_6*u_6/1000}s`)}async function oa(X,Y,G){let Q=G.timeoutMs??Sv5,J=JSON.stringify({command:G.command,timeout:Q,cwd:G.cwd,env:G.env}),$=Buffer.from(J,"utf-8").toString("base64"),Z=await fetch(`${X}/_decopilot_vm/bash`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:$,signal:AbortSignal.timeout(Q+5000)});if(!Z.ok){let K=await Z.text().catch(()=>"");throw Error(`sandbox daemon /_decopilot_vm/bash returned ${Z.status}${K?`: ${K}`:""}`)}let W=await Z.json();return{stdout:W.stdout??"",stderr:W.stderr??"",exitCode:W.exitCode??-1,timedOut:Boolean(W.timedOut)}}async function sa(X,Y,G,Q){let J=new Headers(Q.headers);for(let W of vv5)J.delete(W);J.set("authorization",`Bearer ${Y}`);let $=Q.method!=="GET"&&Q.method!=="HEAD",Z=`${X}${G.startsWith("/")?G:`/${G}`}`;return fetch(Z,{method:Q.method,headers:J,body:$?Q.body:void 0,redirect:"manual",signal:Q.signal,duplex:$?"half":void 0})}var Sv5=60000,kv5=500,g_6=25,u_6=200,Cv5=50,vv5;var bV1=D(()=>{vv5=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length"]});import{spawn as _v5}from"child_process";function JQ1(X,Y){return new Promise((G,Q)=>{let J=_v5("docker",X,{stdio:["ignore","pipe","pipe"]}),$="",Z="",W=Y!=null?setTimeout(()=>{Z+=`
2898
2898
  [docker ${X[0]}] timed out after ${Y}ms`,J.kill("SIGKILL")},Y):null;J.stdout.on("data",(K)=>{$+=K.toString()}),J.stderr.on("data",(K)=>{Z+=K.toString()}),J.on("error",(K)=>{if(W)clearTimeout(W);if(K.code==="ENOENT"){Q(Error("docker CLI not found on PATH. Install Docker Desktop (macOS) or Docker Engine (Linux)."));return}Q(K)}),J.on("close",(K)=>{if(W)clearTimeout(W);G({stdout:$,stderr:Z,code:K??-1})})})}async function l_6(X,Y){let Q=await(Y.exec??JQ1)(["run","-d",...Y.args,X,...Y.command??[]],Y.timeoutMs);if(Q.code!==0){let $=Q.stderr.trim()||Q.stdout.trim()||"no output";throw Error(`docker run ${Y.label} failed (exit ${Q.code}): ${$}`)}let J=Q.stdout.trim().split(`
2899
- `).pop()?.trim();if(!J)throw Error(`docker run ${Y.label} returned no container id`);return{id:J}}var yV1="/app";var iT0=()=>{};import{spawn as fv5}from"child_process";import{createHash as bv5}from"crypto";import{readFile as pT0,readdir as yv5}from"fs/promises";import{resolve as ea}from"path";import{fileURLToPath as c_6}from"url";function xV1(X={}){let Y=X.image??QQ1;if(Y!==QQ1)return Promise.resolve();if(ZQ1)return ZQ1;let G=X.exec??JQ1;return ZQ1=(async()=>{let J=await hv5(),$=await gv5(Y,G);if($===J)return;X.onLog?.($===null?`building ${Y}\u2026`:`${Y} stale (have ${$}, want ${J}); rebuilding\u2026`),await uv5(Y,J,X.onLog),X.onLog?.(`${Y} ready`)})().catch((J)=>{throw ZQ1=null,J}),ZQ1}async function hv5(){let X;try{X=await pT0(m_6)}catch(Q){if(Q.code==="ENOENT")throw Error(`sandbox daemon bundle missing at ${m_6}. Run \`bun run --cwd=packages/sandbox build\` first.`);throw Q}let Y=await pT0(n_6),G=bv5("sha256").update(X).update(Y);return await a_6(G,xv5),G.digest("hex").slice(0,16)}async function a_6(X,Y){let G;try{G=await yv5(Y,{withFileTypes:!0})}catch(Q){if(Q.code==="ENOENT")return;throw Q}G.sort((Q,J)=>Q.name.localeCompare(J.name));for(let Q of G){let J=ea(Y,Q.name);if(Q.isDirectory())X.update(`d:${Q.name}/`),await a_6(X,J);else if(Q.isFile())X.update(`f:${Q.name}:`),X.update(await pT0(J))}}async function gv5(X,Y){let G=await Y(["image","inspect",X,"--format",`{{index .Config.Labels "${r_6}"}}`]);if(G.code!==0)return null;let Q=G.stdout.trim();return Q&&Q!=="<no value>"?Q:null}function uv5(X,Y,G){return new Promise((Q,J)=>{let $=fv5("docker",["build","-t",X,"--label",`${r_6}=${Y}`,"-f",n_6,p_6],{stdio:["ignore","pipe","pipe"]});d_6($.stdout,G),d_6($.stderr,G),$.on("error",(Z)=>{if(Z.code==="ENOENT"){J(Error("docker CLI not found on PATH. Install Docker Desktop (macOS) or Docker Engine (Linux)."));return}J(Z)}),$.on("close",(Z)=>{if(Z===0)Q();else J(Error(`docker build ${X} exited ${Z??"(unknown)"}`))})})}function d_6(X,Y){if(!X)return;let G="";X.on("data",(Q)=>{G+=Q.toString();let J=G.split(/\r?\n/);G=J.pop()??"";for(let $ of J){let Z=$.trim();if(Z)Y?.(Z)}}),X.on("end",()=>{let Q=G.trim();if(Q)Y?.(Q)})}var i_6,p_6,m_6,n_6,xv5,r_6="mesh.daemon.hash",ZQ1=null;var nT0=D(()=>{iT0();i_6=ea(c_6(import.meta.url),"../../image"),p_6=ea(c_6(import.meta.url),"../.."),m_6=ea(p_6,"daemon/dist/daemon.js"),n_6=ea(i_6,"Dockerfile"),xv5=ea(i_6,"skills")});class rq{map=new Map;async run(X,Y){let G=this.map.get(X);if(G)return G;let Q=Y();this.map.set(X,Q);try{return await Q}finally{this.map.delete(X)}}}function EM(X,Y,G,Q){if(!X)return Q(null);if(!X.withLock)return Q(X);return X.withLock(Y,G,Q)}function Xt(X){return`${X.userId}:${X.projectRef}`}import{createHash as lv5}from"crypto";function hV1(X,Y=16){return lv5("sha256").update(Xt(X)).digest("hex").slice(0,Y)}function f3(X,Y,G={}){let Q=G.hashLen??dv5,J=hV1(X,Q),$=cv5(Y);return $?`${$}-${J}`:J}function cv5(X){if(!X)return"";return(X.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,mv5).replace(/-+$/g,"")}var mv5=24,dv5=5;var t_6=()=>{};function rB(X,Y){let G=X.replace(/\/+$/,"");if(G.includes("{handle}"))return`${G.replace("{handle}",Y)}/`;try{let Q=new URL(G);return Q.hostname=`${Y}.${Q.hostname}`,`${Q.toString()}/`}catch{return`${G}/${Y}/`}}var Yt=D(()=>{t_6()});import{randomBytes as iv5,randomUUID as pv5}from"crypto";function tv5(X){let Y=Date.now();return(G,Q={})=>{let J=Object.entries(Q).map(([$,Z])=>`${$}=${typeof Z==="string"?Z:JSON.stringify(Z)}`).join(" ");console.log(`[${X}] +${Date.now()-Y}ms ${G}${J?` ${J}`:""}`)}}class wU{kind=Uw;records=new Map;inflight=new rq;defaultImage;exec_;labelPrefix;stateStore;previewUrlPattern;constructor(X={}){this.defaultImage=X.image??process.env.STUDIO_SANDBOX_IMAGE??QQ1,this.exec_=X.exec??JQ1,this.labelPrefix=X.labelPrefix??nv5,this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null}async ensure(X,Y={}){let G=hV1(X,16);return this.inflight.run(G,()=>EM(this.stateStore,X,Uw,(Q)=>this.ensureLocked(X,G,Y,Q)))}async exec(X,Y){let G=await this.requireRecord(X);return oa(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),await this.stopContainer(X),this.stateStore)if(Y)await this.stateStore.delete(Y.id,Uw);else await this.stateStore.deleteByHandle(Uw,X)}async alive(X){let Y=await this.exec_(["inspect","--format","{{.State.Running}}",X]);return Y.code===0&&Y.stdout.trim()==="true"}async getPreviewUrl(X){let Y=await this.getRecord(X);return Y?this.composePreviewUrl(Y):null}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});return sa(Q.daemonUrl,Q.token,Y,G)}async*watchClaimLifecycle(X,Y){yield{kind:"ready"}}async sweepOrphans(){let X=await this.exec_(["ps","-a","--format","{{.Names}}","--filter",`label=${this.labelPrefix}=1`]);if(X.code!==0)return 0;let Y=X.stdout.trim().split(`
2899
+ `).pop()?.trim();if(!J)throw Error(`docker run ${Y.label} returned no container id`);return{id:J}}var yV1="/app";var iT0=()=>{};import{spawn as fv5}from"child_process";import{createHash as bv5}from"crypto";import{readFile as pT0,readdir as yv5}from"fs/promises";import{resolve as ea}from"path";import{fileURLToPath as c_6}from"url";function xV1(X={}){let Y=X.image??QQ1;if(Y!==QQ1)return Promise.resolve();if(ZQ1)return ZQ1;let G=X.exec??JQ1;return ZQ1=(async()=>{let J=await hv5(),$=await gv5(Y,G);if($===J)return;X.onLog?.($===null?`building ${Y}\u2026`:`${Y} stale (have ${$}, want ${J}); rebuilding\u2026`),await uv5(Y,J,X.onLog),X.onLog?.(`${Y} ready`)})().catch((J)=>{throw ZQ1=null,J}),ZQ1}async function hv5(){let X;try{X=await pT0(m_6)}catch(Q){if(Q.code==="ENOENT")throw Error(`sandbox daemon bundle missing at ${m_6}. Run \`bun run --cwd=packages/sandbox build\` first.`);throw Q}let Y=await pT0(n_6),G=bv5("sha256").update(X).update(Y);return await a_6(G,xv5),G.digest("hex").slice(0,16)}async function a_6(X,Y){let G;try{G=await yv5(Y,{withFileTypes:!0})}catch(Q){if(Q.code==="ENOENT")return;throw Q}G.sort((Q,J)=>Q.name.localeCompare(J.name));for(let Q of G){let J=ea(Y,Q.name);if(Q.isDirectory())X.update(`d:${Q.name}/`),await a_6(X,J);else if(Q.isFile())X.update(`f:${Q.name}:`),X.update(await pT0(J))}}async function gv5(X,Y){let G=await Y(["image","inspect",X,"--format",`{{index .Config.Labels "${r_6}"}}`]);if(G.code!==0)return null;let Q=G.stdout.trim();return Q&&Q!=="<no value>"?Q:null}function uv5(X,Y,G){return new Promise((Q,J)=>{let $=fv5("docker",["build","-t",X,"--label",`${r_6}=${Y}`,"-f",n_6,p_6],{stdio:["ignore","pipe","pipe"]});d_6($.stdout,G),d_6($.stderr,G),$.on("error",(Z)=>{if(Z.code==="ENOENT"){J(Error("docker CLI not found on PATH. Install Docker Desktop (macOS) or Docker Engine (Linux)."));return}J(Z)}),$.on("close",(Z)=>{if(Z===0)Q();else J(Error(`docker build ${X} exited ${Z??"(unknown)"}`))})})}function d_6(X,Y){if(!X)return;let G="";X.on("data",(Q)=>{G+=Q.toString();let J=G.split(/\r?\n/);G=J.pop()??"";for(let $ of J){let Z=$.trim();if(Z)Y?.(Z)}}),X.on("end",()=>{let Q=G.trim();if(Q)Y?.(Q)})}var i_6,p_6,m_6,n_6,xv5,r_6="mesh.daemon.hash",ZQ1=null;var nT0=D(()=>{iT0();i_6=ea(c_6(import.meta.url),"../../image"),p_6=ea(c_6(import.meta.url),"../.."),m_6=ea(p_6,"daemon/dist/daemon.js"),n_6=ea(i_6,"Dockerfile"),xv5=ea(i_6,"skills")});class rq{map=new Map;async run(X,Y){let G=this.map.get(X);if(G)return G;let Q=Y();this.map.set(X,Q);try{return await Q}finally{this.map.delete(X)}}}function EM(X,Y,G,Q){if(!X)return Q(null);if(!X.withLock)return Q(X);return X.withLock(Y,G,Q)}function Xt(X){return`${X.userId}:${X.projectRef}`}import{createHash as lv5}from"crypto";function hV1(X,Y=16){return lv5("sha256").update(Xt(X)).digest("hex").slice(0,Y)}function f3(X,Y,G={}){let Q=G.hashLen??dv5,J=hV1(X,Q),$=cv5(Y);return $?`${$}-${J}`:`s-${J}`}function cv5(X){if(!X)return"";return(X.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,mv5).replace(/-+$/g,"")}var mv5=24,dv5=5;var t_6=()=>{};function rB(X,Y){let G=X.replace(/\/+$/,"");if(G.includes("{handle}"))return`${G.replace("{handle}",Y)}/`;try{let Q=new URL(G);return Q.hostname=`${Y}.${Q.hostname}`,`${Q.toString()}/`}catch{return`${G}/${Y}/`}}var Yt=D(()=>{t_6()});import{randomBytes as iv5,randomUUID as pv5}from"crypto";function tv5(X){let Y=Date.now();return(G,Q={})=>{let J=Object.entries(Q).map(([$,Z])=>`${$}=${typeof Z==="string"?Z:JSON.stringify(Z)}`).join(" ");console.log(`[${X}] +${Date.now()-Y}ms ${G}${J?` ${J}`:""}`)}}class wU{kind=Uw;records=new Map;inflight=new rq;defaultImage;exec_;labelPrefix;stateStore;previewUrlPattern;constructor(X={}){this.defaultImage=X.image??process.env.STUDIO_SANDBOX_IMAGE??QQ1,this.exec_=X.exec??JQ1,this.labelPrefix=X.labelPrefix??nv5,this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null}async ensure(X,Y={}){let G=hV1(X,16);return this.inflight.run(G,()=>EM(this.stateStore,X,Uw,(Q)=>this.ensureLocked(X,G,Y,Q)))}async exec(X,Y){let G=await this.requireRecord(X);return oa(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),await this.stopContainer(X),this.stateStore)if(Y)await this.stateStore.delete(Y.id,Uw);else await this.stateStore.deleteByHandle(Uw,X)}async alive(X){let Y=await this.exec_(["inspect","--format","{{.State.Running}}",X]);return Y.code===0&&Y.stdout.trim()==="true"}async getPreviewUrl(X){let Y=await this.getRecord(X);return Y?this.composePreviewUrl(Y):null}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});return sa(Q.daemonUrl,Q.token,Y,G)}async*watchClaimLifecycle(X,Y){yield{kind:"ready"}}async sweepOrphans(){let X=await this.exec_(["ps","-a","--format","{{.Names}}","--filter",`label=${this.labelPrefix}=1`]);if(X.code!==0)return 0;let Y=X.stdout.trim().split(`
2900
2900
  `).filter(Boolean);return await Promise.all(Y.map(async(G)=>{if(await this.stopContainer(G).catch((Q)=>console.warn(`[${$Q1}] sweep: stopContainer(${G}) failed:`,Q instanceof Error?Q.message:String(Q))),this.stateStore)await this.stateStore.deleteByHandle(Uw,G).catch((Q)=>console.warn(`[${$Q1}] sweep: state-store deleteByHandle(${G}) failed:`,Q instanceof Error?Q.message:String(Q)))})),Y.length}async resolveDevPort(X){return(await this.getRecord(X))?.devPort??null}async resolveDaemonPort(X){return(await this.getRecord(X))?.daemonPort??null}async ensureLocked(X,Y,G,Q){let J=tv5($Q1);if(J("ensure start",{labelId:Y}),Q){let W=await Q.get(X,Uw);if(W){let K=await this.rehydrate(X,W);if(K)return J("ensure ok via=resume",{handle:K.handle}),this.finish(K,Q,!1);await Q.delete(X,Uw),J("resume rejected, falling through")}}let $=await this.adoptByLabel(X,Y,G);if($)return J("ensure ok via=adopt",{handle:$.handle}),this.finish($,Q,!0);J("provision start");let Z=await this.provision(X,Y,G,J);return J("ensure ok via=provision",{handle:Z.handle}),this.finish(Z,Q,!0)}async finish(X,Y,G){if(this.records.set(X.handle,X),G)await this.persist(Y,X);return this.toSandbox(X)}async provision(X,Y,G,Q){let J=iv5(24).toString("hex"),$=pv5(),Z=yV1,W=G.image??this.defaultImage,K=G.workload?.devPort??rT0,H=G.workload?.runtime??"node",U=G.workload?.packageManager??null,N=G.repo??null,B=N?N.displayName??ov5(N.cloneUrl):null,z={DAEMON_TOKEN:J,DAEMON_BOOT_ID:$,APP_ROOT:Z,PROXY_PORT:String(ta),DEV_PORT:String(K),RUNTIME:H,...N?{CLONE_URL:N.cloneUrl,REPO_NAME:B??"",BRANCH:N.branch??"",GIT_USER_NAME:N.userName,GIT_USER_EMAIL:N.userEmail}:{},...U?{PACKAGE_MANAGER:U}:{},...G.env??{}};Q("ensureSandboxImage start"),await xV1({image:W,exec:this.exec_,onLog:(V)=>Q("image build",{line:V})}),Q("ensureSandboxImage ok");let O=f3(X,G.repo?.branch),w=()=>l_6(W,{label:"sandbox",exec:this.exec_,args:["--name",O,"--rm","--init","--read-only","--tmpfs=/tmp:rw,nosuid,nodev,size=256m","-v","/app","-v","/home/sandbox","--cap-drop=ALL","--security-opt=no-new-privileges","--pids-limit=512","--memory=2g","--memory-swap=2g","--cpus=1","--label",`${this.labelPrefix}=1`,"--label",`${o_6}=${Y}`,"-p",`127.0.0.1:0:${ta}`,"-p",`127.0.0.1:0:${K}`,...Object.entries(z).flatMap(([V,M])=>["-e",`${V}=${M}`])]});Q("docker run start",{handle:O,image:W});try{await w()}catch(V){if((V instanceof Error?V.message:String(V)).includes("is already in use"))Q("docker run name conflict, retrying after rm",{handle:O}),await this.exec_(["rm","-f",O]).catch(()=>{return}),await w();else throw V}Q("docker run ok",{handle:O});let E=await this.readPort(O,ta),P=`http://127.0.0.1:${E}`,q=await this.readPort(O,K);Q("ports read",{daemonPort:E,devPort:q}),Q("waitForDaemonReady start",{daemonUrl:P});try{await fV1(P)}catch(V){throw Q("waitForDaemonReady failed",{err:V instanceof Error?V.message:String(V)}),await this.stopContainer(O).catch((M)=>console.warn(`[${$Q1}] cleanup stop after waitForDaemonReady failure (${O}) itself failed:`,M instanceof Error?M.message:String(M))),V}return Q("daemon ready",{handle:O}),{id:X,handle:O,token:J,workdir:Z,daemonUrl:P,daemonPort:E,devPort:q,devContainerPort:K,workload:G.workload??null,daemonBootId:$}}async rehydrate(X,Y){let G=Y.state;if(!G.token||!G.daemonUrl)return null;let Q=Y.handle,J=G.devContainerPort??rT0,$,Z;try{$=await this.readPort(Q,ta),Z=await this.readPort(Q,J)}catch{return null}let W=`http://127.0.0.1:${$}`,K=await nq(W);if(!K)return null;if(G.daemonBootId&&G.daemonBootId!==K.bootId)console.warn(`[${$Q1}] daemon restart detected (handle=${Q}): stored bootId=${G.daemonBootId} live bootId=${K.bootId}`);return{id:X,handle:Q,token:G.token,workdir:G.workdir??yV1,daemonUrl:W,daemonPort:$,devPort:Z,devContainerPort:J,daemonBootId:K.bootId,workload:G.workload??null}}async adoptByLabel(X,Y,G){let Q=await this.findExisting(Y);if(!Q)return null;let J=this.records.get(Q);if(J)return J;let $=await this.reconstructFromContainer(X,Q,G);if($)return $;return await this.stopContainer(Q),null}async reconstructFromContainer(X,Y,G){let Q=await this.exec_(["inspect","--format","{{range .Config.Env}}{{println .}}{{end}}",Y]);if(Q.code!==0)return null;let J=null,$=yV1;for(let N of Q.stdout.split(`
2901
2901
  `))if(N.startsWith("DAEMON_TOKEN="))J=N.slice(13);else if(N.startsWith("APP_ROOT="))$=N.slice(9);if(!J)return null;let Z=await this.readPort(Y,ta),W=`http://127.0.0.1:${Z}`,K=await nq(W);if(!K)return null;let H=G.workload?.devPort??rT0,U=await this.readPort(Y,H);return{id:X,handle:Y,token:J,workdir:$,daemonUrl:W,daemonPort:Z,devPort:U,devContainerPort:H,daemonBootId:K.bootId,workload:G.workload??null}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(Uw,X);if(!G)return null;let Q=await this.rehydrate(G.id,G);if(Q)this.records.set(X,Q);return Q}async requireRecord(X){let Y=await this.getRecord(X);if(!Y)throw Error(`unknown sandbox handle ${X}`);return Y}composePreviewUrl(X){if(this.previewUrlPattern)return rB(this.previewUrlPattern,X.handle);let Y=process.env.SANDBOX_ROOT_URL;if(Y)return rB(Y,X.handle);let G=Number(process.env.SANDBOX_INGRESS_PORT??7070);return`http://${X.handle}.localhost:${G}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async persist(X,Y){if(!X)return;let G={token:Y.token,workdir:Y.workdir,daemonUrl:Y.daemonUrl,daemonPort:Y.daemonPort,devPort:Y.devPort,devContainerPort:Y.devContainerPort,workload:Y.workload,daemonBootId:Y.daemonBootId};await X.put(Y.id,Uw,{handle:Y.handle,state:G})}async stopContainer(X){await this.exec_(["stop","--time","2",X])}async findExisting(X){let Y=await this.exec_(["ps","--no-trunc","--format","{{.Names}}","--filter",`label=${o_6}=${X}`]);if(Y.code!==0)return null;return Y.stdout.trim().split(`
2902
2902
  `).filter(Boolean)[0]??null}async readPort(X,Y){for(let G=0;G<rv5;G++){let Q=await this.exec_(["port",X,`${Y}/tcp`]);if(Q.code===0)for(let J of Q.stdout.split(`
@@ -4706,7 +4706,7 @@ async function runBootSetup() {
4706
4706
  if (process.env.DAEMON_NO_AUTOSTART !== "1") {
4707
4707
  runBootSetup();
4708
4708
  }
4709
- `;var eT0=()=>{};var Yf6={};b6(Yf6,{DAEMON_BUNDLE:()=>Z_5});var Z_5;var Gf6=D(()=>{eT0();Z_5=uV1});import{createHash as $_5,randomBytes as W_5,randomUUID as K_5}from"crypto";import{existsSync as Jf6}from"fs";import{mkdir as Zf6,rename as H_5,rm as F_5,writeFile as U_5}from"fs/promises";import{createServer as N_5}from"net";import{dirname as B_5,join as XV0,resolve as z_5}from"path";import{fileURLToPath as O_5}from"url";class lV1{kind=PM;records=new Map;homeDir;stateStore;previewUrlPattern;spawnFn;probeFn;killFn;isAliveFn;constructor(X){if(!X.homeDir)throw Error("HostSandboxRunner requires a homeDir (DATA_DIR)");this.homeDir=X.homeDir,this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null,this.spawnFn=X._spawn??V_5(this.homeDir),this.probeFn=X._probe??nq,this.killFn=X._kill??((Y,G)=>process.kill(Y,G)),this.isAliveFn=X._isAlive??E_5}async ensure(X,Y={}){let G=f3(X,Y.repo?.branch),Q=this.records.get(G);if(Q&&this.isAliveFn(Q.pid))return this.toSandbox(Q);if(this.stateStore){let z=await this.stateStore.getByHandle(PM,G);if(z){let O=await this.rehydrate(z.id,z);if(O)return this.records.set(G,O),this.toSandbox(O);await this.stateStore.deleteByHandle(PM,G).catch(()=>{return})}}let J=this.workdirFor(G);await Zf6(B_5(J),{recursive:!0});let $=W_5(24).toString("hex"),Z=K_5(),W=await Qf6(),K=`http://127.0.0.1:${W}`,H=await Qf6(),U=P_5({token:$,bootId:Z,workdir:J,daemonPort:W,devPort:H,runtime:Y.workload?.runtime??"node",packageManager:Y.workload?.packageManager??null,repo:Y.repo??null,extraEnv:Y.env}),N=await this.spawnFn({workdir:J,env:U,daemonPort:W});try{await this.waitForDaemon(K)}catch(z){try{N.kill("SIGKILL")}catch{}throw z}let B={id:X,handle:G,pid:N.pid,daemonPort:W,daemonUrl:K,workdir:J,token:$,bootId:Z};if(this.records.set(G,B),this.stateStore){let z={pid:B.pid,daemonPort:B.daemonPort,daemonUrl:B.daemonUrl,workdir:B.workdir,token:B.token,bootId:B.bootId};await this.stateStore.put(X,PM,{handle:G,state:z})}return this.toSandbox(B)}async waitForDaemon(X){let Y=Date.now()+D_5;while(Date.now()<Y){if(await this.probeFn(X))return;await new Promise((Q)=>setTimeout(Q,w_5))}throw Error(`daemon at ${X} never reported healthy`)}async exec(X,Y){let G=await this.requireRecord(X);return oa(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),Y){if(this.isAliveFn(Y.pid)){try{this.killFn(Y.pid,"SIGTERM")}catch{}let G=Date.now()+L_5;while(Date.now()<G){if(!this.isAliveFn(Y.pid))break;await new Promise((Q)=>setTimeout(Q,50))}if(this.isAliveFn(Y.pid))try{this.killFn(Y.pid,"SIGKILL")}catch{}}await F_5(Y.workdir,{recursive:!0,force:!0}).catch((G)=>console.warn(`[HostSandboxRunner] rm workdir(${X}) failed:`,G instanceof Error?G.message:String(G)))}if(this.stateStore)if(Y)await this.stateStore.delete(Y.id,PM);else await this.stateStore.deleteByHandle(PM,X)}async alive(X){let Y=await this.getRecord(X);if(!Y)return!1;return this.isAliveFn(Y.pid)}async*watchClaimLifecycle(X,Y){yield{kind:"ready"}}async getPreviewUrl(X){let Y=await this.getRecord(X);return Y?this.composePreviewUrl(Y):null}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});return sa(Q.daemonUrl,Q.token,Y,G)}async resolveDaemonPort(X){return(await this.getRecord(X))?.daemonPort??null}async localWorkdir(X){return(await this.getRecord(X))?.workdir??null}workdirFor(X){return XV0(this.homeDir,"sandboxes",X)}composePreviewUrl(X){if(this.previewUrlPattern)return rB(this.previewUrlPattern,X.handle);let Y=process.env.SANDBOX_ROOT_URL;if(Y)return rB(Y,X.handle);let G=Number(process.env.SANDBOX_INGRESS_PORT??7070);return`http://${X.handle}.localhost:${G}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(PM,X);if(!G)return null;let Q=await this.rehydrate(G.id,G);if(Q)this.records.set(X,Q);return Q}async requireRecord(X){let Y=await this.getRecord(X);if(!Y)throw Error(`unknown sandbox handle ${X}`);return Y}async rehydrate(X,Y){let G=Y.state;if(typeof G.pid!=="number"||typeof G.daemonPort!=="number"||typeof G.daemonUrl!=="string"||typeof G.workdir!=="string"||typeof G.token!=="string"||typeof G.bootId!=="string")return null;if(!this.isAliveFn(G.pid))return null;let Q=await this.probeFn(G.daemonUrl);if(!Q)return null;return{id:X,handle:Y.handle,pid:G.pid,daemonPort:G.daemonPort,daemonUrl:G.daemonUrl,workdir:G.workdir,token:G.token,bootId:Q.bootId}}}function E_5(X){if(X<=0)return!1;try{return process.kill(X,0),!0}catch{return!1}}function Qf6(){return new Promise((X,Y)=>{let G=N_5();G.unref(),G.on("error",Y),G.listen(0,"127.0.0.1",()=>{let Q=G.address();if(Q&&typeof Q==="object"){let{port:J}=Q;G.close(()=>X(J))}else G.close(()=>Y(Error("could not allocate port")))})})}function P_5(X){let Y=X.repo?X.repo.displayName??q_5(X.repo.cloneUrl):null;return{DAEMON_TOKEN:X.token,DAEMON_BOOT_ID:X.bootId,APP_ROOT:X.workdir,PROXY_PORT:String(X.daemonPort),DEV_PORT:String(X.devPort),RUNTIME:X.runtime,...X.repo?{CLONE_URL:X.repo.cloneUrl,REPO_NAME:Y??"",BRANCH:X.repo.branch??"",GIT_USER_NAME:X.repo.userName,GIT_USER_EMAIL:X.repo.userEmail}:{},...X.packageManager?{PACKAGE_MANAGER:X.packageManager}:{},...X.extraEnv??{}}}function q_5(X){try{let Y=new URL(X);return Y.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Y.hostname}catch{return X}}function A_5(){return z_5(O_5(new URL("../../../daemon/entry.ts",import.meta.url)))}function I_5(){let X=Bun.resolveSync("node-pty",import.meta.dir),Y="/node_modules/",G=X.lastIndexOf("/node_modules/");if(G<0)throw Error(`[HostSandboxRunner] could not derive node_modules path from node-pty resolution: ${X}`);return X.slice(0,G+14-1)}async function j_5(X){let{DAEMON_BUNDLE:Y}=await Promise.resolve().then(() => (Gf6(),Yf6)),G=$_5("sha256").update(Y).digest("hex").slice(0,16),Q=XV0(X,".deco","cache"),J=XV0(Q,`sandbox-daemon-${G}.js`);if(Jf6(J))return J;await Zf6(Q,{recursive:!0});let $=`${J}.${process.pid}.tmp`;return await U_5($,Y),await H_5($,J),J}async function T_5(X){let Y=A_5();if(Jf6(Y))return Y;return j_5(X)}function V_5(X){return async(Y)=>{let G=await T_5(X),Q=I_5(),J=process.env.NODE_PATH,$=J?`${Q}:${J}`:Q,Z=Bun.spawn({cmd:["bun","run",G],env:{...process.env,NODE_PATH:$,...Y.env},stdout:"inherit",stderr:"inherit",stdin:"ignore"});return{pid:Z.pid,kill:(W)=>{return Z.kill(W),!0}}}}var PM="host",D_5=30000,w_5=250,L_5=2000;var $f6=D(()=>{bV1();Yt()});var Wf6=D(()=>{$f6()});function Gt(X){if("threadId"in X){if(!X.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${X.threadId}`}if(!X.orgId||!X.virtualMcpId||!X.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${X.orgId}:${X.virtualMcpId}:${X.branch}`}var qM={};b6(qM,{sweepDockerOrphansOnShutdown:()=>sT0,sweepDockerOrphansOnBoot:()=>oT0,startLocalSandboxIngress:()=>tT0,sandboxIdKey:()=>Xt,resolveRunnerKindFromEnv:()=>aB,ensureSandboxImage:()=>xV1,createDockerRunner:()=>M_5,computeHandle:()=>f3,composeSandboxRef:()=>Gt,HostSandboxRunner:()=>lV1,DockerSandboxRunner:()=>wU});function M_5(X={}){return new wU({...X.docker,stateStore:X.stateStore})}function aB(){let X=process.env.STUDIO_SANDBOX_RUNNER,Y=X&&X.length>0?X:"host";if(!R_5.has(Y))throw Error(`Unknown STUDIO_SANDBOX_RUNNER="${X}" \u2014 expected "host", "docker", "freestyle", or "agent-sandbox".`);if(Y==="freestyle"&&!process.env.FREESTYLE_API_KEY)throw Error('STUDIO_SANDBOX_RUNNER="freestyle" requires FREESTYLE_API_KEY to be set.');return Y}var R_5;var tB=D(()=>{WQ1();WQ1();Wf6();Yt();nT0();WQ1();WQ1();R_5=new Set(["host","docker","freestyle","agent-sandbox"])});var KQ1;var YV0=D(()=>{KQ1={npm:{install:"npm install",run:(X)=>`npm run ${X}`,runtime:"node"},pnpm:{install:"pnpm install",run:(X)=>`pnpm run ${X}`,runtime:"node"},yarn:{install:"yarn install",run:(X)=>`yarn run ${X}`,runtime:"node"},bun:{install:"bun install",run:(X)=>`bun run ${X}`,runtime:"bun"},deno:{install:"deno install",run:(X)=>`deno task ${X}`,runtime:"deno"}}});function aq(X){if(!X||typeof X!=="object")return{};let Y=X.vmMap;if(!Y||typeof Y!=="object")return{};return Y}function Qt(X,Y,G){return X[Y]?.[G]??null}async function Kf6(X,Y,G,Q,J,$){let Z=await X.findById(Y);if(!Z)return;let W=Z.metadata??{},K=aq(W),H={...K,[Q]:{...K[Q]??{},[J]:$}};await X.update(Y,G,{metadata:{...W,vmMap:H}})}async function Hf6(X,Y,G,Q,J){let $=await X.findById(Y);if(!$)return;let Z=$.metadata??{},W=aq(Z);if(!W[Q]?.[J])return;let K={...W[Q]};delete K[J];let H={...W};if(Object.keys(K).length===0)delete H[Q];else H[Q]=K;await X.update(Y,G,{metadata:{...Z,vmMap:H}})}async function mV1(X,Y){U0(Y);let G=s1(Y);await Y.access.check();let Q=z6(Y);if(!Q)throw Error("User ID required");let J=await Y.storage.virtualMcps.findById(X.virtualMcpId);if(!J||J.organization_id!==G.id)throw Error("Virtual MCP not found");let $=J.metadata??{},Z=aq($),W=Qt(Z,Q,X.branch);return{virtualMcp:J,metadata:$,userId:Q,entry:W,organization:G}}function Ff6(X){let Y=X.runtime??null,Q=Y?.selected??null;if(!Q||!(Q in KQ1))return{packageManager:null,runtime:null,port:Y?.port??"3000",runtimeBinPath:null};let J=KQ1[Q].runtime,$=J==="deno"?"/opt/deno/bin":J==="bun"?"/opt/bun/bin":null;return{packageManager:Q,runtime:J,port:Y?.port??"3000",runtimeBinPath:$}}var GV0=D(()=>{YV0()});async function Uf6(X,Y,G,Q,J){let $=new Y$(Q,J),Z=await $.get(X);if(!Z)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let W=Z.accessToken;if(nX1(Z)&&$.isExpired(Z,AI1)){let N=await rX1(Z,$);if(!N)throw Error(F2);W=N}let K=`https://x-access-token:${W}@github.com/${Y}/${G}.git`,H="Deco Studio",U="studio@deco.cx";try{let N=await fetch("https://api.github.com/user",{headers:{Authorization:`token ${W}`,Accept:"application/vnd.github+json"}});if(N.ok){let B=await N.json();H=B.name||B.login,U=B.email||`${B.login}@users.noreply.github.com`}}catch{}return{cloneUrl:K,gitUserName:H,gitUserEmail:U}}var Nf6=D(()=>{e2();II1()});async function Of6(X,Y,G,Q,J){let $=await new Y$(Q,J).get(X);if(!$)return null;let Z=new Map,W=new Set(Bf6.map((N)=>N.path));for(let N of Object.values(zf6))for(let B of N??[])W.add(B);await Promise.all(Array.from(W).map(async(N)=>{Z.set(N,await k_5(Y,G,N,$.accessToken))}));let K=Bf6.find(({path:N})=>Z.get(N)!==null);if(!K)return null;let H=zf6[K.pm]??[],U=null;for(let N of H)if(U=C_5(Z.get(N)??null),U)break;return{packageManager:K.pm,devPort:U}}async function k_5(X,Y,G,Q){let J=`https://api.github.com/repos/${X}/${Y}/contents/${encodeURIComponent(G)}`;try{let $=await fetch(J,{headers:{Authorization:`token ${Q}`,Accept:"application/vnd.github+json","User-Agent":"mesh-runtime-detect"},signal:AbortSignal.timeout(5000)});if(!$.ok)return null;let Z=await $.json();if(!Z.content||Z.encoding!=="base64")return null;return Buffer.from(Z.content,"base64").toString("utf8")}catch{return null}}function C_5(X){if(!X)return null;try{let Y=JSON.parse(X),G=Y.tasks??Y.scripts??{};return(G.dev??G.start??"").match(S_5)?.[1]??null}catch{return null}}var Bf6,zf6,S_5;var Df6=D(()=>{e2();Bf6=[{path:"deno.json",pm:"deno"},{path:"deno.jsonc",pm:"deno"},{path:"bun.lock",pm:"bun"},{path:"bunfig.toml",pm:"bun"},{path:"pnpm-lock.yaml",pm:"pnpm"},{path:"yarn.lock",pm:"yarn"},{path:"package-lock.json",pm:"npm"},{path:"package.json",pm:"npm"}],zf6={deno:["deno.json","deno.jsonc"],bun:["package.json"],pnpm:["package.json"],yarn:["package.json"],npm:["package.json"]},S_5=/(?:--port|PORT=|:)(\d{4,5})/});import{createHash as v_5}from"crypto";function __5(X,Y){return v_5("sha256").update(X.userId).update("\x00").update(X.projectRef).update("\x00").update(Y).digest().readBigInt64BE(0)}async function Lf6(X,Y,G){let Q=await X.selectFrom("sandbox_runner_state").select(["handle","state","updated_at"]).where("user_id","=",Y.userId).where("project_ref","=",Y.projectRef).where("runner_kind","=",G).executeTakeFirst();if(!Q)return null;return{handle:Q.handle,state:Q.state,updatedAt:Q.updated_at}}async function Ef6(X,Y,G){let Q=await X.selectFrom("sandbox_runner_state").select(["user_id","project_ref","handle","state","updated_at"]).where("runner_kind","=",Y).where("handle","=",G).executeTakeFirst();if(!Q)return null;return{id:{userId:Q.user_id,projectRef:Q.project_ref},handle:Q.handle,state:Q.state,updatedAt:Q.updated_at}}async function Pf6(X,Y,G,Q){let J=JSON.stringify(Q.state),$=new Date().toISOString();await X.insertInto("sandbox_runner_state").values({user_id:Y.userId,project_ref:Y.projectRef,runner_kind:G,handle:Q.handle,state:J,updated_at:$}).onConflict((Z)=>Z.columns(["user_id","project_ref","runner_kind"]).doUpdateSet({handle:Q.handle,state:J,updated_at:$})).execute()}async function qf6(X,Y,G){await X.deleteFrom("sandbox_runner_state").where("user_id","=",Y.userId).where("project_ref","=",Y.projectRef).where("runner_kind","=",G).execute()}async function Af6(X,Y,G){await X.deleteFrom("sandbox_runner_state").where("runner_kind","=",Y).where("handle","=",G).execute()}function f_5(X){return{get:(Y,G)=>Lf6(X,Y,G),getByHandle:(Y,G)=>Ef6(X,Y,G),put:(Y,G,Q)=>Pf6(X,Y,G,Q),delete:(Y,G)=>qf6(X,Y,G),deleteByHandle:(Y,G)=>Af6(X,Y,G)}}class HQ1{db;constructor(X){this.db=X}get(X,Y){return Lf6(this.db,X,Y)}getByHandle(X,Y){return Ef6(this.db,X,Y)}put(X,Y,G){return Pf6(this.db,X,Y,G)}delete(X,Y){return qf6(this.db,X,Y)}deleteByHandle(X,Y){return Af6(this.db,X,Y)}async withLock(X,Y,G){let Q=__5(X,Y);return this.db.transaction().execute(async(J)=>{try{await n1`set local statement_timeout = ${n1.lit(wf6)}`.execute(J),await n1`select pg_advisory_xact_lock(${Q}::bigint)`.execute(J)}catch($){if(b_5($))throw Error(`sandbox advisory lock busy >${wf6}ms for user=${X.userId} projectRef=${X.projectRef} kind=${Y} \u2014 another provisioner is slow or stuck; retry shortly`);throw $}return await n1`set local statement_timeout = 0`.execute(J),G(f_5(J))})}}function b_5(X){if(!(X instanceof Error))return!1;return X.code==="57014"||/statement timeout/i.test(X.message)}var wf6=90000;var QV0=D(()=>{R7()});function Rf6(X){let Y=y_5[X.code];if(Y)return new Y(X);else return Error(`Unknown error code: ${X.code} - ${X.description}`)}class og6{baseUrl;apiKey;accessToken;fetchFn;constructor(X={}){this.baseUrl=X.baseUrl||"https://api.freestyle.sh",this.apiKey="apiKey"in X?X.apiKey:void 0,this.accessToken="accessToken"in X?X.accessToken:void 0,this.fetchFn=X.fetch||fetch}buildUrl(X,Y,G){let Q=X;if(Y)for(let[J,$]of Object.entries(Y))Q=Q.replace(`{${J}}`,encodeURIComponent($));if(G){let J=new URLSearchParams;for(let[Z,W]of Object.entries(G))if(W!==void 0&&W!==null)J.append(Z,String(W));let $=J.toString();if($)Q+=`?${$}`}return this.baseUrl+Q}getDefaultHeaders(){let X={"X-Freestyle-SDK":jf6,"X-Freestyle-SDK-Version":If6,"User-Agent":`${jf6}/${If6}`};if(this.apiKey)X.Authorization=`Bearer ${this.apiKey}`;else if(this.accessToken)X["X-Freestyle-Identity-Access-Token"]=this.accessToken;return X}async requestRaw(X,Y,G,Q){let J={...this.getDefaultHeaders(),...Q};if(G)J["Content-Type"]="application/json";let $=await this.fetchFn(Y,{method:X,headers:J,body:G?JSON.stringify(G):void 0});if(!$.ok){let Z=await $.text(),W;try{W=JSON.parse(Z)}catch(K){if($.status===401)Z+=" (Your API key or access token may be invalid.)";throw Error(`HTTP error ${$.status}: ${Z}. ${K}`)}throw Rf6(W)}return $}async request(X,Y,G,Q){return(await this.requestRaw(X,Y,G,Q)).json()}async fetch(X,Y){let G=this.getDefaultHeaders(),Q={...Y,headers:{...G,...Y?.headers||{}}};return this.fetchFn(X,Q)}resolveUrl(X,Y,G){return this.buildUrl(X,Y,G)}getRaw(X,Y){let G=this.buildUrl(X,Y?.params,Y?.query);return this.requestRaw("GET",G,void 0,Y?.headers)}postRaw(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.requestRaw("POST",Q,G?.body,G?.headers)}get(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("GET",Q,G?.body,G?.headers)}post(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("POST",Q,G?.body,G?.headers)}put(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("PUT",Q,G?.body,G?.headers)}delete(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("DELETE",Q,G?.body,G?.headers)}patch(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("PATCH",Q,G?.body,G?.headers)}}class sg6{constructor(X){this.apiClient=X}async create({domain:X}){let Y=await this.apiClient.post("/domains/v1/verifications",{body:{domain:X}});return{verificationId:Y.id,instructions:`Navigate to your domain's DNS settings and create a TXT record with the following details:
4709
+ `;var eT0=()=>{};var Yf6={};b6(Yf6,{DAEMON_BUNDLE:()=>Z_5});var Z_5;var Gf6=D(()=>{eT0();Z_5=uV1});import{createHash as $_5,randomBytes as W_5,randomUUID as K_5}from"crypto";import{existsSync as Jf6}from"fs";import{mkdir as Zf6,rename as H_5,rm as F_5,writeFile as U_5}from"fs/promises";import{createServer as N_5}from"net";import{dirname as B_5,join as XV0,resolve as z_5}from"path";import{fileURLToPath as O_5}from"url";class lV1{kind=PM;records=new Map;homeDir;stateStore;previewUrlPattern;spawnFn;probeFn;killFn;isAliveFn;constructor(X){if(!X.homeDir)throw Error("HostSandboxRunner requires a homeDir (DATA_DIR)");this.homeDir=X.homeDir,this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null,this.spawnFn=X._spawn??V_5(this.homeDir),this.probeFn=X._probe??nq,this.killFn=X._kill??((Y,G)=>process.kill(Y,G)),this.isAliveFn=X._isAlive??E_5}async ensure(X,Y={}){let G=f3(X,Y.repo?.branch),Q=this.records.get(G);if(Q&&this.isAliveFn(Q.pid))return this.toSandbox(Q);if(this.stateStore){let z=await this.stateStore.getByHandle(PM,G);if(z){let O=await this.rehydrate(z.id,z);if(O)return this.records.set(G,O),this.toSandbox(O);await this.stateStore.deleteByHandle(PM,G).catch(()=>{return})}}let J=this.workdirFor(G);await Zf6(B_5(J),{recursive:!0});let $=W_5(24).toString("hex"),Z=K_5(),W=await Qf6(),K=`http://127.0.0.1:${W}`,H=await Qf6(),U=P_5({token:$,bootId:Z,workdir:J,daemonPort:W,devPort:H,runtime:Y.workload?.runtime??"node",packageManager:Y.workload?.packageManager??null,repo:Y.repo??null,extraEnv:Y.env}),N=await this.spawnFn({workdir:J,env:U,daemonPort:W});try{await this.waitForDaemon(K)}catch(z){try{N.kill("SIGKILL")}catch{}throw z}let B={id:X,handle:G,pid:N.pid,daemonPort:W,daemonUrl:K,workdir:J,token:$,bootId:Z};if(this.records.set(G,B),this.stateStore){let z={pid:B.pid,daemonPort:B.daemonPort,daemonUrl:B.daemonUrl,workdir:B.workdir,token:B.token,bootId:B.bootId};await this.stateStore.put(X,PM,{handle:G,state:z})}return this.toSandbox(B)}async waitForDaemon(X){let Y=Date.now()+D_5;while(Date.now()<Y){if(await this.probeFn(X))return;await new Promise((Q)=>setTimeout(Q,w_5))}throw Error(`daemon at ${X} never reported healthy`)}async exec(X,Y){let G=await this.requireRecord(X);return oa(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),Y){if(this.isAliveFn(Y.pid)){try{this.killFn(Y.pid,"SIGTERM")}catch{}let G=Date.now()+L_5;while(Date.now()<G){if(!this.isAliveFn(Y.pid))break;await new Promise((Q)=>setTimeout(Q,50))}if(this.isAliveFn(Y.pid))try{this.killFn(Y.pid,"SIGKILL")}catch{}}await F_5(Y.workdir,{recursive:!0,force:!0}).catch((G)=>console.warn(`[HostSandboxRunner] rm workdir(${X}) failed:`,G instanceof Error?G.message:String(G)))}if(this.stateStore)if(Y)await this.stateStore.delete(Y.id,PM);else await this.stateStore.deleteByHandle(PM,X)}async alive(X){let Y=await this.getRecord(X);if(!Y)return!1;return this.isAliveFn(Y.pid)}async*watchClaimLifecycle(X,Y){yield{kind:"ready"}}async getPreviewUrl(X){let Y=await this.getRecord(X);return Y?this.composePreviewUrl(Y):null}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});return sa(Q.daemonUrl,Q.token,Y,G)}async resolveDaemonPort(X){return(await this.getRecord(X))?.daemonPort??null}async localWorkdir(X){return(await this.getRecord(X))?.workdir??null}workdirFor(X){return XV0(this.homeDir,"sandboxes",X)}composePreviewUrl(X){if(this.previewUrlPattern)return rB(this.previewUrlPattern,X.handle);let Y=process.env.SANDBOX_ROOT_URL;if(Y)return rB(Y,X.handle);let G=Number(process.env.SANDBOX_INGRESS_PORT??7070);return`http://${X.handle}.localhost:${G}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(PM,X);if(!G)return null;let Q=await this.rehydrate(G.id,G);if(Q)this.records.set(X,Q);return Q}async requireRecord(X){let Y=await this.getRecord(X);if(!Y)throw Error(`unknown sandbox handle ${X}`);return Y}async rehydrate(X,Y){let G=Y.state;if(typeof G.pid!=="number"||typeof G.daemonPort!=="number"||typeof G.daemonUrl!=="string"||typeof G.workdir!=="string"||typeof G.token!=="string"||typeof G.bootId!=="string")return null;if(!this.isAliveFn(G.pid))return null;let Q=await this.probeFn(G.daemonUrl);if(!Q)return null;return{id:X,handle:Y.handle,pid:G.pid,daemonPort:G.daemonPort,daemonUrl:G.daemonUrl,workdir:G.workdir,token:G.token,bootId:Q.bootId}}}function E_5(X){if(X<=0)return!1;try{return process.kill(X,0),!0}catch{return!1}}function Qf6(){return new Promise((X,Y)=>{let G=N_5();G.unref(),G.on("error",Y),G.listen(0,"127.0.0.1",()=>{let Q=G.address();if(Q&&typeof Q==="object"){let{port:J}=Q;G.close(()=>X(J))}else G.close(()=>Y(Error("could not allocate port")))})})}function P_5(X){let Y=X.repo?X.repo.displayName??q_5(X.repo.cloneUrl):null;return{DAEMON_TOKEN:X.token,DAEMON_BOOT_ID:X.bootId,APP_ROOT:X.workdir,PROXY_PORT:String(X.daemonPort),DEV_PORT:String(X.devPort),RUNTIME:X.runtime,...X.repo?{CLONE_URL:X.repo.cloneUrl,REPO_NAME:Y??"",BRANCH:X.repo.branch??"",GIT_USER_NAME:X.repo.userName,GIT_USER_EMAIL:X.repo.userEmail}:{},...X.packageManager?{PACKAGE_MANAGER:X.packageManager}:{},...X.extraEnv??{}}}function q_5(X){try{let Y=new URL(X);return Y.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Y.hostname}catch{return X}}function A_5(){return z_5(O_5(new URL("../../../daemon/entry.ts",import.meta.url)))}function I_5(){let X=Bun.resolveSync("node-pty",import.meta.dir),Y="/node_modules/",G=X.lastIndexOf("/node_modules/");if(G<0)throw Error(`[HostSandboxRunner] could not derive node_modules path from node-pty resolution: ${X}`);return X.slice(0,G+14-1)}async function j_5(X){let{DAEMON_BUNDLE:Y}=await Promise.resolve().then(() => (Gf6(),Yf6)),G=$_5("sha256").update(Y).digest("hex").slice(0,16),Q=XV0(X,".deco","cache"),J=XV0(Q,`sandbox-daemon-${G}.js`);if(Jf6(J))return J;await Zf6(Q,{recursive:!0});let $=`${J}.${process.pid}.tmp`;return await U_5($,Y),await H_5($,J),J}async function T_5(X){let Y=A_5();if(Jf6(Y))return Y;return j_5(X)}function V_5(X){return async(Y)=>{let G=await T_5(X),Q=I_5(),J=process.env.NODE_PATH,$=J?`${Q}:${J}`:Q,Z=Bun.spawn({cmd:["bun","run",G],env:{...process.env,NODE_PATH:$,...Y.env},stdout:"inherit",stderr:"inherit",stdin:"ignore"});return{pid:Z.pid,kill:(W)=>{return Z.kill(W),!0}}}}var PM="host",D_5=30000,w_5=250,L_5=2000;var $f6=D(()=>{bV1();Yt()});var Wf6=D(()=>{$f6()});function Gt(X){if("threadId"in X){if(!X.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${X.threadId}`}if(!X.orgId||!X.virtualMcpId||!X.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${X.orgId}:${X.virtualMcpId}:${X.branch}`}var qM={};b6(qM,{sweepDockerOrphansOnShutdown:()=>sT0,sweepDockerOrphansOnBoot:()=>oT0,startLocalSandboxIngress:()=>tT0,sandboxIdKey:()=>Xt,resolveRunnerKindFromEnv:()=>aB,ensureSandboxImage:()=>xV1,createDockerRunner:()=>M_5,computeHandle:()=>f3,composeSandboxRef:()=>Gt,HostSandboxRunner:()=>lV1,DockerSandboxRunner:()=>wU});function M_5(X={}){return new wU({...X.docker,stateStore:X.stateStore})}function aB(){let X=process.env.STUDIO_SANDBOX_RUNNER,Y=X&&X.length>0?X:"host";if(!R_5.has(Y))throw Error(`Unknown STUDIO_SANDBOX_RUNNER="${X}" \u2014 expected "host", "docker", "freestyle", or "agent-sandbox".`);if(Y==="freestyle"&&!process.env.FREESTYLE_API_KEY)throw Error('STUDIO_SANDBOX_RUNNER="freestyle" requires FREESTYLE_API_KEY to be set.');return Y}var R_5;var tB=D(()=>{WQ1();WQ1();Wf6();Yt();nT0();WQ1();WQ1();R_5=new Set(["host","docker","freestyle","agent-sandbox"])});var KQ1;var YV0=D(()=>{KQ1={npm:{install:"npm install",run:(X)=>`npm run ${X}`,runtime:"node"},pnpm:{install:"pnpm install",run:(X)=>`pnpm run ${X}`,runtime:"node"},yarn:{install:"yarn install",run:(X)=>`yarn run ${X}`,runtime:"node"},bun:{install:"bun install",run:(X)=>`bun run ${X}`,runtime:"bun"},deno:{install:"deno install",run:(X)=>`deno task ${X}`,runtime:"deno"}}});function aq(X){if(!X||typeof X!=="object")return{};let Y=X.vmMap;if(!Y||typeof Y!=="object")return{};return Y}function Qt(X,Y,G){return X[Y]?.[G]??null}async function Kf6(X,Y,G,Q,J,$){let Z=await X.findById(Y);if(!Z)return;let W=Z.metadata??{},K=aq(W),H={...K,[Q]:{...K[Q]??{},[J]:$}};await X.update(Y,G,{metadata:{...W,vmMap:H}})}async function Hf6(X,Y,G,Q,J){let $=await X.findById(Y);if(!$)return;let Z=$.metadata??{},W=aq(Z);if(!W[Q]?.[J])return;let K={...W[Q]};delete K[J];let H={...W};if(Object.keys(K).length===0)delete H[Q];else H[Q]=K;await X.update(Y,G,{metadata:{...Z,vmMap:H}})}async function mV1(X,Y){U0(Y);let G=s1(Y);await Y.access.check();let Q=z6(Y);if(!Q)throw Error("User ID required");let J=await Y.storage.virtualMcps.findById(X.virtualMcpId);if(!J||J.organization_id!==G.id)throw Error("Virtual MCP not found");let $=J.metadata??{},Z=aq($),W=Qt(Z,Q,X.branch);return{virtualMcp:J,metadata:$,userId:Q,entry:W,organization:G}}function Ff6(X){let Y=X.runtime??null,Q=Y?.selected??null;if(!Q||!(Q in KQ1))return{packageManager:null,runtime:null,port:Y?.port??"3000",runtimeBinPath:null};let J=KQ1[Q].runtime,$=J==="deno"?"/opt/deno/bin":J==="bun"?"/opt/bun/bin":null;return{packageManager:Q,runtime:J,port:Y?.port??"3000",runtimeBinPath:$}}var GV0=D(()=>{YV0()});async function Uf6(X,Y,G,Q,J){let $=new Y$(Q,J),Z=await $.get(X);if(!Z)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let W=Z.accessToken;if(nX1(Z)&&$.isExpired(Z,AI1)){let N=await rX1(Z,$);if(!N)throw Error(F2);W=N}let K=`https://x-access-token:${W}@github.com/${Y}/${G}.git`,H="Deco Studio",U="studio@deco.cx";try{let N=await fetch("https://api.github.com/user",{headers:{Authorization:`token ${W}`,Accept:"application/vnd.github+json"}});if(N.ok){let B=await N.json();H=B.name||B.login,U=B.email||`${B.login}@users.noreply.github.com`}}catch{}return{cloneUrl:K,gitUserName:H,gitUserEmail:U}}var Nf6=D(()=>{e2();II1()});async function Of6(X,Y,G,Q,J){let $=await new Y$(Q,J).get(X);if(!$)return null;let Z=new Map,W=new Set(Bf6.map((N)=>N.path));for(let N of Object.values(zf6))for(let B of N??[])W.add(B);await Promise.all(Array.from(W).map(async(N)=>{Z.set(N,await k_5(Y,G,N,$.accessToken))}));let K=Bf6.find(({path:N})=>Z.get(N)!==null);if(!K)return null;let H=zf6[K.pm]??[],U=null;for(let N of H)if(U=C_5(Z.get(N)??null),U)break;return{packageManager:K.pm,devPort:U}}async function k_5(X,Y,G,Q){let J=`https://api.github.com/repos/${X}/${Y}/contents/${encodeURIComponent(G)}`;try{let $=await fetch(J,{headers:{Authorization:`token ${Q}`,Accept:"application/vnd.github+json","User-Agent":"mesh-runtime-detect"},signal:AbortSignal.timeout(5000)});if(!$.ok)return null;let Z=await $.json();if(!Z.content||Z.encoding!=="base64")return null;return Buffer.from(Z.content,"base64").toString("utf8")}catch{return null}}function C_5(X){if(!X)return null;try{let Y=JSON.parse(X),G=Y.tasks??Y.scripts??{};return(G.dev??G.start??"").match(S_5)?.[1]??null}catch{return null}}var Bf6,zf6,S_5;var Df6=D(()=>{e2();Bf6=[{path:"deno.json",pm:"deno"},{path:"deno.jsonc",pm:"deno"},{path:"bun.lock",pm:"bun"},{path:"bunfig.toml",pm:"bun"},{path:"pnpm-lock.yaml",pm:"pnpm"},{path:"yarn.lock",pm:"yarn"},{path:"package-lock.json",pm:"npm"},{path:"package.json",pm:"npm"}],zf6={deno:["deno.json","deno.jsonc"],bun:["package.json"],pnpm:["package.json"],yarn:["package.json"],npm:["package.json"]},S_5=/(?:--port|PORT=|:)(\d{4,5})/});import{createHash as v_5}from"crypto";function __5(X,Y){return v_5("sha256").update(X.userId).update("\x00").update(X.projectRef).update("\x00").update(Y).digest().readBigInt64BE(0)}async function Lf6(X,Y,G){let Q=await X.selectFrom("sandbox_runner_state").select(["handle","state","updated_at"]).where("user_id","=",Y.userId).where("project_ref","=",Y.projectRef).where("runner_kind","=",G).executeTakeFirst();if(!Q)return null;return{handle:Q.handle,state:Q.state,updatedAt:Q.updated_at}}async function Ef6(X,Y,G){let Q=await X.selectFrom("sandbox_runner_state").select(["user_id","project_ref","handle","state","updated_at"]).where("runner_kind","=",Y).where("handle","=",G).executeTakeFirst();if(!Q)return null;return{id:{userId:Q.user_id,projectRef:Q.project_ref},handle:Q.handle,state:Q.state,updatedAt:Q.updated_at}}async function Pf6(X,Y,G,Q){let J=JSON.stringify(Q.state),$=new Date().toISOString();await X.insertInto("sandbox_runner_state").values({user_id:Y.userId,project_ref:Y.projectRef,runner_kind:G,handle:Q.handle,state:J,updated_at:$}).onConflict((Z)=>Z.columns(["user_id","project_ref","runner_kind"]).doUpdateSet({handle:Q.handle,state:J,updated_at:$})).execute()}async function qf6(X,Y,G){await X.deleteFrom("sandbox_runner_state").where("user_id","=",Y.userId).where("project_ref","=",Y.projectRef).where("runner_kind","=",G).execute()}async function Af6(X,Y,G){await X.deleteFrom("sandbox_runner_state").where("runner_kind","=",Y).where("handle","=",G).execute()}function f_5(X){return{get:(Y,G)=>Lf6(X,Y,G),getByHandle:(Y,G)=>Ef6(X,Y,G),put:(Y,G,Q)=>Pf6(X,Y,G,Q),delete:(Y,G)=>qf6(X,Y,G),deleteByHandle:(Y,G)=>Af6(X,Y,G)}}class HQ1{db;constructor(X){this.db=X}get(X,Y){return Lf6(this.db,X,Y)}getByHandle(X,Y){return Ef6(this.db,X,Y)}put(X,Y,G){return Pf6(this.db,X,Y,G)}delete(X,Y){return qf6(this.db,X,Y)}deleteByHandle(X,Y){return Af6(this.db,X,Y)}async withLock(X,Y,G){let Q=__5(X,Y);return this.db.transaction().execute(async(J)=>{try{await n1`set local statement_timeout = ${n1.lit(wf6)}`.execute(J),await n1`select pg_advisory_xact_lock(${Q}::bigint)`.execute(J)}catch($){if(b_5($))throw Error(`sandbox advisory lock busy >${wf6}ms for user=${X.userId} projectRef=${X.projectRef} kind=${Y} \u2014 provisioner is slow or stuck; retry shortly`);throw $}return await n1`set local statement_timeout = 0`.execute(J),G(f_5(J))})}}function b_5(X){if(!(X instanceof Error))return!1;return X.code==="57014"||/statement timeout/i.test(X.message)}var wf6=90000;var QV0=D(()=>{R7()});function Rf6(X){let Y=y_5[X.code];if(Y)return new Y(X);else return Error(`Unknown error code: ${X.code} - ${X.description}`)}class og6{baseUrl;apiKey;accessToken;fetchFn;constructor(X={}){this.baseUrl=X.baseUrl||"https://api.freestyle.sh",this.apiKey="apiKey"in X?X.apiKey:void 0,this.accessToken="accessToken"in X?X.accessToken:void 0,this.fetchFn=X.fetch||fetch}buildUrl(X,Y,G){let Q=X;if(Y)for(let[J,$]of Object.entries(Y))Q=Q.replace(`{${J}}`,encodeURIComponent($));if(G){let J=new URLSearchParams;for(let[Z,W]of Object.entries(G))if(W!==void 0&&W!==null)J.append(Z,String(W));let $=J.toString();if($)Q+=`?${$}`}return this.baseUrl+Q}getDefaultHeaders(){let X={"X-Freestyle-SDK":jf6,"X-Freestyle-SDK-Version":If6,"User-Agent":`${jf6}/${If6}`};if(this.apiKey)X.Authorization=`Bearer ${this.apiKey}`;else if(this.accessToken)X["X-Freestyle-Identity-Access-Token"]=this.accessToken;return X}async requestRaw(X,Y,G,Q){let J={...this.getDefaultHeaders(),...Q};if(G)J["Content-Type"]="application/json";let $=await this.fetchFn(Y,{method:X,headers:J,body:G?JSON.stringify(G):void 0});if(!$.ok){let Z=await $.text(),W;try{W=JSON.parse(Z)}catch(K){if($.status===401)Z+=" (Your API key or access token may be invalid.)";throw Error(`HTTP error ${$.status}: ${Z}. ${K}`)}throw Rf6(W)}return $}async request(X,Y,G,Q){return(await this.requestRaw(X,Y,G,Q)).json()}async fetch(X,Y){let G=this.getDefaultHeaders(),Q={...Y,headers:{...G,...Y?.headers||{}}};return this.fetchFn(X,Q)}resolveUrl(X,Y,G){return this.buildUrl(X,Y,G)}getRaw(X,Y){let G=this.buildUrl(X,Y?.params,Y?.query);return this.requestRaw("GET",G,void 0,Y?.headers)}postRaw(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.requestRaw("POST",Q,G?.body,G?.headers)}get(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("GET",Q,G?.body,G?.headers)}post(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("POST",Q,G?.body,G?.headers)}put(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("PUT",Q,G?.body,G?.headers)}delete(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("DELETE",Q,G?.body,G?.headers)}patch(X,...Y){let G=Y[0],Q=this.buildUrl(X,G?.params,G?.query);return this.request("PATCH",Q,G?.body,G?.headers)}}class sg6{constructor(X){this.apiClient=X}async create({domain:X}){let Y=await this.apiClient.post("/domains/v1/verifications",{body:{domain:X}});return{verificationId:Y.id,instructions:`Navigate to your domain's DNS settings and create a TXT record with the following details:
4710
4710
 
4711
4711
  Name: _freestyle_custom_hostname.${X}
4712
4712
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "2.300.0",
3
+ "version": "2.300.2",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{e as t,j as i}from"./index-CyHkfxs2.js";import{O as m}from"./select-model-UWZWvXzk.js";import"./checkbox-BfEy2ev6.js";import"./ChevronDown-CJXiv6mb.js";import"./input-DocW6-0a.js";import"./dialog-Bt7s8NCP.js";import"./X-Bs-K3rP3.js";import"./drawer-a25q5Lla.js";import"./tooltip-MEij__fd.js";import"./select-Ceunqeln.js";import"./ChevronUp--G-qrAEM.js";import"./skeleton-D9tsK-SD.js";import"./Tool01-ta8c5owo.js";import"./RefreshCcw01-CczH9hEb.js";import"./SearchMd-D3ej9sdm.js";import"./Settings02-DSMqESXP.js";import"./use-ai-providers-BsFsk2om.js";import"./constants-6-xiUPcQ.js";import"./chat-context-BTwAu2wE.js";import"./use-virtual-mcp-MAVDLFj3.js";import"./use-collections-CuFil9_H.js";import"./use-decopilot-events-BU0YCIkb.js";import"./create-sse-subscription-CxkOgzKf.js";import"./use-tasks-BJrgZKAK.js";import"./use-organization-settings-D388Q9Bl.js";import"./ai-providers-logos-D6a8kmGH.js";import"./Zap-CruZDu0W.js";import"./AlertCircle-DQvE1HHW.js";import"./CheckCircle-jz1wj0OZ.js";import"./Trash01-piYSxXuV.js";import"./index-DK4Y3HO1.js";import"./settings-section-iYYh-GAG.js";import"./card-D3EHlDqN.js";import"./ArrowUpRight-DrX0ZBVK.js";import"./switch-PJFUwNv2.js";import"./toggle-group-wE6dZdNy.js";import"./avatar-C9H5J0ZH.js";import"./User01-BRe74tu_.js";import"./alert-dialog-DpjW0duE.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./unwrap-tool-result-BYXdCQMg.js";function T(){const o=t.c(1);let r;return o[0]===Symbol.for("react.memo_cache_sentinel")?(r=i.jsx(m,{}),o[0]=r):r=o[0],r}export{T as default};
@@ -1 +0,0 @@
1
- const c="https://assets.decocache.com/decocms/bc2ca488-2bae-4aac-8d3e-ead262dad764/agent.png",t="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",d="https://assets.decocache.com/decocms/51a209ae-14bc-4b6f-8216-8eb670695bd7/Anthropic-Icon--Streamline-Svg-Logos.svg";function o(s){const e=s.toLowerCase();return e.startsWith("gpt-")||e.startsWith("o1")||e.startsWith("o3")?"openai":e.startsWith("claude-")||e.startsWith("claude.")?"anthropic":e.startsWith("gemini")?"google":e.startsWith("llama")?"meta-llama":e.startsWith("mistral")||e.startsWith("mixtral")?"mistralai":e.startsWith("qwen")?"qwen":e.startsWith("deepseek")?"deepseek":e.startsWith("grok")?"x-ai":e.startsWith("command-")?"cohere":e.startsWith("phi-")?"microsoft":null}function m(s){const e=s.modelId.includes("/")?s.modelId.split("/")[0]:o(s.modelId);return e&&a[e]||a[s.providerId]||c}const a={"aion-labs":"https://assets.decocache.com/decocms/6da18da8-0160-4b85-8bca-84eefffebe12/images-(6).png",ai21:"https://assets.decocache.com/decocms/5d8388e9-027b-4b23-b816-90cee1cd28ad/images-(5).png",alfredpros:"https://assets.decocache.com/decocms/76eaa620-ce73-43d6-8817-272c1d498b53/images-(19).png",alibaba:"https://assets.decocache.com/decocms/4d113b13-5412-4d3b-96ec-3c2e7c1f7a5f/images-(8).png",allenai:"https://assets.decocache.com/decocms/21d6071a-e0da-4919-9f35-902b1d0b85b8/allen.png",alpindale:"https://assets.decocache.com/decocms/76eaa620-ce73-43d6-8817-272c1d498b53/images-(19).png",amazon:"https://assets.decocache.com/decocms/31e7b260-6cf0-4753-bb32-bd062b15c5f1/Amazon_icon.png",anthropic:d,"claude-code":"https://assets.decocache.com/decocms/2b91e6f8-5151-4b4f-bdf9-037ee769e6ff/Claude_AI_symbol.svg.png",codex:"https://assets.decocache.com/decocms/6ac44f1c-c0cf-4480-84b5-2ae6fe742d0b/codex-app.png.png","anthracite-org":c,"arcee-ai":"https://assets.decocache.com/decocms/ee325839-6acc-48dc-8cf7-8bab74698015/126496414.png",baidu:"https://assets.decocache.com/decocms/cf4c19f1-39b5-499e-87b7-e16dc5da2b50/images-(9).png",bytedance:"https://assets.decocache.com/decocms/1c111a26-8e1d-4a48-9d3c-fe9fb728af06/images-(18).png","bytedance-seed":"https://assets.decocache.com/decocms/1c111a26-8e1d-4a48-9d3c-fe9fb728af06/images-(18).png",cognitivecomputations:c,cohere:"https://assets.decocache.com/decocms/c942091b-b3bf-4c46-af37-fc2c1086d9f7/cohere-color.png",deepcogito:"https://assets.decocache.com/decocms/4ee77a8f-a36a-4933-8cdf-d2e8676b88d8/images-(13).png",deepseek:"https://assets.decocache.com/decocms/3611e8ac-4cad-4b0e-a1f8-8f791288ce03/images-(1).png",eleutherai:"https://assets.decocache.com/decocms/76eaa620-ce73-43d6-8817-272c1d498b53/images-(19).png",essentialai:"https://assets.decocache.com/decocms/c5afc6de-1e41-457e-a6dd-91810d92541e/images-(1).jpeg",google:"https://assets.decocache.com/webdraw/17df85af-1578-42ef-ae07-4300de0d1723/gemini.svg",gryphe:"https://assets.decocache.com/decocms/a5503d3b-2056-47f2-a76c-611b7416bdc8/6798c7dccaaadd0a1318d66a_66f41d1fd146c3b0b9c76453_gryphe-logo.webp","ibm-granite":"https://assets.decocache.com/decocms/2c50018d-6f70-472d-be30-65a5e8e249f0/images-(10).png",inflection:c,inception:"https://assets.decocache.com/decocms/ff9822b8-a914-482b-bd7d-b0e46b9d5a56/images-(6).jpeg",kwaipilot:"https://assets.decocache.com/decocms/cd576e1d-1184-45ba-8162-cf2bd06d684f/images-(14).png",liquid:c,mancer:"https://assets.decocache.com/decocms/79762356-a0c5-4546-b268-ad4a0b51db51/Screenshot-2026-01-08-at-18.49.42.png",meituan:c,"meta-llama":"https://assets.decocache.com/decocms/56421cb3-488c-4cc3-83a5-16d9a303850e/images-(11).png",microsoft:"https://assets.decocache.com/decocms/0e352a51-4ea5-4f35-802e-fd82bf266683/images-(12).png",minimax:"https://assets.decocache.com/decocms/f362cc4f-7ccc-4317-afda-92e6f348fdfd/images-(2).png",mistralai:"https://assets.decocache.com/decocms/73ab9971-bbbc-40dc-99a3-5fddd9a0f340/images-(3).png",morph:c,moonshotai:"https://assets.decocache.com/decocms/b8abfea7-e8b4-4b72-b653-fdf11c9e3b66/moonshot.png",neversleep:c,"nex-agi":"https://assets.decocache.com/decocms/d2ada265-160d-4959-981d-e90210d71713/241570229.jpeg",nousresearch:"https://assets.decocache.com/decocms/496acb3d-9b5d-4759-b764-16c9ca7eb6b2/nousresearch.png",nvidia:"https://assets.decocache.com/decocms/ecca3238-fa79-4648-bb55-738f13a4293f/nvidia-7.svg",opengvlab:"https://assets.decocache.com/decocms/fb2d0c32-85f1-410a-87f4-9731dfafd248/images-(2).jpeg",openai:"https://assets.decocache.com/webdraw/15dc381c-23b4-4f6b-9ceb-9690f77a7cf5/openai.svg",openrouter:t,perplexity:"https://assets.decocache.com/decocms/3a134746-f370-4089-a3c9-fe545be0441c/images-(15).png","prime-intellect":c,qwen:"https://assets.decocache.com/decocms/ab94208c-4439-4aec-a06c-c51747120e43/Qwen_logo.svg.png",raifle:c,relace:"https://assets.decocache.com/decocms/c5dbae73-3ce0-40ca-8433-c38783fb13a9/Screenshot-2026-01-08-at-18.52.09.png",sao10k:"https://assets.decocache.com/decocms/76eaa620-ce73-43d6-8817-272c1d498b53/images-(19).png","stepfun-ai":"https://assets.decocache.com/decocms/8892b883-4905-444e-b554-648565dc7fab/images-(16).png",switchpoint:"https://assets.decocache.com/decocms/0319d595-e0dd-4d8e-a0a3-b20ff4cbddcb/images-(4).jpeg",tencent:"https://assets.decocache.com/decocms/80f2f7bd-f9ea-4fcf-b89c-c58823a389ed/images-(3).jpeg",thedrummer:"https://assets.decocache.com/decocms/5c6c09fc-cf9d-43a1-a1c3-4a1ef367b824/images-(17).png",thudm:c,tngtech:"https://assets.decocache.com/decocms/5b5648ad-f858-4687-b67b-212cf186b62d/images-(7).png",undi95:c,xiaomi:"https://assets.decocache.com/decocms/2d7191b7-fc80-4867-a431-6d443d691cfc/images-(4).png","x-ai":"https://assets.decocache.com/webdraw/7a8003ff-8f2d-4988-8693-3feb20e87eca/xai.svg","z-ai":"https://assets.decocache.com/decocms/12a0877f-c978-4880-88d1-09097e606e2f/Z.ai_(company_logo).svg.png"};export{c as D,a as P,m as g};
@@ -1 +0,0 @@
1
- import{e as n,j as r,r as d,g as h,O as f,l as u}from"./index-CyHkfxs2.js";import{S as j,a as b,b as S}from"./index-DK4Y3HO1.js";import{u as _}from"./tooltip-MEij__fd.js";import{u as k,T as y,a as T,b as i,S as g}from"./index-CQbllXV7.js";import{C as v}from"./chat-context-BTwAu2wE.js";import"./X-Bs-K3rP3.js";import"./agent-icon-a5rgdmvn.js";import"./AlertCircle-DQvE1HHW.js";import"./Tool01-ta8c5owo.js";import"./XClose-BvTeI7_p.js";import"./RefreshCcw01-CczH9hEb.js";import"./ArrowNarrowLeft-JeNHsl7t.js";import"./XCircle-W80KsA2R.js";import"./ArrowUpRight-DrX0ZBVK.js";import"./ZapSquare-oPqMGrmK.js";import"./Users03-BthJNdjb.js";import"./CheckCircle-jz1wj0OZ.js";import"./ChevronDown-CJXiv6mb.js";import"./ChevronRight-jhe98Hpl.js";import"./ChevronUp--G-qrAEM.js";import"./DotsVertical-B-LaCx0W.js";import"./Container-LZZyJPZO.js";import"./Star01-BRqpvEVh.js";import"./Palette-CZdOy-tN.js";import"./SearchMd-D3ej9sdm.js";import"./LinkExternal01-2sbW7UGS.js";import"./Lock01-BOEORqQ0.js";import"./Sun-D-zn2wQr.js";import"./Play-CVmYi0Gz.js";import"./Plus-0qTCNeQu.js";import"./Settings02-DSMqESXP.js";import"./Shield01-Dk5a3EIz.js";import"./Trash01-piYSxXuV.js";import"./User01-BRe74tu_.js";import"./Zap-CruZDu0W.js";import"./shell-layout-B8B_ABl6.js";import"./dialog-Bt7s8NCP.js";import"./required-auth-layout-crEy15On.js";import"./use-tasks-BJrgZKAK.js";import"./use-collections-CuFil9_H.js";import"./constants-6-xiUPcQ.js";import"./use-organization-settings-D388Q9Bl.js";import"./use-org-sso-uVWWV8lc.js";import"./pair-4EJpDs9f.js";import"./index-Cpu398f4.js";import"./use-copy-L-Votg83.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./content-blocks-o63cs2vh.js";import"./types-DfUe_JMo.js";import"./integration-icon-DtlHVjfw.js";import"./use-virtual-mcp-MAVDLFj3.js";import"./skeleton-D9tsK-SD.js";import"./popover-BD8OsO_3.js";import"./drawer-a25q5Lla.js";import"./avatar-C9H5J0ZH.js";import"./alert-dialog-DpjW0duE.js";import"./form-DdyedIOG.js";import"./label-DbfzJMol.js";import"./input-DocW6-0a.js";import"./index-BLw8IR3q.js";import"./use-mcp-tools-UR7Tvr-a.js";import"./use-ai-providers-BsFsk2om.js";import"./index-DrWfdeB3.js";import"./switch-PJFUwNv2.js";import"./use-connection-CyKUB7va.js";import"./lean-canvas-recruit-modal-DUB9h6gA.js";import"./use-navigate-to-agent-C4FkilnS.js";import"./collection-search-DTXYBhEG.js";import"./checkbox-BfEy2ev6.js";import"./extract-connection-data-D-LoPsgm.js";import"./constants-o7_eEaEl.js";import"./collections-B4NDDkQp.js";import"./tabs-CbvFgdFf.js";import"./dropdown-menu-BNdhp1TS.js";import"./select-Ceunqeln.js";import"./toggle-group-wE6dZdNy.js";import"./select-model-UWZWvXzk.js";import"./ai-providers-logos-D6a8kmGH.js";import"./settings-section-iYYh-GAG.js";import"./card-D3EHlDqN.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./unwrap-tool-result-BYXdCQMg.js";import"./index-prfGmBrm.js";import"./question-004-sINsf4GQ.js";import"./connection-slug-eyAPH6o3.js";import"./connection-card-B8zimY_1.js";import"./use-registry-connections-Cdqd9fMq.js";import"./useInfiniteQuery-Cb2JkfVZ.js";import"./infiniteQueryObserver-WKNIeKEe.js";import"./collection-tabs-ZB2vm_Ts.js";import"./badge-DM1yKdHA.js";import"./textarea-BBy60ci1.js";import"./connection-form-helpers-DW_KgaUQ.js";import"./use-infinite-scroll-CQf3beQh.js";import"./useSuspenseInfiniteQuery-JMOXdk3c.js";import"./collection-search-BDlHgig4.js";import"./use-create-virtual-mcp-DCZ_Q4yV.js";import"./empty-state-TuyNETUf.js";import"./use-decopilot-events-BU0YCIkb.js";import"./create-sse-subscription-CxkOgzKf.js";import"./task-status-C0VnLSBE.js";const N=280;function P(){const t=n.c(2),{tasksOpen:e}=k();if(!e)return null;let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o={width:`${N}px`},t[0]=o):o=t[0];let m;return t[1]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx("aside",{className:"shrink-0 h-full bg-sidebar pb-1",style:o,children:r.jsx("div",{className:"h-full p-0.5 pt-0.25",children:r.jsx("div",{className:"h-full bg-background rounded-[0.75rem] overflow-hidden card-shadow",children:r.jsx(y,{})})})}),t[1]=m):m=t[1],m}function C(){const t=n.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=r.jsx(d.Suspense,{fallback:null,children:r.jsx(P,{})}),t[0]=e):e=t[0],e}function x(){const t=n.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e=r.jsx("div",{className:"flex-1 flex items-center justify-center",children:r.jsx(u,{size:20,className:"animate-spin text-muted-foreground"})}),t[0]=e):e=t[0],e}function yr(){const t=n.c(7),e=_();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o={strict:!1},t[0]=o):o=t[0];const c=!!h(o).taskId;let s;t[1]===Symbol.for("react.memo_cache_sentinel")?(s={"--sidebar-width-icon":"3.5rem"},t[1]=s):s=t[1];let l;t[2]===Symbol.for("react.memo_cache_sentinel")?(l=r.jsx(g,{}),t[2]=l):l=t[2];let p;t[3]===Symbol.for("react.memo_cache_sentinel")?(p={background:"transparent",containerType:"inline-size"},t[3]=p):p=t[3];let a;return t[4]!==c||t[5]!==e?(a=r.jsx(j,{defaultOpen:!1,children:r.jsx("div",{className:"flex flex-col h-dvh overflow-hidden",children:r.jsxs(b,{className:"flex-1 bg-sidebar",style:s,children:[l,r.jsx(S,{className:"flex flex-col",style:p,children:r.jsx(v,{children:r.jsx(T,{children:e?r.jsx(d.Suspense,{fallback:r.jsx(x,{}),children:r.jsx(f,{})}):r.jsxs(i,{children:[r.jsxs(i.Header,{children:[r.jsxs(i.LeftColumn,{children:[r.jsx(i.Nav,{}),r.jsx(i.TogglesSlot,{})]}),r.jsx(i.CenterSlot,{}),r.jsxs(i.RightColumn,{children:[r.jsx(i.TabsSlot,{}),r.jsx(i.RightSlot,{})]})]}),r.jsxs("div",{className:"flex-1 min-h-0 flex flex-row",children:[c&&r.jsx(C,{}),r.jsx(d.Suspense,{fallback:r.jsx(x,{}),children:r.jsx(f,{})})]})]})})})})]})})}),t[4]=c,t[5]=e,t[6]=a):a=t[6],a}export{yr as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-CNGnjhXy.js","assets/index-CyHkfxs2.js","assets/index-B4J1yAvl.css","assets/ArrowNarrowLeft-JeNHsl7t.js","assets/CheckCircle-jz1wj0OZ.js","assets/Container-LZZyJPZO.js","assets/Settings02-DSMqESXP.js","assets/XCircle-W80KsA2R.js","assets/constants-6-xiUPcQ.js","assets/useInfiniteQuery-Cb2JkfVZ.js","assets/infiniteQueryObserver-WKNIeKEe.js","assets/badge-DM1yKdHA.js","assets/input-DocW6-0a.js","assets/dropdown-menu-BNdhp1TS.js","assets/ChevronDown-CJXiv6mb.js","assets/ChevronRight-jhe98Hpl.js","assets/DotsVertical-B-LaCx0W.js","assets/table-B0qcR2jp.js","assets/toggle-group-wE6dZdNy.js","assets/use-view-mode-DLgQEYRO.js","assets/tooltip-MEij__fd.js","assets/SearchMd-D3ej9sdm.js","assets/dialog-Bt7s8NCP.js","assets/X-Bs-K3rP3.js","assets/AlertCircle-DQvE1HHW.js","assets/alert-dialog-DpjW0duE.js","assets/card-D3EHlDqN.js","assets/Trash01-piYSxXuV.js","assets/label-DbfzJMol.js","assets/select-Ceunqeln.js","assets/ChevronUp--G-qrAEM.js","assets/switch-PJFUwNv2.js","assets/textarea-BBy60ci1.js","assets/RefreshCcw01-CczH9hEb.js","assets/checkbox-BfEy2ev6.js","assets/LinkExternal01-2sbW7UGS.js","assets/use-copy-L-Votg83.js","assets/Plus-0qTCNeQu.js","assets/Play-CVmYi0Gz.js"])))=>i.map(i=>d[i]);
2
- import{e as a,j as t,r,l as i,_ as o}from"./index-CyHkfxs2.js";const n=r.lazy(()=>o(()=>import("./registry-layout-CNGnjhXy.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])));function c(){const s=a.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(r.Suspense,{fallback:t.jsx("div",{className:"flex-1 flex items-center justify-center",children:t.jsx(i,{size:20,className:"animate-spin text-muted-foreground"})}),children:t.jsx(n,{})}),s[0]=e):e=s[0],e}export{c as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-CNGnjhXy.js","assets/index-CyHkfxs2.js","assets/index-B4J1yAvl.css","assets/ArrowNarrowLeft-JeNHsl7t.js","assets/CheckCircle-jz1wj0OZ.js","assets/Container-LZZyJPZO.js","assets/Settings02-DSMqESXP.js","assets/XCircle-W80KsA2R.js","assets/constants-6-xiUPcQ.js","assets/useInfiniteQuery-Cb2JkfVZ.js","assets/infiniteQueryObserver-WKNIeKEe.js","assets/badge-DM1yKdHA.js","assets/input-DocW6-0a.js","assets/dropdown-menu-BNdhp1TS.js","assets/ChevronDown-CJXiv6mb.js","assets/ChevronRight-jhe98Hpl.js","assets/DotsVertical-B-LaCx0W.js","assets/table-B0qcR2jp.js","assets/toggle-group-wE6dZdNy.js","assets/use-view-mode-DLgQEYRO.js","assets/tooltip-MEij__fd.js","assets/SearchMd-D3ej9sdm.js","assets/dialog-Bt7s8NCP.js","assets/X-Bs-K3rP3.js","assets/AlertCircle-DQvE1HHW.js","assets/alert-dialog-DpjW0duE.js","assets/card-D3EHlDqN.js","assets/Trash01-piYSxXuV.js","assets/label-DbfzJMol.js","assets/select-Ceunqeln.js","assets/ChevronUp--G-qrAEM.js","assets/switch-PJFUwNv2.js","assets/textarea-BBy60ci1.js","assets/RefreshCcw01-CczH9hEb.js","assets/checkbox-BfEy2ev6.js","assets/LinkExternal01-2sbW7UGS.js","assets/use-copy-L-Votg83.js","assets/Plus-0qTCNeQu.js","assets/Play-CVmYi0Gz.js"])))=>i.map(i=>d[i]);
2
- import{e as n,f as c,g as m,j as r,l as f,r as l,_ as u}from"./index-CyHkfxs2.js";const _=l.lazy(()=>u(()=>import("./registry-layout-CNGnjhXy.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])));function x(){const e=n.c(5),o=c();let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t={from:"/shell/$org"},e[0]=t):t=e[0];const{org:i}=m(t);let s;e[1]===Symbol.for("react.memo_cache_sentinel")?(s=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=s):s=e[1];let a;return e[2]!==o||e[3]!==i?(a=r.jsx(l.Suspense,{fallback:s,children:r.jsx(_,{onBack:()=>o({to:"/$org/settings/store",params:{org:i}})})}),e[2]=o,e[3]=i,e[4]=a):a=e[4],a}export{x as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./infiniteQueryObserver-WKNIeKEe.js";import{c2 as i}from"./index-CyHkfxs2.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./infiniteQueryObserver-WKNIeKEe.js";import{c2 as u,c3 as n}from"./index-CyHkfxs2.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};
@@ -1 +0,0 @@
1
- import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-CyHkfxs2.js";import{a as f}from"./index-EieaBqsE.js";import"./index-0ONdtZvR.js";import"./constants-6-xiUPcQ.js";import"./collections-B4NDDkQp.js";import"./index-CPCIVubP.js";import"./use-virtual-mcp-MAVDLFj3.js";import"./use-collections-CuFil9_H.js";import"./monaco-editor-CteNuuJr.js";import"./index-Cpu398f4.js";import"./accordion-CbzOgqka.js";import"./agent-icon-a5rgdmvn.js";import"./AlertCircle-DQvE1HHW.js";import"./Tool01-ta8c5owo.js";import"./XClose-BvTeI7_p.js";import"./RefreshCcw01-CczH9hEb.js";import"./ArrowNarrowLeft-JeNHsl7t.js";import"./XCircle-W80KsA2R.js";import"./ArrowUpRight-DrX0ZBVK.js";import"./ZapSquare-oPqMGrmK.js";import"./Users03-BthJNdjb.js";import"./CheckCircle-jz1wj0OZ.js";import"./ChevronDown-CJXiv6mb.js";import"./ChevronRight-jhe98Hpl.js";import"./ChevronUp--G-qrAEM.js";import"./DotsVertical-B-LaCx0W.js";import"./Container-LZZyJPZO.js";import"./Star01-BRqpvEVh.js";import"./Palette-CZdOy-tN.js";import"./SearchMd-D3ej9sdm.js";import"./index-DK4Y3HO1.js";import"./tooltip-MEij__fd.js";import"./X-Bs-K3rP3.js";import"./LinkExternal01-2sbW7UGS.js";import"./Lock01-BOEORqQ0.js";import"./Sun-D-zn2wQr.js";import"./Play-CVmYi0Gz.js";import"./Plus-0qTCNeQu.js";import"./Settings02-DSMqESXP.js";import"./Shield01-Dk5a3EIz.js";import"./Trash01-piYSxXuV.js";import"./User01-BRe74tu_.js";import"./Zap-CruZDu0W.js";import"./badge-DM1yKdHA.js";import"./select-Ceunqeln.js";import"./view-mode-toggle-D8-KKhvu.js";import"./layout-Csh5DA6j.js";import"./use-connection-CyKUB7va.js";import"./use-mcp-tools-UR7Tvr-a.js";import"./dialog-Bt7s8NCP.js";import"./index-prfGmBrm.js";import"./dropdown-menu-BNdhp1TS.js";import"./integration-icon-DtlHVjfw.js";import"./scroll-area-DuFte1VC.js";import"./index-BLw8IR3q.js";import"./empty-state-DfhDT_rL.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-DocW6-0a.js";function ht(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{ht as default};
@@ -1,60 +0,0 @@
1
- export type WidthType = 'fullwidth' | 'halfwidth' | 'wide' | 'narrow' | 'neutral' | 'ambiguous';
2
-
3
- export type Options = {
4
- /**
5
- Whether to treat an `'ambiguous'` character as wide.
6
-
7
- @default true
8
-
9
- @example
10
- ```
11
- import {eastAsianWidth} from 'get-east-asian-width';
12
-
13
- const codePoint = '⛣'.codePointAt(0);
14
-
15
- console.log(eastAsianWidth(codePoint));
16
- //=> 1
17
-
18
- console.log(eastAsianWidth(codePoint, {ambiguousAsWide: true}));
19
- //=> 2
20
- ```
21
-
22
- > Ambiguous characters behave like wide or narrow characters depending on the context (language tag, script identification, associated font, source of data, or explicit markup; all can provide the context). __If the context cannot be established reliably, they should be treated as narrow characters by default.__
23
- > - http://www.unicode.org/reports/tr11/
24
- */
25
- readonly ambiguousAsWide?: boolean;
26
- };
27
-
28
- /**
29
- Returns the width as a number for the given code point.
30
-
31
- @param codePoint - A Unicode code point.
32
-
33
- @example
34
- ```
35
- import {eastAsianWidth} from 'get-east-asian-width';
36
-
37
- const codePoint = '字'.codePointAt(0);
38
-
39
- console.log(eastAsianWidth(codePoint));
40
- //=> 2
41
- ```
42
- */
43
- export function eastAsianWidth(codePoint: number, options?: Options): 1 | 2;
44
-
45
- /**
46
- Returns the type of “East Asian Width” for the given code point.
47
-
48
- @param codePoint - A Unicode code point.
49
-
50
- @example
51
- ```
52
- import {eastAsianWidthType} from 'get-east-asian-width';
53
-
54
- const codePoint = '字'.codePointAt(0);
55
-
56
- console.log(eastAsianWidthType(codePoint));
57
- //=> 'wide'
58
- ```
59
- */
60
- export function eastAsianWidthType(codePoint: number): WidthType;
@@ -1,30 +0,0 @@
1
- import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';
2
-
3
- function validate(codePoint) {
4
- if (!Number.isSafeInteger(codePoint)) {
5
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
6
- }
7
- }
8
-
9
- export function eastAsianWidthType(codePoint) {
10
- validate(codePoint);
11
-
12
- return getCategory(codePoint);
13
- }
14
-
15
- export function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {
16
- validate(codePoint);
17
-
18
- if (
19
- isFullWidth(codePoint)
20
- || isWide(codePoint)
21
- || (ambiguousAsWide && isAmbiguous(codePoint))
22
- ) {
23
- return 2;
24
- }
25
-
26
- return 1;
27
- }
28
-
29
- // Private exports for https://github.com/sindresorhus/is-fullwidth-code-point
30
- export {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';
@@ -1,18 +0,0 @@
1
- // Generated by scripts/build.js
2
-
3
- // prettier-ignore
4
- const ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
5
-
6
- // prettier-ignore
7
- const fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
8
-
9
- // prettier-ignore
10
- const halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
11
-
12
- // prettier-ignore
13
- const narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
14
-
15
- // prettier-ignore
16
- const wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
17
-
18
- export {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};
@@ -1,135 +0,0 @@
1
- import {
2
- ambiguousRanges,
3
- fullwidthRanges,
4
- halfwidthRanges,
5
- narrowRanges,
6
- wideRanges,
7
- } from './lookup-data.js';
8
- import {isInRange} from './utilities.js';
9
-
10
- const minimumAmbiguousCodePoint = ambiguousRanges[0];
11
- const maximumAmbiguousCodePoint = ambiguousRanges.at(-1);
12
- const minimumFullWidthCodePoint = fullwidthRanges[0];
13
- const maximumFullWidthCodePoint = fullwidthRanges.at(-1);
14
- const minimumHalfWidthCodePoint = halfwidthRanges[0];
15
- const maximumHalfWidthCodePoint = halfwidthRanges.at(-1);
16
- const minimumNarrowCodePoint = narrowRanges[0];
17
- const maximumNarrowCodePoint = narrowRanges.at(-1);
18
- const minimumWideCodePoint = wideRanges[0];
19
- const maximumWideCodePoint = wideRanges.at(-1);
20
-
21
- const commonCjkCodePoint = 0x4E_00;
22
- const [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);
23
-
24
- // Use a hot-path range so common `isWide` calls can skip binary search.
25
- // The range containing U+4E00 covers common CJK ideographs;
26
- // fallback to the largest range for resilience to Unicode table changes.
27
- function findWideFastPathRange(ranges) {
28
- let fastPathStart = ranges[0];
29
- let fastPathEnd = ranges[1];
30
-
31
- for (let index = 0; index < ranges.length; index += 2) {
32
- const start = ranges[index];
33
- const end = ranges[index + 1];
34
-
35
- if (
36
- commonCjkCodePoint >= start
37
- && commonCjkCodePoint <= end
38
- ) {
39
- return [start, end];
40
- }
41
-
42
- if ((end - start) > (fastPathEnd - fastPathStart)) {
43
- fastPathStart = start;
44
- fastPathEnd = end;
45
- }
46
- }
47
-
48
- return [fastPathStart, fastPathEnd];
49
- }
50
-
51
- export const isAmbiguous = codePoint => {
52
- if (
53
- codePoint < minimumAmbiguousCodePoint
54
- || codePoint > maximumAmbiguousCodePoint
55
- ) {
56
- return false;
57
- }
58
-
59
- return isInRange(ambiguousRanges, codePoint);
60
- };
61
-
62
- export const isFullWidth = codePoint => {
63
- if (
64
- codePoint < minimumFullWidthCodePoint
65
- || codePoint > maximumFullWidthCodePoint
66
- ) {
67
- return false;
68
- }
69
-
70
- return isInRange(fullwidthRanges, codePoint);
71
- };
72
-
73
- const isHalfWidth = codePoint => {
74
- if (
75
- codePoint < minimumHalfWidthCodePoint
76
- || codePoint > maximumHalfWidthCodePoint
77
- ) {
78
- return false;
79
- }
80
-
81
- return isInRange(halfwidthRanges, codePoint);
82
- };
83
-
84
- const isNarrow = codePoint => {
85
- if (
86
- codePoint < minimumNarrowCodePoint
87
- || codePoint > maximumNarrowCodePoint
88
- ) {
89
- return false;
90
- }
91
-
92
- return isInRange(narrowRanges, codePoint);
93
- };
94
-
95
- export const isWide = codePoint => {
96
- if (
97
- codePoint >= wideFastPathStart
98
- && codePoint <= wideFastPathEnd
99
- ) {
100
- return true;
101
- }
102
-
103
- if (
104
- codePoint < minimumWideCodePoint
105
- || codePoint > maximumWideCodePoint
106
- ) {
107
- return false;
108
- }
109
-
110
- return isInRange(wideRanges, codePoint);
111
- };
112
-
113
- export function getCategory(codePoint) {
114
- if (isAmbiguous(codePoint)) {
115
- return 'ambiguous';
116
- }
117
-
118
- if (isFullWidth(codePoint)) {
119
- return 'fullwidth';
120
- }
121
-
122
- if (isHalfWidth(codePoint)) {
123
- return 'halfwidth';
124
- }
125
-
126
- if (isNarrow(codePoint)) {
127
- return 'narrow';
128
- }
129
-
130
- if (isWide(codePoint)) {
131
- return 'wide';
132
- }
133
-
134
- return 'neutral';
135
- }
@@ -1,71 +0,0 @@
1
- {
2
- "name": "get-east-asian-width",
3
- "version": "1.5.0",
4
- "description": "Determine the East Asian Width of a Unicode character",
5
- "license": "MIT",
6
- "repository": "sindresorhus/get-east-asian-width",
7
- "funding": "https://github.com/sponsors/sindresorhus",
8
- "author": {
9
- "name": "Sindre Sorhus",
10
- "email": "sindresorhus@gmail.com",
11
- "url": "https://sindresorhus.com"
12
- },
13
- "type": "module",
14
- "exports": {
15
- "types": "./index.d.ts",
16
- "default": "./index.js"
17
- },
18
- "sideEffects": false,
19
- "engines": {
20
- "node": ">=18"
21
- },
22
- "scripts": {
23
- "test": "xo && ava && tsc index.d.ts",
24
- "build": "node scripts/build.js",
25
- "prepublish": "npm run build"
26
- },
27
- "files": [
28
- "index.js",
29
- "index.d.ts",
30
- "lookup.js",
31
- "lookup-data.js",
32
- "utilities.js"
33
- ],
34
- "keywords": [
35
- "unicode",
36
- "east-asian-width",
37
- "eastasianwidth",
38
- "character",
39
- "string",
40
- "width",
41
- "text",
42
- "layout",
43
- "alignment",
44
- "fullwidth",
45
- "halfwidth",
46
- "ambiguous",
47
- "narrow",
48
- "wide",
49
- "neutral",
50
- "typography",
51
- "japanese",
52
- "chinese",
53
- "korean",
54
- "codepoint",
55
- "text-processing",
56
- "i18n",
57
- "l10n"
58
- ],
59
- "devDependencies": {
60
- "ava": "^5.3.1",
61
- "outdent": "^0.8.0",
62
- "simplify-ranges": "^0.1.0",
63
- "typescript": "^5.2.2",
64
- "xo": "^0.56.0"
65
- },
66
- "xo": {
67
- "ignores": [
68
- "lookup-data.js"
69
- ]
70
- }
71
- }