@keystrokehq/platform 0.1.3 → 0.1.4

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 (305) hide show
  1. package/dist/{awk2-LA3USKJP-BE8esz9o.cjs → awk2-LA3USKJP-D1rYfUKt.cjs} +2 -2
  2. package/dist/{awk2-LA3USKJP-BE8esz9o.cjs.map → awk2-LA3USKJP-D1rYfUKt.cjs.map} +1 -1
  3. package/dist/{awk2-LA3USKJP-CU79F18c.mjs → awk2-LA3USKJP-DUeD84nt.mjs} +2 -2
  4. package/dist/{awk2-LA3USKJP-CU79F18c.mjs.map → awk2-LA3USKJP-DUeD84nt.mjs.map} +1 -1
  5. package/dist/{base64-C2AIWVNC-CGFeI4Fm.cjs → base64-C2AIWVNC-CHxJHAm1.cjs} +2 -2
  6. package/dist/{base64-C2AIWVNC-CGFeI4Fm.cjs.map → base64-C2AIWVNC-CHxJHAm1.cjs.map} +1 -1
  7. package/dist/{base64-C2AIWVNC-ESsdavRZ.mjs → base64-C2AIWVNC-DCgZ4OVw.mjs} +2 -2
  8. package/dist/{base64-C2AIWVNC-ESsdavRZ.mjs.map → base64-C2AIWVNC-DCgZ4OVw.mjs.map} +1 -1
  9. package/dist/{bash-YZ33HQZQ-Z8YFnXLG.cjs → bash-YZ33HQZQ-7G2TAT74.cjs} +2 -2
  10. package/dist/{bash-YZ33HQZQ-Z8YFnXLG.cjs.map → bash-YZ33HQZQ-7G2TAT74.cjs.map} +1 -1
  11. package/dist/{bash-YZ33HQZQ-Tqw_IzZM.mjs → bash-YZ33HQZQ-BPjbb6w0.mjs} +2 -2
  12. package/dist/{bash-YZ33HQZQ-Tqw_IzZM.mjs.map → bash-YZ33HQZQ-BPjbb6w0.mjs.map} +1 -1
  13. package/dist/{cat-TSFMZVYS-B-Qi4MIN.mjs → cat-TSFMZVYS-HIG335Ji.mjs} +3 -3
  14. package/dist/{cat-TSFMZVYS-B-Qi4MIN.mjs.map → cat-TSFMZVYS-HIG335Ji.mjs.map} +1 -1
  15. package/dist/{cat-TSFMZVYS-3tq36V6U.cjs → cat-TSFMZVYS-mIzvH-qZ.cjs} +3 -3
  16. package/dist/{cat-TSFMZVYS-3tq36V6U.cjs.map → cat-TSFMZVYS-mIzvH-qZ.cjs.map} +1 -1
  17. package/dist/{chunk-5H5SCKJM-DG2zdmBl.cjs → chunk-5H5SCKJM-CBTxdgnD.cjs} +2 -2
  18. package/dist/{chunk-5H5SCKJM-DG2zdmBl.cjs.map → chunk-5H5SCKJM-CBTxdgnD.cjs.map} +1 -1
  19. package/dist/{chunk-5H5SCKJM-jzOek3RA.mjs → chunk-5H5SCKJM-CD7aK8AR.mjs} +2 -2
  20. package/dist/{chunk-5H5SCKJM-jzOek3RA.mjs.map → chunk-5H5SCKJM-CD7aK8AR.mjs.map} +1 -1
  21. package/dist/{chunk-AQ6FYS2X-Bz4Sl0he.mjs → chunk-AQ6FYS2X-B6yFWOgA.mjs} +2 -2
  22. package/dist/{chunk-AQ6FYS2X-Bz4Sl0he.mjs.map → chunk-AQ6FYS2X-B6yFWOgA.mjs.map} +1 -1
  23. package/dist/{chunk-AQ6FYS2X-CWRY3oXA.cjs → chunk-AQ6FYS2X-BEc3YCkn.cjs} +2 -2
  24. package/dist/{chunk-AQ6FYS2X-CWRY3oXA.cjs.map → chunk-AQ6FYS2X-BEc3YCkn.cjs.map} +1 -1
  25. package/dist/{chunk-CHFEPBH4-BjRBtKoa.cjs → chunk-CHFEPBH4-DAgKa_ae.cjs} +2 -2
  26. package/dist/{chunk-CHFEPBH4-BjRBtKoa.cjs.map → chunk-CHFEPBH4-DAgKa_ae.cjs.map} +1 -1
  27. package/dist/{chunk-CHFEPBH4-Cg_Ca4ca.mjs → chunk-CHFEPBH4-DszyllYf.mjs} +2 -2
  28. package/dist/{chunk-CHFEPBH4-Cg_Ca4ca.mjs.map → chunk-CHFEPBH4-DszyllYf.mjs.map} +1 -1
  29. package/dist/{chunk-EBAPSGAO-BAjudTzg.mjs → chunk-EBAPSGAO-BQN5Sjrp.mjs} +2 -2
  30. package/dist/{chunk-EBAPSGAO-BAjudTzg.mjs.map → chunk-EBAPSGAO-BQN5Sjrp.mjs.map} +1 -1
  31. package/dist/{chunk-EBAPSGAO-TuSvdjDg.cjs → chunk-EBAPSGAO-D8V_MK82.cjs} +2 -2
  32. package/dist/{chunk-EBAPSGAO-TuSvdjDg.cjs.map → chunk-EBAPSGAO-D8V_MK82.cjs.map} +1 -1
  33. package/dist/{chunk-LEKBROJD-VngQ-bGK.cjs → chunk-LEKBROJD-BdNyb-Zx.cjs} +2 -2
  34. package/dist/{chunk-LEKBROJD-VngQ-bGK.cjs.map → chunk-LEKBROJD-BdNyb-Zx.cjs.map} +1 -1
  35. package/dist/{chunk-LEKBROJD-B7WoDbJJ.mjs → chunk-LEKBROJD-D0Z3abFc.mjs} +2 -2
  36. package/dist/{chunk-LEKBROJD-B7WoDbJJ.mjs.map → chunk-LEKBROJD-D0Z3abFc.mjs.map} +1 -1
  37. package/dist/{chunk-VPADYNBD-Ju6wgxLY.cjs → chunk-VPADYNBD-BcW9UUUJ.cjs} +2 -2
  38. package/dist/{chunk-VPADYNBD-Ju6wgxLY.cjs.map → chunk-VPADYNBD-BcW9UUUJ.cjs.map} +1 -1
  39. package/dist/{chunk-VPADYNBD-B7JoVwJq.mjs → chunk-VPADYNBD-Cz4RpzRs.mjs} +2 -2
  40. package/dist/{chunk-VPADYNBD-B7JoVwJq.mjs.map → chunk-VPADYNBD-Cz4RpzRs.mjs.map} +1 -1
  41. package/dist/{chunk-YCLFEX4T-BoIwWBSQ.mjs → chunk-YCLFEX4T-BuriAMZM.mjs} +2 -2
  42. package/dist/{chunk-YCLFEX4T-BoIwWBSQ.mjs.map → chunk-YCLFEX4T-BuriAMZM.mjs.map} +1 -1
  43. package/dist/{chunk-YCLFEX4T-81Ii8Wlf.cjs → chunk-YCLFEX4T-D5bZETGy.cjs} +2 -2
  44. package/dist/{chunk-YCLFEX4T-81Ii8Wlf.cjs.map → chunk-YCLFEX4T-D5bZETGy.cjs.map} +1 -1
  45. package/dist/{column-XT6UFXNQ-ieIKmRkh.cjs → column-XT6UFXNQ-CK3Tgvp9.cjs} +2 -2
  46. package/dist/{column-XT6UFXNQ-ieIKmRkh.cjs.map → column-XT6UFXNQ-CK3Tgvp9.cjs.map} +1 -1
  47. package/dist/{column-XT6UFXNQ-B8RfIkpb.mjs → column-XT6UFXNQ-D7U-7Zb_.mjs} +2 -2
  48. package/dist/{column-XT6UFXNQ-B8RfIkpb.mjs.map → column-XT6UFXNQ-D7U-7Zb_.mjs.map} +1 -1
  49. package/dist/{comm-VV2LDX2J-DEKxgGlr.mjs → comm-VV2LDX2J-CVpn9toT.mjs} +2 -2
  50. package/dist/{comm-VV2LDX2J-DEKxgGlr.mjs.map → comm-VV2LDX2J-CVpn9toT.mjs.map} +1 -1
  51. package/dist/{comm-VV2LDX2J-CdE-OYeG.cjs → comm-VV2LDX2J-Dz_BBbXW.cjs} +2 -2
  52. package/dist/{comm-VV2LDX2J-CdE-OYeG.cjs.map → comm-VV2LDX2J-Dz_BBbXW.cjs.map} +1 -1
  53. package/dist/{config-CXBff_fs.d.mts → config-DF8H5mS5.d.mts} +17 -13
  54. package/dist/{config-C78TqlE1.d.cts → config-DqyMT-Xg.d.cts} +17 -13
  55. package/dist/config.cjs +1 -1
  56. package/dist/config.cjs.map +1 -1
  57. package/dist/config.d.cts +1 -1
  58. package/dist/config.d.mts +1 -1
  59. package/dist/config.mjs +1 -1
  60. package/dist/config.mjs.map +1 -1
  61. package/dist/{cp-BISAAS7A-CMVh32j_.mjs → cp-BISAAS7A-DKr1SlBP.mjs} +2 -2
  62. package/dist/{cp-BISAAS7A-CMVh32j_.mjs.map → cp-BISAAS7A-DKr1SlBP.mjs.map} +1 -1
  63. package/dist/{cp-BISAAS7A-C1ygPb-h.cjs → cp-BISAAS7A-jNcszZAJ.cjs} +2 -2
  64. package/dist/{cp-BISAAS7A-C1ygPb-h.cjs.map → cp-BISAAS7A-jNcszZAJ.cjs.map} +1 -1
  65. package/dist/{cut-OKARJCCV-CluNzLiu.mjs → cut-OKARJCCV-BjKVWby5.mjs} +3 -3
  66. package/dist/{cut-OKARJCCV-CluNzLiu.mjs.map → cut-OKARJCCV-BjKVWby5.mjs.map} +1 -1
  67. package/dist/{cut-OKARJCCV-S-g4hG3d.cjs → cut-OKARJCCV-Cc-_kYHa.cjs} +3 -3
  68. package/dist/{cut-OKARJCCV-S-g4hG3d.cjs.map → cut-OKARJCCV-Cc-_kYHa.cjs.map} +1 -1
  69. package/dist/{diff-MWJFIG7X-Xtqp7FtF.cjs → diff-MWJFIG7X-B6ToWPAr.cjs} +2 -2
  70. package/dist/{diff-MWJFIG7X-Xtqp7FtF.cjs.map → diff-MWJFIG7X-B6ToWPAr.cjs.map} +1 -1
  71. package/dist/{diff-MWJFIG7X-CuSut3C1.mjs → diff-MWJFIG7X-BCHpDWKE.mjs} +2 -2
  72. package/dist/{diff-MWJFIG7X-CuSut3C1.mjs.map → diff-MWJFIG7X-BCHpDWKE.mjs.map} +1 -1
  73. package/dist/{dist-D1Iv7_7S.cjs → dist-CTYXqPDt.cjs} +253 -193
  74. package/dist/dist-CTYXqPDt.cjs.map +1 -0
  75. package/dist/{dist-70NUfApd.mjs → dist-u6HScFsc.mjs} +253 -193
  76. package/dist/dist-u6HScFsc.mjs.map +1 -0
  77. package/dist/{du-572XNP42-f68GOB47.cjs → du-572XNP42-CQyl8s3u.cjs} +2 -2
  78. package/dist/{du-572XNP42-f68GOB47.cjs.map → du-572XNP42-CQyl8s3u.cjs.map} +1 -1
  79. package/dist/{du-572XNP42-BTLDH4CK.mjs → du-572XNP42-D2LEmfx9.mjs} +2 -2
  80. package/dist/{du-572XNP42-BTLDH4CK.mjs.map → du-572XNP42-D2LEmfx9.mjs.map} +1 -1
  81. package/dist/{env-36M5BO7M-DHcnOUrA.cjs → env-36M5BO7M-BgS1oyaO.cjs} +2 -2
  82. package/dist/{env-36M5BO7M-DHcnOUrA.cjs.map → env-36M5BO7M-BgS1oyaO.cjs.map} +1 -1
  83. package/dist/{env-36M5BO7M-CjuGiDaW.mjs → env-36M5BO7M-CQz3heu4.mjs} +2 -2
  84. package/dist/{env-36M5BO7M-CjuGiDaW.mjs.map → env-36M5BO7M-CQz3heu4.mjs.map} +1 -1
  85. package/dist/{expand-JSPG6VOP-Cmm7S480.mjs → expand-JSPG6VOP-CjEvgYE7.mjs} +2 -2
  86. package/dist/{expand-JSPG6VOP-Cmm7S480.mjs.map → expand-JSPG6VOP-CjEvgYE7.mjs.map} +1 -1
  87. package/dist/{expand-JSPG6VOP-BAEvLz6y.cjs → expand-JSPG6VOP-w3B3Wcpp.cjs} +2 -2
  88. package/dist/{expand-JSPG6VOP-BAEvLz6y.cjs.map → expand-JSPG6VOP-w3B3Wcpp.cjs.map} +1 -1
  89. package/dist/{expr-5JAACS4X-C3PXSs0i.mjs → expr-5JAACS4X-CekL4kzy.mjs} +2 -2
  90. package/dist/{expr-5JAACS4X-C3PXSs0i.mjs.map → expr-5JAACS4X-CekL4kzy.mjs.map} +1 -1
  91. package/dist/{expr-5JAACS4X-BFLtaqNy.cjs → expr-5JAACS4X-CrqDcl6c.cjs} +2 -2
  92. package/dist/{expr-5JAACS4X-BFLtaqNy.cjs.map → expr-5JAACS4X-CrqDcl6c.cjs.map} +1 -1
  93. package/dist/{find-INTH3OLC-Bf3-4Zi2.cjs → find-INTH3OLC-BLqmQymL.cjs} +3 -3
  94. package/dist/{find-INTH3OLC-Bf3-4Zi2.cjs.map → find-INTH3OLC-BLqmQymL.cjs.map} +1 -1
  95. package/dist/{find-INTH3OLC-D6wBmhsd.mjs → find-INTH3OLC-BuB0ASqa.mjs} +3 -3
  96. package/dist/{find-INTH3OLC-D6wBmhsd.mjs.map → find-INTH3OLC-BuB0ASqa.mjs.map} +1 -1
  97. package/dist/{fold-4TQNYMSW-BIl_iV0S.cjs → fold-4TQNYMSW-Cvoxzetz.cjs} +2 -2
  98. package/dist/{fold-4TQNYMSW-BIl_iV0S.cjs.map → fold-4TQNYMSW-Cvoxzetz.cjs.map} +1 -1
  99. package/dist/{fold-4TQNYMSW-BVCyD8C0.mjs → fold-4TQNYMSW-DdElN4Da.mjs} +2 -2
  100. package/dist/{fold-4TQNYMSW-BVCyD8C0.mjs.map → fold-4TQNYMSW-DdElN4Da.mjs.map} +1 -1
  101. package/dist/{grep-V3LQVMRQ-BcfmH0yO.cjs → grep-V3LQVMRQ-C3P-xkVL.cjs} +4 -4
  102. package/dist/{grep-V3LQVMRQ-BcfmH0yO.cjs.map → grep-V3LQVMRQ-C3P-xkVL.cjs.map} +1 -1
  103. package/dist/{grep-V3LQVMRQ-BLwElJ9a.mjs → grep-V3LQVMRQ-Q9iHVtcz.mjs} +4 -4
  104. package/dist/{grep-V3LQVMRQ-BLwElJ9a.mjs.map → grep-V3LQVMRQ-Q9iHVtcz.mjs.map} +1 -1
  105. package/dist/{gzip-O5ASJAFY-BjVFU42g.mjs → gzip-O5ASJAFY-CQXRBTgw.mjs} +2 -2
  106. package/dist/{gzip-O5ASJAFY-BjVFU42g.mjs.map → gzip-O5ASJAFY-CQXRBTgw.mjs.map} +1 -1
  107. package/dist/{gzip-O5ASJAFY-B9ermjPq.cjs → gzip-O5ASJAFY-DTw8yzKj.cjs} +2 -2
  108. package/dist/{gzip-O5ASJAFY-B9ermjPq.cjs.map → gzip-O5ASJAFY-DTw8yzKj.cjs.map} +1 -1
  109. package/dist/{head-442HYESI-_RXn0SBi.cjs → head-442HYESI-B5Zrtvzq.cjs} +2 -2
  110. package/dist/{head-442HYESI-_RXn0SBi.cjs.map → head-442HYESI-B5Zrtvzq.cjs.map} +1 -1
  111. package/dist/{head-442HYESI-BGRcjEMI.mjs → head-442HYESI-DDn9puS-.mjs} +2 -2
  112. package/dist/{head-442HYESI-BGRcjEMI.mjs.map → head-442HYESI-DDn9puS-.mjs.map} +1 -1
  113. package/dist/{help-HZ6M2CKN-DJP0l3xk.cjs → help-HZ6M2CKN-ShPRglNQ.cjs} +2 -2
  114. package/dist/{help-HZ6M2CKN-DJP0l3xk.cjs.map → help-HZ6M2CKN-ShPRglNQ.cjs.map} +1 -1
  115. package/dist/{help-HZ6M2CKN-BCHt7Yu_.mjs → help-HZ6M2CKN-lSoKoXl4.mjs} +2 -2
  116. package/dist/{help-HZ6M2CKN-BCHt7Yu_.mjs.map → help-HZ6M2CKN-lSoKoXl4.mjs.map} +1 -1
  117. package/dist/{html-to-markdown-JW4MSQZO-Dq7eYKW0.mjs → html-to-markdown-JW4MSQZO-BthuArNM.mjs} +2 -2
  118. package/dist/{html-to-markdown-JW4MSQZO-Dq7eYKW0.mjs.map → html-to-markdown-JW4MSQZO-BthuArNM.mjs.map} +1 -1
  119. package/dist/{html-to-markdown-JW4MSQZO-yoaOs45E.cjs → html-to-markdown-JW4MSQZO-DUFlGd4H.cjs} +2 -2
  120. package/dist/{html-to-markdown-JW4MSQZO-yoaOs45E.cjs.map → html-to-markdown-JW4MSQZO-DUFlGd4H.cjs.map} +1 -1
  121. package/dist/{join-TBRGI3LQ-BU7FYSK3.mjs → join-TBRGI3LQ-BPbb462M.mjs} +2 -2
  122. package/dist/{join-TBRGI3LQ-BU7FYSK3.mjs.map → join-TBRGI3LQ-BPbb462M.mjs.map} +1 -1
  123. package/dist/{join-TBRGI3LQ-BOS3zpbh.cjs → join-TBRGI3LQ-lLkX23Kg.cjs} +2 -2
  124. package/dist/{join-TBRGI3LQ-BOS3zpbh.cjs.map → join-TBRGI3LQ-lLkX23Kg.cjs.map} +1 -1
  125. package/dist/{jq-4XLYLOS5-C-4KbpIO.cjs → jq-4XLYLOS5-C43q5lUe.cjs} +4 -4
  126. package/dist/{jq-4XLYLOS5-C-4KbpIO.cjs.map → jq-4XLYLOS5-C43q5lUe.cjs.map} +1 -1
  127. package/dist/{jq-4XLYLOS5-tfCBGz19.mjs → jq-4XLYLOS5-vNG15h8L.mjs} +4 -4
  128. package/dist/{jq-4XLYLOS5-tfCBGz19.mjs.map → jq-4XLYLOS5-vNG15h8L.mjs.map} +1 -1
  129. package/dist/{js-exec-N5KEZBH7--5grqRpb.cjs → js-exec-N5KEZBH7-DD7o_C3B.cjs} +4 -4
  130. package/dist/{js-exec-N5KEZBH7--5grqRpb.cjs.map → js-exec-N5KEZBH7-DD7o_C3B.cjs.map} +1 -1
  131. package/dist/{js-exec-N5KEZBH7-C5C01q6k.mjs → js-exec-N5KEZBH7-az3ZblrQ.mjs} +4 -4
  132. package/dist/{js-exec-N5KEZBH7-C5C01q6k.mjs.map → js-exec-N5KEZBH7-az3ZblrQ.mjs.map} +1 -1
  133. package/dist/{lib-CNke9ACR.mjs → lib-CIBglQoq.mjs} +2 -2
  134. package/dist/{lib-CNke9ACR.mjs.map → lib-CIBglQoq.mjs.map} +1 -1
  135. package/dist/{lib-CW0fuh-i.cjs → lib-CPYdOQHl.cjs} +2 -2
  136. package/dist/{lib-CW0fuh-i.cjs.map → lib-CPYdOQHl.cjs.map} +1 -1
  137. package/dist/{ln-4LGSXXGD-Cy8gNPMC.mjs → ln-4LGSXXGD-C-x9d2b0.mjs} +2 -2
  138. package/dist/{ln-4LGSXXGD-Cy8gNPMC.mjs.map → ln-4LGSXXGD-C-x9d2b0.mjs.map} +1 -1
  139. package/dist/{ln-4LGSXXGD-B0nikKzZ.cjs → ln-4LGSXXGD-CIEgUkpB.cjs} +2 -2
  140. package/dist/{ln-4LGSXXGD-B0nikKzZ.cjs.map → ln-4LGSXXGD-CIEgUkpB.cjs.map} +1 -1
  141. package/dist/{ls-ZJGQER7M-DMYpsOhX.mjs → ls-ZJGQER7M-Bcrhni0D.mjs} +2 -2
  142. package/dist/{ls-ZJGQER7M-DMYpsOhX.mjs.map → ls-ZJGQER7M-Bcrhni0D.mjs.map} +1 -1
  143. package/dist/{ls-ZJGQER7M-CaSRbmLC.cjs → ls-ZJGQER7M-Dco5ZVvc.cjs} +2 -2
  144. package/dist/{ls-ZJGQER7M-CaSRbmLC.cjs.map → ls-ZJGQER7M-Dco5ZVvc.cjs.map} +1 -1
  145. package/dist/{lzma-L8nnN88o.cjs → lzma-COEsFpf6.cjs} +2 -2
  146. package/dist/{lzma-L8nnN88o.cjs.map → lzma-COEsFpf6.cjs.map} +1 -1
  147. package/dist/{md5sum-SPU24VSG-wjaqw6M5.cjs → md5sum-SPU24VSG-7ehymDqh.cjs} +3 -3
  148. package/dist/{md5sum-SPU24VSG-wjaqw6M5.cjs.map → md5sum-SPU24VSG-7ehymDqh.cjs.map} +1 -1
  149. package/dist/{md5sum-SPU24VSG-DDehVi3L.mjs → md5sum-SPU24VSG-BikEaErI.mjs} +3 -3
  150. package/dist/{md5sum-SPU24VSG-DDehVi3L.mjs.map → md5sum-SPU24VSG-BikEaErI.mjs.map} +1 -1
  151. package/dist/{mkdir-MEPGZOB6-D6EapQqG.cjs → mkdir-MEPGZOB6-BTuz9v_t.cjs} +2 -2
  152. package/dist/{mkdir-MEPGZOB6-D6EapQqG.cjs.map → mkdir-MEPGZOB6-BTuz9v_t.cjs.map} +1 -1
  153. package/dist/{mkdir-MEPGZOB6-BoeUbSt6.mjs → mkdir-MEPGZOB6-BhU6Z4rR.mjs} +2 -2
  154. package/dist/{mkdir-MEPGZOB6-BoeUbSt6.mjs.map → mkdir-MEPGZOB6-BhU6Z4rR.mjs.map} +1 -1
  155. package/dist/{mv-W5BIQ646-ee9iH5gF.mjs → mv-W5BIQ646-DYHSL0LU.mjs} +2 -2
  156. package/dist/{mv-W5BIQ646-ee9iH5gF.mjs.map → mv-W5BIQ646-DYHSL0LU.mjs.map} +1 -1
  157. package/dist/{mv-W5BIQ646-Cl3grRdX.cjs → mv-W5BIQ646-rqsiQb7M.cjs} +2 -2
  158. package/dist/{mv-W5BIQ646-Cl3grRdX.cjs.map → mv-W5BIQ646-rqsiQb7M.cjs.map} +1 -1
  159. package/dist/{nl-WSDW7I4O-DttNn_cO.cjs → nl-WSDW7I4O-CnGKibFZ.cjs} +2 -2
  160. package/dist/{nl-WSDW7I4O-DttNn_cO.cjs.map → nl-WSDW7I4O-CnGKibFZ.cjs.map} +1 -1
  161. package/dist/{nl-WSDW7I4O-DveMZ08l.mjs → nl-WSDW7I4O-Dkal6Jz6.mjs} +2 -2
  162. package/dist/{nl-WSDW7I4O-DveMZ08l.mjs.map → nl-WSDW7I4O-Dkal6Jz6.mjs.map} +1 -1
  163. package/dist/{od-WOKFDJTP-BJWjPFho.cjs → od-WOKFDJTP-BScUR9bN.cjs} +2 -2
  164. package/dist/{od-WOKFDJTP-BJWjPFho.cjs.map → od-WOKFDJTP-BScUR9bN.cjs.map} +1 -1
  165. package/dist/{od-WOKFDJTP-DCy3_AZ5.mjs → od-WOKFDJTP-LkcVOtHj.mjs} +2 -2
  166. package/dist/{od-WOKFDJTP-DCy3_AZ5.mjs.map → od-WOKFDJTP-LkcVOtHj.mjs.map} +1 -1
  167. package/dist/{paste-7JC6S4DX-DEoyg9Vv.cjs → paste-7JC6S4DX-HzWqjKmQ.cjs} +2 -2
  168. package/dist/{paste-7JC6S4DX-DEoyg9Vv.cjs.map → paste-7JC6S4DX-HzWqjKmQ.cjs.map} +1 -1
  169. package/dist/{paste-7JC6S4DX-DL9UawIf.mjs → paste-7JC6S4DX-tqwrEvYy.mjs} +2 -2
  170. package/dist/{paste-7JC6S4DX-DL9UawIf.mjs.map → paste-7JC6S4DX-tqwrEvYy.mjs.map} +1 -1
  171. package/dist/{printf-TWGXF445-BlwG6dD2.mjs → printf-TWGXF445-B8Sf39v5.mjs} +2 -2
  172. package/dist/{printf-TWGXF445-BlwG6dD2.mjs.map → printf-TWGXF445-B8Sf39v5.mjs.map} +1 -1
  173. package/dist/{printf-TWGXF445-B1fsJl2X.cjs → printf-TWGXF445-Bje4cyXe.cjs} +2 -2
  174. package/dist/{printf-TWGXF445-B1fsJl2X.cjs.map → printf-TWGXF445-Bje4cyXe.cjs.map} +1 -1
  175. package/dist/{python3-POMOR4OA-qY8EzVSe.mjs → python3-POMOR4OA-CQy0OWJW.mjs} +3 -3
  176. package/dist/{python3-POMOR4OA-qY8EzVSe.mjs.map → python3-POMOR4OA-CQy0OWJW.mjs.map} +1 -1
  177. package/dist/{python3-POMOR4OA-B8aVGk7h.cjs → python3-POMOR4OA-bgmedTpE.cjs} +3 -3
  178. package/dist/{python3-POMOR4OA-B8aVGk7h.cjs.map → python3-POMOR4OA-bgmedTpE.cjs.map} +1 -1
  179. package/dist/{rev-5EHFX4EJ-B27blDxm.cjs → rev-5EHFX4EJ-BpzhDpp9.cjs} +2 -2
  180. package/dist/{rev-5EHFX4EJ-B27blDxm.cjs.map → rev-5EHFX4EJ-BpzhDpp9.cjs.map} +1 -1
  181. package/dist/{rev-5EHFX4EJ-Dxay6iFE.mjs → rev-5EHFX4EJ-Lno-pSvM.mjs} +2 -2
  182. package/dist/{rev-5EHFX4EJ-Dxay6iFE.mjs.map → rev-5EHFX4EJ-Lno-pSvM.mjs.map} +1 -1
  183. package/dist/{rg-S4FXYXWB-BL_fs0a0.cjs → rg-S4FXYXWB-B3c-xS0T.cjs} +3 -3
  184. package/dist/{rg-S4FXYXWB-BL_fs0a0.cjs.map → rg-S4FXYXWB-B3c-xS0T.cjs.map} +1 -1
  185. package/dist/{rg-S4FXYXWB-b3jjC2M6.mjs → rg-S4FXYXWB-vO1CwZd4.mjs} +3 -3
  186. package/dist/{rg-S4FXYXWB-b3jjC2M6.mjs.map → rg-S4FXYXWB-vO1CwZd4.mjs.map} +1 -1
  187. package/dist/{rm-SSGETQVQ-D0Grjo65.mjs → rm-SSGETQVQ-DVySAmdO.mjs} +2 -2
  188. package/dist/{rm-SSGETQVQ-D0Grjo65.mjs.map → rm-SSGETQVQ-DVySAmdO.mjs.map} +1 -1
  189. package/dist/{rm-SSGETQVQ-CskLcJOp.cjs → rm-SSGETQVQ-emZmXVbD.cjs} +2 -2
  190. package/dist/{rm-SSGETQVQ-CskLcJOp.cjs.map → rm-SSGETQVQ-emZmXVbD.cjs.map} +1 -1
  191. package/dist/{rmdir-OC4ZLPYA-BZ86Q3Wr.mjs → rmdir-OC4ZLPYA-BiT5sPTn.mjs} +2 -2
  192. package/dist/{rmdir-OC4ZLPYA-BZ86Q3Wr.mjs.map → rmdir-OC4ZLPYA-BiT5sPTn.mjs.map} +1 -1
  193. package/dist/{rmdir-OC4ZLPYA-Br6jTWJO.cjs → rmdir-OC4ZLPYA-D0vq3r9z.cjs} +2 -2
  194. package/dist/{rmdir-OC4ZLPYA-Br6jTWJO.cjs.map → rmdir-OC4ZLPYA-D0vq3r9z.cjs.map} +1 -1
  195. package/dist/run.cjs +1 -1
  196. package/dist/run.mjs +1 -1
  197. package/dist/{sed-S5UIK574-OUlTmK0x.cjs → sed-S5UIK574-C_tmmJAF.cjs} +2 -2
  198. package/dist/{sed-S5UIK574-OUlTmK0x.cjs.map → sed-S5UIK574-C_tmmJAF.cjs.map} +1 -1
  199. package/dist/{sed-S5UIK574-C0ikpRUI.mjs → sed-S5UIK574-DOl6PWt5.mjs} +2 -2
  200. package/dist/{sed-S5UIK574-C0ikpRUI.mjs.map → sed-S5UIK574-DOl6PWt5.mjs.map} +1 -1
  201. package/dist/{sha1sum-2PTOAFR6-hLKNluNQ.mjs → sha1sum-2PTOAFR6-GuPK_c0G.mjs} +3 -3
  202. package/dist/{sha1sum-2PTOAFR6-hLKNluNQ.mjs.map → sha1sum-2PTOAFR6-GuPK_c0G.mjs.map} +1 -1
  203. package/dist/{sha1sum-2PTOAFR6-B_DU8HD8.cjs → sha1sum-2PTOAFR6-eVUequm9.cjs} +3 -3
  204. package/dist/{sha1sum-2PTOAFR6-B_DU8HD8.cjs.map → sha1sum-2PTOAFR6-eVUequm9.cjs.map} +1 -1
  205. package/dist/{sha256sum-NS7D3IXX-c6RHEh31.mjs → sha256sum-NS7D3IXX-KDhoCBD7.mjs} +3 -3
  206. package/dist/{sha256sum-NS7D3IXX-c6RHEh31.mjs.map → sha256sum-NS7D3IXX-KDhoCBD7.mjs.map} +1 -1
  207. package/dist/{sha256sum-NS7D3IXX-YzzSU71d.cjs → sha256sum-NS7D3IXX-d1Vg6JxV.cjs} +3 -3
  208. package/dist/{sha256sum-NS7D3IXX-YzzSU71d.cjs.map → sha256sum-NS7D3IXX-d1Vg6JxV.cjs.map} +1 -1
  209. package/dist/{sleep-X22JJINO-lQ5Wi1rP.mjs → sleep-X22JJINO-CyAkxQSD.mjs} +2 -2
  210. package/dist/{sleep-X22JJINO-lQ5Wi1rP.mjs.map → sleep-X22JJINO-CyAkxQSD.mjs.map} +1 -1
  211. package/dist/{sleep-X22JJINO-DFWLmtic.cjs → sleep-X22JJINO-DGw5kE6M.cjs} +2 -2
  212. package/dist/{sleep-X22JJINO-DFWLmtic.cjs.map → sleep-X22JJINO-DGw5kE6M.cjs.map} +1 -1
  213. package/dist/{sort-SW2YEO5B-Njc26SUn.mjs → sort-SW2YEO5B-DKjLTe-O.mjs} +3 -3
  214. package/dist/{sort-SW2YEO5B-Njc26SUn.mjs.map → sort-SW2YEO5B-DKjLTe-O.mjs.map} +1 -1
  215. package/dist/{sort-SW2YEO5B-BlJCEbS7.cjs → sort-SW2YEO5B-RuQckK0z.cjs} +3 -3
  216. package/dist/{sort-SW2YEO5B-BlJCEbS7.cjs.map → sort-SW2YEO5B-RuQckK0z.cjs.map} +1 -1
  217. package/dist/{split-4KKZZXXE-DGFsDrFE.cjs → split-4KKZZXXE-CFDvTWk8.cjs} +2 -2
  218. package/dist/{split-4KKZZXXE-DGFsDrFE.cjs.map → split-4KKZZXXE-CFDvTWk8.cjs.map} +1 -1
  219. package/dist/{split-4KKZZXXE-C97QsnxB.mjs → split-4KKZZXXE-DXwRJvCX.mjs} +2 -2
  220. package/dist/{split-4KKZZXXE-C97QsnxB.mjs.map → split-4KKZZXXE-DXwRJvCX.mjs.map} +1 -1
  221. package/dist/{sqlite3-CGOEFJAO-D78UkTyw.cjs → sqlite3-CGOEFJAO-C2GzVRe7.cjs} +2 -2
  222. package/dist/{sqlite3-CGOEFJAO-D78UkTyw.cjs.map → sqlite3-CGOEFJAO-C2GzVRe7.cjs.map} +1 -1
  223. package/dist/{sqlite3-CGOEFJAO-HGqCZYuu.mjs → sqlite3-CGOEFJAO-CX7OvdMs.mjs} +2 -2
  224. package/dist/{sqlite3-CGOEFJAO-HGqCZYuu.mjs.map → sqlite3-CGOEFJAO-CX7OvdMs.mjs.map} +1 -1
  225. package/dist/{start-BX-bkX9K.cjs → start-B90XtxnL.cjs} +106 -81
  226. package/dist/start-B90XtxnL.cjs.map +1 -0
  227. package/dist/{start-DAlaZ5zj.mjs → start-JvUYlamf.mjs} +106 -81
  228. package/dist/start-JvUYlamf.mjs.map +1 -0
  229. package/dist/start.cjs +1 -1
  230. package/dist/start.d.cts +1 -1
  231. package/dist/start.d.mts +1 -1
  232. package/dist/start.mjs +1 -1
  233. package/dist/{strings-6WDHLGMX-Dix-GFiu.mjs → strings-6WDHLGMX-DSFHiHo6.mjs} +2 -2
  234. package/dist/{strings-6WDHLGMX-Dix-GFiu.mjs.map → strings-6WDHLGMX-DSFHiHo6.mjs.map} +1 -1
  235. package/dist/{strings-6WDHLGMX-CeJiCt-u.cjs → strings-6WDHLGMX-uhhFpIsD.cjs} +2 -2
  236. package/dist/{strings-6WDHLGMX-CeJiCt-u.cjs.map → strings-6WDHLGMX-uhhFpIsD.cjs.map} +1 -1
  237. package/dist/{tac-2STMMJYW-DlI5binK.cjs → tac-2STMMJYW-CAeepy4C.cjs} +2 -2
  238. package/dist/{tac-2STMMJYW-DlI5binK.cjs.map → tac-2STMMJYW-CAeepy4C.cjs.map} +1 -1
  239. package/dist/{tac-2STMMJYW-Bm0D_YqQ.mjs → tac-2STMMJYW-ilclcuYi.mjs} +2 -2
  240. package/dist/{tac-2STMMJYW-Bm0D_YqQ.mjs.map → tac-2STMMJYW-ilclcuYi.mjs.map} +1 -1
  241. package/dist/{tail-R4PCA2C4-7wsnh20i.mjs → tail-R4PCA2C4-BqXHf0GQ.mjs} +2 -2
  242. package/dist/{tail-R4PCA2C4-7wsnh20i.mjs.map → tail-R4PCA2C4-BqXHf0GQ.mjs.map} +1 -1
  243. package/dist/{tail-R4PCA2C4-TH4AUhAb.cjs → tail-R4PCA2C4-beByscYb.cjs} +2 -2
  244. package/dist/{tail-R4PCA2C4-TH4AUhAb.cjs.map → tail-R4PCA2C4-beByscYb.cjs.map} +1 -1
  245. package/dist/{tar-STHHZTZ6-gShA0vQ1.mjs → tar-STHHZTZ6-DEQqPt4f.mjs} +3 -3
  246. package/dist/{tar-STHHZTZ6-gShA0vQ1.mjs.map → tar-STHHZTZ6-DEQqPt4f.mjs.map} +1 -1
  247. package/dist/{tar-STHHZTZ6-DELlRab1.cjs → tar-STHHZTZ6-D_3Avd2x.cjs} +4 -4
  248. package/dist/{tar-STHHZTZ6-DELlRab1.cjs.map → tar-STHHZTZ6-D_3Avd2x.cjs.map} +1 -1
  249. package/dist/{tee-YUZ2FKCJ-6jGvzLuO.mjs → tee-YUZ2FKCJ-DeL5TxOv.mjs} +2 -2
  250. package/dist/{tee-YUZ2FKCJ-6jGvzLuO.mjs.map → tee-YUZ2FKCJ-DeL5TxOv.mjs.map} +1 -1
  251. package/dist/{tee-YUZ2FKCJ-D_BE3AiF.cjs → tee-YUZ2FKCJ-kgjQdGix.cjs} +2 -2
  252. package/dist/{tee-YUZ2FKCJ-D_BE3AiF.cjs.map → tee-YUZ2FKCJ-kgjQdGix.cjs.map} +1 -1
  253. package/dist/{time-D4LNBSWX-D7RWA_NU.mjs → time-D4LNBSWX-BDvqGzoU.mjs} +2 -2
  254. package/dist/{time-D4LNBSWX-D7RWA_NU.mjs.map → time-D4LNBSWX-BDvqGzoU.mjs.map} +1 -1
  255. package/dist/{time-D4LNBSWX-zKxg-wM1.cjs → time-D4LNBSWX-C1Jzh_FF.cjs} +2 -2
  256. package/dist/{time-D4LNBSWX-zKxg-wM1.cjs.map → time-D4LNBSWX-C1Jzh_FF.cjs.map} +1 -1
  257. package/dist/{timeout-YDCRSLPQ-D42ruxso.mjs → timeout-YDCRSLPQ-CDHmK2ET.mjs} +2 -2
  258. package/dist/{timeout-YDCRSLPQ-D42ruxso.mjs.map → timeout-YDCRSLPQ-CDHmK2ET.mjs.map} +1 -1
  259. package/dist/{timeout-YDCRSLPQ-DWs-ACr6.cjs → timeout-YDCRSLPQ-Ddgm55V3.cjs} +2 -2
  260. package/dist/{timeout-YDCRSLPQ-DWs-ACr6.cjs.map → timeout-YDCRSLPQ-Ddgm55V3.cjs.map} +1 -1
  261. package/dist/{touch-UA33VN3N-BALmWXCe.cjs → touch-UA33VN3N-CBfo-fUk.cjs} +2 -2
  262. package/dist/{touch-UA33VN3N-BALmWXCe.cjs.map → touch-UA33VN3N-CBfo-fUk.cjs.map} +1 -1
  263. package/dist/{touch-UA33VN3N-OcSMUASX.mjs → touch-UA33VN3N-CLRU8dwp.mjs} +2 -2
  264. package/dist/{touch-UA33VN3N-OcSMUASX.mjs.map → touch-UA33VN3N-CLRU8dwp.mjs.map} +1 -1
  265. package/dist/{tr-36LHWFRQ-BHhoJAPK.mjs → tr-36LHWFRQ--Lxi-rUi.mjs} +2 -2
  266. package/dist/{tr-36LHWFRQ-BHhoJAPK.mjs.map → tr-36LHWFRQ--Lxi-rUi.mjs.map} +1 -1
  267. package/dist/{tr-36LHWFRQ-DDHiAg_m.cjs → tr-36LHWFRQ-Bel6G8Xw.cjs} +2 -2
  268. package/dist/{tr-36LHWFRQ-DDHiAg_m.cjs.map → tr-36LHWFRQ-Bel6G8Xw.cjs.map} +1 -1
  269. package/dist/{tree-YLD52CNT-CuJMHpsw.mjs → tree-YLD52CNT-BX10X2C8.mjs} +2 -2
  270. package/dist/{tree-YLD52CNT-CuJMHpsw.mjs.map → tree-YLD52CNT-BX10X2C8.mjs.map} +1 -1
  271. package/dist/{tree-YLD52CNT-BqqLx-tM.cjs → tree-YLD52CNT-DarfOTzE.cjs} +2 -2
  272. package/dist/{tree-YLD52CNT-BqqLx-tM.cjs.map → tree-YLD52CNT-DarfOTzE.cjs.map} +1 -1
  273. package/dist/{unexpand-CADSA4VO-CHiw_MI4.mjs → unexpand-CADSA4VO-CE8Q-7DI.mjs} +2 -2
  274. package/dist/{unexpand-CADSA4VO-CHiw_MI4.mjs.map → unexpand-CADSA4VO-CE8Q-7DI.mjs.map} +1 -1
  275. package/dist/{unexpand-CADSA4VO-BORtdsy_.cjs → unexpand-CADSA4VO-CLZLDBM9.cjs} +2 -2
  276. package/dist/{unexpand-CADSA4VO-BORtdsy_.cjs.map → unexpand-CADSA4VO-CLZLDBM9.cjs.map} +1 -1
  277. package/dist/{uniq-XSIZR6PB-CyA5DoCP.cjs → uniq-XSIZR6PB-CvkGBiie.cjs} +3 -3
  278. package/dist/{uniq-XSIZR6PB-CyA5DoCP.cjs.map → uniq-XSIZR6PB-CvkGBiie.cjs.map} +1 -1
  279. package/dist/{uniq-XSIZR6PB-Byah97Ij.mjs → uniq-XSIZR6PB-DVI8BEWZ.mjs} +3 -3
  280. package/dist/{uniq-XSIZR6PB-Byah97Ij.mjs.map → uniq-XSIZR6PB-DVI8BEWZ.mjs.map} +1 -1
  281. package/dist/{wc-LF7NU4LA-DUBYnutH.cjs → wc-LF7NU4LA-B87JyYK9.cjs} +3 -3
  282. package/dist/{wc-LF7NU4LA-DUBYnutH.cjs.map → wc-LF7NU4LA-B87JyYK9.cjs.map} +1 -1
  283. package/dist/{wc-LF7NU4LA-CPMTeSun.mjs → wc-LF7NU4LA-D2NJbTrF.mjs} +3 -3
  284. package/dist/{wc-LF7NU4LA-CPMTeSun.mjs.map → wc-LF7NU4LA-D2NJbTrF.mjs.map} +1 -1
  285. package/dist/{xan-Y6WF3IRG-CLfddWd-.mjs → xan-Y6WF3IRG-BezI-KTd.mjs} +6 -6
  286. package/dist/{xan-Y6WF3IRG-CLfddWd-.mjs.map → xan-Y6WF3IRG-BezI-KTd.mjs.map} +1 -1
  287. package/dist/{xan-Y6WF3IRG-W4Yr19gE.cjs → xan-Y6WF3IRG-C28WXL79.cjs} +6 -6
  288. package/dist/{xan-Y6WF3IRG-W4Yr19gE.cjs.map → xan-Y6WF3IRG-C28WXL79.cjs.map} +1 -1
  289. package/dist/{xan-view-HDVKHFC2-B_Xy-tdc.mjs → xan-view-HDVKHFC2-BI6E4WF5.mjs} +3 -3
  290. package/dist/{xan-view-HDVKHFC2-B_Xy-tdc.mjs.map → xan-view-HDVKHFC2-BI6E4WF5.mjs.map} +1 -1
  291. package/dist/{xan-view-HDVKHFC2-CWkN0IJ1.cjs → xan-view-HDVKHFC2-DcPqeIFZ.cjs} +3 -3
  292. package/dist/{xan-view-HDVKHFC2-CWkN0IJ1.cjs.map → xan-view-HDVKHFC2-DcPqeIFZ.cjs.map} +1 -1
  293. package/dist/{xargs-MGZPH7AX-B_Ocy3BY.cjs → xargs-MGZPH7AX-D80gglJT.cjs} +2 -2
  294. package/dist/{xargs-MGZPH7AX-B_Ocy3BY.cjs.map → xargs-MGZPH7AX-D80gglJT.cjs.map} +1 -1
  295. package/dist/{xargs-MGZPH7AX-DDoz_2hL.mjs → xargs-MGZPH7AX-Da4TABeU.mjs} +2 -2
  296. package/dist/{xargs-MGZPH7AX-DDoz_2hL.mjs.map → xargs-MGZPH7AX-Da4TABeU.mjs.map} +1 -1
  297. package/dist/{yq-4QJW3EQG-mUhWBJBJ.mjs → yq-4QJW3EQG-D785OqS8.mjs} +3 -3
  298. package/dist/{yq-4QJW3EQG-mUhWBJBJ.mjs.map → yq-4QJW3EQG-D785OqS8.mjs.map} +1 -1
  299. package/dist/{yq-4QJW3EQG-BPBhjinw.cjs → yq-4QJW3EQG-DqHEdSO6.cjs} +3 -3
  300. package/dist/{yq-4QJW3EQG-BPBhjinw.cjs.map → yq-4QJW3EQG-DqHEdSO6.cjs.map} +1 -1
  301. package/package.json +1 -1
  302. package/dist/dist-70NUfApd.mjs.map +0 -1
  303. package/dist/dist-D1Iv7_7S.cjs.map +0 -1
  304. package/dist/start-BX-bkX9K.cjs.map +0 -1
  305. package/dist/start-DAlaZ5zj.mjs.map +0 -1
@@ -32,11 +32,11 @@ node_path = __toESM(node_path, 1);
32
32
  require("node:fs/promises");
33
33
  let node_fs = require("node:fs");
34
34
  node_fs = __toESM(node_fs, 1);
35
+ let node_async_hooks = require("node:async_hooks");
35
36
  require("node:url");
36
37
  let node_os = require("node:os");
37
38
  let node_module = require("node:module");
38
39
  let node_crypto = require("node:crypto");
39
- let node_async_hooks = require("node:async_hooks");
40
40
  let _keystrokehq_platform_database = require("@keystrokehq/platform-database");
41
41
  require("zod/v3");
42
42
  require("zod/v4-mini");
@@ -63,6 +63,10 @@ const PROJECT_SERVER_HEALTH = {
63
63
  path: "/health",
64
64
  port: PROJECT_SERVER_PORT
65
65
  };
66
+ /** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
67
+ function encodeOrgArtifacts(artifacts) {
68
+ return Buffer.from(JSON.stringify(artifacts)).toString("base64");
69
+ }
66
70
  const RUNTIME_ENV_KEYS = [
67
71
  "BETTER_AUTH_SECRET",
68
72
  "PUBLIC_SERVER_URL",
@@ -93,28 +97,26 @@ function projectDatabaseRuntimeEnv(database) {
93
97
  };
94
98
  }
95
99
  /**
96
- * Builds the launch spec for a single project server. `artifactStorageKey` is the
97
- * object key for that deploy's built `dist` tarball in the org bucket there is
98
- * no base image, so it is required.
100
+ * Builds the launch spec for an org worker. Each deploy artifact is encoded in
101
+ * `KEYSTROKE_ORG_ARTIFACTS` there is no base image, so at least one artifact is required.
99
102
  */
100
- function resolveRuntimeLaunch(options, artifactStorageKey, database, extraEnv) {
101
- if (!artifactStorageKey) throw new Error("Cannot start a project server without an artifact storage key");
103
+ function resolveRuntimeLaunch(options, artifacts, database, extraEnv) {
104
+ if (artifacts.length === 0) throw new Error("Cannot start an org worker without at least one artifact");
102
105
  const env = options.env ?? process.env;
103
106
  return {
104
107
  image: resolveProjectServerImage(env, options.image),
105
- env: buildRuntimeEnv(env, artifactStorageKey, database, extraEnv),
108
+ env: buildRuntimeEnv(env, artifacts, database, extraEnv),
106
109
  port: PROJECT_SERVER_PORT,
107
110
  health: PROJECT_SERVER_HEALTH
108
111
  };
109
112
  }
110
- /** Env vars passed into the project server container/machine. */
111
- function buildRuntimeEnv(source, artifactStorageKey, database, extraEnv) {
113
+ /** Env vars passed into the org worker container/machine. */
114
+ function buildRuntimeEnv(source, artifacts, database, extraEnv) {
112
115
  const entries = new Map([
113
116
  ["PORT", String(PROJECT_SERVER_PORT)],
114
117
  ["KEYSTROKE_ROOT", PROJECT_SERVER_ROOT],
115
118
  ["KEYSTROKE_RUNTIME_NODE_MODULES", PROJECT_SERVER_FRAMEWORK_NODE_MODULES],
116
- ["ARTIFACT_STORAGE_KEY", artifactStorageKey],
117
- ["PROJECT_ID", database.projectId],
119
+ ["KEYSTROKE_ORG_ARTIFACTS", encodeOrgArtifacts(artifacts)],
118
120
  ["ORGANIZATION_ID", database.organizationId],
119
121
  ["TENANT_ID", database.organizationId]
120
122
  ]);
@@ -217,15 +219,19 @@ const MINIO_DOCKER_NETWORK = process.env.MINIO_DOCKER_NETWORK ?? "keystroke";
217
219
  function createDockerRuntime(options = {}) {
218
220
  const docker = options.docker ?? new dockerode.default();
219
221
  return { async start(input) {
220
- const launch = resolveRuntimeLaunch(options, input.artifactStorageKey, input.database, input.env);
222
+ if (input.projects.length === 0) throw new Error("Docker org runtime requires at least one project deploy");
223
+ const launch = resolveRuntimeLaunch(options, input.projects.map((project) => ({
224
+ projectId: project.projectId,
225
+ artifactStorageKey: project.artifactStorageKey
226
+ })), input.database, input.env);
221
227
  await ensureImage(docker, launch.image);
222
- await removeExistingContainer(docker, input.projectId);
228
+ await removeExistingContainer(docker, input.organizationId);
223
229
  const container = await docker.createContainer({
224
230
  Image: launch.image,
225
- name: containerName(input.projectId),
231
+ name: containerName(input.organizationId),
226
232
  Labels: {
227
- "keystroke.project.id": input.projectId,
228
- "keystroke.project.name": input.name
233
+ "keystroke.organization.id": input.organizationId,
234
+ "keystroke.project.ids": input.projects.map((project) => project.projectId).join(",")
229
235
  },
230
236
  ExposedPorts: { [`${launch.port}/tcp`]: {} },
231
237
  HostConfig: {
@@ -238,7 +244,7 @@ function createDockerRuntime(options = {}) {
238
244
  await container.start();
239
245
  const inspect = await container.inspect();
240
246
  const binding = inspect.NetworkSettings.Ports?.[`${launch.port}/tcp`]?.[0];
241
- if (!binding?.HostPort) throw new Error("Failed to resolve project container host port");
247
+ if (!binding?.HostPort) throw new Error("Failed to resolve org container host port");
242
248
  const baseUrl = `http://127.0.0.1:${binding.HostPort}`;
243
249
  await waitForHealth(baseUrl, {
244
250
  fetchImpl: options.fetchImpl,
@@ -250,12 +256,12 @@ function createDockerRuntime(options = {}) {
250
256
  };
251
257
  } };
252
258
  }
253
- function containerName(projectId) {
254
- return `keystroke-project-${projectId}`;
259
+ function containerName(organizationId) {
260
+ return `keystroke-org-${organizationId}`;
255
261
  }
256
- async function removeExistingContainer(docker, projectId) {
262
+ async function removeExistingContainer(docker, organizationId) {
257
263
  try {
258
- const existing = docker.getContainer(containerName(projectId));
264
+ const existing = docker.getContainer(containerName(organizationId));
259
265
  await existing.stop({ t: 5 }).catch(() => void 0);
260
266
  await existing.remove({ force: true });
261
267
  } catch {}
@@ -989,7 +995,7 @@ _Object_({
989
995
  content: String$1({ description: "Content to write to the file" })
990
996
  });
991
997
  //#endregion
992
- //#region ../../packages/sandbox/dist/files-DJf_h8XJ.mjs
998
+ //#region ../../packages/sandbox/dist/files-XxiqkzS0.mjs
993
999
  const SandboxFileContentSchema = zod.z.object({
994
1000
  path: zod.z.string(),
995
1001
  file: zod.z.string()
@@ -1006,6 +1012,7 @@ const SandboxDefinitionSchema = zod.z.object({
1006
1012
  key: zod.z.string().optional(),
1007
1013
  files: zod.z.array(SandboxFileSchema).optional()
1008
1014
  });
1015
+ new node_async_hooks.AsyncLocalStorage();
1009
1016
  //#endregion
1010
1017
  //#region ../../node_modules/.pnpm/just-bash@3.0.1/node_modules/just-bash/dist/bundle/chunks/chunk-4RUAZWKT.js
1011
1018
  (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
@@ -23808,43 +23815,43 @@ var tt = [
23808
23815
  },
23809
23816
  {
23810
23817
  name: "cat",
23811
- load: async () => (await Promise.resolve().then(() => require("./cat-TSFMZVYS-3tq36V6U.cjs"))).catCommand
23818
+ load: async () => (await Promise.resolve().then(() => require("./cat-TSFMZVYS-mIzvH-qZ.cjs"))).catCommand
23812
23819
  },
23813
23820
  {
23814
23821
  name: "printf",
23815
- load: async () => (await Promise.resolve().then(() => require("./printf-TWGXF445-B1fsJl2X.cjs"))).printfCommand
23822
+ load: async () => (await Promise.resolve().then(() => require("./printf-TWGXF445-Bje4cyXe.cjs"))).printfCommand
23816
23823
  },
23817
23824
  {
23818
23825
  name: "ls",
23819
- load: async () => (await Promise.resolve().then(() => require("./ls-ZJGQER7M-CaSRbmLC.cjs"))).lsCommand
23826
+ load: async () => (await Promise.resolve().then(() => require("./ls-ZJGQER7M-Dco5ZVvc.cjs"))).lsCommand
23820
23827
  },
23821
23828
  {
23822
23829
  name: "mkdir",
23823
- load: async () => (await Promise.resolve().then(() => require("./mkdir-MEPGZOB6-D6EapQqG.cjs"))).mkdirCommand
23830
+ load: async () => (await Promise.resolve().then(() => require("./mkdir-MEPGZOB6-BTuz9v_t.cjs"))).mkdirCommand
23824
23831
  },
23825
23832
  {
23826
23833
  name: "rmdir",
23827
- load: async () => (await Promise.resolve().then(() => require("./rmdir-OC4ZLPYA-Br6jTWJO.cjs"))).rmdirCommand
23834
+ load: async () => (await Promise.resolve().then(() => require("./rmdir-OC4ZLPYA-D0vq3r9z.cjs"))).rmdirCommand
23828
23835
  },
23829
23836
  {
23830
23837
  name: "touch",
23831
- load: async () => (await Promise.resolve().then(() => require("./touch-UA33VN3N-BALmWXCe.cjs"))).touchCommand
23838
+ load: async () => (await Promise.resolve().then(() => require("./touch-UA33VN3N-CBfo-fUk.cjs"))).touchCommand
23832
23839
  },
23833
23840
  {
23834
23841
  name: "rm",
23835
- load: async () => (await Promise.resolve().then(() => require("./rm-SSGETQVQ-CskLcJOp.cjs"))).rmCommand
23842
+ load: async () => (await Promise.resolve().then(() => require("./rm-SSGETQVQ-emZmXVbD.cjs"))).rmCommand
23836
23843
  },
23837
23844
  {
23838
23845
  name: "cp",
23839
- load: async () => (await Promise.resolve().then(() => require("./cp-BISAAS7A-C1ygPb-h.cjs"))).cpCommand
23846
+ load: async () => (await Promise.resolve().then(() => require("./cp-BISAAS7A-jNcszZAJ.cjs"))).cpCommand
23840
23847
  },
23841
23848
  {
23842
23849
  name: "mv",
23843
- load: async () => (await Promise.resolve().then(() => require("./mv-W5BIQ646-Cl3grRdX.cjs"))).mvCommand
23850
+ load: async () => (await Promise.resolve().then(() => require("./mv-W5BIQ646-rqsiQb7M.cjs"))).mvCommand
23844
23851
  },
23845
23852
  {
23846
23853
  name: "ln",
23847
- load: async () => (await Promise.resolve().then(() => require("./ln-4LGSXXGD-B0nikKzZ.cjs"))).lnCommand
23854
+ load: async () => (await Promise.resolve().then(() => require("./ln-4LGSXXGD-CIEgUkpB.cjs"))).lnCommand
23848
23855
  },
23849
23856
  {
23850
23857
  name: "chmod",
@@ -23860,15 +23867,15 @@ var tt = [
23860
23867
  },
23861
23868
  {
23862
23869
  name: "head",
23863
- load: async () => (await Promise.resolve().then(() => require("./head-442HYESI-_RXn0SBi.cjs"))).headCommand
23870
+ load: async () => (await Promise.resolve().then(() => require("./head-442HYESI-B5Zrtvzq.cjs"))).headCommand
23864
23871
  },
23865
23872
  {
23866
23873
  name: "tail",
23867
- load: async () => (await Promise.resolve().then(() => require("./tail-R4PCA2C4-TH4AUhAb.cjs"))).tailCommand
23874
+ load: async () => (await Promise.resolve().then(() => require("./tail-R4PCA2C4-beByscYb.cjs"))).tailCommand
23868
23875
  },
23869
23876
  {
23870
23877
  name: "wc",
23871
- load: async () => (await Promise.resolve().then(() => require("./wc-LF7NU4LA-DUBYnutH.cjs"))).wcCommand
23878
+ load: async () => (await Promise.resolve().then(() => require("./wc-LF7NU4LA-B87JyYK9.cjs"))).wcCommand
23872
23879
  },
23873
23880
  {
23874
23881
  name: "stat",
@@ -23876,95 +23883,95 @@ var tt = [
23876
23883
  },
23877
23884
  {
23878
23885
  name: "grep",
23879
- load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-BcfmH0yO.cjs"))).grepCommand
23886
+ load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-C3P-xkVL.cjs"))).grepCommand
23880
23887
  },
23881
23888
  {
23882
23889
  name: "fgrep",
23883
- load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-BcfmH0yO.cjs"))).fgrepCommand
23890
+ load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-C3P-xkVL.cjs"))).fgrepCommand
23884
23891
  },
23885
23892
  {
23886
23893
  name: "egrep",
23887
- load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-BcfmH0yO.cjs"))).egrepCommand
23894
+ load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-C3P-xkVL.cjs"))).egrepCommand
23888
23895
  },
23889
23896
  {
23890
23897
  name: "rg",
23891
- load: async () => (await Promise.resolve().then(() => require("./rg-S4FXYXWB-BL_fs0a0.cjs"))).rgCommand
23898
+ load: async () => (await Promise.resolve().then(() => require("./rg-S4FXYXWB-B3c-xS0T.cjs"))).rgCommand
23892
23899
  },
23893
23900
  {
23894
23901
  name: "sed",
23895
- load: async () => (await Promise.resolve().then(() => require("./sed-S5UIK574-OUlTmK0x.cjs"))).sedCommand
23902
+ load: async () => (await Promise.resolve().then(() => require("./sed-S5UIK574-C_tmmJAF.cjs"))).sedCommand
23896
23903
  },
23897
23904
  {
23898
23905
  name: "awk",
23899
- load: async () => (await Promise.resolve().then(() => require("./awk2-LA3USKJP-BE8esz9o.cjs"))).awkCommand2
23906
+ load: async () => (await Promise.resolve().then(() => require("./awk2-LA3USKJP-D1rYfUKt.cjs"))).awkCommand2
23900
23907
  },
23901
23908
  {
23902
23909
  name: "sort",
23903
- load: async () => (await Promise.resolve().then(() => require("./sort-SW2YEO5B-BlJCEbS7.cjs"))).sortCommand
23910
+ load: async () => (await Promise.resolve().then(() => require("./sort-SW2YEO5B-RuQckK0z.cjs"))).sortCommand
23904
23911
  },
23905
23912
  {
23906
23913
  name: "uniq",
23907
- load: async () => (await Promise.resolve().then(() => require("./uniq-XSIZR6PB-CyA5DoCP.cjs"))).uniqCommand
23914
+ load: async () => (await Promise.resolve().then(() => require("./uniq-XSIZR6PB-CvkGBiie.cjs"))).uniqCommand
23908
23915
  },
23909
23916
  {
23910
23917
  name: "comm",
23911
- load: async () => (await Promise.resolve().then(() => require("./comm-VV2LDX2J-CdE-OYeG.cjs"))).commCommand
23918
+ load: async () => (await Promise.resolve().then(() => require("./comm-VV2LDX2J-Dz_BBbXW.cjs"))).commCommand
23912
23919
  },
23913
23920
  {
23914
23921
  name: "cut",
23915
- load: async () => (await Promise.resolve().then(() => require("./cut-OKARJCCV-S-g4hG3d.cjs"))).cutCommand
23922
+ load: async () => (await Promise.resolve().then(() => require("./cut-OKARJCCV-Cc-_kYHa.cjs"))).cutCommand
23916
23923
  },
23917
23924
  {
23918
23925
  name: "paste",
23919
- load: async () => (await Promise.resolve().then(() => require("./paste-7JC6S4DX-DEoyg9Vv.cjs"))).pasteCommand
23926
+ load: async () => (await Promise.resolve().then(() => require("./paste-7JC6S4DX-HzWqjKmQ.cjs"))).pasteCommand
23920
23927
  },
23921
23928
  {
23922
23929
  name: "tr",
23923
- load: async () => (await Promise.resolve().then(() => require("./tr-36LHWFRQ-DDHiAg_m.cjs"))).trCommand
23930
+ load: async () => (await Promise.resolve().then(() => require("./tr-36LHWFRQ-Bel6G8Xw.cjs"))).trCommand
23924
23931
  },
23925
23932
  {
23926
23933
  name: "rev",
23927
- load: async () => (await Promise.resolve().then(() => require("./rev-5EHFX4EJ-B27blDxm.cjs"))).rev
23934
+ load: async () => (await Promise.resolve().then(() => require("./rev-5EHFX4EJ-BpzhDpp9.cjs"))).rev
23928
23935
  },
23929
23936
  {
23930
23937
  name: "nl",
23931
- load: async () => (await Promise.resolve().then(() => require("./nl-WSDW7I4O-DttNn_cO.cjs"))).nl
23938
+ load: async () => (await Promise.resolve().then(() => require("./nl-WSDW7I4O-CnGKibFZ.cjs"))).nl
23932
23939
  },
23933
23940
  {
23934
23941
  name: "fold",
23935
- load: async () => (await Promise.resolve().then(() => require("./fold-4TQNYMSW-BIl_iV0S.cjs"))).fold
23942
+ load: async () => (await Promise.resolve().then(() => require("./fold-4TQNYMSW-Cvoxzetz.cjs"))).fold
23936
23943
  },
23937
23944
  {
23938
23945
  name: "expand",
23939
- load: async () => (await Promise.resolve().then(() => require("./expand-JSPG6VOP-BAEvLz6y.cjs"))).expand
23946
+ load: async () => (await Promise.resolve().then(() => require("./expand-JSPG6VOP-w3B3Wcpp.cjs"))).expand
23940
23947
  },
23941
23948
  {
23942
23949
  name: "unexpand",
23943
- load: async () => (await Promise.resolve().then(() => require("./unexpand-CADSA4VO-BORtdsy_.cjs"))).unexpand
23950
+ load: async () => (await Promise.resolve().then(() => require("./unexpand-CADSA4VO-CLZLDBM9.cjs"))).unexpand
23944
23951
  },
23945
23952
  {
23946
23953
  name: "strings",
23947
- load: async () => (await Promise.resolve().then(() => require("./strings-6WDHLGMX-CeJiCt-u.cjs"))).strings
23954
+ load: async () => (await Promise.resolve().then(() => require("./strings-6WDHLGMX-uhhFpIsD.cjs"))).strings
23948
23955
  },
23949
23956
  {
23950
23957
  name: "split",
23951
- load: async () => (await Promise.resolve().then(() => require("./split-4KKZZXXE-DGFsDrFE.cjs"))).split
23958
+ load: async () => (await Promise.resolve().then(() => require("./split-4KKZZXXE-CFDvTWk8.cjs"))).split
23952
23959
  },
23953
23960
  {
23954
23961
  name: "column",
23955
- load: async () => (await Promise.resolve().then(() => require("./column-XT6UFXNQ-ieIKmRkh.cjs"))).column
23962
+ load: async () => (await Promise.resolve().then(() => require("./column-XT6UFXNQ-CK3Tgvp9.cjs"))).column
23956
23963
  },
23957
23964
  {
23958
23965
  name: "join",
23959
- load: async () => (await Promise.resolve().then(() => require("./join-TBRGI3LQ-BOS3zpbh.cjs"))).join
23966
+ load: async () => (await Promise.resolve().then(() => require("./join-TBRGI3LQ-lLkX23Kg.cjs"))).join
23960
23967
  },
23961
23968
  {
23962
23969
  name: "tee",
23963
- load: async () => (await Promise.resolve().then(() => require("./tee-YUZ2FKCJ-D_BE3AiF.cjs"))).teeCommand
23970
+ load: async () => (await Promise.resolve().then(() => require("./tee-YUZ2FKCJ-kgjQdGix.cjs"))).teeCommand
23964
23971
  },
23965
23972
  {
23966
23973
  name: "find",
23967
- load: async () => (await Promise.resolve().then(() => require("./find-INTH3OLC-Bf3-4Zi2.cjs"))).findCommand
23974
+ load: async () => (await Promise.resolve().then(() => require("./find-INTH3OLC-BLqmQymL.cjs"))).findCommand
23968
23975
  },
23969
23976
  {
23970
23977
  name: "basename",
@@ -23976,19 +23983,19 @@ var tt = [
23976
23983
  },
23977
23984
  {
23978
23985
  name: "tree",
23979
- load: async () => (await Promise.resolve().then(() => require("./tree-YLD52CNT-BqqLx-tM.cjs"))).treeCommand
23986
+ load: async () => (await Promise.resolve().then(() => require("./tree-YLD52CNT-DarfOTzE.cjs"))).treeCommand
23980
23987
  },
23981
23988
  {
23982
23989
  name: "du",
23983
- load: async () => (await Promise.resolve().then(() => require("./du-572XNP42-f68GOB47.cjs"))).duCommand
23990
+ load: async () => (await Promise.resolve().then(() => require("./du-572XNP42-CQyl8s3u.cjs"))).duCommand
23984
23991
  },
23985
23992
  {
23986
23993
  name: "env",
23987
- load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-DHcnOUrA.cjs"))).envCommand
23994
+ load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-BgS1oyaO.cjs"))).envCommand
23988
23995
  },
23989
23996
  {
23990
23997
  name: "printenv",
23991
- load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-DHcnOUrA.cjs"))).printenvCommand
23998
+ load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-BgS1oyaO.cjs"))).printenvCommand
23992
23999
  },
23993
24000
  {
23994
24001
  name: "alias",
@@ -24004,7 +24011,7 @@ var tt = [
24004
24011
  },
24005
24012
  {
24006
24013
  name: "xargs",
24007
- load: async () => (await Promise.resolve().then(() => require("./xargs-MGZPH7AX-B_Ocy3BY.cjs"))).xargsCommand
24014
+ load: async () => (await Promise.resolve().then(() => require("./xargs-MGZPH7AX-D80gglJT.cjs"))).xargsCommand
24008
24015
  },
24009
24016
  {
24010
24017
  name: "true",
@@ -24020,23 +24027,23 @@ var tt = [
24020
24027
  },
24021
24028
  {
24022
24029
  name: "bash",
24023
- load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-Z8YFnXLG.cjs"))).bashCommand
24030
+ load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-7G2TAT74.cjs"))).bashCommand
24024
24031
  },
24025
24032
  {
24026
24033
  name: "sh",
24027
- load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-Z8YFnXLG.cjs"))).shCommand
24034
+ load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-7G2TAT74.cjs"))).shCommand
24028
24035
  },
24029
24036
  {
24030
24037
  name: "jq",
24031
- load: async () => (await Promise.resolve().then(() => require("./jq-4XLYLOS5-C-4KbpIO.cjs"))).jqCommand
24038
+ load: async () => (await Promise.resolve().then(() => require("./jq-4XLYLOS5-C43q5lUe.cjs"))).jqCommand
24032
24039
  },
24033
24040
  {
24034
24041
  name: "base64",
24035
- load: async () => (await Promise.resolve().then(() => require("./base64-C2AIWVNC-CGFeI4Fm.cjs"))).base64Command
24042
+ load: async () => (await Promise.resolve().then(() => require("./base64-C2AIWVNC-CHxJHAm1.cjs"))).base64Command
24036
24043
  },
24037
24044
  {
24038
24045
  name: "diff",
24039
- load: async () => (await Promise.resolve().then(() => require("./diff-MWJFIG7X-Xtqp7FtF.cjs"))).diffCommand
24046
+ load: async () => (await Promise.resolve().then(() => require("./diff-MWJFIG7X-B6ToWPAr.cjs"))).diffCommand
24040
24047
  },
24041
24048
  {
24042
24049
  name: "date",
@@ -24044,15 +24051,15 @@ var tt = [
24044
24051
  },
24045
24052
  {
24046
24053
  name: "sleep",
24047
- load: async () => (await Promise.resolve().then(() => require("./sleep-X22JJINO-DFWLmtic.cjs"))).sleepCommand
24054
+ load: async () => (await Promise.resolve().then(() => require("./sleep-X22JJINO-DGw5kE6M.cjs"))).sleepCommand
24048
24055
  },
24049
24056
  {
24050
24057
  name: "timeout",
24051
- load: async () => (await Promise.resolve().then(() => require("./timeout-YDCRSLPQ-DWs-ACr6.cjs"))).timeoutCommand
24058
+ load: async () => (await Promise.resolve().then(() => require("./timeout-YDCRSLPQ-Ddgm55V3.cjs"))).timeoutCommand
24052
24059
  },
24053
24060
  {
24054
24061
  name: "time",
24055
- load: async () => (await Promise.resolve().then(() => require("./time-D4LNBSWX-zKxg-wM1.cjs"))).timeCommand
24062
+ load: async () => (await Promise.resolve().then(() => require("./time-D4LNBSWX-C1Jzh_FF.cjs"))).timeCommand
24056
24063
  },
24057
24064
  {
24058
24065
  name: "seq",
@@ -24060,19 +24067,19 @@ var tt = [
24060
24067
  },
24061
24068
  {
24062
24069
  name: "expr",
24063
- load: async () => (await Promise.resolve().then(() => require("./expr-5JAACS4X-BFLtaqNy.cjs"))).exprCommand
24070
+ load: async () => (await Promise.resolve().then(() => require("./expr-5JAACS4X-CrqDcl6c.cjs"))).exprCommand
24064
24071
  },
24065
24072
  {
24066
24073
  name: "md5sum",
24067
- load: async () => (await Promise.resolve().then(() => require("./md5sum-SPU24VSG-wjaqw6M5.cjs"))).md5sumCommand
24074
+ load: async () => (await Promise.resolve().then(() => require("./md5sum-SPU24VSG-7ehymDqh.cjs"))).md5sumCommand
24068
24075
  },
24069
24076
  {
24070
24077
  name: "sha1sum",
24071
- load: async () => (await Promise.resolve().then(() => require("./sha1sum-2PTOAFR6-B_DU8HD8.cjs"))).sha1sumCommand
24078
+ load: async () => (await Promise.resolve().then(() => require("./sha1sum-2PTOAFR6-eVUequm9.cjs"))).sha1sumCommand
24072
24079
  },
24073
24080
  {
24074
24081
  name: "sha256sum",
24075
- load: async () => (await Promise.resolve().then(() => require("./sha256sum-NS7D3IXX-YzzSU71d.cjs"))).sha256sumCommand
24082
+ load: async () => (await Promise.resolve().then(() => require("./sha256sum-NS7D3IXX-d1Vg6JxV.cjs"))).sha256sumCommand
24076
24083
  },
24077
24084
  {
24078
24085
  name: "file",
@@ -24080,11 +24087,11 @@ var tt = [
24080
24087
  },
24081
24088
  {
24082
24089
  name: "html-to-markdown",
24083
- load: async () => (await Promise.resolve().then(() => require("./html-to-markdown-JW4MSQZO-yoaOs45E.cjs"))).htmlToMarkdownCommand
24090
+ load: async () => (await Promise.resolve().then(() => require("./html-to-markdown-JW4MSQZO-DUFlGd4H.cjs"))).htmlToMarkdownCommand
24084
24091
  },
24085
24092
  {
24086
24093
  name: "help",
24087
- load: async () => (await Promise.resolve().then(() => require("./help-HZ6M2CKN-DJP0l3xk.cjs"))).helpCommand
24094
+ load: async () => (await Promise.resolve().then(() => require("./help-HZ6M2CKN-ShPRglNQ.cjs"))).helpCommand
24088
24095
  },
24089
24096
  {
24090
24097
  name: "which",
@@ -24092,7 +24099,7 @@ var tt = [
24092
24099
  },
24093
24100
  {
24094
24101
  name: "tac",
24095
- load: async () => (await Promise.resolve().then(() => require("./tac-2STMMJYW-DlI5binK.cjs"))).tac
24102
+ load: async () => (await Promise.resolve().then(() => require("./tac-2STMMJYW-CAeepy4C.cjs"))).tac
24096
24103
  },
24097
24104
  {
24098
24105
  name: "hostname",
@@ -24104,49 +24111,49 @@ var tt = [
24104
24111
  },
24105
24112
  {
24106
24113
  name: "od",
24107
- load: async () => (await Promise.resolve().then(() => require("./od-WOKFDJTP-BJWjPFho.cjs"))).od
24114
+ load: async () => (await Promise.resolve().then(() => require("./od-WOKFDJTP-BScUR9bN.cjs"))).od
24108
24115
  },
24109
24116
  {
24110
24117
  name: "gzip",
24111
- load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-B9ermjPq.cjs"))).gzipCommand
24118
+ load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-DTw8yzKj.cjs"))).gzipCommand
24112
24119
  },
24113
24120
  {
24114
24121
  name: "gunzip",
24115
- load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-B9ermjPq.cjs"))).gunzipCommand
24122
+ load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-DTw8yzKj.cjs"))).gunzipCommand
24116
24123
  },
24117
24124
  {
24118
24125
  name: "zcat",
24119
- load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-B9ermjPq.cjs"))).zcatCommand
24126
+ load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-DTw8yzKj.cjs"))).zcatCommand
24120
24127
  }
24121
24128
  ];
24122
24129
  (typeof __BROWSER__ > "u" || !__BROWSER__) && (tt.push({
24123
24130
  name: "tar",
24124
- load: async () => (await Promise.resolve().then(() => require("./tar-STHHZTZ6-DELlRab1.cjs"))).tarCommand
24131
+ load: async () => (await Promise.resolve().then(() => require("./tar-STHHZTZ6-D_3Avd2x.cjs"))).tarCommand
24125
24132
  }), tt.push({
24126
24133
  name: "yq",
24127
- load: async () => (await Promise.resolve().then(() => require("./yq-4QJW3EQG-BPBhjinw.cjs"))).yqCommand
24134
+ load: async () => (await Promise.resolve().then(() => require("./yq-4QJW3EQG-DqHEdSO6.cjs"))).yqCommand
24128
24135
  }), tt.push({
24129
24136
  name: "xan",
24130
- load: async () => (await Promise.resolve().then(() => require("./xan-Y6WF3IRG-W4Yr19gE.cjs"))).xanCommand
24137
+ load: async () => (await Promise.resolve().then(() => require("./xan-Y6WF3IRG-C28WXL79.cjs"))).xanCommand
24131
24138
  }), tt.push({
24132
24139
  name: "sqlite3",
24133
- load: async () => (await Promise.resolve().then(() => require("./sqlite3-CGOEFJAO-D78UkTyw.cjs"))).sqlite3Command
24140
+ load: async () => (await Promise.resolve().then(() => require("./sqlite3-CGOEFJAO-C2GzVRe7.cjs"))).sqlite3Command
24134
24141
  }));
24135
24142
  var Yt = [];
24136
24143
  (typeof __BROWSER__ > "u" || !__BROWSER__) && (Yt.push({
24137
24144
  name: "python3",
24138
- load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-B8aVGk7h.cjs"))).python3Command
24145
+ load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-bgmedTpE.cjs"))).python3Command
24139
24146
  }), Yt.push({
24140
24147
  name: "python",
24141
- load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-B8aVGk7h.cjs"))).pythonCommand
24148
+ load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-bgmedTpE.cjs"))).pythonCommand
24142
24149
  }));
24143
24150
  var Qt = [];
24144
24151
  (typeof __BROWSER__ > "u" || !__BROWSER__) && (Qt.push({
24145
24152
  name: "js-exec",
24146
- load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7--5grqRpb.cjs"))).jsExecCommand
24153
+ load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-DD7o_C3B.cjs"))).jsExecCommand
24147
24154
  }), Qt.push({
24148
24155
  name: "node",
24149
- load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7--5grqRpb.cjs"))).nodeStubCommand
24156
+ load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-DD7o_C3B.cjs"))).nodeStubCommand
24150
24157
  }));
24151
24158
  new TextEncoder();
24152
24159
  Object.freeze({
@@ -25148,142 +25155,174 @@ const StoredRouteManifestSkillSchema = zod.z.object({
25148
25155
  description: zod.z.string().optional(),
25149
25156
  moduleFile: zod.z.string()
25150
25157
  });
25151
- const serializedRouteManifestEntrySchema = zod.z.discriminatedUnion("kind", [
25152
- zod.z.object({
25153
- kind: zod.z.literal("health"),
25154
- method: zod.z.literal("GET"),
25155
- path: zod.z.literal("/health")
25156
- }),
25158
+ const attachmentSchemasSchema = zod.z.record(zod.z.string(), zod.z.object({
25159
+ requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
25160
+ filterSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
25161
+ }));
25162
+ const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
25163
+ zod.z.object({ kind: zod.z.literal("health") }),
25157
25164
  zod.z.object({
25158
25165
  kind: zod.z.literal("agent"),
25159
- method: zod.z.literal("POST"),
25160
- path: zod.z.string(),
25161
- agentSlug: zod.z.string(),
25166
+ slug: zod.z.string(),
25162
25167
  moduleFile: zod.z.string(),
25163
25168
  name: zod.z.string().optional(),
25164
25169
  description: zod.z.string().optional(),
25165
25170
  model: zod.z.string(),
25166
25171
  systemPrompt: zod.z.string(),
25167
25172
  toolCount: zod.z.number().int().nonnegative(),
25168
- credentialCount: zod.z.number().int().nonnegative(),
25169
- requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
25170
- responseSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25171
- }),
25172
- zod.z.object({
25173
- kind: zod.z.literal("agent-sessions-list"),
25174
- method: zod.z.literal("GET"),
25175
- path: zod.z.string(),
25176
- agentSlug: zod.z.string(),
25177
- moduleFile: zod.z.string()
25178
- }),
25179
- zod.z.object({
25180
- kind: zod.z.literal("agent-session-detail"),
25181
- method: zod.z.literal("GET"),
25182
- path: zod.z.string(),
25183
- agentSlug: zod.z.string(),
25184
- moduleFile: zod.z.string()
25173
+ credentialCount: zod.z.number().int().nonnegative()
25185
25174
  }),
25186
25175
  zod.z.object({
25187
25176
  kind: zod.z.literal("workflow"),
25188
- method: zod.z.literal("POST"),
25189
- path: zod.z.string(),
25190
- workflowSlug: zod.z.string(),
25191
- workflowName: zod.z.string().optional(),
25177
+ slug: zod.z.string(),
25178
+ name: zod.z.string().optional(),
25192
25179
  description: zod.z.string().optional(),
25193
25180
  subscribable: zod.z.boolean(),
25194
25181
  moduleFile: zod.z.string(),
25195
- requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
25196
- responseSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25197
- }),
25198
- zod.z.object({
25199
- kind: zod.z.literal("workflow-runs-list"),
25200
- method: zod.z.literal("GET"),
25201
- path: zod.z.string(),
25202
- workflowSlug: zod.z.string(),
25203
- workflowName: zod.z.string().optional(),
25204
- moduleFile: zod.z.string()
25205
- }),
25206
- zod.z.object({
25207
- kind: zod.z.literal("workflow-run-detail"),
25208
- method: zod.z.literal("GET"),
25209
- path: zod.z.string(),
25210
- workflowSlug: zod.z.string(),
25211
- workflowName: zod.z.string().optional(),
25212
- moduleFile: zod.z.string()
25182
+ requestSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25213
25183
  }),
25214
25184
  zod.z.object({
25215
25185
  kind: zod.z.literal("trigger-webhook"),
25216
- method: zod.z.literal("POST"),
25217
- path: zod.z.string(),
25186
+ endpoint: zod.z.string(),
25218
25187
  attachmentIds: zod.z.array(zod.z.string()),
25219
25188
  moduleFile: zod.z.string(),
25220
- requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
25221
- attachmentSchemas: zod.z.record(zod.z.string(), zod.z.object({
25222
- requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
25223
- filterSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
25224
- })),
25225
- responseSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25189
+ attachmentSchemas: attachmentSchemasSchema
25226
25190
  }),
25227
25191
  zod.z.object({
25228
25192
  kind: zod.z.literal("trigger-poll"),
25229
- method: zod.z.literal("POST"),
25230
- path: zod.z.string(),
25231
25193
  attachmentId: zod.z.string(),
25232
25194
  moduleFile: zod.z.string(),
25233
- schedule: zod.z.string(),
25234
- responseSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25195
+ schedule: zod.z.string()
25235
25196
  }),
25236
25197
  zod.z.object({
25237
25198
  kind: zod.z.literal("trigger-poll-group"),
25238
- method: zod.z.literal("POST"),
25239
- path: zod.z.string(),
25240
25199
  pollId: zod.z.string(),
25241
25200
  attachmentIds: zod.z.array(zod.z.string()),
25242
25201
  moduleFile: zod.z.string(),
25243
- schedule: zod.z.string(),
25244
- responseSchema: zod.z.record(zod.z.string(), zod.z.unknown())
25245
- }),
25246
- zod.z.object({
25247
- kind: zod.z.literal("trigger-runs-list"),
25248
- method: zod.z.literal("GET"),
25249
- path: zod.z.string(),
25250
- attachmentId: zod.z.string(),
25251
- moduleFile: zod.z.string()
25252
- }),
25253
- zod.z.object({
25254
- kind: zod.z.literal("trigger-run-detail"),
25255
- method: zod.z.literal("GET"),
25256
- path: zod.z.string(),
25257
- attachmentId: zod.z.string(),
25258
- moduleFile: zod.z.string()
25202
+ schedule: zod.z.string()
25259
25203
  }),
25260
25204
  zod.z.object({
25261
25205
  kind: zod.z.literal("cron-schedule"),
25262
25206
  attachmentId: zod.z.string(),
25263
25207
  moduleFile: zod.z.string(),
25264
25208
  schedule: zod.z.string()
25265
- }),
25266
- zod.z.object({
25267
- kind: zod.z.literal("plugin"),
25268
- method: zod.z.enum([
25269
- "GET",
25270
- "POST",
25271
- "PUT",
25272
- "PATCH",
25273
- "DELETE"
25274
- ]),
25275
- path: zod.z.string(),
25276
- plugin: zod.z.string()
25277
25209
  })
25278
25210
  ]);
25279
- const StoredRouteManifestSchema = zod.z.object({
25280
- version: zod.z.literal(1),
25281
- entries: zod.z.array(serializedRouteManifestEntrySchema),
25211
+ const storedRouteManifestV2Schema = zod.z.object({
25212
+ version: zod.z.literal(2),
25213
+ entries: zod.z.array(storedRouteManifestEntryV2Schema),
25282
25214
  skills: zod.z.array(StoredRouteManifestSkillSchema).default([]),
25283
25215
  integrations: zod.z.array(zod.z.string()).optional()
25284
25216
  });
25217
+ const DERIVED_ENTRY_KINDS = new Set([
25218
+ "agent-sessions-list",
25219
+ "agent-session-detail",
25220
+ "workflow-runs-list",
25221
+ "workflow-run-detail",
25222
+ "trigger-runs-list",
25223
+ "trigger-run-detail"
25224
+ ]);
25225
+ function webhookEndpointFromPath(path) {
25226
+ return path.replace(/^\/triggers\//, "").replace(/^\/+|\/+$/g, "");
25227
+ }
25228
+ /** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
25229
+ function normalizeEntryToV2(entry) {
25230
+ const kind = entry.kind;
25231
+ if (typeof kind !== "string") return null;
25232
+ if (DERIVED_ENTRY_KINDS.has(kind) || kind === "plugin") return null;
25233
+ if (kind === "health") return { kind: "health" };
25234
+ if (kind === "agent") {
25235
+ const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.agentSlug === "string" ? entry.agentSlug : void 0;
25236
+ if (!slug || typeof entry.moduleFile !== "string") return null;
25237
+ return {
25238
+ kind: "agent",
25239
+ slug,
25240
+ moduleFile: entry.moduleFile,
25241
+ ...typeof entry.name === "string" ? { name: entry.name } : {},
25242
+ ...typeof entry.description === "string" ? { description: entry.description } : {},
25243
+ model: typeof entry.model === "string" ? entry.model : "",
25244
+ systemPrompt: typeof entry.systemPrompt === "string" ? entry.systemPrompt : "",
25245
+ toolCount: typeof entry.toolCount === "number" ? entry.toolCount : 0,
25246
+ credentialCount: typeof entry.credentialCount === "number" ? entry.credentialCount : 0
25247
+ };
25248
+ }
25249
+ if (kind === "workflow") {
25250
+ const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.workflowSlug === "string" ? entry.workflowSlug : void 0;
25251
+ if (!slug || typeof entry.moduleFile !== "string") return null;
25252
+ const name = typeof entry.name === "string" ? entry.name : typeof entry.workflowName === "string" ? entry.workflowName : void 0;
25253
+ return {
25254
+ kind: "workflow",
25255
+ slug,
25256
+ moduleFile: entry.moduleFile,
25257
+ ...name ? { name } : {},
25258
+ ...typeof entry.description === "string" ? { description: entry.description } : {},
25259
+ subscribable: entry.subscribable === true,
25260
+ requestSchema: entry.requestSchema && typeof entry.requestSchema === "object" ? entry.requestSchema : {}
25261
+ };
25262
+ }
25263
+ if (kind === "trigger-webhook") {
25264
+ if (typeof entry.moduleFile !== "string" || !Array.isArray(entry.attachmentIds)) return null;
25265
+ const endpoint = typeof entry.endpoint === "string" ? entry.endpoint : typeof entry.path === "string" ? webhookEndpointFromPath(entry.path) : void 0;
25266
+ if (!endpoint) return null;
25267
+ return {
25268
+ kind: "trigger-webhook",
25269
+ endpoint,
25270
+ attachmentIds: entry.attachmentIds,
25271
+ moduleFile: entry.moduleFile,
25272
+ attachmentSchemas: entry.attachmentSchemas && typeof entry.attachmentSchemas === "object" ? entry.attachmentSchemas : {}
25273
+ };
25274
+ }
25275
+ if (kind === "trigger-poll") {
25276
+ if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
25277
+ return {
25278
+ kind: "trigger-poll",
25279
+ attachmentId: entry.attachmentId,
25280
+ moduleFile: entry.moduleFile,
25281
+ schedule: entry.schedule
25282
+ };
25283
+ }
25284
+ if (kind === "trigger-poll-group") {
25285
+ if (typeof entry.pollId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string" || !Array.isArray(entry.attachmentIds)) return null;
25286
+ return {
25287
+ kind: "trigger-poll-group",
25288
+ pollId: entry.pollId,
25289
+ attachmentIds: entry.attachmentIds,
25290
+ moduleFile: entry.moduleFile,
25291
+ schedule: entry.schedule
25292
+ };
25293
+ }
25294
+ if (kind === "cron-schedule") {
25295
+ if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
25296
+ return {
25297
+ kind: "cron-schedule",
25298
+ attachmentId: entry.attachmentId,
25299
+ moduleFile: entry.moduleFile,
25300
+ schedule: entry.schedule
25301
+ };
25302
+ }
25303
+ return null;
25304
+ }
25305
+ /** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
25306
+ function normalizeStoredRouteManifestToV2(value) {
25307
+ if (!value || typeof value !== "object") throw new Error("Invalid route manifest");
25308
+ const raw = value;
25309
+ if (raw.version === 2) return storedRouteManifestV2Schema.parse(value);
25310
+ const entriesRaw = Array.isArray(raw.entries) ? raw.entries : [];
25311
+ const entries = [];
25312
+ for (const entry of entriesRaw) {
25313
+ if (!entry || typeof entry !== "object") continue;
25314
+ const normalized = normalizeEntryToV2(entry);
25315
+ if (normalized) entries.push(normalized);
25316
+ }
25317
+ return storedRouteManifestV2Schema.parse({
25318
+ version: 2,
25319
+ entries,
25320
+ skills: raw.skills ?? [],
25321
+ integrations: raw.integrations
25322
+ });
25323
+ }
25285
25324
  function parseStoredRouteManifest(value) {
25286
- return StoredRouteManifestSchema.parse(value);
25325
+ return normalizeStoredRouteManifestToV2(value);
25287
25326
  }
25288
25327
  /** Messaging platforms that support agent gateway bindings. */
25289
25328
  const ChannelPlatformKeySchema = zod.z.enum(["slack"]);
@@ -48832,9 +48871,10 @@ function getPgBoss() {
48832
48871
  return boss;
48833
48872
  }
48834
48873
  /** Postgres NOTIFY channel — lowercase identifier (project ids are UUIDs, well under 63 chars). */
48835
- function pgCancelChannelName(scope, projectId) {
48874
+ function pgCancelChannelName(scope, id) {
48836
48875
  if (scope === "platform") return "keystroke_cancel_platform";
48837
- return `keystroke_cancel_${(projectId ?? "default").replace(/[^a-z0-9_]/gi, "_").toLowerCase()}`;
48876
+ if (scope === "organization") return `keystroke_cancel_org_${(id ?? "default").replace(/[^a-z0-9_]/gi, "_").toLowerCase()}`;
48877
+ return `keystroke_cancel_${(id ?? "default").replace(/[^a-z0-9_]/gi, "_").toLowerCase()}`;
48838
48878
  }
48839
48879
  /** Shared queue name for the platform control-plane scope. */
48840
48880
  const DEFAULT_QUEUE_NAME = "keystroke";
@@ -48850,12 +48890,20 @@ function pgBossProjectQueueName(projectId) {
48850
48890
  if (name.length <= 50) return name;
48851
48891
  return `${DEFAULT_QUEUE_NAME}_${(0, node_crypto.createHash)("sha1").update(projectId).digest("hex").slice(0, 40)}`;
48852
48892
  }
48893
+ function pgBossOrgQueueName(organizationId) {
48894
+ const name = `${DEFAULT_QUEUE_NAME}_org_${organizationId.replace(/[^a-zA-Z0-9_]/g, "_")}`;
48895
+ if (name.length <= 50) return name;
48896
+ return `${DEFAULT_QUEUE_NAME}_org_${(0, node_crypto.createHash)("sha1").update(organizationId).digest("hex").slice(0, 36)}`;
48897
+ }
48853
48898
  function buildPgBossJobQueue(boss, options) {
48854
48899
  const queueName = options.queueName ?? "keystroke";
48855
- const cancelChannel = (0, _keystrokehq_database.createPostgresCancelChannel)(options.connectionString, pgCancelChannelName(options.cancelScope ?? "platform", options.projectId));
48900
+ const cancelChannel = (0, _keystrokehq_database.createPostgresCancelChannel)(options.connectionString, pgCancelChannelName(options.cancelScope ?? "platform", options.cancelScope === "organization" ? options.organizationId : options.projectId));
48856
48901
  return {
48857
48902
  async enqueue(input) {
48858
- const jobId = await boss.send(queueName, input, {
48903
+ const jobId = await boss.send(queueName, {
48904
+ ...input,
48905
+ payload: input.payload
48906
+ }, {
48859
48907
  retryLimit: (input.maxAttempts ?? 3) - 1,
48860
48908
  retryDelay: Math.ceil(retryDelayMs(1) / 1e3),
48861
48909
  startAfter: input.scheduledAt,
@@ -48889,7 +48937,8 @@ function buildPgBossJobQueue(boss, options) {
48889
48937
  attempt,
48890
48938
  maxAttempts,
48891
48939
  exhaustedRetries: attempt >= maxAttempts,
48892
- scheduledAt: data.scheduledAt ? new Date(data.scheduledAt) : /* @__PURE__ */ new Date()
48940
+ scheduledAt: data.scheduledAt ? new Date(data.scheduledAt) : /* @__PURE__ */ new Date(),
48941
+ projectId: data.projectId
48893
48942
  });
48894
48943
  });
48895
48944
  return async () => {
@@ -48917,8 +48966,9 @@ async function createPgBossQueue(options) {
48917
48966
  stopBossOnWorkerStop: true,
48918
48967
  queueName,
48919
48968
  connectionString: options.connectionString,
48920
- cancelScope: "project",
48921
- projectId: options.projectId
48969
+ cancelScope: options.cancelScope ?? "project",
48970
+ projectId: options.projectId,
48971
+ organizationId: options.organizationId
48922
48972
  });
48923
48973
  }
48924
48974
  async function createSharedPgBossJobQueue(boss, options) {
@@ -48933,7 +48983,7 @@ async function createSharedPgBossJobQueue(boss, options) {
48933
48983
  function resolveUrl(ctx) {
48934
48984
  return ctx.url ?? (0, _keystrokehq_database.resolveProjectDatabaseUrlFromEnv)(process.env) ?? _keystrokehq_database.DEFAULT_DATABASE_URL;
48935
48985
  }
48936
- /** Postgres pg-boss backend. Platform scope shares one queue; project scope gets a per-project queue. */
48986
+ /** Postgres pg-boss backend. Platform scope shares one queue; org scope gets one queue per org. */
48937
48987
  function pgBossSchedulerPlugin() {
48938
48988
  return defineSchedulerPlugin({
48939
48989
  name: "pg-boss",
@@ -48943,6 +48993,16 @@ function pgBossSchedulerPlugin() {
48943
48993
  await startPgBoss(url);
48944
48994
  return createSharedPgBossJobQueue(getPgBoss(), { connectionString: url });
48945
48995
  }
48996
+ if (ctx.scope === "organization") {
48997
+ const organizationId = ctx.organizationId;
48998
+ if (!organizationId) throw new Error("organizationId is required for organization-scoped pg-boss queue");
48999
+ return createPgBossQueue({
49000
+ connectionString: url,
49001
+ queueName: pgBossOrgQueueName(organizationId),
49002
+ cancelScope: "organization",
49003
+ organizationId
49004
+ });
49005
+ }
48946
49006
  const projectId = ctx.projectId ?? (0, _keystrokehq_database.getProjectScopeId)();
48947
49007
  return createPgBossQueue({
48948
49008
  connectionString: url,
@@ -50220,4 +50280,4 @@ Object.defineProperty(exports, "x$1", {
50220
50280
  }
50221
50281
  });
50222
50282
 
50223
- //# sourceMappingURL=dist-D1Iv7_7S.cjs.map
50283
+ //# sourceMappingURL=dist-CTYXqPDt.cjs.map