@keystrokehq/platform 0.1.25 → 0.1.26
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-6nTiL1Fx.cjs → awk2-LA3USKJP-DWN5gyAn.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-6nTiL1Fx.cjs.map → awk2-LA3USKJP-DWN5gyAn.cjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-DsFCxrAn.mjs → awk2-LA3USKJP-DeBBkGI5.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-DsFCxrAn.mjs.map → awk2-LA3USKJP-DeBBkGI5.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-Jli-NZKT.cjs → base64-C2AIWVNC-Dp8sCZAt.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-Jli-NZKT.cjs.map → base64-C2AIWVNC-Dp8sCZAt.cjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-BTfHxe6x.mjs → base64-C2AIWVNC-JuDjFqOp.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-BTfHxe6x.mjs.map → base64-C2AIWVNC-JuDjFqOp.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-Cl3zWejT.cjs → bash-YZ33HQZQ-DVA0EDj-.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-Cl3zWejT.cjs.map → bash-YZ33HQZQ-DVA0EDj-.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-BvR1blQy.mjs → bash-YZ33HQZQ-rOVeZOAg.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-BvR1blQy.mjs.map → bash-YZ33HQZQ-rOVeZOAg.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-p5WuEnly.cjs → cat-TSFMZVYS-COvFG8Nb.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-p5WuEnly.cjs.map → cat-TSFMZVYS-COvFG8Nb.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-BR3SDCDa.mjs → cat-TSFMZVYS-CXlrdMsd.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-BR3SDCDa.mjs.map → cat-TSFMZVYS-CXlrdMsd.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-DnLsyMd1.cjs → chunk-5H5SCKJM-CHHdX4ki.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-DnLsyMd1.cjs.map → chunk-5H5SCKJM-CHHdX4ki.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-CPKgF86S.mjs → chunk-5H5SCKJM-Dkx3HLwU.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-CPKgF86S.mjs.map → chunk-5H5SCKJM-Dkx3HLwU.mjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-Dj95F41M.cjs → chunk-AQ6FYS2X-BypvbWc4.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-Dj95F41M.cjs.map → chunk-AQ6FYS2X-BypvbWc4.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-CUa1A4Pd.mjs → chunk-AQ6FYS2X-C_yeVyzo.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-CUa1A4Pd.mjs.map → chunk-AQ6FYS2X-C_yeVyzo.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-Crh-KqiZ.cjs → chunk-CHFEPBH4-B713gemY.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-Crh-KqiZ.cjs.map → chunk-CHFEPBH4-B713gemY.cjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-CnDOsQ68.mjs → chunk-CHFEPBH4-BN_FjUum.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-CnDOsQ68.mjs.map → chunk-CHFEPBH4-BN_FjUum.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-C3Qo8RVI.cjs → chunk-EBAPSGAO-C5khy_yB.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-C3Qo8RVI.cjs.map → chunk-EBAPSGAO-C5khy_yB.cjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-B60xzKy-.mjs → chunk-EBAPSGAO-CWkUWuMF.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-B60xzKy-.mjs.map → chunk-EBAPSGAO-CWkUWuMF.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CzSjgGrS.mjs → chunk-LEKBROJD-DGOBGAWj.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-CzSjgGrS.mjs.map → chunk-LEKBROJD-DGOBGAWj.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CQrKRfn9.cjs → chunk-LEKBROJD-n0FRgkoB.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-CQrKRfn9.cjs.map → chunk-LEKBROJD-n0FRgkoB.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-BlYPREz9.cjs → chunk-VPADYNBD-B4yWrLcA.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-BlYPREz9.cjs.map → chunk-VPADYNBD-B4yWrLcA.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-Bu1xj_qj.mjs → chunk-VPADYNBD-Dg8PNXJd.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-Bu1xj_qj.mjs.map → chunk-VPADYNBD-Dg8PNXJd.mjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-CmE-atJH.cjs → chunk-YCLFEX4T-Bnzy1Euf.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-CmE-atJH.cjs.map → chunk-YCLFEX4T-Bnzy1Euf.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-BMs3IOYN.mjs → chunk-YCLFEX4T-DU6t56E4.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-BMs3IOYN.mjs.map → chunk-YCLFEX4T-DU6t56E4.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-CKCd9cj4.mjs → column-XT6UFXNQ-5YutVL6D.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-CKCd9cj4.mjs.map → column-XT6UFXNQ-5YutVL6D.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-C-MvTg4x.cjs → column-XT6UFXNQ-Dy7Oa0td.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-C-MvTg4x.cjs.map → column-XT6UFXNQ-Dy7Oa0td.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-DIsxSu6X.cjs → comm-VV2LDX2J-CAqAa0VH.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-DIsxSu6X.cjs.map → comm-VV2LDX2J-CAqAa0VH.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-Cxkv2cbu.mjs → comm-VV2LDX2J-NATbHp7x.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-Cxkv2cbu.mjs.map → comm-VV2LDX2J-NATbHp7x.mjs.map} +1 -1
- package/dist/{config-4tlyrD1h.d.mts → config-Bf_tiPRV.d.mts} +3 -3
- package/dist/{config-DCMtEjGV.d.cts → config-DiHYzgnA.d.cts} +3 -3
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +1 -1
- package/dist/{cp-BISAAS7A-RoHZxKSQ.cjs → cp-BISAAS7A-CsllNNA2.cjs} +2 -2
- package/dist/{cp-BISAAS7A-RoHZxKSQ.cjs.map → cp-BISAAS7A-CsllNNA2.cjs.map} +1 -1
- package/dist/{cp-BISAAS7A-CpbLLWK0.mjs → cp-BISAAS7A-ptJev1Ed.mjs} +2 -2
- package/dist/{cp-BISAAS7A-CpbLLWK0.mjs.map → cp-BISAAS7A-ptJev1Ed.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-DV8QkVm0.cjs → cut-OKARJCCV-C3IgdttS.cjs} +3 -3
- package/dist/{cut-OKARJCCV-DV8QkVm0.cjs.map → cut-OKARJCCV-C3IgdttS.cjs.map} +1 -1
- package/dist/{cut-OKARJCCV-Co1hDP2h.mjs → cut-OKARJCCV-CAXXP7Q-.mjs} +3 -3
- package/dist/{cut-OKARJCCV-Co1hDP2h.mjs.map → cut-OKARJCCV-CAXXP7Q-.mjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-CeQncm_4.cjs → diff-MWJFIG7X-BN4jYNC5.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-CeQncm_4.cjs.map → diff-MWJFIG7X-BN4jYNC5.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-Buur00F5.mjs → diff-MWJFIG7X-CvZCw_Zo.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-Buur00F5.mjs.map → diff-MWJFIG7X-CvZCw_Zo.mjs.map} +1 -1
- package/dist/{dist-BGnpuTuc.cjs → dist-BSIIH4ft.cjs} +1431 -244
- package/dist/dist-BSIIH4ft.cjs.map +1 -0
- package/dist/{dist-DEUmH1sy.mjs → dist-Dfoa0fsU.mjs} +1361 -246
- package/dist/dist-Dfoa0fsU.mjs.map +1 -0
- package/dist/{du-572XNP42-CjV9eojc.cjs → du-572XNP42-DlYoI7xK.cjs} +2 -2
- package/dist/{du-572XNP42-CjV9eojc.cjs.map → du-572XNP42-DlYoI7xK.cjs.map} +1 -1
- package/dist/{du-572XNP42-BN--uF4D.mjs → du-572XNP42-dXgrmb6w.mjs} +2 -2
- package/dist/{du-572XNP42-BN--uF4D.mjs.map → du-572XNP42-dXgrmb6w.mjs.map} +1 -1
- package/dist/{env-36M5BO7M-DAa5KfBX.cjs → env-36M5BO7M-CiUSJDkN.cjs} +2 -2
- package/dist/{env-36M5BO7M-DAa5KfBX.cjs.map → env-36M5BO7M-CiUSJDkN.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-D69jRYN4.mjs → env-36M5BO7M-D_IGqT9p.mjs} +2 -2
- package/dist/{env-36M5BO7M-D69jRYN4.mjs.map → env-36M5BO7M-D_IGqT9p.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-COLerElO.mjs → expand-JSPG6VOP-CyEF3l9T.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-COLerElO.mjs.map → expand-JSPG6VOP-CyEF3l9T.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-C6vKMQyI.cjs → expand-JSPG6VOP-DI9tAEq8.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-C6vKMQyI.cjs.map → expand-JSPG6VOP-DI9tAEq8.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-Bq-liRWE.mjs → expr-5JAACS4X-BjSLGpzH.mjs} +2 -2
- package/dist/{expr-5JAACS4X-Bq-liRWE.mjs.map → expr-5JAACS4X-BjSLGpzH.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-DwNhN5_2.cjs → expr-5JAACS4X-BtODvrh-.cjs} +2 -2
- package/dist/{expr-5JAACS4X-DwNhN5_2.cjs.map → expr-5JAACS4X-BtODvrh-.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-CZJwhn7l.mjs → find-INTH3OLC-BcssH53Z.mjs} +3 -3
- package/dist/{find-INTH3OLC-CZJwhn7l.mjs.map → find-INTH3OLC-BcssH53Z.mjs.map} +1 -1
- package/dist/{find-INTH3OLC-CUamPw7X.cjs → find-INTH3OLC-CgU4UvVu.cjs} +3 -3
- package/dist/{find-INTH3OLC-CUamPw7X.cjs.map → find-INTH3OLC-CgU4UvVu.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-Cu6mhoq6.cjs → fold-4TQNYMSW-C-vHdcsu.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-Cu6mhoq6.cjs.map → fold-4TQNYMSW-C-vHdcsu.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-GT1iyvMw.mjs → fold-4TQNYMSW-W2QBLbOw.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-GT1iyvMw.mjs.map → fold-4TQNYMSW-W2QBLbOw.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-D2lsL0yl.cjs → grep-V3LQVMRQ-CFEy1H5w.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-D2lsL0yl.cjs.map → grep-V3LQVMRQ-CFEy1H5w.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BZCEkiLT.mjs → grep-V3LQVMRQ-D2erCIt8.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BZCEkiLT.mjs.map → grep-V3LQVMRQ-D2erCIt8.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-4WU25K8t.cjs → gzip-O5ASJAFY-BFMYd-hT.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-4WU25K8t.cjs.map → gzip-O5ASJAFY-BFMYd-hT.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-BRUoPm0T.mjs → gzip-O5ASJAFY-CqxUEEM2.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-BRUoPm0T.mjs.map → gzip-O5ASJAFY-CqxUEEM2.mjs.map} +1 -1
- package/dist/{head-442HYESI-BQswaDJF.mjs → head-442HYESI-BUT7-OAn.mjs} +2 -2
- package/dist/{head-442HYESI-BQswaDJF.mjs.map → head-442HYESI-BUT7-OAn.mjs.map} +1 -1
- package/dist/{head-442HYESI-CREwdwGh.cjs → head-442HYESI-Dl61xdxd.cjs} +2 -2
- package/dist/{head-442HYESI-CREwdwGh.cjs.map → head-442HYESI-Dl61xdxd.cjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-CyQGg7tY.mjs → help-HZ6M2CKN-BNhOdIlA.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-CyQGg7tY.mjs.map → help-HZ6M2CKN-BNhOdIlA.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-Dm1xJuah.cjs → help-HZ6M2CKN-D58VQaUX.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-Dm1xJuah.cjs.map → help-HZ6M2CKN-D58VQaUX.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-kxS6FqAo.cjs → html-to-markdown-JW4MSQZO-Cy2yEvwt.cjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-kxS6FqAo.cjs.map → html-to-markdown-JW4MSQZO-Cy2yEvwt.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-bFXHY2YJ.mjs → html-to-markdown-JW4MSQZO-D77ZtAkg.mjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-bFXHY2YJ.mjs.map → html-to-markdown-JW4MSQZO-D77ZtAkg.mjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-D4bq1eah.cjs → join-TBRGI3LQ-CGvygkdd.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-D4bq1eah.cjs.map → join-TBRGI3LQ-CGvygkdd.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-mMKbGeyt.mjs → join-TBRGI3LQ-DX7NMuzt.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-mMKbGeyt.mjs.map → join-TBRGI3LQ-DX7NMuzt.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-BtVEt-iG.mjs → jq-4XLYLOS5-C58Dd7RS.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-BtVEt-iG.mjs.map → jq-4XLYLOS5-C58Dd7RS.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-1kPGLNfP.cjs → jq-4XLYLOS5-CcpoXWem.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-1kPGLNfP.cjs.map → jq-4XLYLOS5-CcpoXWem.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-BiJgLg8R.cjs → js-exec-N5KEZBH7-BfVFKq8I.cjs} +4 -4
- package/dist/{js-exec-N5KEZBH7-BiJgLg8R.cjs.map → js-exec-N5KEZBH7-BfVFKq8I.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-yV-xrF3D.mjs → js-exec-N5KEZBH7-PxuNBAca.mjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-yV-xrF3D.mjs.map → js-exec-N5KEZBH7-PxuNBAca.mjs.map} +1 -1
- package/dist/{lib-B8KKXVFM.mjs → lib-C3b113o2.mjs} +2 -2
- package/dist/{lib-B8KKXVFM.mjs.map → lib-C3b113o2.mjs.map} +1 -1
- package/dist/{lib-2PzUfcog.cjs → lib-CB6hGKB-.cjs} +2 -2
- package/dist/{lib-2PzUfcog.cjs.map → lib-CB6hGKB-.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-Dn6vKThL.mjs → ln-4LGSXXGD-C8uxwN4w.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-Dn6vKThL.mjs.map → ln-4LGSXXGD-C8uxwN4w.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-BzwowxRB.cjs → ln-4LGSXXGD-D1ZvU7qg.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-BzwowxRB.cjs.map → ln-4LGSXXGD-D1ZvU7qg.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-CUJkuUh-.cjs → ls-ZJGQER7M-BIFh_LBI.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-CUJkuUh-.cjs.map → ls-ZJGQER7M-BIFh_LBI.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-BeJZta9T.mjs → ls-ZJGQER7M-VlE8NU2n.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-BeJZta9T.mjs.map → ls-ZJGQER7M-VlE8NU2n.mjs.map} +1 -1
- package/dist/{lzma--dxpHlNq.cjs → lzma-BFhxhjwM.cjs} +3 -3
- package/dist/{lzma--dxpHlNq.cjs.map → lzma-BFhxhjwM.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CSOni4rN.mjs → md5sum-SPU24VSG-D9FkR68Z.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CSOni4rN.mjs.map → md5sum-SPU24VSG-D9FkR68Z.mjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CbRWoiQV.cjs → md5sum-SPU24VSG-DeBwcDpn.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CbRWoiQV.cjs.map → md5sum-SPU24VSG-DeBwcDpn.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-DQZ1k-4g.cjs → mkdir-MEPGZOB6-CTaJw5WD.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-DQZ1k-4g.cjs.map → mkdir-MEPGZOB6-CTaJw5WD.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-X9vy2RCy.mjs → mkdir-MEPGZOB6-DKhEU_mo.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-X9vy2RCy.mjs.map → mkdir-MEPGZOB6-DKhEU_mo.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-CoEt2Xu7.cjs → mv-W5BIQ646-04XTiLIP.cjs} +2 -2
- package/dist/{mv-W5BIQ646-CoEt2Xu7.cjs.map → mv-W5BIQ646-04XTiLIP.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-D6ALdw02.mjs → mv-W5BIQ646-wEz7EErl.mjs} +2 -2
- package/dist/{mv-W5BIQ646-D6ALdw02.mjs.map → mv-W5BIQ646-wEz7EErl.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DDQ244Zw.cjs → nl-WSDW7I4O-Bc1YFLf6.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-DDQ244Zw.cjs.map → nl-WSDW7I4O-Bc1YFLf6.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DyeXenY-.mjs → nl-WSDW7I4O-BxQfwu-N.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DyeXenY-.mjs.map → nl-WSDW7I4O-BxQfwu-N.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP--Dv5qEwr.cjs → od-WOKFDJTP-BMJoqBvk.cjs} +2 -2
- package/dist/{od-WOKFDJTP--Dv5qEwr.cjs.map → od-WOKFDJTP-BMJoqBvk.cjs.map} +1 -1
- package/dist/{od-WOKFDJTP-C4rrBoz_.mjs → od-WOKFDJTP-BMjM1Vpo.mjs} +2 -2
- package/dist/{od-WOKFDJTP-C4rrBoz_.mjs.map → od-WOKFDJTP-BMjM1Vpo.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-Bji1Bpv0.mjs → paste-7JC6S4DX-BNyYBkM9.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-Bji1Bpv0.mjs.map → paste-7JC6S4DX-BNyYBkM9.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-B3VzuAt0.cjs → paste-7JC6S4DX-xeKsL7xT.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-B3VzuAt0.cjs.map → paste-7JC6S4DX-xeKsL7xT.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-BTeOHCJZ.cjs → printf-TWGXF445-DYS8xu0v.cjs} +3 -3
- package/dist/{printf-TWGXF445-BTeOHCJZ.cjs.map → printf-TWGXF445-DYS8xu0v.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-BlhAZROi.mjs → printf-TWGXF445-XVD9Mxrm.mjs} +3 -3
- package/dist/{printf-TWGXF445-BlhAZROi.mjs.map → printf-TWGXF445-XVD9Mxrm.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-DG1ouNsU.cjs → python3-POMOR4OA-DYGxPjXO.cjs} +4 -4
- package/dist/{python3-POMOR4OA-DG1ouNsU.cjs.map → python3-POMOR4OA-DYGxPjXO.cjs.map} +1 -1
- package/dist/{python3-POMOR4OA-DR8mqMXh.mjs → python3-POMOR4OA-Dnqvkl59.mjs} +3 -3
- package/dist/{python3-POMOR4OA-DR8mqMXh.mjs.map → python3-POMOR4OA-Dnqvkl59.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CI_VGXqm.mjs → rev-5EHFX4EJ-DhVvFoTy.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CI_VGXqm.mjs.map → rev-5EHFX4EJ-DhVvFoTy.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CTqxt9T2.cjs → rev-5EHFX4EJ-pW6JW5qN.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CTqxt9T2.cjs.map → rev-5EHFX4EJ-pW6JW5qN.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BxiM0Km5.cjs → rg-S4FXYXWB-C73Aq2Xr.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-BxiM0Km5.cjs.map → rg-S4FXYXWB-C73Aq2Xr.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BV530Cw5.mjs → rg-S4FXYXWB-z2oeRO1P.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-BV530Cw5.mjs.map → rg-S4FXYXWB-z2oeRO1P.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-BZ_Vwtjq.cjs → rm-SSGETQVQ-CHrR_Tku.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-BZ_Vwtjq.cjs.map → rm-SSGETQVQ-CHrR_Tku.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-0mxnhARQ.mjs → rm-SSGETQVQ-Jci5Ip6D.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-0mxnhARQ.mjs.map → rm-SSGETQVQ-Jci5Ip6D.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-DSmolqBX.cjs → rmdir-OC4ZLPYA-C9GToyPE.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-DSmolqBX.cjs.map → rmdir-OC4ZLPYA-C9GToyPE.cjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-B91oqgzk.mjs → rmdir-OC4ZLPYA-CbUJDjKj.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-B91oqgzk.mjs.map → rmdir-OC4ZLPYA-CbUJDjKj.mjs.map} +1 -1
- package/dist/run.cjs +1 -1
- package/dist/run.mjs +1 -1
- package/dist/{sed-S5UIK574-CUHVLRCU.cjs → sed-S5UIK574-CKdzn0sh.cjs} +2 -2
- package/dist/{sed-S5UIK574-CUHVLRCU.cjs.map → sed-S5UIK574-CKdzn0sh.cjs.map} +1 -1
- package/dist/{sed-S5UIK574-Bn1VT3VJ.mjs → sed-S5UIK574-DMSLNP6f.mjs} +2 -2
- package/dist/{sed-S5UIK574-Bn1VT3VJ.mjs.map → sed-S5UIK574-DMSLNP6f.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-DL_UeFqk.mjs → sha1sum-2PTOAFR6-BvcG60rc.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-DL_UeFqk.mjs.map → sha1sum-2PTOAFR6-BvcG60rc.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-DqcsWk6l.cjs → sha1sum-2PTOAFR6-D-6ahlIg.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-DqcsWk6l.cjs.map → sha1sum-2PTOAFR6-D-6ahlIg.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-CmnB6TL1.mjs → sha256sum-NS7D3IXX-DVH9Rp51.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-CmnB6TL1.mjs.map → sha256sum-NS7D3IXX-DVH9Rp51.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-DzpZonik.cjs → sha256sum-NS7D3IXX-Drwo830V.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-DzpZonik.cjs.map → sha256sum-NS7D3IXX-Drwo830V.cjs.map} +1 -1
- package/dist/{sleep-X22JJINO-CbNXwoha.mjs → sleep-X22JJINO-B-F8EJ1A.mjs} +2 -2
- package/dist/{sleep-X22JJINO-CbNXwoha.mjs.map → sleep-X22JJINO-B-F8EJ1A.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-DFFy9Bw9.cjs → sleep-X22JJINO-VzGR_aAP.cjs} +2 -2
- package/dist/{sleep-X22JJINO-DFFy9Bw9.cjs.map → sleep-X22JJINO-VzGR_aAP.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-BYbDNrah.mjs → sort-SW2YEO5B-BlCI4ke5.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-BYbDNrah.mjs.map → sort-SW2YEO5B-BlCI4ke5.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-gdNgTdnH.cjs → sort-SW2YEO5B-oXMaUVfX.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-gdNgTdnH.cjs.map → sort-SW2YEO5B-oXMaUVfX.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-DaVNgVyU.mjs → split-4KKZZXXE-DInsLVFn.mjs} +2 -2
- package/dist/{split-4KKZZXXE-DaVNgVyU.mjs.map → split-4KKZZXXE-DInsLVFn.mjs.map} +1 -1
- package/dist/{split-4KKZZXXE-BQei9Yb7.cjs → split-4KKZZXXE-uNycTBLx.cjs} +2 -2
- package/dist/{split-4KKZZXXE-BQei9Yb7.cjs.map → split-4KKZZXXE-uNycTBLx.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-Did6BRU0.cjs → sqlite3-CGOEFJAO-DLGaPKmF.cjs} +4 -4
- package/dist/{sqlite3-CGOEFJAO-Did6BRU0.cjs.map → sqlite3-CGOEFJAO-DLGaPKmF.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-DWuK8T1P.mjs → sqlite3-CGOEFJAO-DdQnH7sK.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-DWuK8T1P.mjs.map → sqlite3-CGOEFJAO-DdQnH7sK.mjs.map} +1 -1
- package/dist/{start-BXs2tRMp.cjs → start-B-r5AcHg.cjs} +1109 -129
- package/dist/start-B-r5AcHg.cjs.map +1 -0
- package/dist/{start-Bkcu3Xyf.mjs → start-BopA4OXE.mjs} +1109 -129
- package/dist/start-BopA4OXE.mjs.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-DghW6u1V.mjs → strings-6WDHLGMX-CQhR5NWI.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-DghW6u1V.mjs.map → strings-6WDHLGMX-CQhR5NWI.mjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-BYLV5mVI.cjs → strings-6WDHLGMX-CgNUl2be.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-BYLV5mVI.cjs.map → strings-6WDHLGMX-CgNUl2be.cjs.map} +1 -1
- package/dist/{tac-2STMMJYW-dyBrgE3g.mjs → tac-2STMMJYW-DPVvOOFh.mjs} +2 -2
- package/dist/{tac-2STMMJYW-dyBrgE3g.mjs.map → tac-2STMMJYW-DPVvOOFh.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-BUj2w_ls.cjs → tac-2STMMJYW-XOnEZ_Pa.cjs} +2 -2
- package/dist/{tac-2STMMJYW-BUj2w_ls.cjs.map → tac-2STMMJYW-XOnEZ_Pa.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-Cb1qzi12.cjs → tail-R4PCA2C4-BPlLX9IB.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-Cb1qzi12.cjs.map → tail-R4PCA2C4-BPlLX9IB.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-BYcpWm-i.mjs → tail-R4PCA2C4-BXsd_oGy.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-BYcpWm-i.mjs.map → tail-R4PCA2C4-BXsd_oGy.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-y56eAWkM.cjs → tar-STHHZTZ6-BSs3Wex8.cjs} +5 -5
- package/dist/{tar-STHHZTZ6-y56eAWkM.cjs.map → tar-STHHZTZ6-BSs3Wex8.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-FTWsSEpr.mjs → tar-STHHZTZ6-DTf5Ifnn.mjs} +4 -4
- package/dist/{tar-STHHZTZ6-FTWsSEpr.mjs.map → tar-STHHZTZ6-DTf5Ifnn.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-oYjZsafd.cjs → tee-YUZ2FKCJ-DgWILkVl.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-oYjZsafd.cjs.map → tee-YUZ2FKCJ-DgWILkVl.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-DArfnCcS.mjs → tee-YUZ2FKCJ-HOwDepoa.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-DArfnCcS.mjs.map → tee-YUZ2FKCJ-HOwDepoa.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-BTetD0sZ.cjs → time-D4LNBSWX-Czgb4a8J.cjs} +2 -2
- package/dist/{time-D4LNBSWX-BTetD0sZ.cjs.map → time-D4LNBSWX-Czgb4a8J.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-D0AgPrVU.mjs → time-D4LNBSWX-DShdsFLL.mjs} +2 -2
- package/dist/{time-D4LNBSWX-D0AgPrVU.mjs.map → time-D4LNBSWX-DShdsFLL.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-m0hOl9RU.mjs → timeout-YDCRSLPQ-CrDWh7NY.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-m0hOl9RU.mjs.map → timeout-YDCRSLPQ-CrDWh7NY.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-D_NEhBtI.cjs → timeout-YDCRSLPQ-fyDe4rrM.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-D_NEhBtI.cjs.map → timeout-YDCRSLPQ-fyDe4rrM.cjs.map} +1 -1
- package/dist/{touch-UA33VN3N-D-0iV3bm.mjs → touch-UA33VN3N-D8fHlx6X.mjs} +2 -2
- package/dist/{touch-UA33VN3N-D-0iV3bm.mjs.map → touch-UA33VN3N-D8fHlx6X.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-C3gdLoXZ.cjs → touch-UA33VN3N-QQeRWr4H.cjs} +2 -2
- package/dist/{touch-UA33VN3N-C3gdLoXZ.cjs.map → touch-UA33VN3N-QQeRWr4H.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-DgJzlhNw.cjs → tr-36LHWFRQ-BvZgWBI7.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-DgJzlhNw.cjs.map → tr-36LHWFRQ-BvZgWBI7.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-DSKHB_Nc.mjs → tr-36LHWFRQ-DkmoHg-J.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-DSKHB_Nc.mjs.map → tr-36LHWFRQ-DkmoHg-J.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-io_fc43x.cjs → tree-YLD52CNT-D28PbXCj.cjs} +2 -2
- package/dist/{tree-YLD52CNT-io_fc43x.cjs.map → tree-YLD52CNT-D28PbXCj.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-BWhZ09Ar.mjs → tree-YLD52CNT-xjlCOZ0t.mjs} +2 -2
- package/dist/{tree-YLD52CNT-BWhZ09Ar.mjs.map → tree-YLD52CNT-xjlCOZ0t.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-CAimwjsv.mjs → unexpand-CADSA4VO-Bhs2BUQ5.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-CAimwjsv.mjs.map → unexpand-CADSA4VO-Bhs2BUQ5.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-zLmcC151.cjs → unexpand-CADSA4VO-Ct-tDYst.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-zLmcC151.cjs.map → unexpand-CADSA4VO-Ct-tDYst.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-ZZpwZg0c.cjs → uniq-XSIZR6PB-4d0zRoTa.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-ZZpwZg0c.cjs.map → uniq-XSIZR6PB-4d0zRoTa.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-CWAKZmGl.mjs → uniq-XSIZR6PB-B5Bk1TsC.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-CWAKZmGl.mjs.map → uniq-XSIZR6PB-B5Bk1TsC.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-DhNBsFLd.mjs → wc-LF7NU4LA-B3_zHGUI.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-DhNBsFLd.mjs.map → wc-LF7NU4LA-B3_zHGUI.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-C4FhC6BH.cjs → wc-LF7NU4LA-D8KKcjuc.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-C4FhC6BH.cjs.map → wc-LF7NU4LA-D8KKcjuc.cjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-DN7DU1ab.mjs → xan-Y6WF3IRG-9KChSctb.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-DN7DU1ab.mjs.map → xan-Y6WF3IRG-9KChSctb.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-BU79SNfn.cjs → xan-Y6WF3IRG-DlMObnyI.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-BU79SNfn.cjs.map → xan-Y6WF3IRG-DlMObnyI.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-DqGQzO2o.mjs → xan-view-HDVKHFC2-CuXxKOL_.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-DqGQzO2o.mjs.map → xan-view-HDVKHFC2-CuXxKOL_.mjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-Dew1rWvx.cjs → xan-view-HDVKHFC2-D4UaWbCt.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-Dew1rWvx.cjs.map → xan-view-HDVKHFC2-D4UaWbCt.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-BH-SyQsU.mjs → xargs-MGZPH7AX-BdScic0s.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-BH-SyQsU.mjs.map → xargs-MGZPH7AX-BdScic0s.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-BS-zAwl9.cjs → xargs-MGZPH7AX-DY0UyJRW.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-BS-zAwl9.cjs.map → xargs-MGZPH7AX-DY0UyJRW.cjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-CY_mBr2e.mjs → yq-4QJW3EQG-BvkjygaH.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-CY_mBr2e.mjs.map → yq-4QJW3EQG-BvkjygaH.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-B_e-AoZW.cjs → yq-4QJW3EQG-CF1OM3GO.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-B_e-AoZW.cjs.map → yq-4QJW3EQG-CF1OM3GO.cjs.map} +1 -1
- package/package.json +3 -3
- package/dist/dist-BGnpuTuc.cjs.map +0 -1
- package/dist/dist-DEUmH1sy.mjs.map +0 -1
- package/dist/start-BXs2tRMp.cjs.map +0 -1
- package/dist/start-Bkcu3Xyf.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
2
|
import Docker from "dockerode";
|
|
3
3
|
import { mkdir } from "node:fs/promises";
|
|
4
|
-
import { DEFAULT_DATABASE_URL, claimDueTriggers, claimDueTriggersForOrg, claimNextJob, clearCredentialInstanceDefaults, createPostgresCancelChannel, decryptCredentialPayload, disableAllTriggerSchedules, disableTriggerSchedulesNotInSlugs, encryptCredentialPayload, enqueueJob, ensureOAuthCredentialInstance, failWorkflowRun, getProjectScopeId, inferDialect, listEnabledScheduledTriggers, listExecutableAttachmentsByTriggerIds, markJobComplete, markJobFailed, requeueExpiredLeases, resolvePostgresUrlFromEnv, resolveProjectDatabaseUrlFromEnv, scheduleJobRetry, selectActiveEphemeralScheduledTriggerSlugs, selectCredentialInstancesForScope, selectTriggerBySlug, setTriggerScheduleEnabled, upsertCredentialInstance, upsertTriggerScheduleFields } from "@keystrokehq/database";
|
|
4
|
+
import { DEFAULT_DATABASE_URL, claimDueTriggers, claimDueTriggersForOrg, claimNextJob, clearCredentialInstanceDefaults, createPostgresCancelChannel, decryptCredentialPayload, disableAllTriggerSchedules, disableTriggerSchedulesNotInSlugs, encryptCredentialPayload, enqueueJob, ensureOAuthCredentialInstance, failWorkflowRun, getProjectScopeId, getServerTenantScopeId, inferDialect, isDatabaseInitialized, listCredentialAssignmentsByTarget, listEnabledScheduledTriggers, listExecutableAttachmentsByTriggerIds, markJobComplete, markJobFailed, requeueExpiredLeases, resolvePostgresUrlFromEnv, resolveProjectDatabaseUrlFromEnv, scheduleJobRetry, selectActiveEphemeralScheduledTriggerSlugs, selectCredentialInstanceById, selectCredentialInstancesForScope, selectTriggerBySlug, setTriggerScheduleEnabled, upsertCredentialInstance, upsertTriggerScheduleFields } from "@keystrokehq/database";
|
|
5
5
|
import EventEmitter$1, { EventEmitter } from "node:events";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -179,7 +179,7 @@ function slugify(input) {
|
|
|
179
179
|
return input.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
180
180
|
}
|
|
181
181
|
const captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => {};
|
|
182
|
-
function isObject(data) {
|
|
182
|
+
function isObject$3(data) {
|
|
183
183
|
return typeof data === "object" && data !== null && !Array.isArray(data);
|
|
184
184
|
}
|
|
185
185
|
const allowsEval = /* @__PURE__ */ cached(() => {
|
|
@@ -193,12 +193,12 @@ const allowsEval = /* @__PURE__ */ cached(() => {
|
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
195
|
function isPlainObject$1(o) {
|
|
196
|
-
if (isObject(o) === false) return false;
|
|
196
|
+
if (isObject$3(o) === false) return false;
|
|
197
197
|
const ctor = o.constructor;
|
|
198
198
|
if (ctor === void 0) return true;
|
|
199
199
|
if (typeof ctor !== "function") return true;
|
|
200
200
|
const prot = ctor.prototype;
|
|
201
|
-
if (isObject(prot) === false) return false;
|
|
201
|
+
if (isObject$3(prot) === false) return false;
|
|
202
202
|
if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) return false;
|
|
203
203
|
return true;
|
|
204
204
|
}
|
|
@@ -1586,7 +1586,7 @@ const $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => {
|
|
|
1586
1586
|
}
|
|
1587
1587
|
return propValues;
|
|
1588
1588
|
});
|
|
1589
|
-
const isObject$1 = isObject;
|
|
1589
|
+
const isObject$1 = isObject$3;
|
|
1590
1590
|
const catchall = def.catchall;
|
|
1591
1591
|
let value;
|
|
1592
1592
|
inst._zod.parse = (payload, ctx) => {
|
|
@@ -1715,7 +1715,7 @@ const $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def)
|
|
|
1715
1715
|
return (payload, ctx) => fn(shape, payload, ctx);
|
|
1716
1716
|
};
|
|
1717
1717
|
let fastpass;
|
|
1718
|
-
const isObject$2 = isObject;
|
|
1718
|
+
const isObject$2 = isObject$3;
|
|
1719
1719
|
const jit = !globalConfig.jitless;
|
|
1720
1720
|
const fastEnabled = jit && allowsEval.value;
|
|
1721
1721
|
const catchall = def.catchall;
|
|
@@ -1827,7 +1827,7 @@ const $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUn
|
|
|
1827
1827
|
});
|
|
1828
1828
|
inst._zod.parse = (payload, ctx) => {
|
|
1829
1829
|
const input = payload.value;
|
|
1830
|
-
if (!isObject(input)) {
|
|
1830
|
+
if (!isObject$3(input)) {
|
|
1831
1831
|
payload.issues.push({
|
|
1832
1832
|
code: "invalid_type",
|
|
1833
1833
|
expected: "object",
|
|
@@ -2298,6 +2298,21 @@ function handleReadonlyResult(payload) {
|
|
|
2298
2298
|
payload.value = Object.freeze(payload.value);
|
|
2299
2299
|
return payload;
|
|
2300
2300
|
}
|
|
2301
|
+
const $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => {
|
|
2302
|
+
$ZodType.init(inst, def);
|
|
2303
|
+
defineLazy(inst._zod, "innerType", () => {
|
|
2304
|
+
const d = def;
|
|
2305
|
+
if (!d._cachedInner) d._cachedInner = def.getter();
|
|
2306
|
+
return d._cachedInner;
|
|
2307
|
+
});
|
|
2308
|
+
defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern);
|
|
2309
|
+
defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues);
|
|
2310
|
+
defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0);
|
|
2311
|
+
defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0);
|
|
2312
|
+
inst._zod.parse = (payload, ctx) => {
|
|
2313
|
+
return inst._zod.innerType._zod.run(payload, ctx);
|
|
2314
|
+
};
|
|
2315
|
+
});
|
|
2301
2316
|
const $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => {
|
|
2302
2317
|
$ZodCheck.init(inst, def);
|
|
2303
2318
|
$ZodType.init(inst, def);
|
|
@@ -3432,6 +3447,12 @@ const optionalProcessor = (schema, ctx, _json, params) => {
|
|
|
3432
3447
|
const seen = ctx.seen.get(schema);
|
|
3433
3448
|
seen.ref = def.innerType;
|
|
3434
3449
|
};
|
|
3450
|
+
const lazyProcessor = (schema, ctx, _json, params) => {
|
|
3451
|
+
const innerType = schema._zod.innerType;
|
|
3452
|
+
process$1(innerType, ctx, params);
|
|
3453
|
+
const seen = ctx.seen.get(schema);
|
|
3454
|
+
seen.ref = innerType;
|
|
3455
|
+
};
|
|
3435
3456
|
const ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => {
|
|
3436
3457
|
$ZodISODateTime.init(inst, def);
|
|
3437
3458
|
ZodStringFormat.init(inst, def);
|
|
@@ -4287,6 +4308,18 @@ function readonly(innerType) {
|
|
|
4287
4308
|
innerType
|
|
4288
4309
|
});
|
|
4289
4310
|
}
|
|
4311
|
+
const ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => {
|
|
4312
|
+
$ZodLazy.init(inst, def);
|
|
4313
|
+
ZodType.init(inst, def);
|
|
4314
|
+
inst._zod.processJSONSchema = (ctx, json, params) => lazyProcessor(inst, ctx, json, params);
|
|
4315
|
+
inst.unwrap = () => inst._zod.def.getter();
|
|
4316
|
+
});
|
|
4317
|
+
function lazy(getter) {
|
|
4318
|
+
return new ZodLazy({
|
|
4319
|
+
type: "lazy",
|
|
4320
|
+
getter
|
|
4321
|
+
});
|
|
4322
|
+
}
|
|
4290
4323
|
const ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => {
|
|
4291
4324
|
$ZodCustom.init(inst, def);
|
|
4292
4325
|
ZodType.init(inst, def);
|
|
@@ -4958,10 +4991,244 @@ const AppSlugSchema$1 = ProjectSlugSchema$1;
|
|
|
4958
4991
|
function resolveExplicitPublicPlatformOrigin$1(env = process.env) {
|
|
4959
4992
|
return env.PUBLIC_PLATFORM_URL?.replace(/\/$/, "") || void 0;
|
|
4960
4993
|
}
|
|
4994
|
+
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
4995
|
+
const CredentialAuthKindSchema$1 = _enum([
|
|
4996
|
+
"api_key",
|
|
4997
|
+
"oauth_managed",
|
|
4998
|
+
"keystroke"
|
|
4999
|
+
]);
|
|
5000
|
+
/**
|
|
5001
|
+
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
5002
|
+
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
5003
|
+
* resolver tries the project default, then the org default, then throws.
|
|
5004
|
+
*/
|
|
5005
|
+
const CredentialScopeTypeSchema$1 = _enum([
|
|
5006
|
+
"organization",
|
|
5007
|
+
"project",
|
|
5008
|
+
"user"
|
|
5009
|
+
]);
|
|
5010
|
+
CredentialAuthKindSchema$1.options;
|
|
5011
|
+
CredentialScopeTypeSchema$1.options;
|
|
5012
|
+
/** Non-empty human-readable label or description (trimmed). */
|
|
5013
|
+
const requiredDisplayTextSchema$1 = string().trim().min(1);
|
|
5014
|
+
/**
|
|
5015
|
+
* Structural workflow-canvas graph contract.
|
|
5016
|
+
*
|
|
5017
|
+
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
5018
|
+
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
5019
|
+
* is the single source of truth shared by:
|
|
5020
|
+
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
5021
|
+
* - the platform route that serves the canvas, and
|
|
5022
|
+
* - the SDK / web client that renders it (React Flow).
|
|
5023
|
+
*
|
|
5024
|
+
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
5025
|
+
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
5026
|
+
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
5027
|
+
*/
|
|
5028
|
+
/**
|
|
5029
|
+
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
5030
|
+
* client derives the React Flow component, icon, and per-node treatment from it
|
|
5031
|
+
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
5032
|
+
* directly, so the structural contract can never silently diverge across the
|
|
5033
|
+
* deploy → render boundary.
|
|
5034
|
+
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
5035
|
+
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
5036
|
+
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
5037
|
+
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
5038
|
+
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
5039
|
+
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
5040
|
+
* shared by loop + parallel)
|
|
5041
|
+
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
5042
|
+
*
|
|
5043
|
+
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
5044
|
+
* are stacked inside and the container itself is the single prong leaving the
|
|
5045
|
+
* wrapper (there is no separate fork/join pair).
|
|
5046
|
+
*
|
|
5047
|
+
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
5048
|
+
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
5049
|
+
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
5050
|
+
*/
|
|
5051
|
+
const WorkflowCanvasNodeTypeSchema$1 = _enum([
|
|
5052
|
+
"entry",
|
|
5053
|
+
"exit",
|
|
5054
|
+
"error",
|
|
5055
|
+
"step",
|
|
5056
|
+
"code-block",
|
|
5057
|
+
"decision",
|
|
5058
|
+
"merge",
|
|
5059
|
+
"loop",
|
|
5060
|
+
"parallel",
|
|
5061
|
+
"loop-start",
|
|
5062
|
+
"trigger-source"
|
|
5063
|
+
]);
|
|
5064
|
+
_enum([
|
|
5065
|
+
"workflow-step",
|
|
5066
|
+
"agent",
|
|
5067
|
+
"llm",
|
|
5068
|
+
"wait",
|
|
5069
|
+
"hook",
|
|
5070
|
+
"tool",
|
|
5071
|
+
"child-workflow"
|
|
5072
|
+
]);
|
|
5073
|
+
/** A labeled branch output on a decision-style node. */
|
|
5074
|
+
const WorkflowCanvasNodeOutputSchema$1 = object({
|
|
5075
|
+
id: string(),
|
|
5076
|
+
label: string()
|
|
5077
|
+
});
|
|
5078
|
+
/**
|
|
5079
|
+
* A step input's configured value at its call site, captured deterministically
|
|
5080
|
+
* by the producer from the call's argument object. The platform join turns this
|
|
5081
|
+
* into the inspector's {@link WorkflowNodeInputBinding} (filling display labels).
|
|
5082
|
+
*/
|
|
5083
|
+
const WorkflowCanvasRawBindingSchema$1 = object({
|
|
5084
|
+
tokens: array(discriminatedUnion("kind", [
|
|
5085
|
+
object({
|
|
5086
|
+
kind: literal("text"),
|
|
5087
|
+
text: string()
|
|
5088
|
+
}),
|
|
5089
|
+
object({
|
|
5090
|
+
kind: literal("reference"),
|
|
5091
|
+
/** Upstream node id this value flows from; absent only for unresolved refs. */
|
|
5092
|
+
sourceNodeId: string().optional(),
|
|
5093
|
+
/** Output field of the source (dotted path); omitted = the whole output. */
|
|
5094
|
+
field: string().optional()
|
|
5095
|
+
}),
|
|
5096
|
+
object({
|
|
5097
|
+
kind: literal("variable"),
|
|
5098
|
+
text: string()
|
|
5099
|
+
}),
|
|
5100
|
+
object({
|
|
5101
|
+
kind: literal("call"),
|
|
5102
|
+
name: string()
|
|
5103
|
+
})
|
|
5104
|
+
])),
|
|
5105
|
+
/** Render as a tall multi-line box (object/array/multiline template values). */
|
|
5106
|
+
multiline: boolean().optional()
|
|
5107
|
+
});
|
|
5108
|
+
/**
|
|
5109
|
+
* Statically-captured `promptLlm` options for an `llm` step node. Literal-only:
|
|
5110
|
+
* dynamic/expression values (a computed model, a `system` built by a function) are
|
|
5111
|
+
* not captured; `system`/`outputSchema` record presence so the inspector can note
|
|
5112
|
+
* "a system prompt is configured" / "structured output" without their values.
|
|
5113
|
+
*/
|
|
5114
|
+
const WorkflowCanvasLlmOptionsSchema$1 = object({
|
|
5115
|
+
model: string().optional(),
|
|
5116
|
+
maxTokens: number$1().optional(),
|
|
5117
|
+
temperature: number$1().optional(),
|
|
5118
|
+
thinkingLevel: string().optional(),
|
|
5119
|
+
hasSystemPrompt: boolean().optional(),
|
|
5120
|
+
hasOutputSchema: boolean().optional()
|
|
5121
|
+
});
|
|
5122
|
+
const WorkflowCanvasNodeDataSchema$1 = object({
|
|
5123
|
+
label: string(),
|
|
5124
|
+
/** Set on group nodes (loop / parallel section containers). */
|
|
5125
|
+
groupKind: _enum([
|
|
5126
|
+
"loop",
|
|
5127
|
+
"parallel",
|
|
5128
|
+
"conditional"
|
|
5129
|
+
]).optional(),
|
|
5130
|
+
description: string().optional(),
|
|
5131
|
+
/** {@link WorkflowCanvasCallKind} or a looser raw call-site label. */
|
|
5132
|
+
callKind: string().optional(),
|
|
5133
|
+
/**
|
|
5134
|
+
* App/integration slug for a `step` whose action/agent is imported directly
|
|
5135
|
+
* from a `@keystrokehq/<app>` package (e.g. "slack", "apollo"). Lets the client
|
|
5136
|
+
* badge the node with that app's logo; absent for custom (project-local)
|
|
5137
|
+
* actions, which fall back to the call-kind icon.
|
|
5138
|
+
*/
|
|
5139
|
+
appSlug: string().optional(),
|
|
5140
|
+
/** Cron/webhook/poll discriminator on trigger-source nodes. */
|
|
5141
|
+
triggerType: string().optional(),
|
|
5142
|
+
/** Branch outputs (decision nodes). */
|
|
5143
|
+
outputs: array(WorkflowCanvasNodeOutputSchema$1).optional(),
|
|
5144
|
+
/**
|
|
5145
|
+
* Action/agent/workflow slug resolved at deploy time (via import → definition).
|
|
5146
|
+
* Optional when the deploy build cannot resolve source (dist-only artifacts).
|
|
5147
|
+
*/
|
|
5148
|
+
slug: string().optional(),
|
|
5149
|
+
/**
|
|
5150
|
+
* Durable call-site ids nested inside an off-grammar `code-block` (same-file only).
|
|
5151
|
+
* Used by the run overlay to light the block when any contained step executes.
|
|
5152
|
+
*/
|
|
5153
|
+
containedCallSiteIds: array(string()).optional(),
|
|
5154
|
+
/**
|
|
5155
|
+
* Per-input call-site value bindings for `step` nodes, keyed by input field name.
|
|
5156
|
+
* Deterministically captured from the call's argument object; reference tokens point
|
|
5157
|
+
* at the upstream node that produced the value. The platform join fills display labels.
|
|
5158
|
+
*/
|
|
5159
|
+
inputBindings: record(string(), WorkflowCanvasRawBindingSchema$1).optional(),
|
|
5160
|
+
/**
|
|
5161
|
+
* Static `promptLlm(prompt, options)` configuration captured at the call site for
|
|
5162
|
+
* `llm` step nodes. Only literal values are captured (model/maxTokens/temperature/
|
|
5163
|
+
* thinkingLevel); `system`/`outputSchema` are usually expressions, so only their
|
|
5164
|
+
* presence is recorded. Absent when no options are statically resolvable.
|
|
5165
|
+
*/
|
|
5166
|
+
llmOptions: WorkflowCanvasLlmOptionsSchema$1.optional()
|
|
5167
|
+
});
|
|
5168
|
+
/**
|
|
5169
|
+
* A single structural node. This is the deploy artifact's shape: identity
|
|
5170
|
+
* (`id`), the canonical discriminator (`nodeType`), display `data`, and group
|
|
5171
|
+
* nesting (`parentId`). All layout/rendering — React Flow component key,
|
|
5172
|
+
* positions, sizes, `extent`, group box dimensions — is derived entirely
|
|
5173
|
+
* client-side from this structure, so it never leaks into the wire contract.
|
|
5174
|
+
*/
|
|
5175
|
+
const WorkflowCanvasGraphNodeSchema$1 = object({
|
|
5176
|
+
id: string(),
|
|
5177
|
+
nodeType: WorkflowCanvasNodeTypeSchema$1,
|
|
5178
|
+
data: WorkflowCanvasNodeDataSchema$1,
|
|
5179
|
+
/** Set on children nested inside a group (loop / parallel) container. */
|
|
5180
|
+
parentId: string().optional()
|
|
5181
|
+
});
|
|
5182
|
+
const WorkflowCanvasEdgeSchema$1 = object({
|
|
5183
|
+
id: string(),
|
|
5184
|
+
source: string(),
|
|
5185
|
+
target: string(),
|
|
5186
|
+
type: string().optional(),
|
|
5187
|
+
label: string().optional(),
|
|
5188
|
+
sourceHandle: string().optional(),
|
|
5189
|
+
targetHandle: string().optional(),
|
|
5190
|
+
data: object({ branchKind: _enum([
|
|
5191
|
+
"then",
|
|
5192
|
+
"else",
|
|
5193
|
+
"parallel-branch",
|
|
5194
|
+
"error"
|
|
5195
|
+
]).optional() }).optional()
|
|
5196
|
+
});
|
|
5197
|
+
/** A statically-evaluable top-level `const` value (literal scalars only). */
|
|
5198
|
+
const WorkflowCanvasConstantValueSchema$1 = union([
|
|
5199
|
+
string(),
|
|
5200
|
+
number$1(),
|
|
5201
|
+
boolean()
|
|
5202
|
+
]);
|
|
5203
|
+
/**
|
|
5204
|
+
* Top-level `const NAME = <literal>` declarations in the workflow source, captured
|
|
5205
|
+
* at deploy. Lets the platform resolve `variable` value tokens (e.g. a `model` set
|
|
5206
|
+
* to a named const) to their concrete value for display. Scalars only — computed,
|
|
5207
|
+
* function-local, or non-literal consts are intentionally omitted.
|
|
5208
|
+
*/
|
|
5209
|
+
const WorkflowCanvasConstantsSchema$1 = record(string(), WorkflowCanvasConstantValueSchema$1);
|
|
5210
|
+
const WorkflowCanvasGraphSchema$1 = object({
|
|
5211
|
+
nodes: array(WorkflowCanvasGraphNodeSchema$1),
|
|
5212
|
+
edges: array(WorkflowCanvasEdgeSchema$1),
|
|
5213
|
+
/** Top-level literal constants from the workflow source (for value-token resolution). */
|
|
5214
|
+
constants: WorkflowCanvasConstantsSchema$1.optional()
|
|
5215
|
+
});
|
|
5216
|
+
/**
|
|
5217
|
+
* Deploy-time summary of one credential a step requires, derived from the
|
|
5218
|
+
* action/agent-tool definition's `.credentials`. The workflow-canvas credential
|
|
5219
|
+
* overlay joins a step node's `slug` to these to resolve the bound instance.
|
|
5220
|
+
* `key` doubles as the app slug (matches `credential_instances.app_slug`).
|
|
5221
|
+
*/
|
|
5222
|
+
const CredentialRequirementSummarySchema$1 = object({
|
|
5223
|
+
key: string(),
|
|
5224
|
+
kind: CredentialAuthKindSchema$1,
|
|
5225
|
+
/** Scope pinned via `.scope(...)`; absent means project-default → org-default. */
|
|
5226
|
+
scope: CredentialScopeTypeSchema$1.optional()
|
|
5227
|
+
});
|
|
4961
5228
|
const StoredRouteManifestSkillSchema$1 = object({
|
|
4962
5229
|
slug: string(),
|
|
4963
|
-
name:
|
|
4964
|
-
description:
|
|
5230
|
+
name: requiredDisplayTextSchema$1,
|
|
5231
|
+
description: requiredDisplayTextSchema$1,
|
|
4965
5232
|
moduleFile: string()
|
|
4966
5233
|
});
|
|
4967
5234
|
const attachmentSchemasSchema$1 = record(string(), object({
|
|
@@ -4969,8 +5236,8 @@ const attachmentSchemasSchema$1 = record(string(), object({
|
|
|
4969
5236
|
filterSchema: record(string(), unknown()).optional()
|
|
4970
5237
|
}));
|
|
4971
5238
|
const attachmentMetaSchema$1 = record(string(), object({
|
|
4972
|
-
name:
|
|
4973
|
-
description:
|
|
5239
|
+
name: requiredDisplayTextSchema$1,
|
|
5240
|
+
description: requiredDisplayTextSchema$1
|
|
4974
5241
|
}));
|
|
4975
5242
|
const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
4976
5243
|
object({ kind: literal("health") }),
|
|
@@ -4978,23 +5245,43 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
4978
5245
|
kind: literal("agent"),
|
|
4979
5246
|
slug: string(),
|
|
4980
5247
|
moduleFile: string(),
|
|
4981
|
-
name:
|
|
4982
|
-
description:
|
|
5248
|
+
name: requiredDisplayTextSchema$1,
|
|
5249
|
+
description: requiredDisplayTextSchema$1,
|
|
4983
5250
|
model: string(),
|
|
4984
5251
|
systemPrompt: string(),
|
|
4985
5252
|
toolCount: number$1().int().nonnegative(),
|
|
4986
5253
|
credentialCount: number$1().int().nonnegative(),
|
|
4987
5254
|
appSlugs: array(string()).default([]),
|
|
4988
|
-
toolSlugs: array(string()).default([])
|
|
5255
|
+
toolSlugs: array(string()).default([]),
|
|
5256
|
+
/** Credential requirements per tool slug (the agent's credential consumer key). */
|
|
5257
|
+
toolRequirements: record(string(), array(CredentialRequirementSummarySchema$1)).optional()
|
|
5258
|
+
}),
|
|
5259
|
+
object({
|
|
5260
|
+
kind: literal("action"),
|
|
5261
|
+
slug: string(),
|
|
5262
|
+
name: requiredDisplayTextSchema$1,
|
|
5263
|
+
description: requiredDisplayTextSchema$1,
|
|
5264
|
+
moduleFile: string(),
|
|
5265
|
+
/** App slug for actions imported from an integration package (`@keystrokehq/<app>/actions`). */
|
|
5266
|
+
appSlug: string().optional(),
|
|
5267
|
+
inputSchema: record(string(), unknown()),
|
|
5268
|
+
outputSchema: record(string(), unknown()),
|
|
5269
|
+
/** Credentials this action requires (for the canvas credential overlay). */
|
|
5270
|
+
requirements: array(CredentialRequirementSummarySchema$1).optional()
|
|
4989
5271
|
}),
|
|
4990
5272
|
object({
|
|
4991
5273
|
kind: literal("workflow"),
|
|
4992
5274
|
slug: string(),
|
|
4993
|
-
name:
|
|
4994
|
-
description:
|
|
5275
|
+
name: requiredDisplayTextSchema$1,
|
|
5276
|
+
description: requiredDisplayTextSchema$1,
|
|
4995
5277
|
subscribable: boolean(),
|
|
4996
5278
|
moduleFile: string(),
|
|
4997
|
-
requestSchema: record(string(), unknown())
|
|
5279
|
+
requestSchema: record(string(), unknown()),
|
|
5280
|
+
responseSchema: record(string(), unknown()).optional(),
|
|
5281
|
+
/** Deterministic AST control-flow skeleton (deploy-time producer). */
|
|
5282
|
+
flowGraph: WorkflowCanvasGraphSchema$1.optional(),
|
|
5283
|
+
/** sha256 of the workflow source the `flowGraph` was produced from (staleness). */
|
|
5284
|
+
flowGraphSourceHash: string().optional()
|
|
4998
5285
|
}),
|
|
4999
5286
|
object({
|
|
5000
5287
|
kind: literal("trigger-webhook"),
|
|
@@ -5013,8 +5300,8 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
5013
5300
|
moduleFile: string(),
|
|
5014
5301
|
sourceHash: string().optional(),
|
|
5015
5302
|
schedule: string(),
|
|
5016
|
-
name:
|
|
5017
|
-
description:
|
|
5303
|
+
name: requiredDisplayTextSchema$1,
|
|
5304
|
+
description: requiredDisplayTextSchema$1
|
|
5018
5305
|
}),
|
|
5019
5306
|
object({
|
|
5020
5307
|
kind: literal("trigger-poll-group"),
|
|
@@ -5030,8 +5317,8 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
5030
5317
|
moduleFile: string(),
|
|
5031
5318
|
sourceHash: string().optional(),
|
|
5032
5319
|
schedule: string(),
|
|
5033
|
-
name:
|
|
5034
|
-
description:
|
|
5320
|
+
name: requiredDisplayTextSchema$1,
|
|
5321
|
+
description: requiredDisplayTextSchema$1
|
|
5035
5322
|
})
|
|
5036
5323
|
]);
|
|
5037
5324
|
object({
|
|
@@ -5457,24 +5744,6 @@ object({
|
|
|
5457
5744
|
outputParameters: record(string(), unknown()).optional(),
|
|
5458
5745
|
version: string().optional()
|
|
5459
5746
|
});
|
|
5460
|
-
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
5461
|
-
const CredentialAuthKindSchema$1 = _enum([
|
|
5462
|
-
"api_key",
|
|
5463
|
-
"oauth_managed",
|
|
5464
|
-
"keystroke"
|
|
5465
|
-
]);
|
|
5466
|
-
/**
|
|
5467
|
-
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
5468
|
-
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
5469
|
-
* resolver tries the project default, then the org default, then throws.
|
|
5470
|
-
*/
|
|
5471
|
-
const CredentialScopeTypeSchema$1 = _enum([
|
|
5472
|
-
"organization",
|
|
5473
|
-
"project",
|
|
5474
|
-
"user"
|
|
5475
|
-
]);
|
|
5476
|
-
CredentialAuthKindSchema$1.options;
|
|
5477
|
-
CredentialScopeTypeSchema$1.options;
|
|
5478
5747
|
/** Scope of a platform app credential (maps to `credential_instances.scope_type`). */
|
|
5479
5748
|
const AppCredentialScopeSchema$1 = _enum([
|
|
5480
5749
|
"user",
|
|
@@ -6470,7 +6739,7 @@ object({
|
|
|
6470
6739
|
id: string(),
|
|
6471
6740
|
slug: string(),
|
|
6472
6741
|
name: string(),
|
|
6473
|
-
description: string().
|
|
6742
|
+
description: string().min(1),
|
|
6474
6743
|
type: TriggerTypeSchema$1,
|
|
6475
6744
|
status: TriggerStatusSchema$1,
|
|
6476
6745
|
projectId: string(),
|
|
@@ -6766,7 +7035,7 @@ const AgentSummarySchema$1 = object({
|
|
|
6766
7035
|
name: string().min(1),
|
|
6767
7036
|
projectId: string().min(1),
|
|
6768
7037
|
updatedAt: string().min(1),
|
|
6769
|
-
description: string().
|
|
7038
|
+
description: string().min(1),
|
|
6770
7039
|
sourcePath: string().min(1).optional(),
|
|
6771
7040
|
model: string().optional(),
|
|
6772
7041
|
capabilities: object({
|
|
@@ -6788,7 +7057,7 @@ const WorkflowSummarySchema$1 = object({
|
|
|
6788
7057
|
name: string().min(1),
|
|
6789
7058
|
projectId: string().min(1),
|
|
6790
7059
|
updatedAt: string().min(1),
|
|
6791
|
-
description: string().
|
|
7060
|
+
description: string().min(1),
|
|
6792
7061
|
sourcePath: string().min(1).optional(),
|
|
6793
7062
|
lastRunAt: optionalTimestamp$2
|
|
6794
7063
|
});
|
|
@@ -6798,7 +7067,7 @@ const SkillSummarySchema$1 = object({
|
|
|
6798
7067
|
name: string().min(1),
|
|
6799
7068
|
projectId: string().min(1),
|
|
6800
7069
|
updatedAt: string().min(1),
|
|
6801
|
-
description: string().
|
|
7070
|
+
description: string().min(1),
|
|
6802
7071
|
sourcePath: string().min(1).optional()
|
|
6803
7072
|
});
|
|
6804
7073
|
AgentSummarySchema$1.nullable();
|
|
@@ -6907,6 +7176,245 @@ object({ files: array(object({
|
|
|
6907
7176
|
id: string(),
|
|
6908
7177
|
path: string().min(1)
|
|
6909
7178
|
})) });
|
|
7179
|
+
/** Whether the overview is still being produced or finished. */
|
|
7180
|
+
const WorkflowOverviewStatusSchema$1 = _enum(["generating", "ready"]);
|
|
7181
|
+
/** One phase of the guided-tour overview. */
|
|
7182
|
+
const WorkflowPhaseSchema$1 = object({
|
|
7183
|
+
id: string(),
|
|
7184
|
+
title: string(),
|
|
7185
|
+
copy: string(),
|
|
7186
|
+
nodeIds: array(string())
|
|
7187
|
+
});
|
|
7188
|
+
object({
|
|
7189
|
+
status: WorkflowOverviewStatusSchema$1,
|
|
7190
|
+
summary: string(),
|
|
7191
|
+
phases: array(WorkflowPhaseSchema$1),
|
|
7192
|
+
hash: string(),
|
|
7193
|
+
generatedAt: string().nullable(),
|
|
7194
|
+
model: string()
|
|
7195
|
+
});
|
|
7196
|
+
/** Subset of JSON-Schema field types the dashboard form renders inline. */
|
|
7197
|
+
const WorkflowInputFieldTypeSchema$1 = _enum([
|
|
7198
|
+
"string",
|
|
7199
|
+
"number",
|
|
7200
|
+
"boolean",
|
|
7201
|
+
"enum",
|
|
7202
|
+
"object",
|
|
7203
|
+
"array"
|
|
7204
|
+
]);
|
|
7205
|
+
const WorkflowInputFieldSchema$1 = lazy(() => object({
|
|
7206
|
+
key: string(),
|
|
7207
|
+
label: string(),
|
|
7208
|
+
type: WorkflowInputFieldTypeSchema$1,
|
|
7209
|
+
required: boolean(),
|
|
7210
|
+
description: string().optional(),
|
|
7211
|
+
placeholder: string().optional(),
|
|
7212
|
+
options: array(string()).optional(),
|
|
7213
|
+
default: union([
|
|
7214
|
+
string(),
|
|
7215
|
+
number$1(),
|
|
7216
|
+
boolean()
|
|
7217
|
+
]).optional(),
|
|
7218
|
+
children: array(WorkflowInputFieldSchema$1).optional(),
|
|
7219
|
+
format: string().optional()
|
|
7220
|
+
}));
|
|
7221
|
+
object({
|
|
7222
|
+
schema: object({ fields: array(WorkflowInputFieldSchema$1) }),
|
|
7223
|
+
values: record(string(), unknown()).nullable()
|
|
7224
|
+
});
|
|
7225
|
+
object({ runId: string() });
|
|
7226
|
+
/** Annotation lifecycle: "generating" while the LLM pass streams in, then "ready". */
|
|
7227
|
+
const WorkflowCanvasStatusSchema$1 = _enum(["generating", "ready"]);
|
|
7228
|
+
/** LLM-produced enrichment for a single skeleton node. */
|
|
7229
|
+
const WorkflowCanvasAnnotationSchema$1 = object({
|
|
7230
|
+
label: string().optional(),
|
|
7231
|
+
description: string().optional()
|
|
7232
|
+
});
|
|
7233
|
+
/** The configured value of one input at this call site. */
|
|
7234
|
+
const WorkflowNodeInputBindingSchema$1 = object({
|
|
7235
|
+
tokens: array(discriminatedUnion("kind", [
|
|
7236
|
+
object({
|
|
7237
|
+
kind: literal("text"),
|
|
7238
|
+
text: string()
|
|
7239
|
+
}),
|
|
7240
|
+
object({
|
|
7241
|
+
kind: literal("reference"),
|
|
7242
|
+
sourceNodeId: string().optional(),
|
|
7243
|
+
sourceLabel: string(),
|
|
7244
|
+
field: string().optional()
|
|
7245
|
+
}),
|
|
7246
|
+
object({
|
|
7247
|
+
kind: literal("variable"),
|
|
7248
|
+
text: string(),
|
|
7249
|
+
/** Concrete value when `text` resolves to a top-level literal constant. */
|
|
7250
|
+
resolvedValue: string().optional()
|
|
7251
|
+
}),
|
|
7252
|
+
object({
|
|
7253
|
+
kind: literal("call"),
|
|
7254
|
+
name: string()
|
|
7255
|
+
})
|
|
7256
|
+
])),
|
|
7257
|
+
multiline: boolean().optional()
|
|
7258
|
+
});
|
|
7259
|
+
/** An inspector input with optional call-site binding. */
|
|
7260
|
+
const WorkflowCanvasNodeInputSchema$1 = WorkflowInputFieldSchema$1.and(object({
|
|
7261
|
+
binding: WorkflowNodeInputBindingSchema$1.optional(),
|
|
7262
|
+
additional: boolean().optional()
|
|
7263
|
+
}));
|
|
7264
|
+
/** Authored, deterministic metadata for a single node. */
|
|
7265
|
+
const WorkflowCanvasNodeMetaSchema$1 = object({
|
|
7266
|
+
kind: _enum([
|
|
7267
|
+
"action",
|
|
7268
|
+
"agent",
|
|
7269
|
+
"workflow",
|
|
7270
|
+
"llm",
|
|
7271
|
+
"trigger",
|
|
7272
|
+
"boundary"
|
|
7273
|
+
]),
|
|
7274
|
+
slug: string(),
|
|
7275
|
+
name: string(),
|
|
7276
|
+
description: string().optional(),
|
|
7277
|
+
appSlug: string().optional(),
|
|
7278
|
+
inputs: array(WorkflowCanvasNodeInputSchema$1),
|
|
7279
|
+
outputs: array(WorkflowInputFieldSchema$1),
|
|
7280
|
+
requiredApps: array(string()).optional(),
|
|
7281
|
+
model: string().optional(),
|
|
7282
|
+
toolCount: number$1().int().nonnegative().optional()
|
|
7283
|
+
});
|
|
7284
|
+
object({
|
|
7285
|
+
graph: WorkflowCanvasGraphSchema$1,
|
|
7286
|
+
nodeMetadata: record(string(), WorkflowCanvasNodeMetaSchema$1),
|
|
7287
|
+
annotations: record(string(), WorkflowCanvasAnnotationSchema$1),
|
|
7288
|
+
status: WorkflowCanvasStatusSchema$1,
|
|
7289
|
+
hash: string(),
|
|
7290
|
+
generatedAt: string().nullable(),
|
|
7291
|
+
model: string()
|
|
7292
|
+
});
|
|
7293
|
+
const WorkflowCanvasNodeRunStateSchema$1 = object({
|
|
7294
|
+
status: _enum([
|
|
7295
|
+
"pending",
|
|
7296
|
+
"running",
|
|
7297
|
+
"succeeded",
|
|
7298
|
+
"failed",
|
|
7299
|
+
"skipped"
|
|
7300
|
+
]),
|
|
7301
|
+
iteration: object({
|
|
7302
|
+
index: number$1().int().nonnegative(),
|
|
7303
|
+
total: number$1().int().nonnegative()
|
|
7304
|
+
}).optional()
|
|
7305
|
+
});
|
|
7306
|
+
/** Overall lifecycle of a run as the canvas animates it. */
|
|
7307
|
+
const WorkflowCanvasRunStatusSchema$1 = _enum([
|
|
7308
|
+
"running",
|
|
7309
|
+
"succeeded",
|
|
7310
|
+
"failed",
|
|
7311
|
+
"canceled"
|
|
7312
|
+
]);
|
|
7313
|
+
object({
|
|
7314
|
+
runId: string(),
|
|
7315
|
+
status: WorkflowCanvasRunStatusSchema$1,
|
|
7316
|
+
startedAt: string(),
|
|
7317
|
+
finishedAt: string().nullable(),
|
|
7318
|
+
nodeStates: record(string(), WorkflowCanvasNodeRunStateSchema$1)
|
|
7319
|
+
});
|
|
7320
|
+
/** Scope a credential instance lives in. */
|
|
7321
|
+
const WorkflowCredentialScopeSchema$1 = _enum([
|
|
7322
|
+
"organization",
|
|
7323
|
+
"project",
|
|
7324
|
+
"user"
|
|
7325
|
+
]);
|
|
7326
|
+
/** The concrete credential instance a binding currently resolves to. */
|
|
7327
|
+
const WorkflowResolvedCredentialSchema$1 = object({
|
|
7328
|
+
id: string(),
|
|
7329
|
+
name: string(),
|
|
7330
|
+
scope: WorkflowCredentialScopeSchema$1,
|
|
7331
|
+
appSlug: string().optional(),
|
|
7332
|
+
isDefault: boolean().optional(),
|
|
7333
|
+
projectId: string().optional(),
|
|
7334
|
+
projectName: string().optional()
|
|
7335
|
+
});
|
|
7336
|
+
record(string(), WorkflowCanvasAnnotationSchema$1);
|
|
7337
|
+
/** One opaque code-block the annotation pass should label, keyed by its canvas node id. */
|
|
7338
|
+
const WorkflowCanvasAnnotationCodeBlockSchema$1 = object({
|
|
7339
|
+
nodeId: string(),
|
|
7340
|
+
/** The raw source snippet (the node's label) the LLM turns into human copy. */
|
|
7341
|
+
source: string()
|
|
7342
|
+
});
|
|
7343
|
+
/** Inputs the worker feeds the LLM for the gated code-block annotation pass. */
|
|
7344
|
+
const WorkflowCanvasAnnotationsInputSchema$1 = object({
|
|
7345
|
+
workflowName: string(),
|
|
7346
|
+
workflowDescription: string().nullable(),
|
|
7347
|
+
codeBlocks: array(WorkflowCanvasAnnotationCodeBlockSchema$1)
|
|
7348
|
+
});
|
|
7349
|
+
object({
|
|
7350
|
+
workflowId: string(),
|
|
7351
|
+
projectId: string(),
|
|
7352
|
+
hash: string(),
|
|
7353
|
+
model: string(),
|
|
7354
|
+
input: WorkflowCanvasAnnotationsInputSchema$1
|
|
7355
|
+
});
|
|
7356
|
+
/** One node as the overview LLM sees it (derived from the canvas node metadata + graph). */
|
|
7357
|
+
const WorkflowOverviewNodeSchema$1 = object({
|
|
7358
|
+
nodeId: string(),
|
|
7359
|
+
label: string(),
|
|
7360
|
+
kind: string(),
|
|
7361
|
+
description: string().optional(),
|
|
7362
|
+
/** App/integration slug for steps imported from a `@keystrokehq/<app>` package. */
|
|
7363
|
+
appSlug: string().optional(),
|
|
7364
|
+
/** Authored input field keys (from the action/agent/workflow definition). */
|
|
7365
|
+
inputs: array(string()).optional(),
|
|
7366
|
+
/** Authored output field keys. */
|
|
7367
|
+
outputs: array(string()).optional(),
|
|
7368
|
+
/** Agent-only: the model the agent runs on. */
|
|
7369
|
+
model: string().optional(),
|
|
7370
|
+
/** Agent-only: number of tools available to the agent. */
|
|
7371
|
+
toolCount: number$1().int().nonnegative().optional()
|
|
7372
|
+
});
|
|
7373
|
+
/** Inputs the worker feeds the LLM to produce the workflow overview (summary + phases). */
|
|
7374
|
+
const WorkflowOverviewInputSchema$1 = object({
|
|
7375
|
+
workflowName: string(),
|
|
7376
|
+
workflowDescription: string().nullable(),
|
|
7377
|
+
/** Display labels of the trigger sources upstream of the workflow (read-only context). */
|
|
7378
|
+
triggers: array(string()),
|
|
7379
|
+
nodes: array(WorkflowOverviewNodeSchema$1),
|
|
7380
|
+
/** The workflow's TypeScript source (best-effort; null when the deploy has no source snapshot). */
|
|
7381
|
+
source: string().nullable()
|
|
7382
|
+
});
|
|
7383
|
+
object({
|
|
7384
|
+
workflowId: string(),
|
|
7385
|
+
projectId: string(),
|
|
7386
|
+
hash: string(),
|
|
7387
|
+
model: string(),
|
|
7388
|
+
input: WorkflowOverviewInputSchema$1
|
|
7389
|
+
});
|
|
7390
|
+
const WorkflowCanvasCredentialBindingBaseSchema$1 = object({
|
|
7391
|
+
credentialKey: string(),
|
|
7392
|
+
label: string(),
|
|
7393
|
+
appSlug: string().optional()
|
|
7394
|
+
});
|
|
7395
|
+
/** How one credential requirement on a step currently resolves. */
|
|
7396
|
+
const WorkflowCanvasCredentialBindingSchema$1 = union([
|
|
7397
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7398
|
+
policy: _enum([
|
|
7399
|
+
"project-default",
|
|
7400
|
+
"org-default",
|
|
7401
|
+
"assigned"
|
|
7402
|
+
]),
|
|
7403
|
+
instance: WorkflowResolvedCredentialSchema$1
|
|
7404
|
+
}),
|
|
7405
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7406
|
+
policy: literal("scope-pinned"),
|
|
7407
|
+
pinnedScope: WorkflowCredentialScopeSchema$1,
|
|
7408
|
+
instance: WorkflowResolvedCredentialSchema$1
|
|
7409
|
+
}),
|
|
7410
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7411
|
+
policy: literal("unresolved"),
|
|
7412
|
+
reason: _enum(["needs-selection", "missing"]),
|
|
7413
|
+
pinnedScope: WorkflowCredentialScopeSchema$1.optional()
|
|
7414
|
+
})
|
|
7415
|
+
]);
|
|
7416
|
+
record(string(), array(WorkflowCanvasCredentialBindingSchema$1));
|
|
7417
|
+
record(string(), unknown());
|
|
6910
7418
|
/** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
|
|
6911
7419
|
function encodeOrgArtifacts(artifacts) {
|
|
6912
7420
|
return Buffer.from(JSON.stringify(artifacts)).toString("base64");
|
|
@@ -8299,10 +8807,260 @@ function resolveExternalPlatformOrigin(env = process.env) {
|
|
|
8299
8807
|
}
|
|
8300
8808
|
/** On-disk path under the project root (packed in deploy artifacts when present). */
|
|
8301
8809
|
const ROUTE_MANIFEST_REL_PATH = "dist/.keystroke/route-manifest.json";
|
|
8810
|
+
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
8811
|
+
const CredentialAuthKindSchema = z.enum([
|
|
8812
|
+
"api_key",
|
|
8813
|
+
"oauth_managed",
|
|
8814
|
+
"keystroke"
|
|
8815
|
+
]);
|
|
8816
|
+
/**
|
|
8817
|
+
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
8818
|
+
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
8819
|
+
* resolver tries the project default, then the org default, then throws.
|
|
8820
|
+
*/
|
|
8821
|
+
const CredentialScopeTypeSchema = z.enum([
|
|
8822
|
+
"organization",
|
|
8823
|
+
"project",
|
|
8824
|
+
"user"
|
|
8825
|
+
]);
|
|
8826
|
+
CredentialAuthKindSchema.options;
|
|
8827
|
+
CredentialScopeTypeSchema.options;
|
|
8828
|
+
/** Non-empty human-readable label or description (trimmed). */
|
|
8829
|
+
const requiredDisplayTextSchema = z.string().trim().min(1);
|
|
8830
|
+
/**
|
|
8831
|
+
* Structural workflow-canvas graph contract.
|
|
8832
|
+
*
|
|
8833
|
+
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
8834
|
+
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
8835
|
+
* is the single source of truth shared by:
|
|
8836
|
+
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
8837
|
+
* - the platform route that serves the canvas, and
|
|
8838
|
+
* - the SDK / web client that renders it (React Flow).
|
|
8839
|
+
*
|
|
8840
|
+
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
8841
|
+
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
8842
|
+
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
8843
|
+
*/
|
|
8844
|
+
/**
|
|
8845
|
+
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
8846
|
+
* client derives the React Flow component, icon, and per-node treatment from it
|
|
8847
|
+
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
8848
|
+
* directly, so the structural contract can never silently diverge across the
|
|
8849
|
+
* deploy → render boundary.
|
|
8850
|
+
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
8851
|
+
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
8852
|
+
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
8853
|
+
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
8854
|
+
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
8855
|
+
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
8856
|
+
* shared by loop + parallel)
|
|
8857
|
+
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
8858
|
+
*
|
|
8859
|
+
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
8860
|
+
* are stacked inside and the container itself is the single prong leaving the
|
|
8861
|
+
* wrapper (there is no separate fork/join pair).
|
|
8862
|
+
*
|
|
8863
|
+
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
8864
|
+
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
8865
|
+
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
8866
|
+
*/
|
|
8867
|
+
const WorkflowCanvasNodeTypeSchema = z.enum([
|
|
8868
|
+
"entry",
|
|
8869
|
+
"exit",
|
|
8870
|
+
"error",
|
|
8871
|
+
"step",
|
|
8872
|
+
"code-block",
|
|
8873
|
+
"decision",
|
|
8874
|
+
"merge",
|
|
8875
|
+
"loop",
|
|
8876
|
+
"parallel",
|
|
8877
|
+
"loop-start",
|
|
8878
|
+
"trigger-source"
|
|
8879
|
+
]);
|
|
8880
|
+
z.enum([
|
|
8881
|
+
"workflow-step",
|
|
8882
|
+
"agent",
|
|
8883
|
+
"llm",
|
|
8884
|
+
"wait",
|
|
8885
|
+
"hook",
|
|
8886
|
+
"tool",
|
|
8887
|
+
"child-workflow"
|
|
8888
|
+
]);
|
|
8889
|
+
/** A labeled branch output on a decision-style node. */
|
|
8890
|
+
const WorkflowCanvasNodeOutputSchema = z.object({
|
|
8891
|
+
id: z.string(),
|
|
8892
|
+
label: z.string()
|
|
8893
|
+
});
|
|
8894
|
+
/**
|
|
8895
|
+
* One token of a step's call-site argument value as captured by the producer.
|
|
8896
|
+
*
|
|
8897
|
+
* Raw form, one per source-expression shape so the inspector can render each
|
|
8898
|
+
* distinctly instead of dumping raw text:
|
|
8899
|
+
* - `text` — a literal value (string/number/boolean) or inert template chunk.
|
|
8900
|
+
* - `reference` — an upstream node output; carries only the structural
|
|
8901
|
+
* `sourceNodeId` + `field` (the human `sourceLabel` is filled by the platform
|
|
8902
|
+
* metadata join).
|
|
8903
|
+
* - `variable` — a code identifier / property access that isn't an upstream
|
|
8904
|
+
* reference (e.g. a `const`, a loop variable, `job.id`). `text` is the source
|
|
8905
|
+
* name; the platform may attach a `resolvedValue` for known top-level consts.
|
|
8906
|
+
* - `call` — a function call; carries only the callee `name` (e.g.
|
|
8907
|
+
* `buildPrompt`), never the full argument list.
|
|
8908
|
+
*/
|
|
8909
|
+
const WorkflowCanvasRawValueTokenSchema = z.discriminatedUnion("kind", [
|
|
8910
|
+
z.object({
|
|
8911
|
+
kind: z.literal("text"),
|
|
8912
|
+
text: z.string()
|
|
8913
|
+
}),
|
|
8914
|
+
z.object({
|
|
8915
|
+
kind: z.literal("reference"),
|
|
8916
|
+
/** Upstream node id this value flows from; absent only for unresolved refs. */
|
|
8917
|
+
sourceNodeId: z.string().optional(),
|
|
8918
|
+
/** Output field of the source (dotted path); omitted = the whole output. */
|
|
8919
|
+
field: z.string().optional()
|
|
8920
|
+
}),
|
|
8921
|
+
z.object({
|
|
8922
|
+
kind: z.literal("variable"),
|
|
8923
|
+
text: z.string()
|
|
8924
|
+
}),
|
|
8925
|
+
z.object({
|
|
8926
|
+
kind: z.literal("call"),
|
|
8927
|
+
name: z.string()
|
|
8928
|
+
})
|
|
8929
|
+
]);
|
|
8930
|
+
/**
|
|
8931
|
+
* A step input's configured value at its call site, captured deterministically
|
|
8932
|
+
* by the producer from the call's argument object. The platform join turns this
|
|
8933
|
+
* into the inspector's {@link WorkflowNodeInputBinding} (filling display labels).
|
|
8934
|
+
*/
|
|
8935
|
+
const WorkflowCanvasRawBindingSchema = z.object({
|
|
8936
|
+
tokens: z.array(WorkflowCanvasRawValueTokenSchema),
|
|
8937
|
+
/** Render as a tall multi-line box (object/array/multiline template values). */
|
|
8938
|
+
multiline: z.boolean().optional()
|
|
8939
|
+
});
|
|
8940
|
+
/**
|
|
8941
|
+
* Statically-captured `promptLlm` options for an `llm` step node. Literal-only:
|
|
8942
|
+
* dynamic/expression values (a computed model, a `system` built by a function) are
|
|
8943
|
+
* not captured; `system`/`outputSchema` record presence so the inspector can note
|
|
8944
|
+
* "a system prompt is configured" / "structured output" without their values.
|
|
8945
|
+
*/
|
|
8946
|
+
const WorkflowCanvasLlmOptionsSchema = z.object({
|
|
8947
|
+
model: z.string().optional(),
|
|
8948
|
+
maxTokens: z.number().optional(),
|
|
8949
|
+
temperature: z.number().optional(),
|
|
8950
|
+
thinkingLevel: z.string().optional(),
|
|
8951
|
+
hasSystemPrompt: z.boolean().optional(),
|
|
8952
|
+
hasOutputSchema: z.boolean().optional()
|
|
8953
|
+
});
|
|
8954
|
+
const WorkflowCanvasNodeDataSchema = z.object({
|
|
8955
|
+
label: z.string(),
|
|
8956
|
+
/** Set on group nodes (loop / parallel section containers). */
|
|
8957
|
+
groupKind: z.enum([
|
|
8958
|
+
"loop",
|
|
8959
|
+
"parallel",
|
|
8960
|
+
"conditional"
|
|
8961
|
+
]).optional(),
|
|
8962
|
+
description: z.string().optional(),
|
|
8963
|
+
/** {@link WorkflowCanvasCallKind} or a looser raw call-site label. */
|
|
8964
|
+
callKind: z.string().optional(),
|
|
8965
|
+
/**
|
|
8966
|
+
* App/integration slug for a `step` whose action/agent is imported directly
|
|
8967
|
+
* from a `@keystrokehq/<app>` package (e.g. "slack", "apollo"). Lets the client
|
|
8968
|
+
* badge the node with that app's logo; absent for custom (project-local)
|
|
8969
|
+
* actions, which fall back to the call-kind icon.
|
|
8970
|
+
*/
|
|
8971
|
+
appSlug: z.string().optional(),
|
|
8972
|
+
/** Cron/webhook/poll discriminator on trigger-source nodes. */
|
|
8973
|
+
triggerType: z.string().optional(),
|
|
8974
|
+
/** Branch outputs (decision nodes). */
|
|
8975
|
+
outputs: z.array(WorkflowCanvasNodeOutputSchema).optional(),
|
|
8976
|
+
/**
|
|
8977
|
+
* Action/agent/workflow slug resolved at deploy time (via import → definition).
|
|
8978
|
+
* Optional when the deploy build cannot resolve source (dist-only artifacts).
|
|
8979
|
+
*/
|
|
8980
|
+
slug: z.string().optional(),
|
|
8981
|
+
/**
|
|
8982
|
+
* Durable call-site ids nested inside an off-grammar `code-block` (same-file only).
|
|
8983
|
+
* Used by the run overlay to light the block when any contained step executes.
|
|
8984
|
+
*/
|
|
8985
|
+
containedCallSiteIds: z.array(z.string()).optional(),
|
|
8986
|
+
/**
|
|
8987
|
+
* Per-input call-site value bindings for `step` nodes, keyed by input field name.
|
|
8988
|
+
* Deterministically captured from the call's argument object; reference tokens point
|
|
8989
|
+
* at the upstream node that produced the value. The platform join fills display labels.
|
|
8990
|
+
*/
|
|
8991
|
+
inputBindings: z.record(z.string(), WorkflowCanvasRawBindingSchema).optional(),
|
|
8992
|
+
/**
|
|
8993
|
+
* Static `promptLlm(prompt, options)` configuration captured at the call site for
|
|
8994
|
+
* `llm` step nodes. Only literal values are captured (model/maxTokens/temperature/
|
|
8995
|
+
* thinkingLevel); `system`/`outputSchema` are usually expressions, so only their
|
|
8996
|
+
* presence is recorded. Absent when no options are statically resolvable.
|
|
8997
|
+
*/
|
|
8998
|
+
llmOptions: WorkflowCanvasLlmOptionsSchema.optional()
|
|
8999
|
+
});
|
|
9000
|
+
/**
|
|
9001
|
+
* A single structural node. This is the deploy artifact's shape: identity
|
|
9002
|
+
* (`id`), the canonical discriminator (`nodeType`), display `data`, and group
|
|
9003
|
+
* nesting (`parentId`). All layout/rendering — React Flow component key,
|
|
9004
|
+
* positions, sizes, `extent`, group box dimensions — is derived entirely
|
|
9005
|
+
* client-side from this structure, so it never leaks into the wire contract.
|
|
9006
|
+
*/
|
|
9007
|
+
const WorkflowCanvasGraphNodeSchema = z.object({
|
|
9008
|
+
id: z.string(),
|
|
9009
|
+
nodeType: WorkflowCanvasNodeTypeSchema,
|
|
9010
|
+
data: WorkflowCanvasNodeDataSchema,
|
|
9011
|
+
/** Set on children nested inside a group (loop / parallel) container. */
|
|
9012
|
+
parentId: z.string().optional()
|
|
9013
|
+
});
|
|
9014
|
+
const WorkflowCanvasEdgeSchema = z.object({
|
|
9015
|
+
id: z.string(),
|
|
9016
|
+
source: z.string(),
|
|
9017
|
+
target: z.string(),
|
|
9018
|
+
type: z.string().optional(),
|
|
9019
|
+
label: z.string().optional(),
|
|
9020
|
+
sourceHandle: z.string().optional(),
|
|
9021
|
+
targetHandle: z.string().optional(),
|
|
9022
|
+
data: z.object({ branchKind: z.enum([
|
|
9023
|
+
"then",
|
|
9024
|
+
"else",
|
|
9025
|
+
"parallel-branch",
|
|
9026
|
+
"error"
|
|
9027
|
+
]).optional() }).optional()
|
|
9028
|
+
});
|
|
9029
|
+
/** A statically-evaluable top-level `const` value (literal scalars only). */
|
|
9030
|
+
const WorkflowCanvasConstantValueSchema = z.union([
|
|
9031
|
+
z.string(),
|
|
9032
|
+
z.number(),
|
|
9033
|
+
z.boolean()
|
|
9034
|
+
]);
|
|
9035
|
+
/**
|
|
9036
|
+
* Top-level `const NAME = <literal>` declarations in the workflow source, captured
|
|
9037
|
+
* at deploy. Lets the platform resolve `variable` value tokens (e.g. a `model` set
|
|
9038
|
+
* to a named const) to their concrete value for display. Scalars only — computed,
|
|
9039
|
+
* function-local, or non-literal consts are intentionally omitted.
|
|
9040
|
+
*/
|
|
9041
|
+
const WorkflowCanvasConstantsSchema = z.record(z.string(), WorkflowCanvasConstantValueSchema);
|
|
9042
|
+
const WorkflowCanvasGraphSchema = z.object({
|
|
9043
|
+
nodes: z.array(WorkflowCanvasGraphNodeSchema),
|
|
9044
|
+
edges: z.array(WorkflowCanvasEdgeSchema),
|
|
9045
|
+
/** Top-level literal constants from the workflow source (for value-token resolution). */
|
|
9046
|
+
constants: WorkflowCanvasConstantsSchema.optional()
|
|
9047
|
+
});
|
|
9048
|
+
/**
|
|
9049
|
+
* Deploy-time summary of one credential a step requires, derived from the
|
|
9050
|
+
* action/agent-tool definition's `.credentials`. The workflow-canvas credential
|
|
9051
|
+
* overlay joins a step node's `slug` to these to resolve the bound instance.
|
|
9052
|
+
* `key` doubles as the app slug (matches `credential_instances.app_slug`).
|
|
9053
|
+
*/
|
|
9054
|
+
const CredentialRequirementSummarySchema = z.object({
|
|
9055
|
+
key: z.string(),
|
|
9056
|
+
kind: CredentialAuthKindSchema,
|
|
9057
|
+
/** Scope pinned via `.scope(...)`; absent means project-default → org-default. */
|
|
9058
|
+
scope: CredentialScopeTypeSchema.optional()
|
|
9059
|
+
});
|
|
8302
9060
|
const StoredRouteManifestSkillSchema = z.object({
|
|
8303
9061
|
slug: z.string(),
|
|
8304
|
-
name:
|
|
8305
|
-
description:
|
|
9062
|
+
name: requiredDisplayTextSchema,
|
|
9063
|
+
description: requiredDisplayTextSchema,
|
|
8306
9064
|
moduleFile: z.string()
|
|
8307
9065
|
});
|
|
8308
9066
|
const attachmentSchemasSchema = z.record(z.string(), z.object({
|
|
@@ -8310,8 +9068,8 @@ const attachmentSchemasSchema = z.record(z.string(), z.object({
|
|
|
8310
9068
|
filterSchema: z.record(z.string(), z.unknown()).optional()
|
|
8311
9069
|
}));
|
|
8312
9070
|
const attachmentMetaSchema = z.record(z.string(), z.object({
|
|
8313
|
-
name:
|
|
8314
|
-
description:
|
|
9071
|
+
name: requiredDisplayTextSchema,
|
|
9072
|
+
description: requiredDisplayTextSchema
|
|
8315
9073
|
}));
|
|
8316
9074
|
const storedRouteManifestEntryV2Schema = z.discriminatedUnion("kind", [
|
|
8317
9075
|
z.object({ kind: z.literal("health") }),
|
|
@@ -8319,23 +9077,43 @@ const storedRouteManifestEntryV2Schema = z.discriminatedUnion("kind", [
|
|
|
8319
9077
|
kind: z.literal("agent"),
|
|
8320
9078
|
slug: z.string(),
|
|
8321
9079
|
moduleFile: z.string(),
|
|
8322
|
-
name:
|
|
8323
|
-
description:
|
|
9080
|
+
name: requiredDisplayTextSchema,
|
|
9081
|
+
description: requiredDisplayTextSchema,
|
|
8324
9082
|
model: z.string(),
|
|
8325
9083
|
systemPrompt: z.string(),
|
|
8326
9084
|
toolCount: z.number().int().nonnegative(),
|
|
8327
9085
|
credentialCount: z.number().int().nonnegative(),
|
|
8328
9086
|
appSlugs: z.array(z.string()).default([]),
|
|
8329
|
-
toolSlugs: z.array(z.string()).default([])
|
|
9087
|
+
toolSlugs: z.array(z.string()).default([]),
|
|
9088
|
+
/** Credential requirements per tool slug (the agent's credential consumer key). */
|
|
9089
|
+
toolRequirements: z.record(z.string(), z.array(CredentialRequirementSummarySchema)).optional()
|
|
9090
|
+
}),
|
|
9091
|
+
z.object({
|
|
9092
|
+
kind: z.literal("action"),
|
|
9093
|
+
slug: z.string(),
|
|
9094
|
+
name: requiredDisplayTextSchema,
|
|
9095
|
+
description: requiredDisplayTextSchema,
|
|
9096
|
+
moduleFile: z.string(),
|
|
9097
|
+
/** App slug for actions imported from an integration package (`@keystrokehq/<app>/actions`). */
|
|
9098
|
+
appSlug: z.string().optional(),
|
|
9099
|
+
inputSchema: z.record(z.string(), z.unknown()),
|
|
9100
|
+
outputSchema: z.record(z.string(), z.unknown()),
|
|
9101
|
+
/** Credentials this action requires (for the canvas credential overlay). */
|
|
9102
|
+
requirements: z.array(CredentialRequirementSummarySchema).optional()
|
|
8330
9103
|
}),
|
|
8331
9104
|
z.object({
|
|
8332
9105
|
kind: z.literal("workflow"),
|
|
8333
9106
|
slug: z.string(),
|
|
8334
|
-
name:
|
|
8335
|
-
description:
|
|
9107
|
+
name: requiredDisplayTextSchema,
|
|
9108
|
+
description: requiredDisplayTextSchema,
|
|
8336
9109
|
subscribable: z.boolean(),
|
|
8337
9110
|
moduleFile: z.string(),
|
|
8338
|
-
requestSchema: z.record(z.string(), z.unknown())
|
|
9111
|
+
requestSchema: z.record(z.string(), z.unknown()),
|
|
9112
|
+
responseSchema: z.record(z.string(), z.unknown()).optional(),
|
|
9113
|
+
/** Deterministic AST control-flow skeleton (deploy-time producer). */
|
|
9114
|
+
flowGraph: WorkflowCanvasGraphSchema.optional(),
|
|
9115
|
+
/** sha256 of the workflow source the `flowGraph` was produced from (staleness). */
|
|
9116
|
+
flowGraphSourceHash: z.string().optional()
|
|
8339
9117
|
}),
|
|
8340
9118
|
z.object({
|
|
8341
9119
|
kind: z.literal("trigger-webhook"),
|
|
@@ -8354,8 +9132,8 @@ const storedRouteManifestEntryV2Schema = z.discriminatedUnion("kind", [
|
|
|
8354
9132
|
moduleFile: z.string(),
|
|
8355
9133
|
sourceHash: z.string().optional(),
|
|
8356
9134
|
schedule: z.string(),
|
|
8357
|
-
name:
|
|
8358
|
-
description:
|
|
9135
|
+
name: requiredDisplayTextSchema,
|
|
9136
|
+
description: requiredDisplayTextSchema
|
|
8359
9137
|
}),
|
|
8360
9138
|
z.object({
|
|
8361
9139
|
kind: z.literal("trigger-poll-group"),
|
|
@@ -8371,8 +9149,8 @@ const storedRouteManifestEntryV2Schema = z.discriminatedUnion("kind", [
|
|
|
8371
9149
|
moduleFile: z.string(),
|
|
8372
9150
|
sourceHash: z.string().optional(),
|
|
8373
9151
|
schedule: z.string(),
|
|
8374
|
-
name:
|
|
8375
|
-
description:
|
|
9152
|
+
name: requiredDisplayTextSchema,
|
|
9153
|
+
description: requiredDisplayTextSchema
|
|
8376
9154
|
})
|
|
8377
9155
|
]);
|
|
8378
9156
|
const storedRouteManifestV2Schema = z.object({
|
|
@@ -8381,165 +9159,14 @@ const storedRouteManifestV2Schema = z.object({
|
|
|
8381
9159
|
skills: z.array(StoredRouteManifestSkillSchema).default([]),
|
|
8382
9160
|
integrations: z.array(z.string()).optional()
|
|
8383
9161
|
});
|
|
8384
|
-
|
|
8385
|
-
|
|
8386
|
-
|
|
8387
|
-
|
|
8388
|
-
|
|
8389
|
-
|
|
8390
|
-
"trigger-run-detail"
|
|
8391
|
-
]);
|
|
8392
|
-
function webhookEndpointFromPath(path) {
|
|
8393
|
-
return path.replace(/^\/triggers\//, "").replace(/^\/+|\/+$/g, "");
|
|
8394
|
-
}
|
|
8395
|
-
function legacyAgentAppSlugs(entry) {
|
|
8396
|
-
if (Array.isArray(entry.appSlugs)) return entry.appSlugs;
|
|
8397
|
-
if (Array.isArray(entry.credentialSlugs)) return entry.credentialSlugs;
|
|
8398
|
-
if (Array.isArray(entry.credentialKeys)) return entry.credentialKeys;
|
|
8399
|
-
return [];
|
|
8400
|
-
}
|
|
8401
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8402
|
-
function normalizeEntryToV2(entry) {
|
|
8403
|
-
const kind = entry.kind;
|
|
8404
|
-
if (typeof kind !== "string") return null;
|
|
8405
|
-
if (DERIVED_ENTRY_KINDS.has(kind) || kind === "plugin") return null;
|
|
8406
|
-
if (kind === "health") return { kind: "health" };
|
|
8407
|
-
if (kind === "agent") {
|
|
8408
|
-
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.agentSlug === "string" ? entry.agentSlug : void 0;
|
|
8409
|
-
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
8410
|
-
return {
|
|
8411
|
-
kind: "agent",
|
|
8412
|
-
slug,
|
|
8413
|
-
moduleFile: entry.moduleFile,
|
|
8414
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8415
|
-
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
8416
|
-
model: typeof entry.model === "string" ? entry.model : "",
|
|
8417
|
-
systemPrompt: typeof entry.systemPrompt === "string" ? entry.systemPrompt : "",
|
|
8418
|
-
toolCount: typeof entry.toolCount === "number" ? entry.toolCount : 0,
|
|
8419
|
-
credentialCount: typeof entry.credentialCount === "number" ? entry.credentialCount : 0,
|
|
8420
|
-
appSlugs: legacyAgentAppSlugs(entry),
|
|
8421
|
-
toolSlugs: Array.isArray(entry.toolSlugs) ? entry.toolSlugs : []
|
|
8422
|
-
};
|
|
8423
|
-
}
|
|
8424
|
-
if (kind === "workflow") {
|
|
8425
|
-
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.workflowSlug === "string" ? entry.workflowSlug : void 0;
|
|
8426
|
-
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
8427
|
-
const name = typeof entry.name === "string" ? entry.name : typeof entry.workflowName === "string" ? entry.workflowName : void 0;
|
|
8428
|
-
return {
|
|
8429
|
-
kind: "workflow",
|
|
8430
|
-
slug,
|
|
8431
|
-
moduleFile: entry.moduleFile,
|
|
8432
|
-
...name ? { name } : {},
|
|
8433
|
-
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
8434
|
-
subscribable: entry.subscribable === true,
|
|
8435
|
-
requestSchema: entry.requestSchema && typeof entry.requestSchema === "object" ? entry.requestSchema : {}
|
|
8436
|
-
};
|
|
8437
|
-
}
|
|
8438
|
-
if (kind === "trigger-webhook") {
|
|
8439
|
-
if (typeof entry.moduleFile !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
8440
|
-
const endpoint = typeof entry.endpoint === "string" ? entry.endpoint : typeof entry.path === "string" ? webhookEndpointFromPath(entry.path) : void 0;
|
|
8441
|
-
if (!endpoint) return null;
|
|
8442
|
-
return {
|
|
8443
|
-
kind: "trigger-webhook",
|
|
8444
|
-
endpoint,
|
|
8445
|
-
attachmentIds: entry.attachmentIds,
|
|
8446
|
-
moduleFile: entry.moduleFile,
|
|
8447
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8448
|
-
attachmentSchemas: entry.attachmentSchemas && typeof entry.attachmentSchemas === "object" ? entry.attachmentSchemas : {},
|
|
8449
|
-
...entry.attachmentMeta && typeof entry.attachmentMeta === "object" ? { attachmentMeta: entry.attachmentMeta } : {}
|
|
8450
|
-
};
|
|
8451
|
-
}
|
|
8452
|
-
if (kind === "trigger-poll") {
|
|
8453
|
-
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
8454
|
-
return {
|
|
8455
|
-
kind: "trigger-poll",
|
|
8456
|
-
attachmentId: entry.attachmentId,
|
|
8457
|
-
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
8458
|
-
moduleFile: entry.moduleFile,
|
|
8459
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8460
|
-
schedule: entry.schedule,
|
|
8461
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8462
|
-
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
8463
|
-
};
|
|
8464
|
-
}
|
|
8465
|
-
if (kind === "trigger-poll-group") {
|
|
8466
|
-
if (typeof entry.pollId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
8467
|
-
return {
|
|
8468
|
-
kind: "trigger-poll-group",
|
|
8469
|
-
pollId: entry.pollId,
|
|
8470
|
-
attachmentIds: entry.attachmentIds,
|
|
8471
|
-
moduleFile: entry.moduleFile,
|
|
8472
|
-
schedule: entry.schedule
|
|
8473
|
-
};
|
|
8474
|
-
}
|
|
8475
|
-
if (kind === "cron-schedule") {
|
|
8476
|
-
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
8477
|
-
return {
|
|
8478
|
-
kind: "cron-schedule",
|
|
8479
|
-
attachmentId: entry.attachmentId,
|
|
8480
|
-
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
8481
|
-
moduleFile: entry.moduleFile,
|
|
8482
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8483
|
-
schedule: entry.schedule,
|
|
8484
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8485
|
-
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
8486
|
-
};
|
|
8487
|
-
}
|
|
8488
|
-
return null;
|
|
8489
|
-
}
|
|
8490
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8491
|
-
function normalizeV2ManifestInput(value) {
|
|
8492
|
-
if (!value || typeof value !== "object") return value;
|
|
8493
|
-
const raw = value;
|
|
8494
|
-
if (raw.version !== 2 || !Array.isArray(raw.entries)) return value;
|
|
8495
|
-
return {
|
|
8496
|
-
...raw,
|
|
8497
|
-
entries: raw.entries.map((entry) => {
|
|
8498
|
-
if (!entry || typeof entry !== "object") return entry;
|
|
8499
|
-
const kind = entry.kind;
|
|
8500
|
-
if (kind === "trigger-poll" || kind === "cron-schedule" || kind === "trigger-webhook" || kind === "trigger-poll-group") {
|
|
8501
|
-
const trigger = entry;
|
|
8502
|
-
if (Array.isArray(trigger.attachmentIds)) return entry;
|
|
8503
|
-
return {
|
|
8504
|
-
...trigger,
|
|
8505
|
-
attachmentIds: typeof trigger.attachmentId === "string" ? [trigger.attachmentId] : []
|
|
8506
|
-
};
|
|
8507
|
-
}
|
|
8508
|
-
if (kind !== "agent") return entry;
|
|
8509
|
-
const agent = entry;
|
|
8510
|
-
if (Array.isArray(agent.appSlugs)) return entry;
|
|
8511
|
-
const appSlugs = legacyAgentAppSlugs(agent);
|
|
8512
|
-
if (appSlugs.length === 0) return entry;
|
|
8513
|
-
const { credentialKeys: _credentialKeys, credentialSlugs: _credentialSlugs, ...rest } = agent;
|
|
8514
|
-
return {
|
|
8515
|
-
...rest,
|
|
8516
|
-
appSlugs,
|
|
8517
|
-
toolSlugs: Array.isArray(agent.toolSlugs) ? agent.toolSlugs : []
|
|
8518
|
-
};
|
|
8519
|
-
})
|
|
8520
|
-
};
|
|
8521
|
-
}
|
|
8522
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8523
|
-
function normalizeStoredRouteManifestToV2(value) {
|
|
8524
|
-
if (!value || typeof value !== "object") throw new Error("Invalid route manifest");
|
|
8525
|
-
const raw = value;
|
|
8526
|
-
if (raw.version === 2) return storedRouteManifestV2Schema.parse(normalizeV2ManifestInput(value));
|
|
8527
|
-
const entriesRaw = Array.isArray(raw.entries) ? raw.entries : [];
|
|
8528
|
-
const entries = [];
|
|
8529
|
-
for (const entry of entriesRaw) {
|
|
8530
|
-
if (!entry || typeof entry !== "object") continue;
|
|
8531
|
-
const normalized = normalizeEntryToV2(entry);
|
|
8532
|
-
if (normalized) entries.push(normalized);
|
|
8533
|
-
}
|
|
8534
|
-
return storedRouteManifestV2Schema.parse({
|
|
8535
|
-
version: 2,
|
|
8536
|
-
entries,
|
|
8537
|
-
skills: raw.skills ?? [],
|
|
8538
|
-
integrations: raw.integrations
|
|
8539
|
-
});
|
|
8540
|
-
}
|
|
9162
|
+
/**
|
|
9163
|
+
* Parse a stored route manifest. Only the strict v2 schema is supported: the
|
|
9164
|
+
* builder always emits v2 and every deploy regenerates the manifest, so there is
|
|
9165
|
+
* no legacy upcasting. (The pre-v2 `normalizeEntryToV2` path was removed once the
|
|
9166
|
+
* data tables were truncated and all artifacts redeployed.)
|
|
9167
|
+
*/
|
|
8541
9168
|
function parseStoredRouteManifest(value) {
|
|
8542
|
-
return
|
|
9169
|
+
return storedRouteManifestV2Schema.parse(value);
|
|
8543
9170
|
}
|
|
8544
9171
|
/** Messaging platforms that support agent gateway bindings. */
|
|
8545
9172
|
const ChannelPlatformKeySchema = z.enum(["slack"]);
|
|
@@ -9298,24 +9925,6 @@ function parseAppSlug(slug) {
|
|
|
9298
9925
|
slug: trimmed
|
|
9299
9926
|
};
|
|
9300
9927
|
}
|
|
9301
|
-
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
9302
|
-
const CredentialAuthKindSchema = z.enum([
|
|
9303
|
-
"api_key",
|
|
9304
|
-
"oauth_managed",
|
|
9305
|
-
"keystroke"
|
|
9306
|
-
]);
|
|
9307
|
-
/**
|
|
9308
|
-
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
9309
|
-
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
9310
|
-
* resolver tries the project default, then the org default, then throws.
|
|
9311
|
-
*/
|
|
9312
|
-
const CredentialScopeTypeSchema = z.enum([
|
|
9313
|
-
"organization",
|
|
9314
|
-
"project",
|
|
9315
|
-
"user"
|
|
9316
|
-
]);
|
|
9317
|
-
CredentialAuthKindSchema.options;
|
|
9318
|
-
CredentialScopeTypeSchema.options;
|
|
9319
9928
|
/** Human-readable app name from a credential slug (e.g. `google-drive` → `Google Drive`). */
|
|
9320
9929
|
function displayCredentialAppName(appId) {
|
|
9321
9930
|
return appId.split(/[-_]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
@@ -10410,7 +11019,7 @@ const WorkspaceTriggerSummarySchema = z.object({
|
|
|
10410
11019
|
id: z.string(),
|
|
10411
11020
|
slug: z.string(),
|
|
10412
11021
|
name: z.string(),
|
|
10413
|
-
description: z.string().
|
|
11022
|
+
description: z.string().min(1),
|
|
10414
11023
|
type: TriggerTypeSchema,
|
|
10415
11024
|
status: TriggerStatusSchema,
|
|
10416
11025
|
projectId: z.string(),
|
|
@@ -10836,7 +11445,7 @@ const AgentSummarySchema = z.object({
|
|
|
10836
11445
|
name: z.string().min(1),
|
|
10837
11446
|
projectId: z.string().min(1),
|
|
10838
11447
|
updatedAt: z.string().min(1),
|
|
10839
|
-
description: z.string().
|
|
11448
|
+
description: z.string().min(1),
|
|
10840
11449
|
sourcePath: z.string().min(1).optional(),
|
|
10841
11450
|
model: z.string().optional(),
|
|
10842
11451
|
capabilities: z.object({
|
|
@@ -10858,7 +11467,7 @@ const WorkflowSummarySchema = z.object({
|
|
|
10858
11467
|
name: z.string().min(1),
|
|
10859
11468
|
projectId: z.string().min(1),
|
|
10860
11469
|
updatedAt: z.string().min(1),
|
|
10861
|
-
description: z.string().
|
|
11470
|
+
description: z.string().min(1),
|
|
10862
11471
|
sourcePath: z.string().min(1).optional(),
|
|
10863
11472
|
lastRunAt: optionalTimestamp
|
|
10864
11473
|
});
|
|
@@ -10868,7 +11477,7 @@ const SkillSummarySchema = z.object({
|
|
|
10868
11477
|
name: z.string().min(1),
|
|
10869
11478
|
projectId: z.string().min(1),
|
|
10870
11479
|
updatedAt: z.string().min(1),
|
|
10871
|
-
description: z.string().
|
|
11480
|
+
description: z.string().min(1),
|
|
10872
11481
|
sourcePath: z.string().min(1).optional()
|
|
10873
11482
|
});
|
|
10874
11483
|
const AgentSummaryListResponseSchema = z.array(AgentSummarySchema);
|
|
@@ -11010,6 +11619,366 @@ const ListAgentWorkspaceFilesResponseSchema = z.object({ files: z.array(AgentWor
|
|
|
11010
11619
|
function agentWorkspaceFileId(path) {
|
|
11011
11620
|
return projectFileId(path);
|
|
11012
11621
|
}
|
|
11622
|
+
/** Whether the overview is still being produced or finished. */
|
|
11623
|
+
const WorkflowOverviewStatusSchema = z.enum(["generating", "ready"]);
|
|
11624
|
+
/** One phase of the guided-tour overview. */
|
|
11625
|
+
const WorkflowPhaseSchema = z.object({
|
|
11626
|
+
id: z.string(),
|
|
11627
|
+
title: z.string(),
|
|
11628
|
+
copy: z.string(),
|
|
11629
|
+
nodeIds: z.array(z.string())
|
|
11630
|
+
});
|
|
11631
|
+
/** LLM-generated overview envelope. */
|
|
11632
|
+
const WorkspaceWorkflowOverviewSchema = z.object({
|
|
11633
|
+
status: WorkflowOverviewStatusSchema,
|
|
11634
|
+
summary: z.string(),
|
|
11635
|
+
phases: z.array(WorkflowPhaseSchema),
|
|
11636
|
+
hash: z.string(),
|
|
11637
|
+
generatedAt: z.string().nullable(),
|
|
11638
|
+
model: z.string()
|
|
11639
|
+
});
|
|
11640
|
+
/** Subset of JSON-Schema field types the dashboard form renders inline. */
|
|
11641
|
+
const WorkflowInputFieldTypeSchema = z.enum([
|
|
11642
|
+
"string",
|
|
11643
|
+
"number",
|
|
11644
|
+
"boolean",
|
|
11645
|
+
"enum",
|
|
11646
|
+
"object",
|
|
11647
|
+
"array"
|
|
11648
|
+
]);
|
|
11649
|
+
const WorkflowInputFieldSchema = z.lazy(() => z.object({
|
|
11650
|
+
key: z.string(),
|
|
11651
|
+
label: z.string(),
|
|
11652
|
+
type: WorkflowInputFieldTypeSchema,
|
|
11653
|
+
required: z.boolean(),
|
|
11654
|
+
description: z.string().optional(),
|
|
11655
|
+
placeholder: z.string().optional(),
|
|
11656
|
+
options: z.array(z.string()).optional(),
|
|
11657
|
+
default: z.union([
|
|
11658
|
+
z.string(),
|
|
11659
|
+
z.number(),
|
|
11660
|
+
z.boolean()
|
|
11661
|
+
]).optional(),
|
|
11662
|
+
children: z.array(WorkflowInputFieldSchema).optional(),
|
|
11663
|
+
format: z.string().optional()
|
|
11664
|
+
}));
|
|
11665
|
+
/** Flat, render-ready view of a workflow's input schema. */
|
|
11666
|
+
const WorkflowInputSchemaSchema = z.object({ fields: z.array(WorkflowInputFieldSchema) });
|
|
11667
|
+
/** A workflow's run-input contract plus its persisted values. */
|
|
11668
|
+
const WorkflowRunInputsSchema = z.object({
|
|
11669
|
+
schema: WorkflowInputSchemaSchema,
|
|
11670
|
+
values: z.record(z.string(), z.unknown()).nullable()
|
|
11671
|
+
});
|
|
11672
|
+
z.object({ runId: z.string() });
|
|
11673
|
+
/** Annotation lifecycle: "generating" while the LLM pass streams in, then "ready". */
|
|
11674
|
+
const WorkflowCanvasStatusSchema = z.enum(["generating", "ready"]);
|
|
11675
|
+
/** LLM-produced enrichment for a single skeleton node. */
|
|
11676
|
+
const WorkflowCanvasAnnotationSchema = z.object({
|
|
11677
|
+
label: z.string().optional(),
|
|
11678
|
+
description: z.string().optional()
|
|
11679
|
+
});
|
|
11680
|
+
/**
|
|
11681
|
+
* One token of a configured input value (inspector form). Mirrors the producer's
|
|
11682
|
+
* raw token kinds, with display fields filled by the platform join: `reference`
|
|
11683
|
+
* gains a human `sourceLabel`; `variable` may gain a `resolvedValue` when the name
|
|
11684
|
+
* matches a known top-level constant.
|
|
11685
|
+
*/
|
|
11686
|
+
const WorkflowNodeValueTokenSchema = z.discriminatedUnion("kind", [
|
|
11687
|
+
z.object({
|
|
11688
|
+
kind: z.literal("text"),
|
|
11689
|
+
text: z.string()
|
|
11690
|
+
}),
|
|
11691
|
+
z.object({
|
|
11692
|
+
kind: z.literal("reference"),
|
|
11693
|
+
sourceNodeId: z.string().optional(),
|
|
11694
|
+
sourceLabel: z.string(),
|
|
11695
|
+
field: z.string().optional()
|
|
11696
|
+
}),
|
|
11697
|
+
z.object({
|
|
11698
|
+
kind: z.literal("variable"),
|
|
11699
|
+
text: z.string(),
|
|
11700
|
+
/** Concrete value when `text` resolves to a top-level literal constant. */
|
|
11701
|
+
resolvedValue: z.string().optional()
|
|
11702
|
+
}),
|
|
11703
|
+
z.object({
|
|
11704
|
+
kind: z.literal("call"),
|
|
11705
|
+
name: z.string()
|
|
11706
|
+
})
|
|
11707
|
+
]);
|
|
11708
|
+
/** The configured value of one input at this call site. */
|
|
11709
|
+
const WorkflowNodeInputBindingSchema = z.object({
|
|
11710
|
+
tokens: z.array(WorkflowNodeValueTokenSchema),
|
|
11711
|
+
multiline: z.boolean().optional()
|
|
11712
|
+
});
|
|
11713
|
+
/** An inspector input with optional call-site binding. */
|
|
11714
|
+
const WorkflowCanvasNodeInputSchema = WorkflowInputFieldSchema.and(z.object({
|
|
11715
|
+
binding: WorkflowNodeInputBindingSchema.optional(),
|
|
11716
|
+
additional: z.boolean().optional()
|
|
11717
|
+
}));
|
|
11718
|
+
/** Authored, deterministic metadata for a single node. */
|
|
11719
|
+
const WorkflowCanvasNodeMetaSchema = z.object({
|
|
11720
|
+
kind: z.enum([
|
|
11721
|
+
"action",
|
|
11722
|
+
"agent",
|
|
11723
|
+
"workflow",
|
|
11724
|
+
"llm",
|
|
11725
|
+
"trigger",
|
|
11726
|
+
"boundary"
|
|
11727
|
+
]),
|
|
11728
|
+
slug: z.string(),
|
|
11729
|
+
name: z.string(),
|
|
11730
|
+
description: z.string().optional(),
|
|
11731
|
+
appSlug: z.string().optional(),
|
|
11732
|
+
inputs: z.array(WorkflowCanvasNodeInputSchema),
|
|
11733
|
+
outputs: z.array(WorkflowInputFieldSchema),
|
|
11734
|
+
requiredApps: z.array(z.string()).optional(),
|
|
11735
|
+
model: z.string().optional(),
|
|
11736
|
+
toolCount: z.number().int().nonnegative().optional()
|
|
11737
|
+
});
|
|
11738
|
+
/** The workflow canvas envelope. */
|
|
11739
|
+
const WorkflowCanvasSchema = z.object({
|
|
11740
|
+
graph: WorkflowCanvasGraphSchema,
|
|
11741
|
+
nodeMetadata: z.record(z.string(), WorkflowCanvasNodeMetaSchema),
|
|
11742
|
+
annotations: z.record(z.string(), WorkflowCanvasAnnotationSchema),
|
|
11743
|
+
status: WorkflowCanvasStatusSchema,
|
|
11744
|
+
hash: z.string(),
|
|
11745
|
+
generatedAt: z.string().nullable(),
|
|
11746
|
+
model: z.string()
|
|
11747
|
+
});
|
|
11748
|
+
/** Per-node execution state for a single run. */
|
|
11749
|
+
const WorkflowCanvasNodeRunStatusSchema = z.enum([
|
|
11750
|
+
"pending",
|
|
11751
|
+
"running",
|
|
11752
|
+
"succeeded",
|
|
11753
|
+
"failed",
|
|
11754
|
+
"skipped"
|
|
11755
|
+
]);
|
|
11756
|
+
const WorkflowCanvasNodeRunStateSchema = z.object({
|
|
11757
|
+
status: WorkflowCanvasNodeRunStatusSchema,
|
|
11758
|
+
iteration: z.object({
|
|
11759
|
+
index: z.number().int().nonnegative(),
|
|
11760
|
+
total: z.number().int().nonnegative()
|
|
11761
|
+
}).optional()
|
|
11762
|
+
});
|
|
11763
|
+
/** Overall lifecycle of a run as the canvas animates it. */
|
|
11764
|
+
const WorkflowCanvasRunStatusSchema = z.enum([
|
|
11765
|
+
"running",
|
|
11766
|
+
"succeeded",
|
|
11767
|
+
"failed",
|
|
11768
|
+
"canceled"
|
|
11769
|
+
]);
|
|
11770
|
+
/** A run projected onto the canvas. */
|
|
11771
|
+
const WorkflowCanvasRunSchema = z.object({
|
|
11772
|
+
runId: z.string(),
|
|
11773
|
+
status: WorkflowCanvasRunStatusSchema,
|
|
11774
|
+
startedAt: z.string(),
|
|
11775
|
+
finishedAt: z.string().nullable(),
|
|
11776
|
+
nodeStates: z.record(z.string(), WorkflowCanvasNodeRunStateSchema)
|
|
11777
|
+
});
|
|
11778
|
+
/** Scope a credential instance lives in. */
|
|
11779
|
+
const WorkflowCredentialScopeSchema = z.enum([
|
|
11780
|
+
"organization",
|
|
11781
|
+
"project",
|
|
11782
|
+
"user"
|
|
11783
|
+
]);
|
|
11784
|
+
/** The concrete credential instance a binding currently resolves to. */
|
|
11785
|
+
const WorkflowResolvedCredentialSchema = z.object({
|
|
11786
|
+
id: z.string(),
|
|
11787
|
+
name: z.string(),
|
|
11788
|
+
scope: WorkflowCredentialScopeSchema,
|
|
11789
|
+
appSlug: z.string().optional(),
|
|
11790
|
+
isDefault: z.boolean().optional(),
|
|
11791
|
+
projectId: z.string().optional(),
|
|
11792
|
+
projectName: z.string().optional()
|
|
11793
|
+
});
|
|
11794
|
+
/** Default model for the gated code-block annotation pass — cheap, same as trigger overviews. */
|
|
11795
|
+
const DEFAULT_WORKFLOW_CANVAS_MODEL = "deepseek/deepseek-v4-flash";
|
|
11796
|
+
z.record(z.string(), WorkflowCanvasAnnotationSchema);
|
|
11797
|
+
/** One opaque code-block the annotation pass should label, keyed by its canvas node id. */
|
|
11798
|
+
const WorkflowCanvasAnnotationCodeBlockSchema = z.object({
|
|
11799
|
+
nodeId: z.string(),
|
|
11800
|
+
/** The raw source snippet (the node's label) the LLM turns into human copy. */
|
|
11801
|
+
source: z.string()
|
|
11802
|
+
});
|
|
11803
|
+
/** Inputs the worker feeds the LLM for the gated code-block annotation pass. */
|
|
11804
|
+
const WorkflowCanvasAnnotationsInputSchema = z.object({
|
|
11805
|
+
workflowName: z.string(),
|
|
11806
|
+
workflowDescription: z.string().nullable(),
|
|
11807
|
+
codeBlocks: z.array(WorkflowCanvasAnnotationCodeBlockSchema)
|
|
11808
|
+
});
|
|
11809
|
+
z.object({
|
|
11810
|
+
workflowId: z.string(),
|
|
11811
|
+
projectId: z.string(),
|
|
11812
|
+
hash: z.string(),
|
|
11813
|
+
model: z.string(),
|
|
11814
|
+
input: WorkflowCanvasAnnotationsInputSchema
|
|
11815
|
+
});
|
|
11816
|
+
/** Default model for the workflow overview pass — cheap, same as the annotation/trigger passes. */
|
|
11817
|
+
const DEFAULT_WORKFLOW_OVERVIEW_MODEL = "deepseek/deepseek-v4-flash";
|
|
11818
|
+
/** One node as the overview LLM sees it (derived from the canvas node metadata + graph). */
|
|
11819
|
+
const WorkflowOverviewNodeSchema = z.object({
|
|
11820
|
+
nodeId: z.string(),
|
|
11821
|
+
label: z.string(),
|
|
11822
|
+
kind: z.string(),
|
|
11823
|
+
description: z.string().optional(),
|
|
11824
|
+
/** App/integration slug for steps imported from a `@keystrokehq/<app>` package. */
|
|
11825
|
+
appSlug: z.string().optional(),
|
|
11826
|
+
/** Authored input field keys (from the action/agent/workflow definition). */
|
|
11827
|
+
inputs: z.array(z.string()).optional(),
|
|
11828
|
+
/** Authored output field keys. */
|
|
11829
|
+
outputs: z.array(z.string()).optional(),
|
|
11830
|
+
/** Agent-only: the model the agent runs on. */
|
|
11831
|
+
model: z.string().optional(),
|
|
11832
|
+
/** Agent-only: number of tools available to the agent. */
|
|
11833
|
+
toolCount: z.number().int().nonnegative().optional()
|
|
11834
|
+
});
|
|
11835
|
+
/** Inputs the worker feeds the LLM to produce the workflow overview (summary + phases). */
|
|
11836
|
+
const WorkflowOverviewInputSchema = z.object({
|
|
11837
|
+
workflowName: z.string(),
|
|
11838
|
+
workflowDescription: z.string().nullable(),
|
|
11839
|
+
/** Display labels of the trigger sources upstream of the workflow (read-only context). */
|
|
11840
|
+
triggers: z.array(z.string()),
|
|
11841
|
+
nodes: z.array(WorkflowOverviewNodeSchema),
|
|
11842
|
+
/** The workflow's TypeScript source (best-effort; null when the deploy has no source snapshot). */
|
|
11843
|
+
source: z.string().nullable()
|
|
11844
|
+
});
|
|
11845
|
+
z.object({
|
|
11846
|
+
workflowId: z.string(),
|
|
11847
|
+
projectId: z.string(),
|
|
11848
|
+
hash: z.string(),
|
|
11849
|
+
model: z.string(),
|
|
11850
|
+
input: WorkflowOverviewInputSchema
|
|
11851
|
+
});
|
|
11852
|
+
const WorkflowCanvasCredentialBindingBaseSchema = z.object({
|
|
11853
|
+
credentialKey: z.string(),
|
|
11854
|
+
label: z.string(),
|
|
11855
|
+
appSlug: z.string().optional()
|
|
11856
|
+
});
|
|
11857
|
+
/** How one credential requirement on a step currently resolves. */
|
|
11858
|
+
const WorkflowCanvasCredentialBindingSchema = z.union([
|
|
11859
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11860
|
+
policy: z.enum([
|
|
11861
|
+
"project-default",
|
|
11862
|
+
"org-default",
|
|
11863
|
+
"assigned"
|
|
11864
|
+
]),
|
|
11865
|
+
instance: WorkflowResolvedCredentialSchema
|
|
11866
|
+
}),
|
|
11867
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11868
|
+
policy: z.literal("scope-pinned"),
|
|
11869
|
+
pinnedScope: WorkflowCredentialScopeSchema,
|
|
11870
|
+
instance: WorkflowResolvedCredentialSchema
|
|
11871
|
+
}),
|
|
11872
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11873
|
+
policy: z.literal("unresolved"),
|
|
11874
|
+
reason: z.enum(["needs-selection", "missing"]),
|
|
11875
|
+
pinnedScope: WorkflowCredentialScopeSchema.optional()
|
|
11876
|
+
})
|
|
11877
|
+
]);
|
|
11878
|
+
/** Live credential overlay: canvas node id → its step's credential bindings. */
|
|
11879
|
+
const WorkflowCanvasCredentialBindingsSchema = z.record(z.string(), z.array(WorkflowCanvasCredentialBindingSchema));
|
|
11880
|
+
function isObject(value) {
|
|
11881
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11882
|
+
}
|
|
11883
|
+
function titleCaseKey(key) {
|
|
11884
|
+
return key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/[-_/]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
11885
|
+
}
|
|
11886
|
+
function normalizeFieldType(schema) {
|
|
11887
|
+
const rawType = schema.type;
|
|
11888
|
+
if (Array.isArray(rawType)) {
|
|
11889
|
+
const primary = rawType.find((entry) => entry !== "null");
|
|
11890
|
+
if (typeof primary === "string") return normalizeFieldType({
|
|
11891
|
+
...schema,
|
|
11892
|
+
type: primary
|
|
11893
|
+
});
|
|
11894
|
+
return null;
|
|
11895
|
+
}
|
|
11896
|
+
if (typeof rawType !== "string") return null;
|
|
11897
|
+
if (Array.isArray(schema.enum) && schema.enum.every((entry) => typeof entry === "string")) return "enum";
|
|
11898
|
+
switch (rawType) {
|
|
11899
|
+
case "string":
|
|
11900
|
+
case "number":
|
|
11901
|
+
case "integer": return rawType === "integer" ? "number" : rawType;
|
|
11902
|
+
case "boolean": return "boolean";
|
|
11903
|
+
case "object": return "object";
|
|
11904
|
+
case "array": return "array";
|
|
11905
|
+
default: return null;
|
|
11906
|
+
}
|
|
11907
|
+
}
|
|
11908
|
+
function normalizeField(key, schema, required) {
|
|
11909
|
+
const type = normalizeFieldType(schema);
|
|
11910
|
+
if (!type) return null;
|
|
11911
|
+
const field = {
|
|
11912
|
+
key,
|
|
11913
|
+
label: typeof schema.title === "string" ? schema.title : titleCaseKey(key),
|
|
11914
|
+
type,
|
|
11915
|
+
required,
|
|
11916
|
+
...typeof schema.description === "string" ? { description: schema.description } : {},
|
|
11917
|
+
...typeof schema.format === "string" ? { format: schema.format } : {}
|
|
11918
|
+
};
|
|
11919
|
+
if (type === "enum" && Array.isArray(schema.enum)) field.options = schema.enum.filter((entry) => typeof entry === "string");
|
|
11920
|
+
if (schema.default !== void 0 && (typeof schema.default === "string" || typeof schema.default === "number" || typeof schema.default === "boolean")) field.default = schema.default;
|
|
11921
|
+
if (type === "object" && isObject(schema.properties)) {
|
|
11922
|
+
const childRequired = Array.isArray(schema.required) ? schema.required.filter((entry) => typeof entry === "string") : [];
|
|
11923
|
+
field.children = Object.entries(schema.properties).flatMap(([childKey, childSchema]) => {
|
|
11924
|
+
if (!isObject(childSchema)) return [];
|
|
11925
|
+
const child = normalizeField(childKey, childSchema, childRequired.includes(childKey));
|
|
11926
|
+
return child ? [child] : [];
|
|
11927
|
+
});
|
|
11928
|
+
}
|
|
11929
|
+
if (type === "array" && isObject(schema.items)) {
|
|
11930
|
+
const item = normalizeField("item", schema.items, false);
|
|
11931
|
+
if (item) field.children = [item];
|
|
11932
|
+
}
|
|
11933
|
+
return field;
|
|
11934
|
+
}
|
|
11935
|
+
/** Normalize a workflow manifest JSON Schema into the dashboard run-input form shape. */
|
|
11936
|
+
function jsonSchemaToWorkflowInputSchema(requestSchema) {
|
|
11937
|
+
if (!isObject(requestSchema)) return { fields: [] };
|
|
11938
|
+
const properties = isObject(requestSchema.properties) ? requestSchema.properties : {};
|
|
11939
|
+
const required = Array.isArray(requestSchema.required) ? requestSchema.required.filter((entry) => typeof entry === "string") : [];
|
|
11940
|
+
return { fields: Object.entries(properties).flatMap(([key, propertySchema]) => {
|
|
11941
|
+
if (!isObject(propertySchema)) return [];
|
|
11942
|
+
const field = normalizeField(key, propertySchema, required.includes(key));
|
|
11943
|
+
return field ? [field] : [];
|
|
11944
|
+
}) };
|
|
11945
|
+
}
|
|
11946
|
+
function isEmpty(value) {
|
|
11947
|
+
return value === void 0 || value === null || value === "";
|
|
11948
|
+
}
|
|
11949
|
+
function validateFieldValue(field, value) {
|
|
11950
|
+
if (field.required && isEmpty(value)) return "Required";
|
|
11951
|
+
if (isEmpty(value)) return null;
|
|
11952
|
+
switch (field.type) {
|
|
11953
|
+
case "number":
|
|
11954
|
+
if (typeof value !== "number" && Number.isNaN(Number(value))) return "Must be a number";
|
|
11955
|
+
return null;
|
|
11956
|
+
case "boolean":
|
|
11957
|
+
if (typeof value !== "boolean") return "Must be a boolean";
|
|
11958
|
+
return null;
|
|
11959
|
+
case "enum":
|
|
11960
|
+
if (typeof value !== "string" || field.options && !field.options.includes(value)) return "Invalid option";
|
|
11961
|
+
return null;
|
|
11962
|
+
default: return null;
|
|
11963
|
+
}
|
|
11964
|
+
}
|
|
11965
|
+
/** Validate a run-input payload against the normalized schema (authoritative on save). */
|
|
11966
|
+
function validateWorkflowRunInputValues(schema, values) {
|
|
11967
|
+
const allowedKeys = new Set(schema.fields.map((field) => field.key));
|
|
11968
|
+
for (const key of Object.keys(values)) if (!allowedKeys.has(key)) return {
|
|
11969
|
+
ok: false,
|
|
11970
|
+
error: `Unknown field "${key}"`
|
|
11971
|
+
};
|
|
11972
|
+
for (const field of schema.fields) {
|
|
11973
|
+
const message = validateFieldValue(field, values[field.key]);
|
|
11974
|
+
if (message) return {
|
|
11975
|
+
ok: false,
|
|
11976
|
+
error: `${field.key}: ${message}`
|
|
11977
|
+
};
|
|
11978
|
+
}
|
|
11979
|
+
return { ok: true };
|
|
11980
|
+
}
|
|
11981
|
+
const WorkflowRunInputsPutBodySchema = z.record(z.string(), z.unknown());
|
|
11013
11982
|
function mapOrganization(row) {
|
|
11014
11983
|
return OrganizationSchema.parse({
|
|
11015
11984
|
id: row.id,
|
|
@@ -11110,8 +12079,8 @@ function mapProjectDeployment(row) {
|
|
|
11110
12079
|
const zodSchema$2 = z.custom((v) => v instanceof z.ZodType, "must be a Zod schema");
|
|
11111
12080
|
z.object({
|
|
11112
12081
|
slug: z.string().trim().min(1),
|
|
11113
|
-
name:
|
|
11114
|
-
description:
|
|
12082
|
+
name: requiredDisplayTextSchema,
|
|
12083
|
+
description: requiredDisplayTextSchema,
|
|
11115
12084
|
input: zodSchema$2,
|
|
11116
12085
|
output: zodSchema$2,
|
|
11117
12086
|
credentials: z.array(credentialInputSchema).optional(),
|
|
@@ -11131,6 +12100,26 @@ function registerWorkflowRunGetter(fn) {
|
|
|
11131
12100
|
}
|
|
11132
12101
|
new AsyncLocalStorage();
|
|
11133
12102
|
//#endregion
|
|
12103
|
+
//#region ../../packages/credentials/dist/store-4At2Wnk9.mjs
|
|
12104
|
+
function normalizeRow(row) {
|
|
12105
|
+
const { projectId: _projectId, ...rest } = row;
|
|
12106
|
+
return rest;
|
|
12107
|
+
}
|
|
12108
|
+
async function listCredentialAssignmentsByTarget$1(options) {
|
|
12109
|
+
return (await listCredentialAssignmentsByTarget(options)).map(normalizeRow);
|
|
12110
|
+
}
|
|
12111
|
+
function normalizeLocalRow(row) {
|
|
12112
|
+
const { projectId: _projectId, ...rest } = row;
|
|
12113
|
+
return rest;
|
|
12114
|
+
}
|
|
12115
|
+
async function selectCredentialInstanceById$1(id) {
|
|
12116
|
+
const row = await selectCredentialInstanceById(id);
|
|
12117
|
+
return row ? normalizeLocalRow(row) : void 0;
|
|
12118
|
+
}
|
|
12119
|
+
async function selectCredentialInstancesForScope$1(appSlug, scopeType, scopeId) {
|
|
12120
|
+
return (await selectCredentialInstancesForScope(appSlug, scopeType, scopeId)).map(normalizeLocalRow);
|
|
12121
|
+
}
|
|
12122
|
+
//#endregion
|
|
11134
12123
|
//#region ../../packages/secrets/dist/index.mjs
|
|
11135
12124
|
const ALGORITHM = "aes-256-gcm";
|
|
11136
12125
|
const IV_LENGTH = 12;
|
|
@@ -29532,6 +30521,130 @@ var import_dist$1 = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exp
|
|
|
29532
30521
|
exports.visit = visit.visit;
|
|
29533
30522
|
exports.visitAsync = visit.visitAsync;
|
|
29534
30523
|
})))(), 1);
|
|
30524
|
+
const EMPTY_ASSIGNMENT_SET = {
|
|
30525
|
+
byConsumer: {},
|
|
30526
|
+
wildcard: {}
|
|
30527
|
+
};
|
|
30528
|
+
function selectAssignedInstanceId(assignments, consumerId, credentialSlug) {
|
|
30529
|
+
if (!assignments) return;
|
|
30530
|
+
if (consumerId) {
|
|
30531
|
+
const specific = assignments.byConsumer[consumerId]?.[credentialSlug];
|
|
30532
|
+
if (specific) return specific;
|
|
30533
|
+
}
|
|
30534
|
+
return assignments.wildcard[credentialSlug];
|
|
30535
|
+
}
|
|
30536
|
+
function buildAssignmentSet(rows) {
|
|
30537
|
+
const byConsumer = {};
|
|
30538
|
+
const wildcard = {};
|
|
30539
|
+
for (const row of rows) {
|
|
30540
|
+
if (row.consumerId === "*") {
|
|
30541
|
+
wildcard[row.credentialSlug] = row.instanceId;
|
|
30542
|
+
continue;
|
|
30543
|
+
}
|
|
30544
|
+
const bucket = byConsumer[row.consumerId] ?? {};
|
|
30545
|
+
bucket[row.credentialSlug] = row.instanceId;
|
|
30546
|
+
byConsumer[row.consumerId] = bucket;
|
|
30547
|
+
}
|
|
30548
|
+
return {
|
|
30549
|
+
byConsumer,
|
|
30550
|
+
wildcard
|
|
30551
|
+
};
|
|
30552
|
+
}
|
|
30553
|
+
async function loadCredentialAssignments(options) {
|
|
30554
|
+
if (!isDatabaseInitialized()) return EMPTY_ASSIGNMENT_SET;
|
|
30555
|
+
return buildAssignmentSet(await listCredentialAssignmentsByTarget$1(options));
|
|
30556
|
+
}
|
|
30557
|
+
async function withCredentialAssignments(context, options) {
|
|
30558
|
+
const assignments = await loadCredentialAssignments(options);
|
|
30559
|
+
return {
|
|
30560
|
+
...context,
|
|
30561
|
+
assignments
|
|
30562
|
+
};
|
|
30563
|
+
}
|
|
30564
|
+
function toSummary(row) {
|
|
30565
|
+
return {
|
|
30566
|
+
id: row.id,
|
|
30567
|
+
appSlug: row.appSlug,
|
|
30568
|
+
name: row.name,
|
|
30569
|
+
label: row.label,
|
|
30570
|
+
scopeType: row.scopeType,
|
|
30571
|
+
scopeId: row.scopeId,
|
|
30572
|
+
isDefault: row.isDefault
|
|
30573
|
+
};
|
|
30574
|
+
}
|
|
30575
|
+
/** Pick the single instance for a scope: the only one, or the unique default; else ambiguous. */
|
|
30576
|
+
function pickInstance$1(rows) {
|
|
30577
|
+
if (rows.length === 0) return { kind: "none" };
|
|
30578
|
+
if (rows.length === 1) return {
|
|
30579
|
+
kind: "row",
|
|
30580
|
+
row: rows[0]
|
|
30581
|
+
};
|
|
30582
|
+
const defaults = rows.filter((row) => row.isDefault);
|
|
30583
|
+
if (defaults.length === 1) return {
|
|
30584
|
+
kind: "row",
|
|
30585
|
+
row: defaults[0]
|
|
30586
|
+
};
|
|
30587
|
+
return { kind: "needs-selection" };
|
|
30588
|
+
}
|
|
30589
|
+
function scopeIdFor(scope, context, orgId) {
|
|
30590
|
+
switch (scope) {
|
|
30591
|
+
case "organization": return orgId;
|
|
30592
|
+
case "project": return context.projectId;
|
|
30593
|
+
case "user": return context.userId;
|
|
30594
|
+
}
|
|
30595
|
+
}
|
|
30596
|
+
async function describeCredentialBinding(options) {
|
|
30597
|
+
const { key, scope, consumerId, context } = options;
|
|
30598
|
+
const orgId = context.orgId ?? getServerTenantScopeId();
|
|
30599
|
+
const assignedId = selectAssignedInstanceId(context.assignments, consumerId, key);
|
|
30600
|
+
if (assignedId) {
|
|
30601
|
+
const row = await selectCredentialInstanceById$1(assignedId);
|
|
30602
|
+
if (row && row.appSlug === key) return {
|
|
30603
|
+
policy: "assigned",
|
|
30604
|
+
row: toSummary(row)
|
|
30605
|
+
};
|
|
30606
|
+
}
|
|
30607
|
+
if (scope) {
|
|
30608
|
+
const scopeId = scopeIdFor(scope, context, orgId);
|
|
30609
|
+
const picked = scopeId ? pickInstance$1(await selectCredentialInstancesForScope$1(key, scope, scopeId)) : { kind: "none" };
|
|
30610
|
+
if (picked.kind === "row") return {
|
|
30611
|
+
policy: "scope-pinned",
|
|
30612
|
+
pinnedScope: scope,
|
|
30613
|
+
row: toSummary(picked.row)
|
|
30614
|
+
};
|
|
30615
|
+
return {
|
|
30616
|
+
policy: "unresolved",
|
|
30617
|
+
reason: picked.kind === "needs-selection" ? "needs-selection" : "missing",
|
|
30618
|
+
pinnedScope: scope
|
|
30619
|
+
};
|
|
30620
|
+
}
|
|
30621
|
+
if (context.projectId) {
|
|
30622
|
+
const picked = pickInstance$1(await selectCredentialInstancesForScope$1(key, "project", context.projectId));
|
|
30623
|
+
if (picked.kind === "row") return {
|
|
30624
|
+
policy: "project-default",
|
|
30625
|
+
row: toSummary(picked.row)
|
|
30626
|
+
};
|
|
30627
|
+
if (picked.kind === "needs-selection") return {
|
|
30628
|
+
policy: "unresolved",
|
|
30629
|
+
reason: "needs-selection"
|
|
30630
|
+
};
|
|
30631
|
+
}
|
|
30632
|
+
if (orgId) {
|
|
30633
|
+
const picked = pickInstance$1(await selectCredentialInstancesForScope$1(key, "organization", orgId));
|
|
30634
|
+
if (picked.kind === "row") return {
|
|
30635
|
+
policy: "org-default",
|
|
30636
|
+
row: toSummary(picked.row)
|
|
30637
|
+
};
|
|
30638
|
+
if (picked.kind === "needs-selection") return {
|
|
30639
|
+
policy: "unresolved",
|
|
30640
|
+
reason: "needs-selection"
|
|
30641
|
+
};
|
|
30642
|
+
}
|
|
30643
|
+
return {
|
|
30644
|
+
policy: "unresolved",
|
|
30645
|
+
reason: "missing"
|
|
30646
|
+
};
|
|
30647
|
+
}
|
|
29535
30648
|
function encodeOAuthState(payload) {
|
|
29536
30649
|
return encryptCredentialPayload(JSON.stringify(payload));
|
|
29537
30650
|
}
|
|
@@ -29804,8 +30917,8 @@ const zodSchema$1 = z.custom((v) => v instanceof z.ZodType, "must be a Zod schem
|
|
|
29804
30917
|
/** Runtime validation for an unbranded workflow definition. */
|
|
29805
30918
|
const workflowCoreSchema = z.object({
|
|
29806
30919
|
slug: z.string().trim().min(1),
|
|
29807
|
-
name:
|
|
29808
|
-
description:
|
|
30920
|
+
name: requiredDisplayTextSchema,
|
|
30921
|
+
description: requiredDisplayTextSchema,
|
|
29809
30922
|
subscription: z.object({ mode: z.enum(["system", "subscribable"]).optional() }).optional(),
|
|
29810
30923
|
input: zodSchema$1,
|
|
29811
30924
|
output: zodSchema$1,
|
|
@@ -29821,6 +30934,7 @@ function isWorkflow(value) {
|
|
|
29821
30934
|
if (!(WORKFLOW in value) || value[WORKFLOW] !== true) return false;
|
|
29822
30935
|
return workflowCoreSchema.safeParse(value).success;
|
|
29823
30936
|
}
|
|
30937
|
+
new AsyncLocalStorage();
|
|
29824
30938
|
const storage = new AsyncLocalStorage();
|
|
29825
30939
|
registerWorkflowRunGetter(() => {
|
|
29826
30940
|
const store = storage.getStore();
|
|
@@ -29883,11 +30997,12 @@ function normalizeLegacySlugFields(value) {
|
|
|
29883
30997
|
return next;
|
|
29884
30998
|
}
|
|
29885
30999
|
const slugField = z.string().trim().min(1);
|
|
29886
|
-
const
|
|
31000
|
+
const requiredTextField = z.string().trim().min(1);
|
|
31001
|
+
const optionalTextField = z.string().trim().min(1).optional();
|
|
29887
31002
|
const baseSourceShape = {
|
|
29888
31003
|
slug: slugField,
|
|
29889
|
-
name:
|
|
29890
|
-
description:
|
|
31004
|
+
name: requiredTextField,
|
|
31005
|
+
description: requiredTextField,
|
|
29891
31006
|
attach: z.function()
|
|
29892
31007
|
};
|
|
29893
31008
|
const webhookSourceSchema = z.object({
|
|
@@ -43623,6 +44738,6 @@ function minioStoragePlugin(options = {}) {
|
|
|
43623
44738
|
};
|
|
43624
44739
|
}
|
|
43625
44740
|
//#endregion
|
|
43626
|
-
export {
|
|
44741
|
+
export { CreateOrganizationRequestSchema as $, chatAttachmentExtension as $n, ProjectReachabilityResponseSchema as $t, discoverOpenApiApp as A, UploadProjectSourceManifestRequestSchema as An, ListOrganizationMembersResponseSchema as At, AgentSummaryDetailResponseSchema as B, WorkflowRunInputsSchema as Bn, OpenApiDiscoverResponseSchema as Bt, defaultSchedulerPlugin as C, UpdateOrganizationMemberRequestSchema as Cn, validateWorkflowRunInputValues as Cr, InviteProjectMembersResponseSchema as Ct, describeCredentialBinding as D, UpdateProjectMemberResponseSchema as Dn, __commonJSMin as Dr, ListAppsResponseSchema as Dt, decodeOAuthState as E, UpdateProjectMemberRequestSchema as En, pingProjectTarget as Er, ListApiKeysResponseSchema as Et, setCredentialInstanceSecret as F, UserPreferencesSchema as Fn, ListProjectMetricsResponseSchema as Ft, AppSlugAvailabilityResponseSchema as G, WorkspaceTriggerFileSchema as Gn, PresignChatAttachmentRequestSchema as Gt, AgentSummarySchema as H, WorkflowSummaryListResponseSchema as Hn, OrganizationSidebarBrandingSchema as Ht, ACTIVE_ORG_HEADER as I, WorkflowCanvasCredentialBindingsSchema as In, ListProjectsResponseSchema as It, CreateApiKeyResponseSchema as J, WorkspaceTriggerRunListResponseSchema as Jn, PresignOrgLogoResponseSchema as Jt, CompleteProjectArtifactResponseSchema as K, WorkspaceTriggerListResponseSchema as Kn, PresignChatAttachmentResponseSchema as Kt, AcceptOrganizationInvitationResponseSchema as L, WorkflowCanvasRunSchema as Ln, McpDiscoverRequestSchema as Lt, PublicHttpUrlError as M, UserAvatarPatchSchema as Mn, ListProjectDeploymentsResponseSchema as Mt, deleteCredentialInstanceSecret as N, UserAvatarSchema as Nn, ListProjectFilesResponseSchema as Nt, discoverGraphqlApp as O, UpdateProjectRequestSchema as On, __require as Or, ListCredentialsResponseSchema as Ot, readCredentialInstanceSecret as P, UserPreferencesPatchSchema as Pn, ListProjectMembersResponseSchema as Pt, CreateCustomAppResponseSchema as Q, buildCredentialInstanceLabel as Qn, PresignUserAvatarResponseSchema as Qt, ActiveOrganizationResponseSchema as R, WorkflowCanvasSchema as Rn, McpDiscoverResponseSchema as Rt, createJobQueue as S, UpdateCredentialRequestSchema as Sn, validateCredentialValueAgainstFields as Sr, InviteProjectMembersRequestSchema as St, completeMcpOAuthConnect as T, UpdateOrganizationRequestSchema as Tn, defaultHostingPlugin as Tr, ListAgentWorkspaceFilesResponseSchema as Tt, AgentWorkspaceFileSummarySchema as U, WorkflowSummarySchema as Un, PLATFORM_RESOURCE_UNSUPPORTED_TEXT as Ut, AgentSummaryListResponseSchema as V, WorkflowSummaryDetailResponseSchema as Vn, OrganizationSidebarBrandingPatchSchema as Vt, AppSlugAvailabilityQuerySchema as W, WorkspaceTriggerDetailSchema as Wn, PROJECT_SLUG_TAKEN_MESSAGE as Wt, CreateCredentialsResponseSchema as X, agentMemoryFileId as Xn, PresignProjectSourceResponseSchema as Xt, CreateCredentialsRequestSchema as Y, WorkspaceWorkflowOverviewSchema as Yn, PresignProjectSourceRequestSchema as Yt, CreateCustomAppRequestSchema as Z, agentWorkspaceFileId as Zn, PresignUserAvatarRequestSchema as Zt, orgLogoStorageKey as _, SubmitMarketingContactResponseSchema as _n, parseAppSlug as _r, HistoryRunDetailResponseSchema as _t, extractRouteManifestFromArtifact as a, PublicModelsResponseSchema as an, mapOrganizationInvitation as ar, DEFAULT_TRIGGER_OVERVIEW_MODEL as at, publicKeystrokeAssetsObjectUrl as b, TriggerAttachmentUpdateRequestSchema as bn, resolveExternalPlatformOrigin as br, InviteOrganizationMembersRequestSchema as bt, isKeystrokeAssetsOrgLogoPublicUrl as c, SkillSummaryDetailResponseSchema as cn, mapProjectArtifact as cr, DeclineOrganizationInvitationResponseSchema as ct, isStorageNotFoundError as d, SlugAvailabilityQuerySchema as dn, mapProjectSettings as dr, ErrorResponseSchema as dt, ProjectResponseSchema as en, deriveCredentialInstanceSlug as er, CreateOrganizationResponseSchema as et, isUserAvatarStorageKey as f, SlugAvailabilityResponseSchema as fn, mapUserOrganization as fr, GetCredentialResponseSchema as ft, minioStoragePlugin as g, SubmitMarketingContactRequestSchema as gn, organizationSlugErrorCodeFromMessage as gr, HistoryRunCancelResponseSchema as gt, loadProjectSourceFiles as h, StoredProjectSourceManifestSchema as hn, organizationInvitationAcceptPath as hr, GraphqlDiscoverResponseSchema as ht, ensureKeystrokeAssetsBucket as i, ProjectSourceResourcesSchema as in, listenPortFromPublicUrl as ir, DEFAULT_CLOUD_PLATFORM_ORIGIN as it, withCredentialAssignments as j, UploadProjectSourceResponseSchema as jn, ListOrganizationsResponseSchema as jt, discoverMcpApp as k, UpdateProjectSettingsRequestSchema as kn, __toESM as kr, ListOrganizationInvitationsResponseSchema as kt, isOrgLogoStorageKey as l, SkillSummaryListResponseSchema as ln, mapProjectDeployment as lr, DownloadActiveProjectArtifactResponseSchema as lt, keystrokeAssetsOrgLogoKeyFromPublicUrl as m, StartMcpOAuthConnectionResultSchema as mn, normalizeUserPreferences as mr, GraphqlDiscoverRequestSchema as mt, chatAttachmentStorageKey as n, ProjectSlugAvailabilityQuerySchema as nn, isAllowedChatAttachmentMediaType as nr, CreateProjectRequestSchema as nt, isChatAttachmentStorageKey as o, RecentResourceListResponseSchema as on, mapOrganizationMember as or, DEFAULT_WORKFLOW_CANVAS_MODEL as ot, keystrokeAssetsAvatarKeyFromPublicUrl as p, StartMcpOAuthConnectionInputSchema as pn, mergeUserPreferences as pr, GetCustomAppResponseSchema as pt, CreateApiKeyRequestSchema as q, WorkspaceTriggerOverviewSchema as qn, PresignOrgLogoRequestSchema as qt, createAssetsStorageClient as r, ProjectSlugAvailabilityResponseSchema as rn, jsonSchemaToWorkflowInputSchema as rr, CreateProjectResponseSchema as rt, isKeystrokeAssetsAvatarPublicUrl as s, RecentResourceSchema as sn, mapProject as sr, DEFAULT_WORKFLOW_OVERVIEW_MODEL as st, RouteManifestNotFoundError as t, ProjectSettingsResponseSchema as tn, displayCredentialAppName as tr, CreateProjectArtifactResponseSchema as tt, isStorageBucketNotFoundError as u, SkillSummarySchema as un, mapProjectMember as ur, DownloadActiveProjectSourceResponseSchema as ut, projectArtifactKey as v, SubmitTeamRequestRequestSchema as vn, parseStoredRouteManifest as vr, HistoryRunListQuerySchema as vt, beginMcpOAuthConnect as w, UpdateOrganizationMemberResponseSchema as wn, validationErrorResponse as wr, ListAgentMemoryFilesResponseSchema as wt, userAvatarStorageKey as x, TriggerRunListQuerySchema as xn, resolveUniqueCredentialInstanceLabel as xr, InviteOrganizationMembersResponseSchema as xt, projectSourceBlobKey as y, SubmitTeamRequestResponseSchema as yn, projectFileId as yr, HistoryRunListResponseSchema as yt, AgentMemoryFileSummarySchema as z, WorkflowRunInputsPutBodySchema as zn, OpenApiDiscoverRequestSchema as zt };
|
|
43627
44742
|
|
|
43628
|
-
//# sourceMappingURL=dist-
|
|
44743
|
+
//# sourceMappingURL=dist-Dfoa0fsU.mjs.map
|