@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.
- package/dist/{awk2-LA3USKJP-DMwZ6QQr.cjs → awk2-LA3USKJP-Bbh_Mg7J.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-DMwZ6QQr.cjs.map → awk2-LA3USKJP-Bbh_Mg7J.cjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-ByfczQFR.mjs → awk2-LA3USKJP-Dra48sTI.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-ByfczQFR.mjs.map → awk2-LA3USKJP-Dra48sTI.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-DhLdSVMT.mjs → base64-C2AIWVNC-C1BGrnWw.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-DhLdSVMT.mjs.map → base64-C2AIWVNC-C1BGrnWw.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-TPM8YCIT.cjs → base64-C2AIWVNC-C9CHg5eJ.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-TPM8YCIT.cjs.map → base64-C2AIWVNC-C9CHg5eJ.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-3gtMzQUb.cjs → bash-YZ33HQZQ-Lv9OV1ua.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-3gtMzQUb.cjs.map → bash-YZ33HQZQ-Lv9OV1ua.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-0JXMDwY6.mjs → bash-YZ33HQZQ-V0ICWlBe.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-0JXMDwY6.mjs.map → bash-YZ33HQZQ-V0ICWlBe.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-DGwUv9Kz.cjs → cat-TSFMZVYS-B1NcRA6b.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-DGwUv9Kz.cjs.map → cat-TSFMZVYS-B1NcRA6b.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-pOt--woU.mjs → cat-TSFMZVYS-C9Gg1ddP.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-pOt--woU.mjs.map → cat-TSFMZVYS-C9Gg1ddP.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-IFTXCE4s.mjs → chunk-5H5SCKJM-BB0qMbDA.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-IFTXCE4s.mjs.map → chunk-5H5SCKJM-BB0qMbDA.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-Dfxe1gZt.cjs → chunk-5H5SCKJM-CbS1FfoF.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-Dfxe1gZt.cjs.map → chunk-5H5SCKJM-CbS1FfoF.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-F3UFTyNi.cjs → chunk-AQ6FYS2X-YPnDt7vA.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-F3UFTyNi.cjs.map → chunk-AQ6FYS2X-YPnDt7vA.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-CeO3SltC.mjs → chunk-AQ6FYS2X-m_2bl0fl.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-CeO3SltC.mjs.map → chunk-AQ6FYS2X-m_2bl0fl.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-DXT2jaxl.mjs → chunk-CHFEPBH4-Bp3W88LB.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-DXT2jaxl.mjs.map → chunk-CHFEPBH4-Bp3W88LB.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-ahdwSYy4.cjs → chunk-CHFEPBH4-Cx3UhSbY.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-ahdwSYy4.cjs.map → chunk-CHFEPBH4-Cx3UhSbY.cjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-BH9U8nRM.mjs → chunk-EBAPSGAO-Bnm4sdUY.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-BH9U8nRM.mjs.map → chunk-EBAPSGAO-Bnm4sdUY.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-Dlc9htiv.cjs → chunk-EBAPSGAO-oZbt13DG.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-Dlc9htiv.cjs.map → chunk-EBAPSGAO-oZbt13DG.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CyvuoMFA.cjs → chunk-LEKBROJD-CZgbM4dQ.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-CyvuoMFA.cjs.map → chunk-LEKBROJD-CZgbM4dQ.cjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CN3XABuh.mjs → chunk-LEKBROJD-DIHOLvJQ.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-CN3XABuh.mjs.map → chunk-LEKBROJD-DIHOLvJQ.mjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-B1fgFmr7.cjs → chunk-VPADYNBD-5vvyHHU-.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-B1fgFmr7.cjs.map → chunk-VPADYNBD-5vvyHHU-.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-CoDQW9rd.mjs → chunk-VPADYNBD-BRDDWLrp.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-CoDQW9rd.mjs.map → chunk-VPADYNBD-BRDDWLrp.mjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-BhkOyHi8.cjs → chunk-YCLFEX4T-B04-lymi.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-BhkOyHi8.cjs.map → chunk-YCLFEX4T-B04-lymi.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-Bqhg2MlS.mjs → chunk-YCLFEX4T-npScZHIz.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-Bqhg2MlS.mjs.map → chunk-YCLFEX4T-npScZHIz.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-vx9cFrby.cjs → column-XT6UFXNQ-DNmdqRGT.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-vx9cFrby.cjs.map → column-XT6UFXNQ-DNmdqRGT.cjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-2pQbXs2k.mjs → column-XT6UFXNQ-fcXxJihT.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-2pQbXs2k.mjs.map → column-XT6UFXNQ-fcXxJihT.mjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-BOZDvYIa.cjs → comm-VV2LDX2J-Batj3A42.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-BOZDvYIa.cjs.map → comm-VV2LDX2J-Batj3A42.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-BqGE2v_-.mjs → comm-VV2LDX2J-Db6pJcoM.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-BqGE2v_-.mjs.map → comm-VV2LDX2J-Db6pJcoM.mjs.map} +1 -1
- package/dist/{config-7QWAcHEf.d.mts → config-3ZXCaTiz.d.mts} +34 -8
- package/dist/{config-BXIsWKDr.cjs → config-BV-mTijJ.cjs} +3 -3
- package/dist/config-BV-mTijJ.cjs.map +1 -0
- package/dist/{config-Bc0kWwBk.d.cts → config-C1blpLvD.d.cts} +34 -8
- package/dist/{config-BEXGfMWX.mjs → config-CdwUGcH5.mjs} +3 -3
- package/dist/config-CdwUGcH5.mjs.map +1 -0
- package/dist/config.cjs +2 -2
- package/dist/config.d.cts +2 -2
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +2 -2
- package/dist/{cp-BISAAS7A-BPMpNsAw.cjs → cp-BISAAS7A-i7fAdn4u.cjs} +2 -2
- package/dist/{cp-BISAAS7A-BPMpNsAw.cjs.map → cp-BISAAS7A-i7fAdn4u.cjs.map} +1 -1
- package/dist/{cp-BISAAS7A-B8FLyvxG.mjs → cp-BISAAS7A-tfAQp0jc.mjs} +2 -2
- package/dist/{cp-BISAAS7A-B8FLyvxG.mjs.map → cp-BISAAS7A-tfAQp0jc.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-D8thql_D.mjs → cut-OKARJCCV-Cw-TysL1.mjs} +3 -3
- package/dist/{cut-OKARJCCV-D8thql_D.mjs.map → cut-OKARJCCV-Cw-TysL1.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-D0Odc3Jf.cjs → cut-OKARJCCV-CyZ4dHpB.cjs} +3 -3
- package/dist/{cut-OKARJCCV-D0Odc3Jf.cjs.map → cut-OKARJCCV-CyZ4dHpB.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-Drqts0Ou.mjs → diff-MWJFIG7X-CnfTAbzI.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-Drqts0Ou.mjs.map → diff-MWJFIG7X-CnfTAbzI.mjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-oslL1LAV.cjs → diff-MWJFIG7X-Cw34w01k.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-oslL1LAV.cjs.map → diff-MWJFIG7X-Cw34w01k.cjs.map} +1 -1
- package/dist/{dist-CGVfb4k_.mjs → dist-C34Iplu5.mjs} +10 -2
- package/dist/{dist-CGVfb4k_.mjs.map → dist-C34Iplu5.mjs.map} +1 -1
- package/dist/{dist-kYSK2aR1.cjs → dist-DeC6P1o8.cjs} +10 -2
- package/dist/dist-DeC6P1o8.cjs.map +1 -0
- package/dist/{du-572XNP42-CELJ23aS.mjs → du-572XNP42-CkQXWW4r.mjs} +2 -2
- package/dist/{du-572XNP42-CELJ23aS.mjs.map → du-572XNP42-CkQXWW4r.mjs.map} +1 -1
- package/dist/{du-572XNP42-DmOYu76Z.cjs → du-572XNP42-D5lmQBvV.cjs} +2 -2
- package/dist/{du-572XNP42-DmOYu76Z.cjs.map → du-572XNP42-D5lmQBvV.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-DZfbg9cL.cjs → env-36M5BO7M-C79iD_tY.cjs} +2 -2
- package/dist/{env-36M5BO7M-DZfbg9cL.cjs.map → env-36M5BO7M-C79iD_tY.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-CNN23vys.mjs → env-36M5BO7M-CVIdMQNt.mjs} +2 -2
- package/dist/{env-36M5BO7M-CNN23vys.mjs.map → env-36M5BO7M-CVIdMQNt.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-PLyckfMd.mjs → expand-JSPG6VOP-BwDcAbR9.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-PLyckfMd.mjs.map → expand-JSPG6VOP-BwDcAbR9.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-Bi-8GRhN.cjs → expand-JSPG6VOP-CUcnZUyc.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-Bi-8GRhN.cjs.map → expand-JSPG6VOP-CUcnZUyc.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-BNy25DC2.cjs → expr-5JAACS4X-CZoecTOk.cjs} +2 -2
- package/dist/{expr-5JAACS4X-BNy25DC2.cjs.map → expr-5JAACS4X-CZoecTOk.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-BqIxQcAx.mjs → expr-5JAACS4X-LJ-ZA12Q.mjs} +2 -2
- package/dist/{expr-5JAACS4X-BqIxQcAx.mjs.map → expr-5JAACS4X-LJ-ZA12Q.mjs.map} +1 -1
- package/dist/{find-INTH3OLC-DH8DXZHk.mjs → find-INTH3OLC-BZu5Y0_b.mjs} +3 -3
- package/dist/{find-INTH3OLC-DH8DXZHk.mjs.map → find-INTH3OLC-BZu5Y0_b.mjs.map} +1 -1
- package/dist/{find-INTH3OLC-2piuR3-O.cjs → find-INTH3OLC-DF88Qp29.cjs} +3 -3
- package/dist/{find-INTH3OLC-2piuR3-O.cjs.map → find-INTH3OLC-DF88Qp29.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-Bd1uAxr4.cjs → fold-4TQNYMSW-DC1X3gZt.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-Bd1uAxr4.cjs.map → fold-4TQNYMSW-DC1X3gZt.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-CsMYO96e.mjs → fold-4TQNYMSW-qi8k7FKX.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-CsMYO96e.mjs.map → fold-4TQNYMSW-qi8k7FKX.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-DBBMtXpt.cjs → grep-V3LQVMRQ-BcjFVa50.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-DBBMtXpt.cjs.map → grep-V3LQVMRQ-BcjFVa50.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-Cds5pG3P.mjs → grep-V3LQVMRQ-DFtFYp5a.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-Cds5pG3P.mjs.map → grep-V3LQVMRQ-DFtFYp5a.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-CdOkcay5.cjs → gzip-O5ASJAFY-BK92nDwK.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-CdOkcay5.cjs.map → gzip-O5ASJAFY-BK92nDwK.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-BUdYCD74.mjs → gzip-O5ASJAFY-DhZ6O7s7.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-BUdYCD74.mjs.map → gzip-O5ASJAFY-DhZ6O7s7.mjs.map} +1 -1
- package/dist/{head-442HYESI-DpretS3H.cjs → head-442HYESI-BuqZmyCg.cjs} +2 -2
- package/dist/{head-442HYESI-DpretS3H.cjs.map → head-442HYESI-BuqZmyCg.cjs.map} +1 -1
- package/dist/{head-442HYESI-_V6c_Y8y.mjs → head-442HYESI-k5cPr22G.mjs} +2 -2
- package/dist/{head-442HYESI-_V6c_Y8y.mjs.map → head-442HYESI-k5cPr22G.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-BqaLEgp2.mjs → help-HZ6M2CKN-6GoSNLwr.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-BqaLEgp2.mjs.map → help-HZ6M2CKN-6GoSNLwr.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-CWp0eQ2z.cjs → help-HZ6M2CKN-CISrNdE8.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-CWp0eQ2z.cjs.map → help-HZ6M2CKN-CISrNdE8.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-CAcZBrRZ.mjs → html-to-markdown-JW4MSQZO-C-bnMPIj.mjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-CAcZBrRZ.mjs.map → html-to-markdown-JW4MSQZO-C-bnMPIj.mjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-DcGBGpbg.cjs → html-to-markdown-JW4MSQZO-DKwlLwS1.cjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-DcGBGpbg.cjs.map → html-to-markdown-JW4MSQZO-DKwlLwS1.cjs.map} +1 -1
- package/dist/internal.cjs +2 -2
- package/dist/internal.d.cts +2 -2
- package/dist/internal.d.mts +2 -2
- package/dist/internal.mjs +2 -2
- package/dist/{join-TBRGI3LQ-CzqTCyC_.cjs → join-TBRGI3LQ-QLbfUgyF.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-CzqTCyC_.cjs.map → join-TBRGI3LQ-QLbfUgyF.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-A6BX1u07.mjs → join-TBRGI3LQ-kqbTOzyl.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-A6BX1u07.mjs.map → join-TBRGI3LQ-kqbTOzyl.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-Dzk1Cr1F.cjs → jq-4XLYLOS5-BMYFlF1S.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-Dzk1Cr1F.cjs.map → jq-4XLYLOS5-BMYFlF1S.cjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-BJYQ4YMc.mjs → jq-4XLYLOS5-DNzAYX6m.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-BJYQ4YMc.mjs.map → jq-4XLYLOS5-DNzAYX6m.mjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-Bcd8otKl.cjs → js-exec-N5KEZBH7-BuMPuf2G.cjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-Bcd8otKl.cjs.map → js-exec-N5KEZBH7-BuMPuf2G.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-QGZXHyY0.mjs → js-exec-N5KEZBH7-DZkjdqDZ.mjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-QGZXHyY0.mjs.map → js-exec-N5KEZBH7-DZkjdqDZ.mjs.map} +1 -1
- package/dist/lib/public-models.cjs +40 -11
- package/dist/lib/public-models.cjs.map +1 -1
- package/dist/lib/public-models.d.cts +25 -4
- package/dist/lib/public-models.d.mts +25 -4
- package/dist/lib/public-models.mjs +39 -12
- package/dist/lib/public-models.mjs.map +1 -1
- package/dist/{lib-DDGDxczq.cjs → lib-BV1AaIR4.cjs} +2 -2
- package/dist/{lib-DDGDxczq.cjs.map → lib-BV1AaIR4.cjs.map} +1 -1
- package/dist/{lib-Jj_eXohJ.mjs → lib-ocScqr8w.mjs} +2 -2
- package/dist/{lib-Jj_eXohJ.mjs.map → lib-ocScqr8w.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-C5UT-Ujb.cjs → ln-4LGSXXGD-Bseck0K6.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-C5UT-Ujb.cjs.map → ln-4LGSXXGD-Bseck0K6.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-aZgyO6BG.mjs → ln-4LGSXXGD-C-CLQ7lX.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-aZgyO6BG.mjs.map → ln-4LGSXXGD-C-CLQ7lX.mjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-CzK8vxkc.cjs → ls-ZJGQER7M-7ytL05_W.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-CzK8vxkc.cjs.map → ls-ZJGQER7M-7ytL05_W.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-C3KTKhlL.mjs → ls-ZJGQER7M-C-3d7ESt.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-C3KTKhlL.mjs.map → ls-ZJGQER7M-C-3d7ESt.mjs.map} +1 -1
- package/dist/{lzma-wgqkUDaW.cjs → lzma-BvGWy27d.cjs} +2 -2
- package/dist/{lzma-wgqkUDaW.cjs.map → lzma-BvGWy27d.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CmI2Hsa_.mjs → md5sum-SPU24VSG-D5O7yMdH.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CmI2Hsa_.mjs.map → md5sum-SPU24VSG-D5O7yMdH.mjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-BcSybbbv.cjs → md5sum-SPU24VSG-cCnfJWPL.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-BcSybbbv.cjs.map → md5sum-SPU24VSG-cCnfJWPL.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-Dz0ilrHF.mjs → mkdir-MEPGZOB6-C7wx5Bh1.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-Dz0ilrHF.mjs.map → mkdir-MEPGZOB6-C7wx5Bh1.mjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-Bks_xob7.cjs → mkdir-MEPGZOB6-Cev0iIks.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-Bks_xob7.cjs.map → mkdir-MEPGZOB6-Cev0iIks.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-BQe2vxEx.cjs → mv-W5BIQ646-3n97AJKS.cjs} +2 -2
- package/dist/{mv-W5BIQ646-BQe2vxEx.cjs.map → mv-W5BIQ646-3n97AJKS.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-BYWL1wkh.mjs → mv-W5BIQ646-BTlZYjo7.mjs} +2 -2
- package/dist/{mv-W5BIQ646-BYWL1wkh.mjs.map → mv-W5BIQ646-BTlZYjo7.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-CHu4o_ve.cjs → nl-WSDW7I4O-CKz3R1_P.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-CHu4o_ve.cjs.map → nl-WSDW7I4O-CKz3R1_P.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DWG5wZv2.mjs → nl-WSDW7I4O-CfkXHOno.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DWG5wZv2.mjs.map → nl-WSDW7I4O-CfkXHOno.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-C0KKUEqR.mjs → od-WOKFDJTP-CzrLicva.mjs} +2 -2
- package/dist/{od-WOKFDJTP-C0KKUEqR.mjs.map → od-WOKFDJTP-CzrLicva.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP-BEdRBpH3.cjs → od-WOKFDJTP-Q8_LFTNW.cjs} +2 -2
- package/dist/{od-WOKFDJTP-BEdRBpH3.cjs.map → od-WOKFDJTP-Q8_LFTNW.cjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-D2Mx-pNX.cjs → paste-7JC6S4DX-BVamjX9E.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-D2Mx-pNX.cjs.map → paste-7JC6S4DX-BVamjX9E.cjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-4f_UlCmY.mjs → paste-7JC6S4DX-D-vuFBZl.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-4f_UlCmY.mjs.map → paste-7JC6S4DX-D-vuFBZl.mjs.map} +1 -1
- package/dist/{printf-TWGXF445-Cku6hGej.mjs → printf-TWGXF445-Be0zQ_f7.mjs} +3 -3
- package/dist/{printf-TWGXF445-Cku6hGej.mjs.map → printf-TWGXF445-Be0zQ_f7.mjs.map} +1 -1
- package/dist/{printf-TWGXF445-DCHSwRN6.cjs → printf-TWGXF445-Dzw0NWza.cjs} +3 -3
- package/dist/{printf-TWGXF445-DCHSwRN6.cjs.map → printf-TWGXF445-Dzw0NWza.cjs.map} +1 -1
- package/dist/{project-draft-notifier-B7K0aaAp.mjs → project-draft-notifier-3Eh4dVet.mjs} +769 -27
- package/dist/project-draft-notifier-3Eh4dVet.mjs.map +1 -0
- package/dist/{project-draft-notifier-DlWmyn5m.cjs → project-draft-notifier-CcuAbwzD.cjs} +822 -26
- package/dist/project-draft-notifier-CcuAbwzD.cjs.map +1 -0
- package/dist/{python3-POMOR4OA-DSAcZLAU.cjs → python3-POMOR4OA-BCTKIdsD.cjs} +3 -3
- package/dist/{python3-POMOR4OA-DSAcZLAU.cjs.map → python3-POMOR4OA-BCTKIdsD.cjs.map} +1 -1
- package/dist/{python3-POMOR4OA-BcBrl1X2.mjs → python3-POMOR4OA-TfCXA31l.mjs} +3 -3
- package/dist/{python3-POMOR4OA-BcBrl1X2.mjs.map → python3-POMOR4OA-TfCXA31l.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-u03jP4f-.cjs → rev-5EHFX4EJ-CxXrkZZZ.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-u03jP4f-.cjs.map → rev-5EHFX4EJ-CxXrkZZZ.cjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-Dmo6hsDY.mjs → rev-5EHFX4EJ-DIJO-xRn.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-Dmo6hsDY.mjs.map → rev-5EHFX4EJ-DIJO-xRn.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-C5rIiKqa.mjs → rg-S4FXYXWB-BwEG_0TC.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-C5rIiKqa.mjs.map → rg-S4FXYXWB-BwEG_0TC.mjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-CTWDqqzD.cjs → rg-S4FXYXWB-CHh8stFo.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-CTWDqqzD.cjs.map → rg-S4FXYXWB-CHh8stFo.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-CMqCuC6-.cjs → rm-SSGETQVQ-B0excDio.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-CMqCuC6-.cjs.map → rm-SSGETQVQ-B0excDio.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-SVr6JZrX.mjs → rm-SSGETQVQ-BZAfMfUV.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-SVr6JZrX.mjs.map → rm-SSGETQVQ-BZAfMfUV.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-DhpPwVcw.mjs → rmdir-OC4ZLPYA-DmH4dWRH.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-DhpPwVcw.mjs.map → rmdir-OC4ZLPYA-DmH4dWRH.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-xNbbN8z9.cjs → rmdir-OC4ZLPYA-UzOFGfOb.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-xNbbN8z9.cjs.map → rmdir-OC4ZLPYA-UzOFGfOb.cjs.map} +1 -1
- package/dist/run.cjs +4 -4
- package/dist/run.mjs +4 -4
- package/dist/{sed-S5UIK574-CwkMwpF4.mjs → sed-S5UIK574-CFGJGHQV.mjs} +2 -2
- package/dist/{sed-S5UIK574-CwkMwpF4.mjs.map → sed-S5UIK574-CFGJGHQV.mjs.map} +1 -1
- package/dist/{sed-S5UIK574-B9o7Evcw.cjs → sed-S5UIK574-l76p13-x.cjs} +2 -2
- package/dist/{sed-S5UIK574-B9o7Evcw.cjs.map → sed-S5UIK574-l76p13-x.cjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-CGWtyGkR.cjs → sha1sum-2PTOAFR6-DYzG3jqj.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-CGWtyGkR.cjs.map → sha1sum-2PTOAFR6-DYzG3jqj.cjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-Cad6_7os.mjs → sha1sum-2PTOAFR6-fLUtqiC5.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-Cad6_7os.mjs.map → sha1sum-2PTOAFR6-fLUtqiC5.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-QeeptGn3.mjs → sha256sum-NS7D3IXX-B7l_Yxt6.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-QeeptGn3.mjs.map → sha256sum-NS7D3IXX-B7l_Yxt6.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-Tkb8bOpJ.cjs → sha256sum-NS7D3IXX-Vfbm8H3J.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-Tkb8bOpJ.cjs.map → sha256sum-NS7D3IXX-Vfbm8H3J.cjs.map} +1 -1
- package/dist/{sleep-X22JJINO-SSB0_xkn.mjs → sleep-X22JJINO-B1Ps6tSN.mjs} +2 -2
- package/dist/{sleep-X22JJINO-SSB0_xkn.mjs.map → sleep-X22JJINO-B1Ps6tSN.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-Dlhdt3UF.cjs → sleep-X22JJINO-XiejbcgD.cjs} +2 -2
- package/dist/{sleep-X22JJINO-Dlhdt3UF.cjs.map → sleep-X22JJINO-XiejbcgD.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-DHu-IjJK.mjs → sort-SW2YEO5B-CZYNhteL.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-DHu-IjJK.mjs.map → sort-SW2YEO5B-CZYNhteL.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-CfN8qsOe.cjs → sort-SW2YEO5B-DuyYJEPW.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-CfN8qsOe.cjs.map → sort-SW2YEO5B-DuyYJEPW.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-DRFoW0C-.mjs → split-4KKZZXXE-DY5piVHO.mjs} +2 -2
- package/dist/{split-4KKZZXXE-DRFoW0C-.mjs.map → split-4KKZZXXE-DY5piVHO.mjs.map} +1 -1
- package/dist/{split-4KKZZXXE-B8plYwAH.cjs → split-4KKZZXXE-e47vl-qS.cjs} +2 -2
- package/dist/{split-4KKZZXXE-B8plYwAH.cjs.map → split-4KKZZXXE-e47vl-qS.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-racIOTTD.cjs → sqlite3-CGOEFJAO-CXa3Yw8y.cjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-racIOTTD.cjs.map → sqlite3-CGOEFJAO-CXa3Yw8y.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-CF1nf3bu.mjs → sqlite3-CGOEFJAO-D1sTQfnU.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-CF1nf3bu.mjs.map → sqlite3-CGOEFJAO-D1sTQfnU.mjs.map} +1 -1
- package/dist/{start-BBW9vi1A.mjs → start-CcTA67Ri.mjs} +581 -188
- package/dist/start-CcTA67Ri.mjs.map +1 -0
- package/dist/{start-bgZZCOmu.cjs → start-fwjkr0oX.cjs} +584 -190
- package/dist/start-fwjkr0oX.cjs.map +1 -0
- package/dist/start.cjs +1 -1
- package/dist/start.d.cts +1 -1
- package/dist/start.d.mts +1 -1
- package/dist/start.mjs +1 -1
- package/dist/{strings-6WDHLGMX-B8ogXPoK.cjs → strings-6WDHLGMX-DOrIEGPw.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-B8ogXPoK.cjs.map → strings-6WDHLGMX-DOrIEGPw.cjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-D-8gxmaP.mjs → strings-6WDHLGMX-f9M_vuc-.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-D-8gxmaP.mjs.map → strings-6WDHLGMX-f9M_vuc-.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-BXvN_CFk.mjs → tac-2STMMJYW-B8hzbOXn.mjs} +2 -2
- package/dist/{tac-2STMMJYW-BXvN_CFk.mjs.map → tac-2STMMJYW-B8hzbOXn.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-GqCFVlMI.cjs → tac-2STMMJYW-DEJ-Iv9h.cjs} +2 -2
- package/dist/{tac-2STMMJYW-GqCFVlMI.cjs.map → tac-2STMMJYW-DEJ-Iv9h.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-C0ugHzL2.mjs → tail-R4PCA2C4-BVZcigNs.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-C0ugHzL2.mjs.map → tail-R4PCA2C4-BVZcigNs.mjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-Drjdjemt.cjs → tail-R4PCA2C4-C966N8kW.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-Drjdjemt.cjs.map → tail-R4PCA2C4-C966N8kW.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-BuhlrLgy.cjs → tar-STHHZTZ6-BKlV4MJS.cjs} +5 -5
- package/dist/{tar-STHHZTZ6-BuhlrLgy.cjs.map → tar-STHHZTZ6-BKlV4MJS.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-BsgloKrW.mjs → tar-STHHZTZ6-BpR3IuQT.mjs} +4 -4
- package/dist/{tar-STHHZTZ6-BsgloKrW.mjs.map → tar-STHHZTZ6-BpR3IuQT.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-BbF6VRAs.mjs → tee-YUZ2FKCJ-B0nvnaNC.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-BbF6VRAs.mjs.map → tee-YUZ2FKCJ-B0nvnaNC.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-BhRQUMAz.cjs → tee-YUZ2FKCJ-Cgc6d2Rt.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-BhRQUMAz.cjs.map → tee-YUZ2FKCJ-Cgc6d2Rt.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-BMJlkpiY.cjs → time-D4LNBSWX-BGCZmclx.cjs} +2 -2
- package/dist/{time-D4LNBSWX-BMJlkpiY.cjs.map → time-D4LNBSWX-BGCZmclx.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-BG4ZXuon.mjs → time-D4LNBSWX-Br4CX4D7.mjs} +2 -2
- package/dist/{time-D4LNBSWX-BG4ZXuon.mjs.map → time-D4LNBSWX-Br4CX4D7.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-CuD519Dt.cjs → timeout-YDCRSLPQ-C7K7btg5.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-CuD519Dt.cjs.map → timeout-YDCRSLPQ-C7K7btg5.cjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-C4E3RCT1.mjs → timeout-YDCRSLPQ-CAJx_7wb.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-C4E3RCT1.mjs.map → timeout-YDCRSLPQ-CAJx_7wb.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-Dr7gGPKc.mjs → touch-UA33VN3N-BwFiTQrE.mjs} +2 -2
- package/dist/{touch-UA33VN3N-Dr7gGPKc.mjs.map → touch-UA33VN3N-BwFiTQrE.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-BvhbAbJ5.cjs → touch-UA33VN3N-CIILbniE.cjs} +2 -2
- package/dist/{touch-UA33VN3N-BvhbAbJ5.cjs.map → touch-UA33VN3N-CIILbniE.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-tCkx_1H_.cjs → tr-36LHWFRQ-B7-zyaYq.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-tCkx_1H_.cjs.map → tr-36LHWFRQ-B7-zyaYq.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-BAzZcYrH.mjs → tr-36LHWFRQ-CfJSN2db.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-BAzZcYrH.mjs.map → tr-36LHWFRQ-CfJSN2db.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-CtxzyzyK.cjs → tree-YLD52CNT-D8WPd3qS.cjs} +2 -2
- package/dist/{tree-YLD52CNT-CtxzyzyK.cjs.map → tree-YLD52CNT-D8WPd3qS.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-2CgZVKNz.mjs → tree-YLD52CNT-DJcVQv94.mjs} +2 -2
- package/dist/{tree-YLD52CNT-2CgZVKNz.mjs.map → tree-YLD52CNT-DJcVQv94.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-uMt0rf4X.cjs → unexpand-CADSA4VO-BnOY-DGw.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-uMt0rf4X.cjs.map → unexpand-CADSA4VO-BnOY-DGw.cjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-DN7WjSgJ.mjs → unexpand-CADSA4VO-CnvXaCG2.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-DN7WjSgJ.mjs.map → unexpand-CADSA4VO-CnvXaCG2.mjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-BkO2mNi8.cjs → uniq-XSIZR6PB-BPU_uKCs.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-BkO2mNi8.cjs.map → uniq-XSIZR6PB-BPU_uKCs.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-i4UN8_wj.mjs → uniq-XSIZR6PB-CydFkKuG.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-i4UN8_wj.mjs.map → uniq-XSIZR6PB-CydFkKuG.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-DbAal6fW.cjs → wc-LF7NU4LA-DirTF3XA.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-DbAal6fW.cjs.map → wc-LF7NU4LA-DirTF3XA.cjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-B5iKJ_sK.mjs → wc-LF7NU4LA-MLxD0uQg.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-B5iKJ_sK.mjs.map → wc-LF7NU4LA-MLxD0uQg.mjs.map} +1 -1
- package/dist/{with-project-scope-D2Nxb_81.cjs → with-project-scope-DR42BsoV.cjs} +20 -4
- package/dist/with-project-scope-DR42BsoV.cjs.map +1 -0
- package/dist/{with-project-scope-BLKH8VDX.mjs → with-project-scope-SZ39WEgf.mjs} +20 -4
- package/dist/with-project-scope-SZ39WEgf.mjs.map +1 -0
- package/dist/{xan-Y6WF3IRG-PLXYTtLn.cjs → xan-Y6WF3IRG-Bs8xihNw.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-PLXYTtLn.cjs.map → xan-Y6WF3IRG-Bs8xihNw.cjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-B5YnpCBT.mjs → xan-Y6WF3IRG-DeancsK_.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-B5YnpCBT.mjs.map → xan-Y6WF3IRG-DeancsK_.mjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-C4U_Ysf1.cjs → xan-view-HDVKHFC2--Yx8d-hv.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-C4U_Ysf1.cjs.map → xan-view-HDVKHFC2--Yx8d-hv.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-WJOBrjRv.mjs → xan-view-HDVKHFC2-DR9CgP-R.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-WJOBrjRv.mjs.map → xan-view-HDVKHFC2-DR9CgP-R.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-CWF0HdOV.cjs → xargs-MGZPH7AX-B0IzjGcA.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-CWF0HdOV.cjs.map → xargs-MGZPH7AX-B0IzjGcA.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-D85Ko7xE.mjs → xargs-MGZPH7AX-CC9iSUtu.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-D85Ko7xE.mjs.map → xargs-MGZPH7AX-CC9iSUtu.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-BSSwWyVt.cjs → yq-4QJW3EQG-CIeK_-QH.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-BSSwWyVt.cjs.map → yq-4QJW3EQG-CIeK_-QH.cjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-BcuExFs8.mjs → yq-4QJW3EQG-ChhbgU5K.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-BcuExFs8.mjs.map → yq-4QJW3EQG-ChhbgU5K.mjs.map} +1 -1
- package/package.json +2 -2
- package/dist/config-BEXGfMWX.mjs.map +0 -1
- package/dist/config-BXIsWKDr.cjs.map +0 -1
- package/dist/dist-kYSK2aR1.cjs.map +0 -1
- package/dist/project-draft-notifier-B7K0aaAp.mjs.map +0 -1
- package/dist/project-draft-notifier-DlWmyn5m.cjs.map +0 -1
- package/dist/start-BBW9vi1A.mjs.map +0 -1
- package/dist/start-bgZZCOmu.cjs.map +0 -1
- package/dist/with-project-scope-BLKH8VDX.mjs.map +0 -1
- 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-
|
|
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-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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-
|
|
9418
|
+
//# sourceMappingURL=project-draft-notifier-CcuAbwzD.cjs.map
|