@keystrokehq/platform 0.1.157 → 0.1.159

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 (330) hide show
  1. package/dist/{awk2-LA3USKJP-DMwZ6QQr.cjs → awk2-LA3USKJP-Bbh_Mg7J.cjs} +2 -2
  2. package/dist/{awk2-LA3USKJP-DMwZ6QQr.cjs.map → awk2-LA3USKJP-Bbh_Mg7J.cjs.map} +1 -1
  3. package/dist/{awk2-LA3USKJP-ByfczQFR.mjs → awk2-LA3USKJP-Dra48sTI.mjs} +2 -2
  4. package/dist/{awk2-LA3USKJP-ByfczQFR.mjs.map → awk2-LA3USKJP-Dra48sTI.mjs.map} +1 -1
  5. package/dist/{base64-C2AIWVNC-DhLdSVMT.mjs → base64-C2AIWVNC-C1BGrnWw.mjs} +2 -2
  6. package/dist/{base64-C2AIWVNC-DhLdSVMT.mjs.map → base64-C2AIWVNC-C1BGrnWw.mjs.map} +1 -1
  7. package/dist/{base64-C2AIWVNC-TPM8YCIT.cjs → base64-C2AIWVNC-C9CHg5eJ.cjs} +2 -2
  8. package/dist/{base64-C2AIWVNC-TPM8YCIT.cjs.map → base64-C2AIWVNC-C9CHg5eJ.cjs.map} +1 -1
  9. package/dist/{bash-YZ33HQZQ-3gtMzQUb.cjs → bash-YZ33HQZQ-Lv9OV1ua.cjs} +2 -2
  10. package/dist/{bash-YZ33HQZQ-3gtMzQUb.cjs.map → bash-YZ33HQZQ-Lv9OV1ua.cjs.map} +1 -1
  11. package/dist/{bash-YZ33HQZQ-0JXMDwY6.mjs → bash-YZ33HQZQ-V0ICWlBe.mjs} +2 -2
  12. package/dist/{bash-YZ33HQZQ-0JXMDwY6.mjs.map → bash-YZ33HQZQ-V0ICWlBe.mjs.map} +1 -1
  13. package/dist/{cat-TSFMZVYS-DGwUv9Kz.cjs → cat-TSFMZVYS-B1NcRA6b.cjs} +3 -3
  14. package/dist/{cat-TSFMZVYS-DGwUv9Kz.cjs.map → cat-TSFMZVYS-B1NcRA6b.cjs.map} +1 -1
  15. package/dist/{cat-TSFMZVYS-pOt--woU.mjs → cat-TSFMZVYS-C9Gg1ddP.mjs} +3 -3
  16. package/dist/{cat-TSFMZVYS-pOt--woU.mjs.map → cat-TSFMZVYS-C9Gg1ddP.mjs.map} +1 -1
  17. package/dist/{chunk-5H5SCKJM-IFTXCE4s.mjs → chunk-5H5SCKJM-BB0qMbDA.mjs} +2 -2
  18. package/dist/{chunk-5H5SCKJM-IFTXCE4s.mjs.map → chunk-5H5SCKJM-BB0qMbDA.mjs.map} +1 -1
  19. package/dist/{chunk-5H5SCKJM-Dfxe1gZt.cjs → chunk-5H5SCKJM-CbS1FfoF.cjs} +2 -2
  20. package/dist/{chunk-5H5SCKJM-Dfxe1gZt.cjs.map → chunk-5H5SCKJM-CbS1FfoF.cjs.map} +1 -1
  21. package/dist/{chunk-AQ6FYS2X-F3UFTyNi.cjs → chunk-AQ6FYS2X-YPnDt7vA.cjs} +2 -2
  22. package/dist/{chunk-AQ6FYS2X-F3UFTyNi.cjs.map → chunk-AQ6FYS2X-YPnDt7vA.cjs.map} +1 -1
  23. package/dist/{chunk-AQ6FYS2X-CeO3SltC.mjs → chunk-AQ6FYS2X-m_2bl0fl.mjs} +2 -2
  24. package/dist/{chunk-AQ6FYS2X-CeO3SltC.mjs.map → chunk-AQ6FYS2X-m_2bl0fl.mjs.map} +1 -1
  25. package/dist/{chunk-CHFEPBH4-DXT2jaxl.mjs → chunk-CHFEPBH4-Bp3W88LB.mjs} +2 -2
  26. package/dist/{chunk-CHFEPBH4-DXT2jaxl.mjs.map → chunk-CHFEPBH4-Bp3W88LB.mjs.map} +1 -1
  27. package/dist/{chunk-CHFEPBH4-ahdwSYy4.cjs → chunk-CHFEPBH4-Cx3UhSbY.cjs} +2 -2
  28. package/dist/{chunk-CHFEPBH4-ahdwSYy4.cjs.map → chunk-CHFEPBH4-Cx3UhSbY.cjs.map} +1 -1
  29. package/dist/{chunk-EBAPSGAO-BH9U8nRM.mjs → chunk-EBAPSGAO-Bnm4sdUY.mjs} +2 -2
  30. package/dist/{chunk-EBAPSGAO-BH9U8nRM.mjs.map → chunk-EBAPSGAO-Bnm4sdUY.mjs.map} +1 -1
  31. package/dist/{chunk-EBAPSGAO-Dlc9htiv.cjs → chunk-EBAPSGAO-oZbt13DG.cjs} +2 -2
  32. package/dist/{chunk-EBAPSGAO-Dlc9htiv.cjs.map → chunk-EBAPSGAO-oZbt13DG.cjs.map} +1 -1
  33. package/dist/{chunk-LEKBROJD-CyvuoMFA.cjs → chunk-LEKBROJD-CZgbM4dQ.cjs} +2 -2
  34. package/dist/{chunk-LEKBROJD-CyvuoMFA.cjs.map → chunk-LEKBROJD-CZgbM4dQ.cjs.map} +1 -1
  35. package/dist/{chunk-LEKBROJD-CN3XABuh.mjs → chunk-LEKBROJD-DIHOLvJQ.mjs} +2 -2
  36. package/dist/{chunk-LEKBROJD-CN3XABuh.mjs.map → chunk-LEKBROJD-DIHOLvJQ.mjs.map} +1 -1
  37. package/dist/{chunk-VPADYNBD-B1fgFmr7.cjs → chunk-VPADYNBD-5vvyHHU-.cjs} +2 -2
  38. package/dist/{chunk-VPADYNBD-B1fgFmr7.cjs.map → chunk-VPADYNBD-5vvyHHU-.cjs.map} +1 -1
  39. package/dist/{chunk-VPADYNBD-CoDQW9rd.mjs → chunk-VPADYNBD-BRDDWLrp.mjs} +2 -2
  40. package/dist/{chunk-VPADYNBD-CoDQW9rd.mjs.map → chunk-VPADYNBD-BRDDWLrp.mjs.map} +1 -1
  41. package/dist/{chunk-YCLFEX4T-BhkOyHi8.cjs → chunk-YCLFEX4T-B04-lymi.cjs} +2 -2
  42. package/dist/{chunk-YCLFEX4T-BhkOyHi8.cjs.map → chunk-YCLFEX4T-B04-lymi.cjs.map} +1 -1
  43. package/dist/{chunk-YCLFEX4T-Bqhg2MlS.mjs → chunk-YCLFEX4T-npScZHIz.mjs} +2 -2
  44. package/dist/{chunk-YCLFEX4T-Bqhg2MlS.mjs.map → chunk-YCLFEX4T-npScZHIz.mjs.map} +1 -1
  45. package/dist/{column-XT6UFXNQ-vx9cFrby.cjs → column-XT6UFXNQ-DNmdqRGT.cjs} +2 -2
  46. package/dist/{column-XT6UFXNQ-vx9cFrby.cjs.map → column-XT6UFXNQ-DNmdqRGT.cjs.map} +1 -1
  47. package/dist/{column-XT6UFXNQ-2pQbXs2k.mjs → column-XT6UFXNQ-fcXxJihT.mjs} +2 -2
  48. package/dist/{column-XT6UFXNQ-2pQbXs2k.mjs.map → column-XT6UFXNQ-fcXxJihT.mjs.map} +1 -1
  49. package/dist/{comm-VV2LDX2J-BOZDvYIa.cjs → comm-VV2LDX2J-Batj3A42.cjs} +2 -2
  50. package/dist/{comm-VV2LDX2J-BOZDvYIa.cjs.map → comm-VV2LDX2J-Batj3A42.cjs.map} +1 -1
  51. package/dist/{comm-VV2LDX2J-BqGE2v_-.mjs → comm-VV2LDX2J-Db6pJcoM.mjs} +2 -2
  52. package/dist/{comm-VV2LDX2J-BqGE2v_-.mjs.map → comm-VV2LDX2J-Db6pJcoM.mjs.map} +1 -1
  53. package/dist/{config-7QWAcHEf.d.mts → config-3ZXCaTiz.d.mts} +34 -8
  54. package/dist/{config-BXIsWKDr.cjs → config-BV-mTijJ.cjs} +3 -3
  55. package/dist/config-BV-mTijJ.cjs.map +1 -0
  56. package/dist/{config-Bc0kWwBk.d.cts → config-C1blpLvD.d.cts} +34 -8
  57. package/dist/{config-BEXGfMWX.mjs → config-CdwUGcH5.mjs} +3 -3
  58. package/dist/config-CdwUGcH5.mjs.map +1 -0
  59. package/dist/config.cjs +2 -2
  60. package/dist/config.d.cts +2 -2
  61. package/dist/config.d.mts +2 -2
  62. package/dist/config.mjs +2 -2
  63. package/dist/{cp-BISAAS7A-BPMpNsAw.cjs → cp-BISAAS7A-i7fAdn4u.cjs} +2 -2
  64. package/dist/{cp-BISAAS7A-BPMpNsAw.cjs.map → cp-BISAAS7A-i7fAdn4u.cjs.map} +1 -1
  65. package/dist/{cp-BISAAS7A-B8FLyvxG.mjs → cp-BISAAS7A-tfAQp0jc.mjs} +2 -2
  66. package/dist/{cp-BISAAS7A-B8FLyvxG.mjs.map → cp-BISAAS7A-tfAQp0jc.mjs.map} +1 -1
  67. package/dist/{cut-OKARJCCV-D8thql_D.mjs → cut-OKARJCCV-Cw-TysL1.mjs} +3 -3
  68. package/dist/{cut-OKARJCCV-D8thql_D.mjs.map → cut-OKARJCCV-Cw-TysL1.mjs.map} +1 -1
  69. package/dist/{cut-OKARJCCV-D0Odc3Jf.cjs → cut-OKARJCCV-CyZ4dHpB.cjs} +3 -3
  70. package/dist/{cut-OKARJCCV-D0Odc3Jf.cjs.map → cut-OKARJCCV-CyZ4dHpB.cjs.map} +1 -1
  71. package/dist/{diff-MWJFIG7X-Drqts0Ou.mjs → diff-MWJFIG7X-CnfTAbzI.mjs} +2 -2
  72. package/dist/{diff-MWJFIG7X-Drqts0Ou.mjs.map → diff-MWJFIG7X-CnfTAbzI.mjs.map} +1 -1
  73. package/dist/{diff-MWJFIG7X-oslL1LAV.cjs → diff-MWJFIG7X-Cw34w01k.cjs} +2 -2
  74. package/dist/{diff-MWJFIG7X-oslL1LAV.cjs.map → diff-MWJFIG7X-Cw34w01k.cjs.map} +1 -1
  75. package/dist/{dist-CGVfb4k_.mjs → dist-C34Iplu5.mjs} +10 -2
  76. package/dist/{dist-CGVfb4k_.mjs.map → dist-C34Iplu5.mjs.map} +1 -1
  77. package/dist/{dist-kYSK2aR1.cjs → dist-DeC6P1o8.cjs} +10 -2
  78. package/dist/dist-DeC6P1o8.cjs.map +1 -0
  79. package/dist/{du-572XNP42-CELJ23aS.mjs → du-572XNP42-CkQXWW4r.mjs} +2 -2
  80. package/dist/{du-572XNP42-CELJ23aS.mjs.map → du-572XNP42-CkQXWW4r.mjs.map} +1 -1
  81. package/dist/{du-572XNP42-DmOYu76Z.cjs → du-572XNP42-D5lmQBvV.cjs} +2 -2
  82. package/dist/{du-572XNP42-DmOYu76Z.cjs.map → du-572XNP42-D5lmQBvV.cjs.map} +1 -1
  83. package/dist/{env-36M5BO7M-DZfbg9cL.cjs → env-36M5BO7M-C79iD_tY.cjs} +2 -2
  84. package/dist/{env-36M5BO7M-DZfbg9cL.cjs.map → env-36M5BO7M-C79iD_tY.cjs.map} +1 -1
  85. package/dist/{env-36M5BO7M-CNN23vys.mjs → env-36M5BO7M-CVIdMQNt.mjs} +2 -2
  86. package/dist/{env-36M5BO7M-CNN23vys.mjs.map → env-36M5BO7M-CVIdMQNt.mjs.map} +1 -1
  87. package/dist/{expand-JSPG6VOP-PLyckfMd.mjs → expand-JSPG6VOP-BwDcAbR9.mjs} +2 -2
  88. package/dist/{expand-JSPG6VOP-PLyckfMd.mjs.map → expand-JSPG6VOP-BwDcAbR9.mjs.map} +1 -1
  89. package/dist/{expand-JSPG6VOP-Bi-8GRhN.cjs → expand-JSPG6VOP-CUcnZUyc.cjs} +2 -2
  90. package/dist/{expand-JSPG6VOP-Bi-8GRhN.cjs.map → expand-JSPG6VOP-CUcnZUyc.cjs.map} +1 -1
  91. package/dist/{expr-5JAACS4X-BNy25DC2.cjs → expr-5JAACS4X-CZoecTOk.cjs} +2 -2
  92. package/dist/{expr-5JAACS4X-BNy25DC2.cjs.map → expr-5JAACS4X-CZoecTOk.cjs.map} +1 -1
  93. package/dist/{expr-5JAACS4X-BqIxQcAx.mjs → expr-5JAACS4X-LJ-ZA12Q.mjs} +2 -2
  94. package/dist/{expr-5JAACS4X-BqIxQcAx.mjs.map → expr-5JAACS4X-LJ-ZA12Q.mjs.map} +1 -1
  95. package/dist/{find-INTH3OLC-DH8DXZHk.mjs → find-INTH3OLC-BZu5Y0_b.mjs} +3 -3
  96. package/dist/{find-INTH3OLC-DH8DXZHk.mjs.map → find-INTH3OLC-BZu5Y0_b.mjs.map} +1 -1
  97. package/dist/{find-INTH3OLC-2piuR3-O.cjs → find-INTH3OLC-DF88Qp29.cjs} +3 -3
  98. package/dist/{find-INTH3OLC-2piuR3-O.cjs.map → find-INTH3OLC-DF88Qp29.cjs.map} +1 -1
  99. package/dist/{fold-4TQNYMSW-Bd1uAxr4.cjs → fold-4TQNYMSW-DC1X3gZt.cjs} +2 -2
  100. package/dist/{fold-4TQNYMSW-Bd1uAxr4.cjs.map → fold-4TQNYMSW-DC1X3gZt.cjs.map} +1 -1
  101. package/dist/{fold-4TQNYMSW-CsMYO96e.mjs → fold-4TQNYMSW-qi8k7FKX.mjs} +2 -2
  102. package/dist/{fold-4TQNYMSW-CsMYO96e.mjs.map → fold-4TQNYMSW-qi8k7FKX.mjs.map} +1 -1
  103. package/dist/{grep-V3LQVMRQ-DBBMtXpt.cjs → grep-V3LQVMRQ-BcjFVa50.cjs} +4 -4
  104. package/dist/{grep-V3LQVMRQ-DBBMtXpt.cjs.map → grep-V3LQVMRQ-BcjFVa50.cjs.map} +1 -1
  105. package/dist/{grep-V3LQVMRQ-Cds5pG3P.mjs → grep-V3LQVMRQ-DFtFYp5a.mjs} +4 -4
  106. package/dist/{grep-V3LQVMRQ-Cds5pG3P.mjs.map → grep-V3LQVMRQ-DFtFYp5a.mjs.map} +1 -1
  107. package/dist/{gzip-O5ASJAFY-CdOkcay5.cjs → gzip-O5ASJAFY-BK92nDwK.cjs} +2 -2
  108. package/dist/{gzip-O5ASJAFY-CdOkcay5.cjs.map → gzip-O5ASJAFY-BK92nDwK.cjs.map} +1 -1
  109. package/dist/{gzip-O5ASJAFY-BUdYCD74.mjs → gzip-O5ASJAFY-DhZ6O7s7.mjs} +2 -2
  110. package/dist/{gzip-O5ASJAFY-BUdYCD74.mjs.map → gzip-O5ASJAFY-DhZ6O7s7.mjs.map} +1 -1
  111. package/dist/{head-442HYESI-DpretS3H.cjs → head-442HYESI-BuqZmyCg.cjs} +2 -2
  112. package/dist/{head-442HYESI-DpretS3H.cjs.map → head-442HYESI-BuqZmyCg.cjs.map} +1 -1
  113. package/dist/{head-442HYESI-_V6c_Y8y.mjs → head-442HYESI-k5cPr22G.mjs} +2 -2
  114. package/dist/{head-442HYESI-_V6c_Y8y.mjs.map → head-442HYESI-k5cPr22G.mjs.map} +1 -1
  115. package/dist/{help-HZ6M2CKN-BqaLEgp2.mjs → help-HZ6M2CKN-6GoSNLwr.mjs} +2 -2
  116. package/dist/{help-HZ6M2CKN-BqaLEgp2.mjs.map → help-HZ6M2CKN-6GoSNLwr.mjs.map} +1 -1
  117. package/dist/{help-HZ6M2CKN-CWp0eQ2z.cjs → help-HZ6M2CKN-CISrNdE8.cjs} +2 -2
  118. package/dist/{help-HZ6M2CKN-CWp0eQ2z.cjs.map → help-HZ6M2CKN-CISrNdE8.cjs.map} +1 -1
  119. package/dist/{html-to-markdown-JW4MSQZO-CAcZBrRZ.mjs → html-to-markdown-JW4MSQZO-C-bnMPIj.mjs} +3 -3
  120. package/dist/{html-to-markdown-JW4MSQZO-CAcZBrRZ.mjs.map → html-to-markdown-JW4MSQZO-C-bnMPIj.mjs.map} +1 -1
  121. package/dist/{html-to-markdown-JW4MSQZO-DcGBGpbg.cjs → html-to-markdown-JW4MSQZO-DKwlLwS1.cjs} +3 -3
  122. package/dist/{html-to-markdown-JW4MSQZO-DcGBGpbg.cjs.map → html-to-markdown-JW4MSQZO-DKwlLwS1.cjs.map} +1 -1
  123. package/dist/internal.cjs +2 -2
  124. package/dist/internal.d.cts +2 -2
  125. package/dist/internal.d.mts +2 -2
  126. package/dist/internal.mjs +2 -2
  127. package/dist/{join-TBRGI3LQ-CzqTCyC_.cjs → join-TBRGI3LQ-QLbfUgyF.cjs} +2 -2
  128. package/dist/{join-TBRGI3LQ-CzqTCyC_.cjs.map → join-TBRGI3LQ-QLbfUgyF.cjs.map} +1 -1
  129. package/dist/{join-TBRGI3LQ-A6BX1u07.mjs → join-TBRGI3LQ-kqbTOzyl.mjs} +2 -2
  130. package/dist/{join-TBRGI3LQ-A6BX1u07.mjs.map → join-TBRGI3LQ-kqbTOzyl.mjs.map} +1 -1
  131. package/dist/{jq-4XLYLOS5-Dzk1Cr1F.cjs → jq-4XLYLOS5-BMYFlF1S.cjs} +4 -4
  132. package/dist/{jq-4XLYLOS5-Dzk1Cr1F.cjs.map → jq-4XLYLOS5-BMYFlF1S.cjs.map} +1 -1
  133. package/dist/{jq-4XLYLOS5-BJYQ4YMc.mjs → jq-4XLYLOS5-DNzAYX6m.mjs} +4 -4
  134. package/dist/{jq-4XLYLOS5-BJYQ4YMc.mjs.map → jq-4XLYLOS5-DNzAYX6m.mjs.map} +1 -1
  135. package/dist/{js-exec-N5KEZBH7-Bcd8otKl.cjs → js-exec-N5KEZBH7-BuMPuf2G.cjs} +3 -3
  136. package/dist/{js-exec-N5KEZBH7-Bcd8otKl.cjs.map → js-exec-N5KEZBH7-BuMPuf2G.cjs.map} +1 -1
  137. package/dist/{js-exec-N5KEZBH7-QGZXHyY0.mjs → js-exec-N5KEZBH7-DZkjdqDZ.mjs} +3 -3
  138. package/dist/{js-exec-N5KEZBH7-QGZXHyY0.mjs.map → js-exec-N5KEZBH7-DZkjdqDZ.mjs.map} +1 -1
  139. package/dist/lib/public-models.cjs +40 -11
  140. package/dist/lib/public-models.cjs.map +1 -1
  141. package/dist/lib/public-models.d.cts +25 -4
  142. package/dist/lib/public-models.d.mts +25 -4
  143. package/dist/lib/public-models.mjs +39 -12
  144. package/dist/lib/public-models.mjs.map +1 -1
  145. package/dist/{lib-DDGDxczq.cjs → lib-BV1AaIR4.cjs} +2 -2
  146. package/dist/{lib-DDGDxczq.cjs.map → lib-BV1AaIR4.cjs.map} +1 -1
  147. package/dist/{lib-Jj_eXohJ.mjs → lib-ocScqr8w.mjs} +2 -2
  148. package/dist/{lib-Jj_eXohJ.mjs.map → lib-ocScqr8w.mjs.map} +1 -1
  149. package/dist/{ln-4LGSXXGD-C5UT-Ujb.cjs → ln-4LGSXXGD-Bseck0K6.cjs} +2 -2
  150. package/dist/{ln-4LGSXXGD-C5UT-Ujb.cjs.map → ln-4LGSXXGD-Bseck0K6.cjs.map} +1 -1
  151. package/dist/{ln-4LGSXXGD-aZgyO6BG.mjs → ln-4LGSXXGD-C-CLQ7lX.mjs} +2 -2
  152. package/dist/{ln-4LGSXXGD-aZgyO6BG.mjs.map → ln-4LGSXXGD-C-CLQ7lX.mjs.map} +1 -1
  153. package/dist/{ls-ZJGQER7M-CzK8vxkc.cjs → ls-ZJGQER7M-7ytL05_W.cjs} +2 -2
  154. package/dist/{ls-ZJGQER7M-CzK8vxkc.cjs.map → ls-ZJGQER7M-7ytL05_W.cjs.map} +1 -1
  155. package/dist/{ls-ZJGQER7M-C3KTKhlL.mjs → ls-ZJGQER7M-C-3d7ESt.mjs} +2 -2
  156. package/dist/{ls-ZJGQER7M-C3KTKhlL.mjs.map → ls-ZJGQER7M-C-3d7ESt.mjs.map} +1 -1
  157. package/dist/{lzma-wgqkUDaW.cjs → lzma-BvGWy27d.cjs} +2 -2
  158. package/dist/{lzma-wgqkUDaW.cjs.map → lzma-BvGWy27d.cjs.map} +1 -1
  159. package/dist/{md5sum-SPU24VSG-CmI2Hsa_.mjs → md5sum-SPU24VSG-D5O7yMdH.mjs} +3 -3
  160. package/dist/{md5sum-SPU24VSG-CmI2Hsa_.mjs.map → md5sum-SPU24VSG-D5O7yMdH.mjs.map} +1 -1
  161. package/dist/{md5sum-SPU24VSG-BcSybbbv.cjs → md5sum-SPU24VSG-cCnfJWPL.cjs} +3 -3
  162. package/dist/{md5sum-SPU24VSG-BcSybbbv.cjs.map → md5sum-SPU24VSG-cCnfJWPL.cjs.map} +1 -1
  163. package/dist/{mkdir-MEPGZOB6-Dz0ilrHF.mjs → mkdir-MEPGZOB6-C7wx5Bh1.mjs} +2 -2
  164. package/dist/{mkdir-MEPGZOB6-Dz0ilrHF.mjs.map → mkdir-MEPGZOB6-C7wx5Bh1.mjs.map} +1 -1
  165. package/dist/{mkdir-MEPGZOB6-Bks_xob7.cjs → mkdir-MEPGZOB6-Cev0iIks.cjs} +2 -2
  166. package/dist/{mkdir-MEPGZOB6-Bks_xob7.cjs.map → mkdir-MEPGZOB6-Cev0iIks.cjs.map} +1 -1
  167. package/dist/{mv-W5BIQ646-BQe2vxEx.cjs → mv-W5BIQ646-3n97AJKS.cjs} +2 -2
  168. package/dist/{mv-W5BIQ646-BQe2vxEx.cjs.map → mv-W5BIQ646-3n97AJKS.cjs.map} +1 -1
  169. package/dist/{mv-W5BIQ646-BYWL1wkh.mjs → mv-W5BIQ646-BTlZYjo7.mjs} +2 -2
  170. package/dist/{mv-W5BIQ646-BYWL1wkh.mjs.map → mv-W5BIQ646-BTlZYjo7.mjs.map} +1 -1
  171. package/dist/{nl-WSDW7I4O-CHu4o_ve.cjs → nl-WSDW7I4O-CKz3R1_P.cjs} +2 -2
  172. package/dist/{nl-WSDW7I4O-CHu4o_ve.cjs.map → nl-WSDW7I4O-CKz3R1_P.cjs.map} +1 -1
  173. package/dist/{nl-WSDW7I4O-DWG5wZv2.mjs → nl-WSDW7I4O-CfkXHOno.mjs} +2 -2
  174. package/dist/{nl-WSDW7I4O-DWG5wZv2.mjs.map → nl-WSDW7I4O-CfkXHOno.mjs.map} +1 -1
  175. package/dist/{od-WOKFDJTP-C0KKUEqR.mjs → od-WOKFDJTP-CzrLicva.mjs} +2 -2
  176. package/dist/{od-WOKFDJTP-C0KKUEqR.mjs.map → od-WOKFDJTP-CzrLicva.mjs.map} +1 -1
  177. package/dist/{od-WOKFDJTP-BEdRBpH3.cjs → od-WOKFDJTP-Q8_LFTNW.cjs} +2 -2
  178. package/dist/{od-WOKFDJTP-BEdRBpH3.cjs.map → od-WOKFDJTP-Q8_LFTNW.cjs.map} +1 -1
  179. package/dist/{paste-7JC6S4DX-D2Mx-pNX.cjs → paste-7JC6S4DX-BVamjX9E.cjs} +2 -2
  180. package/dist/{paste-7JC6S4DX-D2Mx-pNX.cjs.map → paste-7JC6S4DX-BVamjX9E.cjs.map} +1 -1
  181. package/dist/{paste-7JC6S4DX-4f_UlCmY.mjs → paste-7JC6S4DX-D-vuFBZl.mjs} +2 -2
  182. package/dist/{paste-7JC6S4DX-4f_UlCmY.mjs.map → paste-7JC6S4DX-D-vuFBZl.mjs.map} +1 -1
  183. package/dist/{printf-TWGXF445-Cku6hGej.mjs → printf-TWGXF445-Be0zQ_f7.mjs} +3 -3
  184. package/dist/{printf-TWGXF445-Cku6hGej.mjs.map → printf-TWGXF445-Be0zQ_f7.mjs.map} +1 -1
  185. package/dist/{printf-TWGXF445-DCHSwRN6.cjs → printf-TWGXF445-Dzw0NWza.cjs} +3 -3
  186. package/dist/{printf-TWGXF445-DCHSwRN6.cjs.map → printf-TWGXF445-Dzw0NWza.cjs.map} +1 -1
  187. package/dist/{project-draft-notifier-B7K0aaAp.mjs → project-draft-notifier-3Eh4dVet.mjs} +769 -27
  188. package/dist/project-draft-notifier-3Eh4dVet.mjs.map +1 -0
  189. package/dist/{project-draft-notifier-DlWmyn5m.cjs → project-draft-notifier-CcuAbwzD.cjs} +822 -26
  190. package/dist/project-draft-notifier-CcuAbwzD.cjs.map +1 -0
  191. package/dist/{python3-POMOR4OA-DSAcZLAU.cjs → python3-POMOR4OA-BCTKIdsD.cjs} +3 -3
  192. package/dist/{python3-POMOR4OA-DSAcZLAU.cjs.map → python3-POMOR4OA-BCTKIdsD.cjs.map} +1 -1
  193. package/dist/{python3-POMOR4OA-BcBrl1X2.mjs → python3-POMOR4OA-TfCXA31l.mjs} +3 -3
  194. package/dist/{python3-POMOR4OA-BcBrl1X2.mjs.map → python3-POMOR4OA-TfCXA31l.mjs.map} +1 -1
  195. package/dist/{rev-5EHFX4EJ-u03jP4f-.cjs → rev-5EHFX4EJ-CxXrkZZZ.cjs} +2 -2
  196. package/dist/{rev-5EHFX4EJ-u03jP4f-.cjs.map → rev-5EHFX4EJ-CxXrkZZZ.cjs.map} +1 -1
  197. package/dist/{rev-5EHFX4EJ-Dmo6hsDY.mjs → rev-5EHFX4EJ-DIJO-xRn.mjs} +2 -2
  198. package/dist/{rev-5EHFX4EJ-Dmo6hsDY.mjs.map → rev-5EHFX4EJ-DIJO-xRn.mjs.map} +1 -1
  199. package/dist/{rg-S4FXYXWB-C5rIiKqa.mjs → rg-S4FXYXWB-BwEG_0TC.mjs} +3 -3
  200. package/dist/{rg-S4FXYXWB-C5rIiKqa.mjs.map → rg-S4FXYXWB-BwEG_0TC.mjs.map} +1 -1
  201. package/dist/{rg-S4FXYXWB-CTWDqqzD.cjs → rg-S4FXYXWB-CHh8stFo.cjs} +3 -3
  202. package/dist/{rg-S4FXYXWB-CTWDqqzD.cjs.map → rg-S4FXYXWB-CHh8stFo.cjs.map} +1 -1
  203. package/dist/{rm-SSGETQVQ-CMqCuC6-.cjs → rm-SSGETQVQ-B0excDio.cjs} +2 -2
  204. package/dist/{rm-SSGETQVQ-CMqCuC6-.cjs.map → rm-SSGETQVQ-B0excDio.cjs.map} +1 -1
  205. package/dist/{rm-SSGETQVQ-SVr6JZrX.mjs → rm-SSGETQVQ-BZAfMfUV.mjs} +2 -2
  206. package/dist/{rm-SSGETQVQ-SVr6JZrX.mjs.map → rm-SSGETQVQ-BZAfMfUV.mjs.map} +1 -1
  207. package/dist/{rmdir-OC4ZLPYA-DhpPwVcw.mjs → rmdir-OC4ZLPYA-DmH4dWRH.mjs} +2 -2
  208. package/dist/{rmdir-OC4ZLPYA-DhpPwVcw.mjs.map → rmdir-OC4ZLPYA-DmH4dWRH.mjs.map} +1 -1
  209. package/dist/{rmdir-OC4ZLPYA-xNbbN8z9.cjs → rmdir-OC4ZLPYA-UzOFGfOb.cjs} +2 -2
  210. package/dist/{rmdir-OC4ZLPYA-xNbbN8z9.cjs.map → rmdir-OC4ZLPYA-UzOFGfOb.cjs.map} +1 -1
  211. package/dist/run.cjs +4 -4
  212. package/dist/run.mjs +4 -4
  213. package/dist/{sed-S5UIK574-CwkMwpF4.mjs → sed-S5UIK574-CFGJGHQV.mjs} +2 -2
  214. package/dist/{sed-S5UIK574-CwkMwpF4.mjs.map → sed-S5UIK574-CFGJGHQV.mjs.map} +1 -1
  215. package/dist/{sed-S5UIK574-B9o7Evcw.cjs → sed-S5UIK574-l76p13-x.cjs} +2 -2
  216. package/dist/{sed-S5UIK574-B9o7Evcw.cjs.map → sed-S5UIK574-l76p13-x.cjs.map} +1 -1
  217. package/dist/{sha1sum-2PTOAFR6-CGWtyGkR.cjs → sha1sum-2PTOAFR6-DYzG3jqj.cjs} +3 -3
  218. package/dist/{sha1sum-2PTOAFR6-CGWtyGkR.cjs.map → sha1sum-2PTOAFR6-DYzG3jqj.cjs.map} +1 -1
  219. package/dist/{sha1sum-2PTOAFR6-Cad6_7os.mjs → sha1sum-2PTOAFR6-fLUtqiC5.mjs} +3 -3
  220. package/dist/{sha1sum-2PTOAFR6-Cad6_7os.mjs.map → sha1sum-2PTOAFR6-fLUtqiC5.mjs.map} +1 -1
  221. package/dist/{sha256sum-NS7D3IXX-QeeptGn3.mjs → sha256sum-NS7D3IXX-B7l_Yxt6.mjs} +3 -3
  222. package/dist/{sha256sum-NS7D3IXX-QeeptGn3.mjs.map → sha256sum-NS7D3IXX-B7l_Yxt6.mjs.map} +1 -1
  223. package/dist/{sha256sum-NS7D3IXX-Tkb8bOpJ.cjs → sha256sum-NS7D3IXX-Vfbm8H3J.cjs} +3 -3
  224. package/dist/{sha256sum-NS7D3IXX-Tkb8bOpJ.cjs.map → sha256sum-NS7D3IXX-Vfbm8H3J.cjs.map} +1 -1
  225. package/dist/{sleep-X22JJINO-SSB0_xkn.mjs → sleep-X22JJINO-B1Ps6tSN.mjs} +2 -2
  226. package/dist/{sleep-X22JJINO-SSB0_xkn.mjs.map → sleep-X22JJINO-B1Ps6tSN.mjs.map} +1 -1
  227. package/dist/{sleep-X22JJINO-Dlhdt3UF.cjs → sleep-X22JJINO-XiejbcgD.cjs} +2 -2
  228. package/dist/{sleep-X22JJINO-Dlhdt3UF.cjs.map → sleep-X22JJINO-XiejbcgD.cjs.map} +1 -1
  229. package/dist/{sort-SW2YEO5B-DHu-IjJK.mjs → sort-SW2YEO5B-CZYNhteL.mjs} +3 -3
  230. package/dist/{sort-SW2YEO5B-DHu-IjJK.mjs.map → sort-SW2YEO5B-CZYNhteL.mjs.map} +1 -1
  231. package/dist/{sort-SW2YEO5B-CfN8qsOe.cjs → sort-SW2YEO5B-DuyYJEPW.cjs} +3 -3
  232. package/dist/{sort-SW2YEO5B-CfN8qsOe.cjs.map → sort-SW2YEO5B-DuyYJEPW.cjs.map} +1 -1
  233. package/dist/{split-4KKZZXXE-DRFoW0C-.mjs → split-4KKZZXXE-DY5piVHO.mjs} +2 -2
  234. package/dist/{split-4KKZZXXE-DRFoW0C-.mjs.map → split-4KKZZXXE-DY5piVHO.mjs.map} +1 -1
  235. package/dist/{split-4KKZZXXE-B8plYwAH.cjs → split-4KKZZXXE-e47vl-qS.cjs} +2 -2
  236. package/dist/{split-4KKZZXXE-B8plYwAH.cjs.map → split-4KKZZXXE-e47vl-qS.cjs.map} +1 -1
  237. package/dist/{sqlite3-CGOEFJAO-racIOTTD.cjs → sqlite3-CGOEFJAO-CXa3Yw8y.cjs} +3 -3
  238. package/dist/{sqlite3-CGOEFJAO-racIOTTD.cjs.map → sqlite3-CGOEFJAO-CXa3Yw8y.cjs.map} +1 -1
  239. package/dist/{sqlite3-CGOEFJAO-CF1nf3bu.mjs → sqlite3-CGOEFJAO-D1sTQfnU.mjs} +3 -3
  240. package/dist/{sqlite3-CGOEFJAO-CF1nf3bu.mjs.map → sqlite3-CGOEFJAO-D1sTQfnU.mjs.map} +1 -1
  241. package/dist/{start-BBW9vi1A.mjs → start-CcTA67Ri.mjs} +581 -188
  242. package/dist/start-CcTA67Ri.mjs.map +1 -0
  243. package/dist/{start-bgZZCOmu.cjs → start-fwjkr0oX.cjs} +584 -190
  244. package/dist/start-fwjkr0oX.cjs.map +1 -0
  245. package/dist/start.cjs +1 -1
  246. package/dist/start.d.cts +1 -1
  247. package/dist/start.d.mts +1 -1
  248. package/dist/start.mjs +1 -1
  249. package/dist/{strings-6WDHLGMX-B8ogXPoK.cjs → strings-6WDHLGMX-DOrIEGPw.cjs} +2 -2
  250. package/dist/{strings-6WDHLGMX-B8ogXPoK.cjs.map → strings-6WDHLGMX-DOrIEGPw.cjs.map} +1 -1
  251. package/dist/{strings-6WDHLGMX-D-8gxmaP.mjs → strings-6WDHLGMX-f9M_vuc-.mjs} +2 -2
  252. package/dist/{strings-6WDHLGMX-D-8gxmaP.mjs.map → strings-6WDHLGMX-f9M_vuc-.mjs.map} +1 -1
  253. package/dist/{tac-2STMMJYW-BXvN_CFk.mjs → tac-2STMMJYW-B8hzbOXn.mjs} +2 -2
  254. package/dist/{tac-2STMMJYW-BXvN_CFk.mjs.map → tac-2STMMJYW-B8hzbOXn.mjs.map} +1 -1
  255. package/dist/{tac-2STMMJYW-GqCFVlMI.cjs → tac-2STMMJYW-DEJ-Iv9h.cjs} +2 -2
  256. package/dist/{tac-2STMMJYW-GqCFVlMI.cjs.map → tac-2STMMJYW-DEJ-Iv9h.cjs.map} +1 -1
  257. package/dist/{tail-R4PCA2C4-C0ugHzL2.mjs → tail-R4PCA2C4-BVZcigNs.mjs} +2 -2
  258. package/dist/{tail-R4PCA2C4-C0ugHzL2.mjs.map → tail-R4PCA2C4-BVZcigNs.mjs.map} +1 -1
  259. package/dist/{tail-R4PCA2C4-Drjdjemt.cjs → tail-R4PCA2C4-C966N8kW.cjs} +2 -2
  260. package/dist/{tail-R4PCA2C4-Drjdjemt.cjs.map → tail-R4PCA2C4-C966N8kW.cjs.map} +1 -1
  261. package/dist/{tar-STHHZTZ6-BuhlrLgy.cjs → tar-STHHZTZ6-BKlV4MJS.cjs} +5 -5
  262. package/dist/{tar-STHHZTZ6-BuhlrLgy.cjs.map → tar-STHHZTZ6-BKlV4MJS.cjs.map} +1 -1
  263. package/dist/{tar-STHHZTZ6-BsgloKrW.mjs → tar-STHHZTZ6-BpR3IuQT.mjs} +4 -4
  264. package/dist/{tar-STHHZTZ6-BsgloKrW.mjs.map → tar-STHHZTZ6-BpR3IuQT.mjs.map} +1 -1
  265. package/dist/{tee-YUZ2FKCJ-BbF6VRAs.mjs → tee-YUZ2FKCJ-B0nvnaNC.mjs} +2 -2
  266. package/dist/{tee-YUZ2FKCJ-BbF6VRAs.mjs.map → tee-YUZ2FKCJ-B0nvnaNC.mjs.map} +1 -1
  267. package/dist/{tee-YUZ2FKCJ-BhRQUMAz.cjs → tee-YUZ2FKCJ-Cgc6d2Rt.cjs} +2 -2
  268. package/dist/{tee-YUZ2FKCJ-BhRQUMAz.cjs.map → tee-YUZ2FKCJ-Cgc6d2Rt.cjs.map} +1 -1
  269. package/dist/{time-D4LNBSWX-BMJlkpiY.cjs → time-D4LNBSWX-BGCZmclx.cjs} +2 -2
  270. package/dist/{time-D4LNBSWX-BMJlkpiY.cjs.map → time-D4LNBSWX-BGCZmclx.cjs.map} +1 -1
  271. package/dist/{time-D4LNBSWX-BG4ZXuon.mjs → time-D4LNBSWX-Br4CX4D7.mjs} +2 -2
  272. package/dist/{time-D4LNBSWX-BG4ZXuon.mjs.map → time-D4LNBSWX-Br4CX4D7.mjs.map} +1 -1
  273. package/dist/{timeout-YDCRSLPQ-CuD519Dt.cjs → timeout-YDCRSLPQ-C7K7btg5.cjs} +2 -2
  274. package/dist/{timeout-YDCRSLPQ-CuD519Dt.cjs.map → timeout-YDCRSLPQ-C7K7btg5.cjs.map} +1 -1
  275. package/dist/{timeout-YDCRSLPQ-C4E3RCT1.mjs → timeout-YDCRSLPQ-CAJx_7wb.mjs} +2 -2
  276. package/dist/{timeout-YDCRSLPQ-C4E3RCT1.mjs.map → timeout-YDCRSLPQ-CAJx_7wb.mjs.map} +1 -1
  277. package/dist/{touch-UA33VN3N-Dr7gGPKc.mjs → touch-UA33VN3N-BwFiTQrE.mjs} +2 -2
  278. package/dist/{touch-UA33VN3N-Dr7gGPKc.mjs.map → touch-UA33VN3N-BwFiTQrE.mjs.map} +1 -1
  279. package/dist/{touch-UA33VN3N-BvhbAbJ5.cjs → touch-UA33VN3N-CIILbniE.cjs} +2 -2
  280. package/dist/{touch-UA33VN3N-BvhbAbJ5.cjs.map → touch-UA33VN3N-CIILbniE.cjs.map} +1 -1
  281. package/dist/{tr-36LHWFRQ-tCkx_1H_.cjs → tr-36LHWFRQ-B7-zyaYq.cjs} +2 -2
  282. package/dist/{tr-36LHWFRQ-tCkx_1H_.cjs.map → tr-36LHWFRQ-B7-zyaYq.cjs.map} +1 -1
  283. package/dist/{tr-36LHWFRQ-BAzZcYrH.mjs → tr-36LHWFRQ-CfJSN2db.mjs} +2 -2
  284. package/dist/{tr-36LHWFRQ-BAzZcYrH.mjs.map → tr-36LHWFRQ-CfJSN2db.mjs.map} +1 -1
  285. package/dist/{tree-YLD52CNT-CtxzyzyK.cjs → tree-YLD52CNT-D8WPd3qS.cjs} +2 -2
  286. package/dist/{tree-YLD52CNT-CtxzyzyK.cjs.map → tree-YLD52CNT-D8WPd3qS.cjs.map} +1 -1
  287. package/dist/{tree-YLD52CNT-2CgZVKNz.mjs → tree-YLD52CNT-DJcVQv94.mjs} +2 -2
  288. package/dist/{tree-YLD52CNT-2CgZVKNz.mjs.map → tree-YLD52CNT-DJcVQv94.mjs.map} +1 -1
  289. package/dist/{unexpand-CADSA4VO-uMt0rf4X.cjs → unexpand-CADSA4VO-BnOY-DGw.cjs} +2 -2
  290. package/dist/{unexpand-CADSA4VO-uMt0rf4X.cjs.map → unexpand-CADSA4VO-BnOY-DGw.cjs.map} +1 -1
  291. package/dist/{unexpand-CADSA4VO-DN7WjSgJ.mjs → unexpand-CADSA4VO-CnvXaCG2.mjs} +2 -2
  292. package/dist/{unexpand-CADSA4VO-DN7WjSgJ.mjs.map → unexpand-CADSA4VO-CnvXaCG2.mjs.map} +1 -1
  293. package/dist/{uniq-XSIZR6PB-BkO2mNi8.cjs → uniq-XSIZR6PB-BPU_uKCs.cjs} +3 -3
  294. package/dist/{uniq-XSIZR6PB-BkO2mNi8.cjs.map → uniq-XSIZR6PB-BPU_uKCs.cjs.map} +1 -1
  295. package/dist/{uniq-XSIZR6PB-i4UN8_wj.mjs → uniq-XSIZR6PB-CydFkKuG.mjs} +3 -3
  296. package/dist/{uniq-XSIZR6PB-i4UN8_wj.mjs.map → uniq-XSIZR6PB-CydFkKuG.mjs.map} +1 -1
  297. package/dist/{wc-LF7NU4LA-DbAal6fW.cjs → wc-LF7NU4LA-DirTF3XA.cjs} +3 -3
  298. package/dist/{wc-LF7NU4LA-DbAal6fW.cjs.map → wc-LF7NU4LA-DirTF3XA.cjs.map} +1 -1
  299. package/dist/{wc-LF7NU4LA-B5iKJ_sK.mjs → wc-LF7NU4LA-MLxD0uQg.mjs} +3 -3
  300. package/dist/{wc-LF7NU4LA-B5iKJ_sK.mjs.map → wc-LF7NU4LA-MLxD0uQg.mjs.map} +1 -1
  301. package/dist/{with-project-scope-D2Nxb_81.cjs → with-project-scope-DR42BsoV.cjs} +20 -4
  302. package/dist/with-project-scope-DR42BsoV.cjs.map +1 -0
  303. package/dist/{with-project-scope-BLKH8VDX.mjs → with-project-scope-SZ39WEgf.mjs} +20 -4
  304. package/dist/with-project-scope-SZ39WEgf.mjs.map +1 -0
  305. package/dist/{xan-Y6WF3IRG-PLXYTtLn.cjs → xan-Y6WF3IRG-Bs8xihNw.cjs} +6 -6
  306. package/dist/{xan-Y6WF3IRG-PLXYTtLn.cjs.map → xan-Y6WF3IRG-Bs8xihNw.cjs.map} +1 -1
  307. package/dist/{xan-Y6WF3IRG-B5YnpCBT.mjs → xan-Y6WF3IRG-DeancsK_.mjs} +6 -6
  308. package/dist/{xan-Y6WF3IRG-B5YnpCBT.mjs.map → xan-Y6WF3IRG-DeancsK_.mjs.map} +1 -1
  309. package/dist/{xan-view-HDVKHFC2-C4U_Ysf1.cjs → xan-view-HDVKHFC2--Yx8d-hv.cjs} +3 -3
  310. package/dist/{xan-view-HDVKHFC2-C4U_Ysf1.cjs.map → xan-view-HDVKHFC2--Yx8d-hv.cjs.map} +1 -1
  311. package/dist/{xan-view-HDVKHFC2-WJOBrjRv.mjs → xan-view-HDVKHFC2-DR9CgP-R.mjs} +3 -3
  312. package/dist/{xan-view-HDVKHFC2-WJOBrjRv.mjs.map → xan-view-HDVKHFC2-DR9CgP-R.mjs.map} +1 -1
  313. package/dist/{xargs-MGZPH7AX-CWF0HdOV.cjs → xargs-MGZPH7AX-B0IzjGcA.cjs} +2 -2
  314. package/dist/{xargs-MGZPH7AX-CWF0HdOV.cjs.map → xargs-MGZPH7AX-B0IzjGcA.cjs.map} +1 -1
  315. package/dist/{xargs-MGZPH7AX-D85Ko7xE.mjs → xargs-MGZPH7AX-CC9iSUtu.mjs} +2 -2
  316. package/dist/{xargs-MGZPH7AX-D85Ko7xE.mjs.map → xargs-MGZPH7AX-CC9iSUtu.mjs.map} +1 -1
  317. package/dist/{yq-4QJW3EQG-BSSwWyVt.cjs → yq-4QJW3EQG-CIeK_-QH.cjs} +3 -3
  318. package/dist/{yq-4QJW3EQG-BSSwWyVt.cjs.map → yq-4QJW3EQG-CIeK_-QH.cjs.map} +1 -1
  319. package/dist/{yq-4QJW3EQG-BcuExFs8.mjs → yq-4QJW3EQG-ChhbgU5K.mjs} +3 -3
  320. package/dist/{yq-4QJW3EQG-BcuExFs8.mjs.map → yq-4QJW3EQG-ChhbgU5K.mjs.map} +1 -1
  321. package/package.json +2 -2
  322. package/dist/config-BEXGfMWX.mjs.map +0 -1
  323. package/dist/config-BXIsWKDr.cjs.map +0 -1
  324. package/dist/dist-kYSK2aR1.cjs.map +0 -1
  325. package/dist/project-draft-notifier-B7K0aaAp.mjs.map +0 -1
  326. package/dist/project-draft-notifier-DlWmyn5m.cjs.map +0 -1
  327. package/dist/start-BBW9vi1A.mjs.map +0 -1
  328. package/dist/start-bgZZCOmu.cjs.map +0 -1
  329. package/dist/with-project-scope-BLKH8VDX.mjs.map +0 -1
  330. package/dist/with-project-scope-D2Nxb_81.cjs.map +0 -1
@@ -5,6 +5,7 @@ let node_path = require("node:path");
5
5
  let node_os = require("node:os");
6
6
  let node_child_process = require("node:child_process");
7
7
  let _aws_sdk_client_s3 = require("@aws-sdk/client-s3");
8
+ let _aws_sdk_s3_presigned_post = require("@aws-sdk/s3-presigned-post");
8
9
  let _aws_sdk_s3_request_presigner = require("@aws-sdk/s3-request-presigner");
9
10
  //#region ../../packages/hosting/dist/runtime-BmfsHLrk.mjs
10
11
  /** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
@@ -356,7 +357,7 @@ function isCredentialInput(value) {
356
357
  }
357
358
  const credentialInputSchema = zod.z.custom((value) => isCredentialInput(value), "must be a credential requirement");
358
359
  //#endregion
359
- //#region ../../packages/shared/dist/billing-Ig0pw49a.mjs
360
+ //#region ../../packages/shared/dist/billing-Bar2XMfx.mjs
360
361
  /**
361
362
  * Money is integer micro-credits (µc). 1 credit = $1 = 1,000,000 µc.
362
363
  * Shared so the web dashboard and the cloud billing packages agree on the
@@ -500,20 +501,25 @@ zod.z.object({
500
501
  const BillingUsageEventSourceSchema = zod.z.enum([
501
502
  "ai_gateway",
502
503
  "sandbox",
504
+ "browser",
503
505
  "web_proxy",
504
506
  "storage",
505
507
  "dispatch",
506
- "poll"
508
+ "poll",
509
+ "brain"
507
510
  ]);
508
511
  const BillingUsageMeterKeySchema = zod.z.enum([
509
512
  "llm",
510
513
  "vm_second",
514
+ "browser_second",
511
515
  "web_search",
512
516
  "web_fetch",
513
517
  "workflow_run",
514
518
  "agent_run",
515
519
  "poll_trigger",
516
- "tigris_storage"
520
+ "tigris_storage",
521
+ "brain_search",
522
+ "brain_indexing"
517
523
  ]);
518
524
  const BillingUsageKeySourceSchema = zod.z.enum(["platform", "byok"]);
519
525
  const BillingUsageRunKindSchema = zod.z.enum([
@@ -544,7 +550,7 @@ zod.z.object({
544
550
  chargeMicroCredits: zod.z.number().int().nonnegative()
545
551
  });
546
552
  //#endregion
547
- //#region ../../packages/shared/dist/credential-runtime-Cbm2X9rK.mjs
553
+ //#region ../../packages/shared/dist/credential-runtime-B1aMt2H1.mjs
548
554
  const ACTIVE_ORG_HEADER = "x-keystroke-org-id";
549
555
  function isValidIanaTimezone(value) {
550
556
  try {
@@ -1177,6 +1183,16 @@ const ORGANIZATION_NAME_APOSTROPHE_PATTERN = /[''\u2018\u2019]/g;
1177
1183
  function normalizeOrganizationNameToSlugBase(name) {
1178
1184
  return name.trim().toLowerCase().replace(ORGANIZATION_NAME_APOSTROPHE_PATTERN, "").replace(/[^a-z0-9]+/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
1179
1185
  }
1186
+ const BrowserTabSchema = zod.z.object({
1187
+ url: zod.z.string(),
1188
+ title: zod.z.string().optional(),
1189
+ active: zod.z.boolean()
1190
+ });
1191
+ const BrowserResumeStateSchema = zod.z.object({
1192
+ tabs: zod.z.array(BrowserTabSchema),
1193
+ lastScreenshotStorageKey: zod.z.string().optional(),
1194
+ capturedAt: zod.z.string()
1195
+ });
1180
1196
  /** Same format as organization slugs — org-scoped, no global reserved list. */
1181
1197
  const ProjectSlugSchema = OrganizationSlugSchema;
1182
1198
  const PROJECT_SLUG_TAKEN_MESSAGE = "That slug is already taken.";
@@ -1329,6 +1345,642 @@ function jsonSchemaToZod(schema) {
1329
1345
  }
1330
1346
  /** Legacy flat catalog — kept during dual-write so runtime/storage stay unchanged. */
1331
1347
  const ROUTE_MANIFEST_REL_PATH = "dist/.keystroke/route-manifest.json";
1348
+ /** Lowercase dash-separated Brain slug (2–64 chars). */
1349
+ const BrainSlugSchema = zod.z.string().trim().toLowerCase().min(2, "Slug must be at least 2 characters").max(64, "Slug must be at most 64 characters").regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/, "Use lowercase letters, numbers, and dashes only");
1350
+ /** Splits on the first `:` and validates each component as a Brain slug. */
1351
+ function parseBrainReference(value) {
1352
+ const separatorIndex = value.indexOf(":");
1353
+ if (separatorIndex === -1) {
1354
+ const slug = BrainSlugSchema.safeParse(value);
1355
+ return slug.success ? {
1356
+ brainSlug: slug.data,
1357
+ filterSlug: null
1358
+ } : void 0;
1359
+ }
1360
+ const brain = BrainSlugSchema.safeParse(value.slice(0, separatorIndex));
1361
+ const filter = BrainSlugSchema.safeParse(value.slice(separatorIndex + 1));
1362
+ if (!brain.success || !filter.success) return;
1363
+ return {
1364
+ brainSlug: brain.data,
1365
+ filterSlug: filter.data
1366
+ };
1367
+ }
1368
+ /** Base Brain slug or qualified `{brain}:{filter}` reference. */
1369
+ const BrainReferenceSchema = zod.z.string().trim().toLowerCase().refine((value) => parseBrainReference(value) !== void 0, { message: "Expected a Brain slug or a {brain}:{filter} reference" });
1370
+ /**
1371
+ * Where a document's content originated (`linear`, `notion`, `slack`,
1372
+ * `manual`, or a customer-defined slug). Required on every upload and distinct
1373
+ * from trusted provisioner provenance (how the version entered the Brain).
1374
+ * Not a closed enum: known sources get branded presentation, unknown valid
1375
+ * sources remain supported.
1376
+ */
1377
+ const BrainSourceSchema = zod.z.string().trim().toLowerCase().regex(/^[a-z0-9][a-z0-9_-]{0,63}$/, "Use 1-64 lowercase letters, numbers, dashes, and underscores (starting alphanumeric)");
1378
+ /** Required, non-empty human description shown in list/detail views and agent tool catalogs. */
1379
+ const BrainDescriptionSchema = zod.z.string().trim().min(1).max(2e3);
1380
+ const BRAIN_MAX_FILE_BYTES = 100 * 1024 * 1024;
1381
+ const BRAIN_MAX_FOLDER_FILES = 1e3;
1382
+ const BRAIN_READ_MAX_CHARS = 2e4;
1383
+ /** Inline `content` / `blocks` put payload cap; larger content must use the file upload flow. */
1384
+ const BRAIN_MAX_INLINE_CONTENT_CHARS = 2e6;
1385
+ const BRAIN_MAX_BLOCKS_PER_DOCUMENT = 5e3;
1386
+ const BRAIN_MAX_BLOCK_CHARS = 4e4;
1387
+ const BRAIN_MAX_METADATA_STRING_CHARS = 1024;
1388
+ const BRAIN_CHUNK_DEFAULT_MAX_CHARACTERS = 8e3;
1389
+ const BRAIN_CHUNK_MAX_CHARACTERS = 4e4;
1390
+ zod.z.enum([
1391
+ "doc",
1392
+ "docx",
1393
+ "docm",
1394
+ "ppt",
1395
+ "pps",
1396
+ "pot",
1397
+ "pptx",
1398
+ "pptm",
1399
+ "ppsx",
1400
+ "ppsm",
1401
+ "xls",
1402
+ "xlsx",
1403
+ "xlsm",
1404
+ "xlsb",
1405
+ "odt",
1406
+ "ods",
1407
+ "odp",
1408
+ "rtf",
1409
+ "epub",
1410
+ "csv",
1411
+ "pdf",
1412
+ "txt",
1413
+ "md",
1414
+ "markdown",
1415
+ "mdx",
1416
+ "html",
1417
+ "htm",
1418
+ "json",
1419
+ "xml",
1420
+ "yaml",
1421
+ "yml"
1422
+ ]);
1423
+ zod.z.enum([
1424
+ "doc",
1425
+ "docx",
1426
+ "ppt",
1427
+ "pptx",
1428
+ "xlsx",
1429
+ "odt",
1430
+ "ods",
1431
+ "odp",
1432
+ "rtf",
1433
+ "epub",
1434
+ "csv",
1435
+ "pdf",
1436
+ "txt",
1437
+ "md",
1438
+ "html",
1439
+ "json",
1440
+ "xml",
1441
+ "yaml"
1442
+ ]);
1443
+ const BrainStatusSchema = zod.z.enum([
1444
+ "active",
1445
+ "rebuilding",
1446
+ "rebuild_failed",
1447
+ "deleting"
1448
+ ]);
1449
+ /** Brain resource membership roles. Owners additionally manage members and deletion. */
1450
+ const BrainMemberRoleSchema = zod.z.enum(["owner", "admin"]);
1451
+ /** `write` implies read. Grants authorize deployed project runtimes, not humans. */
1452
+ const BrainGrantAccessSchema = zod.z.enum(["read", "write"]);
1453
+ const BrainDocumentVersionStatusSchema = zod.z.enum([
1454
+ "pending_upload",
1455
+ "pending_ingest",
1456
+ "queued",
1457
+ "processing",
1458
+ "ready",
1459
+ "failed"
1460
+ ]);
1461
+ const BrainDocumentFailureCodeSchema = zod.z.enum([
1462
+ "format_mismatch",
1463
+ "invalid_document",
1464
+ "encrypted_document",
1465
+ "unsupported_encoding",
1466
+ "needs_ocr",
1467
+ "no_extractable_text",
1468
+ "extracted_content_too_large",
1469
+ "too_many_chunks",
1470
+ "parser_timeout",
1471
+ "parser_resource_limit",
1472
+ "parser_unavailable",
1473
+ "embedding_failed",
1474
+ "index_write_failed"
1475
+ ]);
1476
+ const BrainSkippedReasonSchema = zod.z.enum([
1477
+ "unsupported_extension",
1478
+ "empty_file",
1479
+ "file_too_large",
1480
+ "duplicate_path",
1481
+ "invalid_relative_path",
1482
+ "hidden_path",
1483
+ "operation_limit"
1484
+ ]);
1485
+ const BrainDocumentWriteInputKindSchema = zod.z.enum([
1486
+ "content",
1487
+ "blocks",
1488
+ "file"
1489
+ ]);
1490
+ const BrainDocumentWriteOutcomeSchema = zod.z.enum([
1491
+ "pending",
1492
+ "ready",
1493
+ "unchanged",
1494
+ "failed"
1495
+ ]);
1496
+ /**
1497
+ * Gateway embedding model id (`provider/model`). The catalog is discovered at
1498
+ * runtime from the Vercel AI Gateway, so this is a bounded shape check only;
1499
+ * existence and `type === 'embedding'` are validated server-side against a
1500
+ * cached catalog at Brain create/update.
1501
+ */
1502
+ const BrainEmbeddingModelSchema = zod.z.string().trim().min(3).max(128).regex(/^[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*$/i, "Expected a provider/model embedding id");
1503
+ const BRAIN_EMBEDDING_MODEL_DEFAULT = "voyage/voyage-4";
1504
+ const BrainLanguageSchema = zod.z.enum([
1505
+ "multilingual",
1506
+ "arabic",
1507
+ "danish",
1508
+ "dutch",
1509
+ "english",
1510
+ "finnish",
1511
+ "french",
1512
+ "german",
1513
+ "greek",
1514
+ "hungarian",
1515
+ "italian",
1516
+ "norwegian",
1517
+ "portuguese",
1518
+ "romanian",
1519
+ "russian",
1520
+ "spanish",
1521
+ "swedish",
1522
+ "tamil",
1523
+ "turkish"
1524
+ ]);
1525
+ const BRAIN_LANGUAGE_DEFAULT = "english";
1526
+ /**
1527
+ * Character-exact chunk controls. An exact separator is preferred when
1528
+ * present; chunks still respect maxCharacters.
1529
+ */
1530
+ const BrainCharacterChunkingSchema = zod.z.object({
1531
+ maxCharacters: zod.z.number().int().min(1).max(BRAIN_CHUNK_MAX_CHARACTERS).default(BRAIN_CHUNK_DEFAULT_MAX_CHARACTERS),
1532
+ overlapCharacters: zod.z.number().int().nonnegative().default(0),
1533
+ separator: zod.z.string().min(1).optional()
1534
+ }).strict().refine((value) => value.overlapCharacters < value.maxCharacters, {
1535
+ message: "overlapCharacters must be less than maxCharacters",
1536
+ path: ["overlapCharacters"]
1537
+ });
1538
+ const BrainIndexConfigSchema = zod.z.object({
1539
+ embeddingModel: BrainEmbeddingModelSchema.default(BRAIN_EMBEDDING_MODEL_DEFAULT),
1540
+ chunking: BrainCharacterChunkingSchema.prefault({}),
1541
+ language: BrainLanguageSchema.default(BRAIN_LANGUAGE_DEFAULT)
1542
+ }).strict();
1543
+ const BRAIN_RESERVED_ATTRIBUTE_NAMES = [
1544
+ "id",
1545
+ "documentId",
1546
+ "brainId",
1547
+ "versionId",
1548
+ "revision",
1549
+ "generation",
1550
+ "chunkIndex",
1551
+ "title",
1552
+ "text",
1553
+ "source",
1554
+ "vector"
1555
+ ];
1556
+ const BrainMetadataKeySchema = zod.z.string().regex(/^[a-zA-Z][a-zA-Z0-9_]{0,63}$/, "Metadata keys must start with a letter and use letters, numbers, and underscores").refine((key) => !BRAIN_RESERVED_ATTRIBUTE_NAMES.includes(key) && !key.startsWith("titleFts") && !key.startsWith("textFts"), { message: "Metadata key collides with a reserved index attribute" });
1557
+ const BrainMetadataScalarSchema = zod.z.union([
1558
+ zod.z.string().max(BRAIN_MAX_METADATA_STRING_CHARS),
1559
+ zod.z.number().finite(),
1560
+ zod.z.boolean()
1561
+ ]);
1562
+ const BrainMetadataValueSchema = zod.z.union([BrainMetadataScalarSchema, zod.z.array(zod.z.string().max(BRAIN_MAX_METADATA_STRING_CHARS)).max(64)]);
1563
+ const BrainDocumentMetadataSchema = zod.z.record(BrainMetadataKeySchema, BrainMetadataValueSchema).refine((value) => Object.keys(value).length <= 32, { message: `At most 32 metadata keys are allowed` });
1564
+ /**
1565
+ * Flat filter over metadata attributes: scalar → equals, array → any-of
1566
+ * (In for scalar attributes, ContainsAny for array attributes). Entries AND
1567
+ * together.
1568
+ */
1569
+ const BrainMetadataFilterSchema = zod.z.record(BrainMetadataKeySchema, zod.z.union([BrainMetadataScalarSchema, zod.z.array(BrainMetadataScalarSchema).min(1).max(64)])).refine((value) => Object.keys(value).length <= 32, { message: `At most 32 filter keys are allowed` });
1570
+ /**
1571
+ * Filter expression persisted by Brain filters and accepted as query-time
1572
+ * narrowing: an optional reserved `source` operand (scalar equals or any-of)
1573
+ * plus a flat metadata filter. Entries AND together. The stored document
1574
+ * `source` is always one scalar string; an array here only widens matching.
1575
+ */
1576
+ const BrainFilterExpressionSchema = zod.z.object({
1577
+ source: zod.z.union([BrainSourceSchema, zod.z.array(BrainSourceSchema).min(1).max(64)]).optional(),
1578
+ metadata: BrainMetadataFilterSchema.optional()
1579
+ }).strict().refine((value) => value.source !== void 0 || value.metadata !== void 0 && Object.keys(value.metadata).length > 0, { message: "Filter requires a source or at least one metadata entry" });
1580
+ const BrainSummarySchema = zod.z.object({
1581
+ id: zod.z.string().min(1),
1582
+ slug: BrainSlugSchema,
1583
+ name: zod.z.string().min(1),
1584
+ description: BrainDescriptionSchema,
1585
+ indexConfig: BrainIndexConfigSchema,
1586
+ status: BrainStatusSchema,
1587
+ /** Number of filters defined on this Brain (rendered as “Filtered views”). */
1588
+ filterCount: zod.z.number().int().nonnegative(),
1589
+ /** Requesting user's Brain membership role (management surfaces are membership-only). */
1590
+ callerRole: BrainMemberRoleSchema,
1591
+ createdAt: zod.z.string().datetime(),
1592
+ updatedAt: zod.z.string().datetime()
1593
+ });
1594
+ const BrainListCreatorSchema = zod.z.object({
1595
+ id: zod.z.string().min(1),
1596
+ name: zod.z.string().min(1),
1597
+ avatarUrl: zod.z.string().optional(),
1598
+ deleted: zod.z.boolean().optional()
1599
+ });
1600
+ const BrainListItemSchema = BrainSummarySchema.extend({
1601
+ documentCount: zod.z.number().int().nonnegative(),
1602
+ projectCount: zod.z.number().int().nonnegative(),
1603
+ sources: zod.z.array(BrainSourceSchema),
1604
+ createdBy: BrainListCreatorSchema.nullable()
1605
+ });
1606
+ BrainSummarySchema.extend({
1607
+ createdByUserId: zod.z.string().min(1).nullable(),
1608
+ documentCount: zod.z.number().int().nonnegative(),
1609
+ readyDocumentCount: zod.z.number().int().nonnegative()
1610
+ });
1611
+ const BrainNameSchema = zod.z.string().trim().min(1).max(120);
1612
+ zod.z.object({
1613
+ name: BrainNameSchema,
1614
+ slug: BrainSlugSchema.optional(),
1615
+ description: BrainDescriptionSchema,
1616
+ indexConfig: BrainIndexConfigSchema.prefault({})
1617
+ }).strict();
1618
+ zod.z.object({ slug: zod.z.string().trim().min(1) });
1619
+ zod.z.object({
1620
+ slug: zod.z.string(),
1621
+ available: zod.z.boolean(),
1622
+ reason: zod.z.enum(["taken", "invalid"]).optional()
1623
+ });
1624
+ zod.z.object({
1625
+ slug: BrainSlugSchema.optional(),
1626
+ name: BrainNameSchema.optional(),
1627
+ description: BrainDescriptionSchema.optional(),
1628
+ indexConfig: BrainIndexConfigSchema.optional()
1629
+ }).strict().refine((value) => Object.values(value).some((field) => field !== void 0), { message: "At least one field is required" });
1630
+ zod.z.object({
1631
+ brain: BrainSummarySchema,
1632
+ /** Set when an indexConfig change kicked off a rebuild. */
1633
+ rebuildStarted: zod.z.boolean()
1634
+ });
1635
+ zod.z.object({ brains: zod.z.array(BrainListItemSchema) });
1636
+ const BrainMemberSchema = zod.z.object({
1637
+ userId: zod.z.string().min(1),
1638
+ role: BrainMemberRoleSchema,
1639
+ createdByUserId: zod.z.string().min(1).nullable(),
1640
+ createdAt: zod.z.string().datetime(),
1641
+ updatedAt: zod.z.string().datetime()
1642
+ });
1643
+ zod.z.union([zod.z.object({
1644
+ userId: zod.z.string().min(1),
1645
+ role: BrainMemberRoleSchema.default("admin")
1646
+ }).strict(), zod.z.object({
1647
+ email: zod.z.string().trim().email(),
1648
+ role: BrainMemberRoleSchema.default("admin")
1649
+ }).strict()]);
1650
+ zod.z.object({ role: BrainMemberRoleSchema }).strict();
1651
+ zod.z.object({ members: zod.z.array(BrainMemberSchema) });
1652
+ const BrainGrantSchema = zod.z.object({
1653
+ id: zod.z.string().min(1),
1654
+ brainId: zod.z.string().min(1),
1655
+ projectId: zod.z.string().min(1),
1656
+ access: BrainGrantAccessSchema,
1657
+ createdByUserId: zod.z.string().min(1).nullable(),
1658
+ createdAt: zod.z.string().datetime()
1659
+ });
1660
+ zod.z.object({
1661
+ projectId: zod.z.string().min(1),
1662
+ access: BrainGrantAccessSchema.default("read")
1663
+ }).strict();
1664
+ zod.z.object({ grants: zod.z.array(BrainGrantSchema) });
1665
+ const BrainFilterSummarySchema = zod.z.object({
1666
+ id: zod.z.string().min(1),
1667
+ /** Local slug, unique per Brain and colon-free. */
1668
+ slug: BrainSlugSchema,
1669
+ /** `{brain-slug}:{filter-slug}` — the externally addressable reference. */
1670
+ qualifiedSlug: BrainReferenceSchema,
1671
+ name: zod.z.string().min(1),
1672
+ description: BrainDescriptionSchema,
1673
+ filter: BrainFilterExpressionSchema,
1674
+ createdByUserId: zod.z.string().min(1).nullable(),
1675
+ createdAt: zod.z.string().datetime(),
1676
+ updatedAt: zod.z.string().datetime()
1677
+ });
1678
+ zod.z.object({
1679
+ name: BrainNameSchema,
1680
+ slug: BrainSlugSchema.optional(),
1681
+ description: BrainDescriptionSchema,
1682
+ filter: BrainFilterExpressionSchema
1683
+ }).strict();
1684
+ zod.z.object({
1685
+ name: BrainNameSchema.optional(),
1686
+ description: BrainDescriptionSchema.optional(),
1687
+ filter: BrainFilterExpressionSchema.optional()
1688
+ }).strict().refine((value) => Object.values(value).some((field) => field !== void 0), { message: "At least one field is required" });
1689
+ zod.z.object({ filters: zod.z.array(BrainFilterSummarySchema) });
1690
+ const BrainDocumentIdSchema = zod.z.string().trim().min(1).max(512).refine((value) => ![...value].some((ch) => ch.charCodeAt(0) < 32 || ch.charCodeAt(0) === 127), { message: "documentId must not contain control characters" });
1691
+ const BrainDocumentTitleSchema = zod.z.string().trim().min(1).max(500);
1692
+ const BrainEmbeddingContextSchema = zod.z.string().trim().min(1).max(2e3);
1693
+ const BrainDocumentRevisionSchema = zod.z.string().trim().min(1).max(256);
1694
+ zod.z.string().trim().min(1).max(1024).refine((value) => ![...value].some((ch) => ch.charCodeAt(0) < 32 || ch.charCodeAt(0) === 127), { message: "file name must not contain control characters" });
1695
+ zod.z.string().trim().min(1).max(256);
1696
+ /** Authored semantic block: one caller-supplied block becomes one exact chunk. */
1697
+ const BrainDocumentBlockSchema = zod.z.object({
1698
+ text: zod.z.string().min(1).max(BRAIN_MAX_BLOCK_CHARS),
1699
+ heading: zod.z.string().trim().min(1).max(500).optional(),
1700
+ meta: zod.z.record(zod.z.string().max(64), zod.z.string().max(BRAIN_MAX_METADATA_STRING_CHARS)).optional()
1701
+ }).strict();
1702
+ const sha256Hex$2 = zod.z.string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
1703
+ zod.z.object({
1704
+ documentId: BrainDocumentIdSchema,
1705
+ title: BrainDocumentTitleSchema.optional(),
1706
+ /** Where the content originated (`linear`, `notion`, `manual`, …). Required. */
1707
+ source: BrainSourceSchema,
1708
+ content: zod.z.string().min(1).max(BRAIN_MAX_INLINE_CONTENT_CHARS).optional(),
1709
+ blocks: zod.z.array(BrainDocumentBlockSchema).min(1).max(BRAIN_MAX_BLOCKS_PER_DOCUMENT).optional(),
1710
+ metadata: BrainDocumentMetadataSchema.optional(),
1711
+ /** Extra text prefixed into chunk embeddings (like the title); never returned by read. */
1712
+ embeddingContext: BrainEmbeddingContextSchema.optional(),
1713
+ revision: BrainDocumentRevisionSchema.optional(),
1714
+ chunking: BrainCharacterChunkingSchema.optional()
1715
+ }).strict().refine((value) => value.content !== void 0 !== (value.blocks !== void 0), { message: "Provide exactly one of content or blocks" }).refine((value) => value.blocks === void 0 || value.chunking === void 0, {
1716
+ message: "Chunking controls are not allowed with blocks",
1717
+ path: ["chunking"]
1718
+ });
1719
+ zod.z.object({
1720
+ documentId: BrainDocumentIdSchema,
1721
+ /** `queued` created a new version; `unchanged` skipped (revision or content hash matched). */
1722
+ outcome: zod.z.enum(["queued", "unchanged"]),
1723
+ versionId: zod.z.string().min(1).nullable(),
1724
+ metadataUpdated: zod.z.boolean()
1725
+ });
1726
+ zod.z.object({
1727
+ /** Full replacement of the document's metadata attributes; never re-embeds. */
1728
+ metadata: BrainDocumentMetadataSchema }).strict();
1729
+ zod.z.object({ documentIds: zod.z.array(BrainDocumentIdSchema).min(1).max(100) }).strict();
1730
+ zod.z.object({ deletedDocumentIds: zod.z.array(BrainDocumentIdSchema) });
1731
+ const BrainProvisionerKindSchema = zod.z.enum(["workflow", "manual"]);
1732
+ /**
1733
+ * Trusted system provenance for how a version entered the Brain: a workflow
1734
+ * run (project-scoped) or a manual Brain-admin upload (organization-scoped,
1735
+ * user identity only). Distinct from document `source` (content origin).
1736
+ */
1737
+ const BrainDocumentProvisionerSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
1738
+ kind: zod.z.literal("workflow"),
1739
+ projectId: zod.z.string().min(1),
1740
+ workflowRunId: zod.z.string().min(1),
1741
+ workflowSlug: zod.z.string().min(1),
1742
+ correlationId: zod.z.string().min(1)
1743
+ }).strict(), zod.z.object({
1744
+ kind: zod.z.literal("manual"),
1745
+ userId: zod.z.string().min(1)
1746
+ }).strict()]);
1747
+ const BrainDocumentWriteEventSchema = zod.z.object({
1748
+ id: zod.z.string().min(1),
1749
+ documentId: BrainDocumentIdSchema,
1750
+ provisioner: BrainDocumentProvisionerSchema,
1751
+ inputKind: BrainDocumentWriteInputKindSchema,
1752
+ outcome: BrainDocumentWriteOutcomeSchema,
1753
+ failureCode: zod.z.string().trim().min(1).max(128).nullable().optional(),
1754
+ failureMessage: zod.z.string().trim().min(1).max(2e3).nullable().optional(),
1755
+ submittedAt: zod.z.string().datetime(),
1756
+ contentReceivedAt: zod.z.string().datetime().nullable().optional(),
1757
+ completedAt: zod.z.string().datetime().nullable().optional()
1758
+ }).strict().superRefine((event, context) => {
1759
+ const hasFailure = event.failureCode != null || event.failureMessage != null;
1760
+ if (event.outcome === "pending") {
1761
+ if (event.completedAt != null || hasFailure) context.addIssue({
1762
+ code: "custom",
1763
+ message: "Pending writes cannot have completion or failure fields"
1764
+ });
1765
+ return;
1766
+ }
1767
+ if (event.completedAt == null) context.addIssue({
1768
+ code: "custom",
1769
+ message: "Terminal writes require completedAt",
1770
+ path: ["completedAt"]
1771
+ });
1772
+ if (event.outcome !== "failed" && hasFailure) context.addIssue({
1773
+ code: "custom",
1774
+ message: "Failure fields are only valid for failed writes"
1775
+ });
1776
+ });
1777
+ /** List entry doubling as the ETL diffing primitive (compare sha256 / revision, then put). */
1778
+ const BrainDocumentSummarySchema = zod.z.object({
1779
+ documentId: BrainDocumentIdSchema,
1780
+ title: zod.z.string().min(1),
1781
+ /** Where the current content originated (`linear`, `notion`, `manual`, …). */
1782
+ source: BrainSourceSchema,
1783
+ status: BrainDocumentVersionStatusSchema.nullable(),
1784
+ /** Content hash of the live version; null until first ingest completes. */
1785
+ sha256: zod.z.string().nullable(),
1786
+ /** Caller-supplied revision fingerprint from the last put. */
1787
+ revision: zod.z.string().nullable(),
1788
+ failureCode: BrainDocumentFailureCodeSchema.nullable().optional(),
1789
+ failureMessage: zod.z.string().nullable().optional(),
1790
+ byteSize: zod.z.number().int().nonnegative().nullable().optional(),
1791
+ chunkCount: zod.z.number().int().nonnegative().nullable().optional(),
1792
+ /**
1793
+ * Provenance for the event whose version is current. Null means legacy or
1794
+ * unavailable provenance; later failed/unchanged writes never replace it.
1795
+ */
1796
+ currentProvenance: BrainDocumentWriteEventSchema.nullable(),
1797
+ createdAt: zod.z.string().datetime(),
1798
+ updatedAt: zod.z.string().datetime()
1799
+ });
1800
+ BrainDocumentSummarySchema.extend({
1801
+ metadata: BrainDocumentMetadataSchema.nullable(),
1802
+ contentType: zod.z.string().nullable(),
1803
+ format: zod.z.string().nullable()
1804
+ });
1805
+ /** Accepts one repeated query param or an array; normalizes to an array. */
1806
+ function queryList(schema) {
1807
+ return zod.z.union([schema, zod.z.array(schema).min(1)]).transform((value) => Array.isArray(value) ? value : [value]).optional();
1808
+ }
1809
+ const ListBrainDocumentsQuerySchema = zod.z.object({
1810
+ /** Filters documentIds by prefix (e.g. `slack:C123:`). */
1811
+ prefix: zod.z.string().min(1).max(512).optional(),
1812
+ /** Case-insensitive substring over title and documentId. */
1813
+ search: zod.z.string().trim().min(1).max(256).optional(),
1814
+ /** Any-of filter over document source. */
1815
+ source: queryList(BrainSourceSchema),
1816
+ /** Any-of filter over the current version's provisioner kind. */
1817
+ provisionerKind: queryList(BrainProvisionerKindSchema),
1818
+ /** Applies one persisted Brain filter expression (local filter slug). */
1819
+ filterSlug: BrainSlugSchema.optional(),
1820
+ cursor: zod.z.string().min(1).optional(),
1821
+ limit: zod.z.coerce.number().int().min(1).max(500).default(100)
1822
+ });
1823
+ zod.z.object({
1824
+ documents: zod.z.array(BrainDocumentSummarySchema),
1825
+ nextCursor: zod.z.string().nullable()
1826
+ });
1827
+ zod.z.object({
1828
+ documentId: BrainDocumentIdSchema,
1829
+ cursor: zod.z.string().min(1).optional(),
1830
+ limit: zod.z.coerce.number().int().min(1).max(100).default(50)
1831
+ });
1832
+ zod.z.object({
1833
+ writes: zod.z.array(BrainDocumentWriteEventSchema),
1834
+ nextCursor: zod.z.string().nullable()
1835
+ });
1836
+ const BrainUploadFileInputSchema = zod.z.object({
1837
+ idempotencyId: zod.z.string().uuid(),
1838
+ /** Doubles as the documentId; normalized as a relative path. */
1839
+ documentId: BrainDocumentIdSchema,
1840
+ size: zod.z.number().int().nonnegative().max(BRAIN_MAX_FILE_BYTES),
1841
+ contentType: zod.z.string().min(1).max(255),
1842
+ /** Local hash, verified by the worker and used for safe prepare-time dedupe. */
1843
+ sha256: sha256Hex$2,
1844
+ /** Where the content originated; manual UI uploads default to `manual`. */
1845
+ source: BrainSourceSchema,
1846
+ metadata: BrainDocumentMetadataSchema.optional()
1847
+ });
1848
+ zod.z.object({ files: zod.z.array(BrainUploadFileInputSchema).min(1).max(BRAIN_MAX_FOLDER_FILES) }).strict();
1849
+ const BrainUploadAcceptedSchema = zod.z.object({
1850
+ idempotencyId: zod.z.string().uuid(),
1851
+ documentId: BrainDocumentIdSchema,
1852
+ versionId: zod.z.string().min(1),
1853
+ /**
1854
+ * Null when a verified content-addressed blob was reused and ingestion was
1855
+ * queued immediately. Otherwise, submit the file as multipart form data.
1856
+ */
1857
+ upload: zod.z.object({
1858
+ method: zod.z.literal("POST"),
1859
+ url: zod.z.string().url(),
1860
+ fields: zod.z.record(zod.z.string(), zod.z.string())
1861
+ }).nullable()
1862
+ });
1863
+ const BrainUploadSkippedSchema = zod.z.object({
1864
+ documentId: BrainDocumentIdSchema,
1865
+ reason: BrainSkippedReasonSchema,
1866
+ message: zod.z.string().min(1).optional()
1867
+ });
1868
+ zod.z.object({
1869
+ accepted: zod.z.array(BrainUploadAcceptedSchema),
1870
+ skipped: zod.z.array(BrainUploadSkippedSchema)
1871
+ });
1872
+ zod.z.object({ versionIds: zod.z.array(zod.z.string().min(1)).min(1).max(100) }).strict();
1873
+ const FinalizeBrainUploadResultSchema = zod.z.object({
1874
+ versionId: zod.z.string().min(1),
1875
+ documentId: BrainDocumentIdSchema,
1876
+ status: BrainDocumentVersionStatusSchema,
1877
+ failureCode: BrainDocumentFailureCodeSchema.nullable().optional(),
1878
+ failureMessage: zod.z.string().nullable().optional()
1879
+ });
1880
+ zod.z.object({ results: zod.z.array(FinalizeBrainUploadResultSchema) });
1881
+ /** `hybrid` = ANN + BM25 with server fusion; `semantic` / `keyword` drop one leg. */
1882
+ const BrainSearchModeSchema = zod.z.enum([
1883
+ "hybrid",
1884
+ "semantic",
1885
+ "keyword"
1886
+ ]);
1887
+ zod.z.object({
1888
+ query: zod.z.string().trim().min(1).max(4e3),
1889
+ mode: BrainSearchModeSchema.default("hybrid"),
1890
+ limit: zod.z.number().int().min(1).max(20).default(5),
1891
+ minScore: zod.z.number().min(0).max(1).optional(),
1892
+ rerank: zod.z.boolean().default(true),
1893
+ /** Query-time narrowing; ANDs with the persisted filter when a qualified reference is searched. */
1894
+ filters: BrainFilterExpressionSchema.optional()
1895
+ }).strict();
1896
+ const BrainSearchHitSchema = zod.z.object({
1897
+ /** Reference the hit was served through (qualified when searching a filter). */
1898
+ brain: BrainReferenceSchema,
1899
+ documentId: BrainDocumentIdSchema,
1900
+ chunkId: zod.z.string().min(1),
1901
+ score: zod.z.number(),
1902
+ title: zod.z.string().min(1),
1903
+ text: zod.z.string().min(1),
1904
+ /** Where the document's content originated. */
1905
+ source: BrainSourceSchema,
1906
+ /** Human-readable location within the document (page/slide/heading) when known. */
1907
+ locationLabel: zod.z.string().nullable(),
1908
+ metadata: BrainDocumentMetadataSchema.nullable()
1909
+ });
1910
+ zod.z.object({
1911
+ hits: zod.z.array(BrainSearchHitSchema),
1912
+ reranked: zod.z.boolean()
1913
+ });
1914
+ zod.z.object({
1915
+ query: zod.z.string().trim().min(1).max(4e3),
1916
+ hits: zod.z.array(BrainSearchHitSchema).min(1).max(320),
1917
+ limit: zod.z.number().int().min(1).max(20)
1918
+ }).strict();
1919
+ zod.z.object({
1920
+ offset: zod.z.coerce.number().int().nonnegative().default(0),
1921
+ maxChars: zod.z.coerce.number().int().min(1).max(BRAIN_READ_MAX_CHARS).default(BRAIN_READ_MAX_CHARS)
1922
+ });
1923
+ zod.z.object({
1924
+ brain: BrainReferenceSchema,
1925
+ documentId: BrainDocumentIdSchema,
1926
+ title: zod.z.string().min(1),
1927
+ offset: zod.z.number().int().nonnegative(),
1928
+ text: zod.z.string(),
1929
+ truncated: zod.z.boolean()
1930
+ });
1931
+ zod.z.object({
1932
+ /** Reference the agent addresses (base slug or qualified `{brain}:{filter}`). */
1933
+ slug: BrainReferenceSchema,
1934
+ name: zod.z.string().min(1),
1935
+ description: BrainDescriptionSchema,
1936
+ /** Base Brain that owns the documents and index. */
1937
+ brainSlug: BrainSlugSchema,
1938
+ /** Filter slug when attached through a qualified reference; null otherwise. */
1939
+ filterSlug: BrainSlugSchema.nullable(),
1940
+ /** Persisted narrowing applied over the base Brain; null for base references. */
1941
+ filter: BrainFilterExpressionSchema.nullable()
1942
+ });
1943
+ zod.z.object({
1944
+ brainId: zod.z.string().min(1),
1945
+ status: BrainStatusSchema,
1946
+ /** Namespace generation the rebuild is writing into. */
1947
+ targetGeneration: zod.z.number().int().positive()
1948
+ });
1949
+ const BrainOperationIdSchema = zod.z.string().regex(/^[a-f0-9]{64}$/);
1950
+ const BrainRuntimeJobCommonSchema = zod.z.object({
1951
+ operationId: BrainOperationIdSchema,
1952
+ /** Originating project for workflow-scoped jobs; null for organization-scoped
1953
+ * operations (manual uploads, admin rebuilds/deletes). */
1954
+ projectId: zod.z.string().min(1).nullable(),
1955
+ brainId: zod.z.string().min(1),
1956
+ brainSlug: BrainSlugSchema
1957
+ }).strict();
1958
+ zod.z.discriminatedUnion("operation", [
1959
+ BrainRuntimeJobCommonSchema.extend({
1960
+ operation: zod.z.literal("ingest-version"),
1961
+ versionId: zod.z.string().min(1)
1962
+ }),
1963
+ BrainRuntimeJobCommonSchema.extend({ operation: zod.z.literal("rebuild-brain") }),
1964
+ BrainRuntimeJobCommonSchema.extend({
1965
+ operation: zod.z.literal("reconcile-metadata"),
1966
+ documentId: BrainDocumentIdSchema
1967
+ }),
1968
+ BrainRuntimeJobCommonSchema.extend({
1969
+ operation: zod.z.literal("cleanup-document"),
1970
+ documentRowId: zod.z.string().min(1),
1971
+ deletionEpoch: zod.z.number().int().positive(),
1972
+ versionIds: zod.z.array(zod.z.string().min(1))
1973
+ }),
1974
+ BrainRuntimeJobCommonSchema.extend({
1975
+ operation: zod.z.literal("cleanup-version"),
1976
+ versionId: zod.z.string().min(1)
1977
+ }),
1978
+ BrainRuntimeJobCommonSchema.extend({
1979
+ operation: zod.z.literal("cleanup-generation"),
1980
+ generation: zod.z.number().int().positive()
1981
+ }),
1982
+ BrainRuntimeJobCommonSchema.extend({ operation: zod.z.literal("delete-brain") })
1983
+ ]);
1332
1984
  const TriggerTypeSchema = zod.z.enum([
1333
1985
  "webhook",
1334
1986
  "poll",
@@ -1416,6 +2068,7 @@ const WorkflowCanvasNodeTypeSchema = zod.z.enum([
1416
2068
  zod.z.enum([
1417
2069
  "workflow-step",
1418
2070
  "agent",
2071
+ "brain",
1419
2072
  "llm",
1420
2073
  "wait",
1421
2074
  "hook",
@@ -1627,6 +2280,7 @@ const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
1627
2280
  toolCount: zod.z.number().int().nonnegative(),
1628
2281
  credentialCount: zod.z.number().int().nonnegative(),
1629
2282
  sandboxMode: AgentSandboxModeSchema.optional(),
2283
+ brainSlugs: zod.z.array(BrainReferenceSchema).default([]),
1630
2284
  appSlugs: zod.z.array(zod.z.string()).default([]),
1631
2285
  toolSlugs: zod.z.array(zod.z.string()).default([]),
1632
2286
  /** Credential requirements per tool slug (the agent's credential consumer key). */
@@ -1777,6 +2431,7 @@ const AgentManifestShardSchema = zod.z.object({
1777
2431
  toolCount: zod.z.number().int().nonnegative(),
1778
2432
  credentialCount: zod.z.number().int().nonnegative(),
1779
2433
  sandboxMode: AgentSandboxModeSchema.optional(),
2434
+ brainSlugs: zod.z.array(BrainReferenceSchema).default([]),
1780
2435
  appSlugs: zod.z.array(zod.z.string()).default([]),
1781
2436
  toolSlugs: zod.z.array(zod.z.string()).default([]),
1782
2437
  toolRequirements: zod.z.record(zod.z.string(), zod.z.array(CredentialRequirementSummarySchema)).optional(),
@@ -3171,6 +3826,20 @@ const SubmitMarketingContactRequestSchema = zod.z.object({
3171
3826
  companyWebsite: zod.z.string().optional()
3172
3827
  });
3173
3828
  const SubmitMarketingContactResponseSchema = SubmitTeamRequestResponseSchema;
3829
+ /**
3830
+ * One embedding model from the AI Gateway catalog (`type === "embedding"`),
3831
+ * as served by `GET /api/embedding-models`. Any `id` here is a valid
3832
+ * `indexConfig.embeddingModel` for a Brain.
3833
+ */
3834
+ const EmbeddingModelSchema = zod.z.object({
3835
+ id: BrainEmbeddingModelSchema,
3836
+ name: zod.z.string().min(1),
3837
+ provider: zod.z.string().min(1),
3838
+ contextWindow: zod.z.number().int().positive().optional(),
3839
+ /** USD per 1M input tokens, when the catalog prices the model. */
3840
+ inputPerMillionUsd: zod.z.number().nonnegative().optional()
3841
+ });
3842
+ zod.z.object({ models: zod.z.array(EmbeddingModelSchema) });
3174
3843
  const CredentialAccessUnavailableReasonSchema = zod.z.enum(["request_access", "reconnect_required"]);
3175
3844
  zod.z.object({
3176
3845
  error: zod.z.literal("credential_access_unavailable"),
@@ -4772,7 +5441,7 @@ const ModuleBlobRefSchema = zod.z.object({
4772
5441
  });
4773
5442
  const isoDateTime = zod.z.string().datetime();
4774
5443
  /** Snapshot/content-addressed blob digests are always lowercase sha256. */
4775
- const sha256Hex$2 = zod.z.string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
5444
+ const sha256Hex$3 = zod.z.string().regex(/^[a-f0-9]{64}$/, "Expected a lowercase hex sha256 digest");
4776
5445
  /** Max bytes for a single source file collected or served from a deploy tree. */
4777
5446
  const PROJECT_SOURCE_MAX_FILE_BYTES = 256 * 1024;
4778
5447
  /** Max total bytes across all source files in a deploy tree listing. */
@@ -4851,17 +5520,17 @@ const ListProjectFilesResponseSchema = zod.z.object({
4851
5520
  zod.z.object({
4852
5521
  path: zod.z.string().min(1),
4853
5522
  contents: zod.z.string(),
4854
- hash: sha256Hex$2
5523
+ hash: sha256Hex$3
4855
5524
  });
4856
5525
  /** A blob the CLI may need to upload, keyed by content hash. */
4857
5526
  const SourceBlobRefSchema = zod.z.object({
4858
- hash: sha256Hex$2,
5527
+ hash: sha256Hex$3,
4859
5528
  size: zod.z.number().int().nonnegative()
4860
5529
  });
4861
5530
  /** Request: ask the platform which blobs are missing and get presigned PUTs. */
4862
5531
  const PresignProjectSourceRequestSchema = zod.z.object({ blobs: zod.z.array(SourceBlobRefSchema) });
4863
5532
  const PresignedBlobUploadSchema = zod.z.object({
4864
- hash: sha256Hex$2,
5533
+ hash: sha256Hex$3,
4865
5534
  url: zod.z.string().url()
4866
5535
  });
4867
5536
  /** Response: presigned PUTs for the subset of blobs not already stored. */
@@ -4869,7 +5538,7 @@ const PresignProjectSourceResponseSchema = zod.z.object({ uploads: zod.z.array(P
4869
5538
  /** A file reference in a manifest upload: where the path's content lives. */
4870
5539
  const ManifestFileRefSchema = zod.z.object({
4871
5540
  path: zod.z.string().min(1),
4872
- hash: sha256Hex$2
5541
+ hash: sha256Hex$3
4873
5542
  });
4874
5543
  /** Request body the CLI sends to finalize a deploy's source manifest. */
4875
5544
  const UploadProjectSourceManifestRequestSchema = zod.z.object({ files: zod.z.array(ManifestFileRefSchema) });
@@ -4881,7 +5550,7 @@ const UploadProjectSourceResponseSchema = zod.z.object({
4881
5550
  const StoredManifestFileSchema = zod.z.object({
4882
5551
  id: zod.z.string(),
4883
5552
  path: zod.z.string().min(1),
4884
- hash: sha256Hex$2
5553
+ hash: sha256Hex$3
4885
5554
  });
4886
5555
  /** The immutable per-deploy manifest persisted to object storage. */
4887
5556
  const StoredProjectSourceManifestSchema = zod.z.object({
@@ -6045,6 +6714,23 @@ function runTar(args, options = {}) {
6045
6714
  });
6046
6715
  }
6047
6716
  //#endregion
6717
+ //#region ../../packages/storage/dist/collect-artifact-modules-CApdro3d.mjs
6718
+ /** Lowercase hex sha256 of raw bytes. */
6719
+ function sha256Hex(bytes) {
6720
+ return (0, node_crypto.createHash)("sha256").update(bytes).digest("hex");
6721
+ }
6722
+ /**
6723
+ * Assert a content-addressed module blob matches its declared size and SHA-256 hash.
6724
+ * Returns a Buffer copy suitable for disk write / JSON parse.
6725
+ */
6726
+ function assertModuleBlobMatchesHash(input) {
6727
+ if (input.bytes.byteLength !== input.expectedSize) throw new Error(`Module blob size mismatch for ${input.path}: expected ${input.expectedSize}, got ${input.bytes.byteLength}`);
6728
+ const actual = sha256Hex(input.bytes);
6729
+ const expected = input.expectedHash.toLowerCase();
6730
+ if (actual !== expected) throw new Error(`Module blob hash mismatch for ${input.path}: expected ${expected}, got ${actual}`);
6731
+ return Buffer.from(input.bytes);
6732
+ }
6733
+ //#endregion
6048
6734
  //#region ../../packages/storage/dist/index.mjs
6049
6735
  function readEnv$1(env, ...keys) {
6050
6736
  for (const key of keys) {
@@ -6132,6 +6818,19 @@ function projectSourceBlobKey(projectId, hash) {
6132
6818
  return `projects/${projectId}/sources/blobs/${hash}`;
6133
6819
  }
6134
6820
  const AVATAR_EXTENSION = /^[a-z0-9]+$/;
6821
+ /** Agent-scoped Browser Use profile metadata. */
6822
+ function browserProfileMetaStorageKey(options) {
6823
+ return `browser-media/${options.projectId}/${options.agentId}/profile.json`;
6824
+ }
6825
+ /** Session metadata JSON for live URL / recording pointers. */
6826
+ function browserSessionMetaStorageKey(options) {
6827
+ return `browser-media/${options.projectId}/${options.agentId}/${options.sessionId}/meta.json`;
6828
+ }
6829
+ /** True when `key` is browser media owned by this project/agent/session. */
6830
+ function isBrowserMediaStorageKey(key, projectId, agentId, sessionId) {
6831
+ const prefix = agentId && sessionId ? `browser-media/${projectId}/${agentId}/${sessionId}/` : agentId ? `browser-media/${projectId}/${agentId}/` : `browser-media/${projectId}/`;
6832
+ return key.startsWith(prefix) && key.length > prefix.length;
6833
+ }
6135
6834
  /** Object key for a chat attachment in org-private storage. */
6136
6835
  function chatAttachmentStorageKey(projectId, id, ext) {
6137
6836
  const normalizedExt = ext.replace(/^\./, "").toLowerCase();
@@ -6401,6 +7100,23 @@ function createStorage(config) {
6401
7100
  ContentType: input.contentType ?? "application/gzip"
6402
7101
  }), { expiresIn: input.expiresInSeconds ?? DEFAULT_PRESIGN_TTL_SECONDS });
6403
7102
  },
7103
+ async presignPost(input) {
7104
+ return (0, _aws_sdk_s3_presigned_post.createPresignedPost)(client, {
7105
+ Bucket: config.bucket,
7106
+ Key: input.key,
7107
+ Conditions: [[
7108
+ "content-length-range",
7109
+ input.contentLength,
7110
+ input.contentLength
7111
+ ], [
7112
+ "eq",
7113
+ "$Content-Type",
7114
+ input.contentType
7115
+ ]],
7116
+ Fields: { "Content-Type": input.contentType },
7117
+ Expires: input.expiresInSeconds ?? DEFAULT_PRESIGN_TTL_SECONDS
7118
+ });
7119
+ },
6404
7120
  async deleteObject(key) {
6405
7121
  await client.send(new _aws_sdk_client_s3.DeleteObjectCommand({
6406
7122
  Bucket: config.bucket,
@@ -6482,21 +7198,6 @@ function extractRouteManifestFromArtifact(archive) {
6482
7198
  });
6483
7199
  }
6484
7200
  }
6485
- /** Lowercase hex sha256 of raw bytes. */
6486
- function sha256Hex(bytes) {
6487
- return (0, node_crypto.createHash)("sha256").update(bytes).digest("hex");
6488
- }
6489
- /**
6490
- * Assert a content-addressed module blob matches its declared size and SHA-256 hash.
6491
- * Returns a Buffer copy suitable for disk write / JSON parse.
6492
- */
6493
- function assertModuleBlobMatchesHash(input) {
6494
- if (input.bytes.byteLength !== input.expectedSize) throw new Error(`Module blob size mismatch for ${input.path}: expected ${input.expectedSize}, got ${input.bytes.byteLength}`);
6495
- const actual = sha256Hex(input.bytes);
6496
- const expected = input.expectedHash.toLowerCase();
6497
- if (actual !== expected) throw new Error(`Module blob hash mismatch for ${input.path}: expected ${expected}, got ${actual}`);
6498
- return Buffer.from(input.bytes);
6499
- }
6500
7201
  /** Parse index JSON bytes from object storage. */
6501
7202
  function parseProjectArtifactIndex(bytes) {
6502
7203
  return ProjectArtifactIndexSchema.parse(JSON.parse(Buffer.from(bytes).toString("utf8")));
@@ -6559,6 +7260,47 @@ async function prefetchCanvasShards(access, workflowSlug) {
6559
7260
  ];
6560
7261
  await access.prefetchKeystrokeJson(paths);
6561
7262
  }
7263
+ async function putBrowserProfileMeta(storage, options) {
7264
+ const key = browserProfileMetaStorageKey(options);
7265
+ const meta = {
7266
+ cloudProfileId: options.cloudProfileId,
7267
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
7268
+ };
7269
+ await storage.putObject({
7270
+ key,
7271
+ body: Buffer.from(JSON.stringify(meta, null, 2), "utf8"),
7272
+ contentType: "application/json"
7273
+ });
7274
+ return key;
7275
+ }
7276
+ async function getBrowserProfileMeta(storage, options) {
7277
+ try {
7278
+ const bytes = await storage.getObject(browserProfileMetaStorageKey(options));
7279
+ return JSON.parse(new TextDecoder().decode(bytes));
7280
+ } catch {
7281
+ return null;
7282
+ }
7283
+ }
7284
+ /** Persist browser session metadata JSON on the org bucket. */
7285
+ async function putBrowserSessionMeta(storage, options) {
7286
+ const key = browserSessionMetaStorageKey(options);
7287
+ await storage.putObject({
7288
+ key,
7289
+ body: Buffer.from(JSON.stringify(options.meta, null, 2), "utf8"),
7290
+ contentType: "application/json"
7291
+ });
7292
+ return key;
7293
+ }
7294
+ async function getBrowserSessionMeta(storage, options) {
7295
+ const key = browserSessionMetaStorageKey(options);
7296
+ try {
7297
+ const bytes = await storage.getObject(key);
7298
+ const text = new TextDecoder().decode(bytes);
7299
+ return JSON.parse(text);
7300
+ } catch {
7301
+ return null;
7302
+ }
7303
+ }
6562
7304
  /** Shared bucket for cross-org public assets (avatars, org sidebar logos). */
6563
7305
  const KEYSTROKE_ASSETS_BUCKET = "keystroke-assets";
6564
7306
  /** Env var for the browser-facing origin of public asset objects (no trailing slash). */
@@ -6896,6 +7638,24 @@ Object.defineProperty(exports, "AppSlugAvailabilityResponseSchema", {
6896
7638
  return AppSlugAvailabilityResponseSchema;
6897
7639
  }
6898
7640
  });
7641
+ Object.defineProperty(exports, "BrainDocumentIdSchema", {
7642
+ enumerable: true,
7643
+ get: function() {
7644
+ return BrainDocumentIdSchema;
7645
+ }
7646
+ });
7647
+ Object.defineProperty(exports, "BrainReferenceSchema", {
7648
+ enumerable: true,
7649
+ get: function() {
7650
+ return BrainReferenceSchema;
7651
+ }
7652
+ });
7653
+ Object.defineProperty(exports, "BrowserResumeStateSchema", {
7654
+ enumerable: true,
7655
+ get: function() {
7656
+ return BrowserResumeStateSchema;
7657
+ }
7658
+ });
6899
7659
  Object.defineProperty(exports, "CancelManagedDeployRequestSchema", {
6900
7660
  enumerable: true,
6901
7661
  get: function() {
@@ -7274,6 +8034,12 @@ Object.defineProperty(exports, "ListAppsResponseSchema", {
7274
8034
  return ListAppsResponseSchema;
7275
8035
  }
7276
8036
  });
8037
+ Object.defineProperty(exports, "ListBrainDocumentsQuerySchema", {
8038
+ enumerable: true,
8039
+ get: function() {
8040
+ return ListBrainDocumentsQuerySchema;
8041
+ }
8042
+ });
7277
8043
  Object.defineProperty(exports, "ListChannelPlatformsResponseSchema", {
7278
8044
  enumerable: true,
7279
8045
  get: function() {
@@ -8144,6 +8910,18 @@ Object.defineProperty(exports, "formatStorageErrorDetail", {
8144
8910
  return formatStorageErrorDetail;
8145
8911
  }
8146
8912
  });
8913
+ Object.defineProperty(exports, "getBrowserProfileMeta", {
8914
+ enumerable: true,
8915
+ get: function() {
8916
+ return getBrowserProfileMeta;
8917
+ }
8918
+ });
8919
+ Object.defineProperty(exports, "getBrowserSessionMeta", {
8920
+ enumerable: true,
8921
+ get: function() {
8922
+ return getBrowserSessionMeta;
8923
+ }
8924
+ });
8147
8925
  Object.defineProperty(exports, "graphqlIntrospectionToAppTemplate", {
8148
8926
  enumerable: true,
8149
8927
  get: function() {
@@ -8168,6 +8946,12 @@ Object.defineProperty(exports, "isAppLogoStorageKey", {
8168
8946
  return isAppLogoStorageKey;
8169
8947
  }
8170
8948
  });
8949
+ Object.defineProperty(exports, "isBrowserMediaStorageKey", {
8950
+ enumerable: true,
8951
+ get: function() {
8952
+ return isBrowserMediaStorageKey;
8953
+ }
8954
+ });
8171
8955
  Object.defineProperty(exports, "isChatAttachmentStorageKey", {
8172
8956
  enumerable: true,
8173
8957
  get: function() {
@@ -8492,6 +9276,18 @@ Object.defineProperty(exports, "publishDraftUpdateBestEffort", {
8492
9276
  return publishDraftUpdateBestEffort;
8493
9277
  }
8494
9278
  });
9279
+ Object.defineProperty(exports, "putBrowserProfileMeta", {
9280
+ enumerable: true,
9281
+ get: function() {
9282
+ return putBrowserProfileMeta;
9283
+ }
9284
+ });
9285
+ Object.defineProperty(exports, "putBrowserSessionMeta", {
9286
+ enumerable: true,
9287
+ get: function() {
9288
+ return putBrowserSessionMeta;
9289
+ }
9290
+ });
8495
9291
  Object.defineProperty(exports, "requiredDisplayTextSchema", {
8496
9292
  enumerable: true,
8497
9293
  get: function() {
@@ -8619,4 +9415,4 @@ Object.defineProperty(exports, "waitForHealth", {
8619
9415
  }
8620
9416
  });
8621
9417
 
8622
- //# sourceMappingURL=project-draft-notifier-DlWmyn5m.cjs.map
9418
+ //# sourceMappingURL=project-draft-notifier-CcuAbwzD.cjs.map