@keystrokehq/platform 0.1.24 → 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 +4 -4
- 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
|
@@ -183,7 +183,7 @@ function slugify(input) {
|
|
|
183
183
|
return input.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/[\s_-]+/g, "-").replace(/^-+|-+$/g, "");
|
|
184
184
|
}
|
|
185
185
|
const captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => {};
|
|
186
|
-
function isObject(data) {
|
|
186
|
+
function isObject$3(data) {
|
|
187
187
|
return typeof data === "object" && data !== null && !Array.isArray(data);
|
|
188
188
|
}
|
|
189
189
|
const allowsEval = /* @__PURE__ */ cached(() => {
|
|
@@ -197,12 +197,12 @@ const allowsEval = /* @__PURE__ */ cached(() => {
|
|
|
197
197
|
}
|
|
198
198
|
});
|
|
199
199
|
function isPlainObject$1(o) {
|
|
200
|
-
if (isObject(o) === false) return false;
|
|
200
|
+
if (isObject$3(o) === false) return false;
|
|
201
201
|
const ctor = o.constructor;
|
|
202
202
|
if (ctor === void 0) return true;
|
|
203
203
|
if (typeof ctor !== "function") return true;
|
|
204
204
|
const prot = ctor.prototype;
|
|
205
|
-
if (isObject(prot) === false) return false;
|
|
205
|
+
if (isObject$3(prot) === false) return false;
|
|
206
206
|
if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) return false;
|
|
207
207
|
return true;
|
|
208
208
|
}
|
|
@@ -1590,7 +1590,7 @@ const $ZodObject = /* @__PURE__ */ $constructor("$ZodObject", (inst, def) => {
|
|
|
1590
1590
|
}
|
|
1591
1591
|
return propValues;
|
|
1592
1592
|
});
|
|
1593
|
-
const isObject$1 = isObject;
|
|
1593
|
+
const isObject$1 = isObject$3;
|
|
1594
1594
|
const catchall = def.catchall;
|
|
1595
1595
|
let value;
|
|
1596
1596
|
inst._zod.parse = (payload, ctx) => {
|
|
@@ -1719,7 +1719,7 @@ const $ZodObjectJIT = /* @__PURE__ */ $constructor("$ZodObjectJIT", (inst, def)
|
|
|
1719
1719
|
return (payload, ctx) => fn(shape, payload, ctx);
|
|
1720
1720
|
};
|
|
1721
1721
|
let fastpass;
|
|
1722
|
-
const isObject$2 = isObject;
|
|
1722
|
+
const isObject$2 = isObject$3;
|
|
1723
1723
|
const jit = !globalConfig.jitless;
|
|
1724
1724
|
const fastEnabled = jit && allowsEval.value;
|
|
1725
1725
|
const catchall = def.catchall;
|
|
@@ -1831,7 +1831,7 @@ const $ZodDiscriminatedUnion = /* @__PURE__ */ $constructor("$ZodDiscriminatedUn
|
|
|
1831
1831
|
});
|
|
1832
1832
|
inst._zod.parse = (payload, ctx) => {
|
|
1833
1833
|
const input = payload.value;
|
|
1834
|
-
if (!isObject(input)) {
|
|
1834
|
+
if (!isObject$3(input)) {
|
|
1835
1835
|
payload.issues.push({
|
|
1836
1836
|
code: "invalid_type",
|
|
1837
1837
|
expected: "object",
|
|
@@ -2302,6 +2302,21 @@ function handleReadonlyResult(payload) {
|
|
|
2302
2302
|
payload.value = Object.freeze(payload.value);
|
|
2303
2303
|
return payload;
|
|
2304
2304
|
}
|
|
2305
|
+
const $ZodLazy = /* @__PURE__ */ $constructor("$ZodLazy", (inst, def) => {
|
|
2306
|
+
$ZodType.init(inst, def);
|
|
2307
|
+
defineLazy(inst._zod, "innerType", () => {
|
|
2308
|
+
const d = def;
|
|
2309
|
+
if (!d._cachedInner) d._cachedInner = def.getter();
|
|
2310
|
+
return d._cachedInner;
|
|
2311
|
+
});
|
|
2312
|
+
defineLazy(inst._zod, "pattern", () => inst._zod.innerType?._zod?.pattern);
|
|
2313
|
+
defineLazy(inst._zod, "propValues", () => inst._zod.innerType?._zod?.propValues);
|
|
2314
|
+
defineLazy(inst._zod, "optin", () => inst._zod.innerType?._zod?.optin ?? void 0);
|
|
2315
|
+
defineLazy(inst._zod, "optout", () => inst._zod.innerType?._zod?.optout ?? void 0);
|
|
2316
|
+
inst._zod.parse = (payload, ctx) => {
|
|
2317
|
+
return inst._zod.innerType._zod.run(payload, ctx);
|
|
2318
|
+
};
|
|
2319
|
+
});
|
|
2305
2320
|
const $ZodCustom = /* @__PURE__ */ $constructor("$ZodCustom", (inst, def) => {
|
|
2306
2321
|
$ZodCheck.init(inst, def);
|
|
2307
2322
|
$ZodType.init(inst, def);
|
|
@@ -3436,6 +3451,12 @@ const optionalProcessor = (schema, ctx, _json, params) => {
|
|
|
3436
3451
|
const seen = ctx.seen.get(schema);
|
|
3437
3452
|
seen.ref = def.innerType;
|
|
3438
3453
|
};
|
|
3454
|
+
const lazyProcessor = (schema, ctx, _json, params) => {
|
|
3455
|
+
const innerType = schema._zod.innerType;
|
|
3456
|
+
process$1(innerType, ctx, params);
|
|
3457
|
+
const seen = ctx.seen.get(schema);
|
|
3458
|
+
seen.ref = innerType;
|
|
3459
|
+
};
|
|
3439
3460
|
const ZodISODateTime = /* @__PURE__ */ $constructor("ZodISODateTime", (inst, def) => {
|
|
3440
3461
|
$ZodISODateTime.init(inst, def);
|
|
3441
3462
|
ZodStringFormat.init(inst, def);
|
|
@@ -4291,6 +4312,18 @@ function readonly(innerType) {
|
|
|
4291
4312
|
innerType
|
|
4292
4313
|
});
|
|
4293
4314
|
}
|
|
4315
|
+
const ZodLazy = /* @__PURE__ */ $constructor("ZodLazy", (inst, def) => {
|
|
4316
|
+
$ZodLazy.init(inst, def);
|
|
4317
|
+
ZodType.init(inst, def);
|
|
4318
|
+
inst._zod.processJSONSchema = (ctx, json, params) => lazyProcessor(inst, ctx, json, params);
|
|
4319
|
+
inst.unwrap = () => inst._zod.def.getter();
|
|
4320
|
+
});
|
|
4321
|
+
function lazy(getter) {
|
|
4322
|
+
return new ZodLazy({
|
|
4323
|
+
type: "lazy",
|
|
4324
|
+
getter
|
|
4325
|
+
});
|
|
4326
|
+
}
|
|
4294
4327
|
const ZodCustom = /* @__PURE__ */ $constructor("ZodCustom", (inst, def) => {
|
|
4295
4328
|
$ZodCustom.init(inst, def);
|
|
4296
4329
|
ZodType.init(inst, def);
|
|
@@ -4962,10 +4995,244 @@ const AppSlugSchema$1 = ProjectSlugSchema$1;
|
|
|
4962
4995
|
function resolveExplicitPublicPlatformOrigin$1(env = process.env) {
|
|
4963
4996
|
return env.PUBLIC_PLATFORM_URL?.replace(/\/$/, "") || void 0;
|
|
4964
4997
|
}
|
|
4998
|
+
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
4999
|
+
const CredentialAuthKindSchema$1 = _enum([
|
|
5000
|
+
"api_key",
|
|
5001
|
+
"oauth_managed",
|
|
5002
|
+
"keystroke"
|
|
5003
|
+
]);
|
|
5004
|
+
/**
|
|
5005
|
+
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
5006
|
+
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
5007
|
+
* resolver tries the project default, then the org default, then throws.
|
|
5008
|
+
*/
|
|
5009
|
+
const CredentialScopeTypeSchema$1 = _enum([
|
|
5010
|
+
"organization",
|
|
5011
|
+
"project",
|
|
5012
|
+
"user"
|
|
5013
|
+
]);
|
|
5014
|
+
CredentialAuthKindSchema$1.options;
|
|
5015
|
+
CredentialScopeTypeSchema$1.options;
|
|
5016
|
+
/** Non-empty human-readable label or description (trimmed). */
|
|
5017
|
+
const requiredDisplayTextSchema$1 = string().trim().min(1);
|
|
5018
|
+
/**
|
|
5019
|
+
* Structural workflow-canvas graph contract.
|
|
5020
|
+
*
|
|
5021
|
+
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
5022
|
+
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
5023
|
+
* is the single source of truth shared by:
|
|
5024
|
+
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
5025
|
+
* - the platform route that serves the canvas, and
|
|
5026
|
+
* - the SDK / web client that renders it (React Flow).
|
|
5027
|
+
*
|
|
5028
|
+
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
5029
|
+
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
5030
|
+
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
5031
|
+
*/
|
|
5032
|
+
/**
|
|
5033
|
+
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
5034
|
+
* client derives the React Flow component, icon, and per-node treatment from it
|
|
5035
|
+
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
5036
|
+
* directly, so the structural contract can never silently diverge across the
|
|
5037
|
+
* deploy → render boundary.
|
|
5038
|
+
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
5039
|
+
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
5040
|
+
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
5041
|
+
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
5042
|
+
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
5043
|
+
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
5044
|
+
* shared by loop + parallel)
|
|
5045
|
+
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
5046
|
+
*
|
|
5047
|
+
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
5048
|
+
* are stacked inside and the container itself is the single prong leaving the
|
|
5049
|
+
* wrapper (there is no separate fork/join pair).
|
|
5050
|
+
*
|
|
5051
|
+
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
5052
|
+
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
5053
|
+
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
5054
|
+
*/
|
|
5055
|
+
const WorkflowCanvasNodeTypeSchema$1 = _enum([
|
|
5056
|
+
"entry",
|
|
5057
|
+
"exit",
|
|
5058
|
+
"error",
|
|
5059
|
+
"step",
|
|
5060
|
+
"code-block",
|
|
5061
|
+
"decision",
|
|
5062
|
+
"merge",
|
|
5063
|
+
"loop",
|
|
5064
|
+
"parallel",
|
|
5065
|
+
"loop-start",
|
|
5066
|
+
"trigger-source"
|
|
5067
|
+
]);
|
|
5068
|
+
_enum([
|
|
5069
|
+
"workflow-step",
|
|
5070
|
+
"agent",
|
|
5071
|
+
"llm",
|
|
5072
|
+
"wait",
|
|
5073
|
+
"hook",
|
|
5074
|
+
"tool",
|
|
5075
|
+
"child-workflow"
|
|
5076
|
+
]);
|
|
5077
|
+
/** A labeled branch output on a decision-style node. */
|
|
5078
|
+
const WorkflowCanvasNodeOutputSchema$1 = object({
|
|
5079
|
+
id: string(),
|
|
5080
|
+
label: string()
|
|
5081
|
+
});
|
|
5082
|
+
/**
|
|
5083
|
+
* A step input's configured value at its call site, captured deterministically
|
|
5084
|
+
* by the producer from the call's argument object. The platform join turns this
|
|
5085
|
+
* into the inspector's {@link WorkflowNodeInputBinding} (filling display labels).
|
|
5086
|
+
*/
|
|
5087
|
+
const WorkflowCanvasRawBindingSchema$1 = object({
|
|
5088
|
+
tokens: array(discriminatedUnion("kind", [
|
|
5089
|
+
object({
|
|
5090
|
+
kind: literal("text"),
|
|
5091
|
+
text: string()
|
|
5092
|
+
}),
|
|
5093
|
+
object({
|
|
5094
|
+
kind: literal("reference"),
|
|
5095
|
+
/** Upstream node id this value flows from; absent only for unresolved refs. */
|
|
5096
|
+
sourceNodeId: string().optional(),
|
|
5097
|
+
/** Output field of the source (dotted path); omitted = the whole output. */
|
|
5098
|
+
field: string().optional()
|
|
5099
|
+
}),
|
|
5100
|
+
object({
|
|
5101
|
+
kind: literal("variable"),
|
|
5102
|
+
text: string()
|
|
5103
|
+
}),
|
|
5104
|
+
object({
|
|
5105
|
+
kind: literal("call"),
|
|
5106
|
+
name: string()
|
|
5107
|
+
})
|
|
5108
|
+
])),
|
|
5109
|
+
/** Render as a tall multi-line box (object/array/multiline template values). */
|
|
5110
|
+
multiline: boolean().optional()
|
|
5111
|
+
});
|
|
5112
|
+
/**
|
|
5113
|
+
* Statically-captured `promptLlm` options for an `llm` step node. Literal-only:
|
|
5114
|
+
* dynamic/expression values (a computed model, a `system` built by a function) are
|
|
5115
|
+
* not captured; `system`/`outputSchema` record presence so the inspector can note
|
|
5116
|
+
* "a system prompt is configured" / "structured output" without their values.
|
|
5117
|
+
*/
|
|
5118
|
+
const WorkflowCanvasLlmOptionsSchema$1 = object({
|
|
5119
|
+
model: string().optional(),
|
|
5120
|
+
maxTokens: number$1().optional(),
|
|
5121
|
+
temperature: number$1().optional(),
|
|
5122
|
+
thinkingLevel: string().optional(),
|
|
5123
|
+
hasSystemPrompt: boolean().optional(),
|
|
5124
|
+
hasOutputSchema: boolean().optional()
|
|
5125
|
+
});
|
|
5126
|
+
const WorkflowCanvasNodeDataSchema$1 = object({
|
|
5127
|
+
label: string(),
|
|
5128
|
+
/** Set on group nodes (loop / parallel section containers). */
|
|
5129
|
+
groupKind: _enum([
|
|
5130
|
+
"loop",
|
|
5131
|
+
"parallel",
|
|
5132
|
+
"conditional"
|
|
5133
|
+
]).optional(),
|
|
5134
|
+
description: string().optional(),
|
|
5135
|
+
/** {@link WorkflowCanvasCallKind} or a looser raw call-site label. */
|
|
5136
|
+
callKind: string().optional(),
|
|
5137
|
+
/**
|
|
5138
|
+
* App/integration slug for a `step` whose action/agent is imported directly
|
|
5139
|
+
* from a `@keystrokehq/<app>` package (e.g. "slack", "apollo"). Lets the client
|
|
5140
|
+
* badge the node with that app's logo; absent for custom (project-local)
|
|
5141
|
+
* actions, which fall back to the call-kind icon.
|
|
5142
|
+
*/
|
|
5143
|
+
appSlug: string().optional(),
|
|
5144
|
+
/** Cron/webhook/poll discriminator on trigger-source nodes. */
|
|
5145
|
+
triggerType: string().optional(),
|
|
5146
|
+
/** Branch outputs (decision nodes). */
|
|
5147
|
+
outputs: array(WorkflowCanvasNodeOutputSchema$1).optional(),
|
|
5148
|
+
/**
|
|
5149
|
+
* Action/agent/workflow slug resolved at deploy time (via import → definition).
|
|
5150
|
+
* Optional when the deploy build cannot resolve source (dist-only artifacts).
|
|
5151
|
+
*/
|
|
5152
|
+
slug: string().optional(),
|
|
5153
|
+
/**
|
|
5154
|
+
* Durable call-site ids nested inside an off-grammar `code-block` (same-file only).
|
|
5155
|
+
* Used by the run overlay to light the block when any contained step executes.
|
|
5156
|
+
*/
|
|
5157
|
+
containedCallSiteIds: array(string()).optional(),
|
|
5158
|
+
/**
|
|
5159
|
+
* Per-input call-site value bindings for `step` nodes, keyed by input field name.
|
|
5160
|
+
* Deterministically captured from the call's argument object; reference tokens point
|
|
5161
|
+
* at the upstream node that produced the value. The platform join fills display labels.
|
|
5162
|
+
*/
|
|
5163
|
+
inputBindings: record(string(), WorkflowCanvasRawBindingSchema$1).optional(),
|
|
5164
|
+
/**
|
|
5165
|
+
* Static `promptLlm(prompt, options)` configuration captured at the call site for
|
|
5166
|
+
* `llm` step nodes. Only literal values are captured (model/maxTokens/temperature/
|
|
5167
|
+
* thinkingLevel); `system`/`outputSchema` are usually expressions, so only their
|
|
5168
|
+
* presence is recorded. Absent when no options are statically resolvable.
|
|
5169
|
+
*/
|
|
5170
|
+
llmOptions: WorkflowCanvasLlmOptionsSchema$1.optional()
|
|
5171
|
+
});
|
|
5172
|
+
/**
|
|
5173
|
+
* A single structural node. This is the deploy artifact's shape: identity
|
|
5174
|
+
* (`id`), the canonical discriminator (`nodeType`), display `data`, and group
|
|
5175
|
+
* nesting (`parentId`). All layout/rendering — React Flow component key,
|
|
5176
|
+
* positions, sizes, `extent`, group box dimensions — is derived entirely
|
|
5177
|
+
* client-side from this structure, so it never leaks into the wire contract.
|
|
5178
|
+
*/
|
|
5179
|
+
const WorkflowCanvasGraphNodeSchema$1 = object({
|
|
5180
|
+
id: string(),
|
|
5181
|
+
nodeType: WorkflowCanvasNodeTypeSchema$1,
|
|
5182
|
+
data: WorkflowCanvasNodeDataSchema$1,
|
|
5183
|
+
/** Set on children nested inside a group (loop / parallel) container. */
|
|
5184
|
+
parentId: string().optional()
|
|
5185
|
+
});
|
|
5186
|
+
const WorkflowCanvasEdgeSchema$1 = object({
|
|
5187
|
+
id: string(),
|
|
5188
|
+
source: string(),
|
|
5189
|
+
target: string(),
|
|
5190
|
+
type: string().optional(),
|
|
5191
|
+
label: string().optional(),
|
|
5192
|
+
sourceHandle: string().optional(),
|
|
5193
|
+
targetHandle: string().optional(),
|
|
5194
|
+
data: object({ branchKind: _enum([
|
|
5195
|
+
"then",
|
|
5196
|
+
"else",
|
|
5197
|
+
"parallel-branch",
|
|
5198
|
+
"error"
|
|
5199
|
+
]).optional() }).optional()
|
|
5200
|
+
});
|
|
5201
|
+
/** A statically-evaluable top-level `const` value (literal scalars only). */
|
|
5202
|
+
const WorkflowCanvasConstantValueSchema$1 = union([
|
|
5203
|
+
string(),
|
|
5204
|
+
number$1(),
|
|
5205
|
+
boolean()
|
|
5206
|
+
]);
|
|
5207
|
+
/**
|
|
5208
|
+
* Top-level `const NAME = <literal>` declarations in the workflow source, captured
|
|
5209
|
+
* at deploy. Lets the platform resolve `variable` value tokens (e.g. a `model` set
|
|
5210
|
+
* to a named const) to their concrete value for display. Scalars only — computed,
|
|
5211
|
+
* function-local, or non-literal consts are intentionally omitted.
|
|
5212
|
+
*/
|
|
5213
|
+
const WorkflowCanvasConstantsSchema$1 = record(string(), WorkflowCanvasConstantValueSchema$1);
|
|
5214
|
+
const WorkflowCanvasGraphSchema$1 = object({
|
|
5215
|
+
nodes: array(WorkflowCanvasGraphNodeSchema$1),
|
|
5216
|
+
edges: array(WorkflowCanvasEdgeSchema$1),
|
|
5217
|
+
/** Top-level literal constants from the workflow source (for value-token resolution). */
|
|
5218
|
+
constants: WorkflowCanvasConstantsSchema$1.optional()
|
|
5219
|
+
});
|
|
5220
|
+
/**
|
|
5221
|
+
* Deploy-time summary of one credential a step requires, derived from the
|
|
5222
|
+
* action/agent-tool definition's `.credentials`. The workflow-canvas credential
|
|
5223
|
+
* overlay joins a step node's `slug` to these to resolve the bound instance.
|
|
5224
|
+
* `key` doubles as the app slug (matches `credential_instances.app_slug`).
|
|
5225
|
+
*/
|
|
5226
|
+
const CredentialRequirementSummarySchema$1 = object({
|
|
5227
|
+
key: string(),
|
|
5228
|
+
kind: CredentialAuthKindSchema$1,
|
|
5229
|
+
/** Scope pinned via `.scope(...)`; absent means project-default → org-default. */
|
|
5230
|
+
scope: CredentialScopeTypeSchema$1.optional()
|
|
5231
|
+
});
|
|
4965
5232
|
const StoredRouteManifestSkillSchema$1 = object({
|
|
4966
5233
|
slug: string(),
|
|
4967
|
-
name:
|
|
4968
|
-
description:
|
|
5234
|
+
name: requiredDisplayTextSchema$1,
|
|
5235
|
+
description: requiredDisplayTextSchema$1,
|
|
4969
5236
|
moduleFile: string()
|
|
4970
5237
|
});
|
|
4971
5238
|
const attachmentSchemasSchema$1 = record(string(), object({
|
|
@@ -4973,8 +5240,8 @@ const attachmentSchemasSchema$1 = record(string(), object({
|
|
|
4973
5240
|
filterSchema: record(string(), unknown()).optional()
|
|
4974
5241
|
}));
|
|
4975
5242
|
const attachmentMetaSchema$1 = record(string(), object({
|
|
4976
|
-
name:
|
|
4977
|
-
description:
|
|
5243
|
+
name: requiredDisplayTextSchema$1,
|
|
5244
|
+
description: requiredDisplayTextSchema$1
|
|
4978
5245
|
}));
|
|
4979
5246
|
const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
4980
5247
|
object({ kind: literal("health") }),
|
|
@@ -4982,23 +5249,43 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
4982
5249
|
kind: literal("agent"),
|
|
4983
5250
|
slug: string(),
|
|
4984
5251
|
moduleFile: string(),
|
|
4985
|
-
name:
|
|
4986
|
-
description:
|
|
5252
|
+
name: requiredDisplayTextSchema$1,
|
|
5253
|
+
description: requiredDisplayTextSchema$1,
|
|
4987
5254
|
model: string(),
|
|
4988
5255
|
systemPrompt: string(),
|
|
4989
5256
|
toolCount: number$1().int().nonnegative(),
|
|
4990
5257
|
credentialCount: number$1().int().nonnegative(),
|
|
4991
5258
|
appSlugs: array(string()).default([]),
|
|
4992
|
-
toolSlugs: array(string()).default([])
|
|
5259
|
+
toolSlugs: array(string()).default([]),
|
|
5260
|
+
/** Credential requirements per tool slug (the agent's credential consumer key). */
|
|
5261
|
+
toolRequirements: record(string(), array(CredentialRequirementSummarySchema$1)).optional()
|
|
5262
|
+
}),
|
|
5263
|
+
object({
|
|
5264
|
+
kind: literal("action"),
|
|
5265
|
+
slug: string(),
|
|
5266
|
+
name: requiredDisplayTextSchema$1,
|
|
5267
|
+
description: requiredDisplayTextSchema$1,
|
|
5268
|
+
moduleFile: string(),
|
|
5269
|
+
/** App slug for actions imported from an integration package (`@keystrokehq/<app>/actions`). */
|
|
5270
|
+
appSlug: string().optional(),
|
|
5271
|
+
inputSchema: record(string(), unknown()),
|
|
5272
|
+
outputSchema: record(string(), unknown()),
|
|
5273
|
+
/** Credentials this action requires (for the canvas credential overlay). */
|
|
5274
|
+
requirements: array(CredentialRequirementSummarySchema$1).optional()
|
|
4993
5275
|
}),
|
|
4994
5276
|
object({
|
|
4995
5277
|
kind: literal("workflow"),
|
|
4996
5278
|
slug: string(),
|
|
4997
|
-
name:
|
|
4998
|
-
description:
|
|
5279
|
+
name: requiredDisplayTextSchema$1,
|
|
5280
|
+
description: requiredDisplayTextSchema$1,
|
|
4999
5281
|
subscribable: boolean(),
|
|
5000
5282
|
moduleFile: string(),
|
|
5001
|
-
requestSchema: record(string(), unknown())
|
|
5283
|
+
requestSchema: record(string(), unknown()),
|
|
5284
|
+
responseSchema: record(string(), unknown()).optional(),
|
|
5285
|
+
/** Deterministic AST control-flow skeleton (deploy-time producer). */
|
|
5286
|
+
flowGraph: WorkflowCanvasGraphSchema$1.optional(),
|
|
5287
|
+
/** sha256 of the workflow source the `flowGraph` was produced from (staleness). */
|
|
5288
|
+
flowGraphSourceHash: string().optional()
|
|
5002
5289
|
}),
|
|
5003
5290
|
object({
|
|
5004
5291
|
kind: literal("trigger-webhook"),
|
|
@@ -5017,8 +5304,8 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
5017
5304
|
moduleFile: string(),
|
|
5018
5305
|
sourceHash: string().optional(),
|
|
5019
5306
|
schedule: string(),
|
|
5020
|
-
name:
|
|
5021
|
-
description:
|
|
5307
|
+
name: requiredDisplayTextSchema$1,
|
|
5308
|
+
description: requiredDisplayTextSchema$1
|
|
5022
5309
|
}),
|
|
5023
5310
|
object({
|
|
5024
5311
|
kind: literal("trigger-poll-group"),
|
|
@@ -5034,8 +5321,8 @@ const storedRouteManifestEntryV2Schema$1 = discriminatedUnion("kind", [
|
|
|
5034
5321
|
moduleFile: string(),
|
|
5035
5322
|
sourceHash: string().optional(),
|
|
5036
5323
|
schedule: string(),
|
|
5037
|
-
name:
|
|
5038
|
-
description:
|
|
5324
|
+
name: requiredDisplayTextSchema$1,
|
|
5325
|
+
description: requiredDisplayTextSchema$1
|
|
5039
5326
|
})
|
|
5040
5327
|
]);
|
|
5041
5328
|
object({
|
|
@@ -5461,24 +5748,6 @@ object({
|
|
|
5461
5748
|
outputParameters: record(string(), unknown()).optional(),
|
|
5462
5749
|
version: string().optional()
|
|
5463
5750
|
});
|
|
5464
|
-
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
5465
|
-
const CredentialAuthKindSchema$1 = _enum([
|
|
5466
|
-
"api_key",
|
|
5467
|
-
"oauth_managed",
|
|
5468
|
-
"keystroke"
|
|
5469
|
-
]);
|
|
5470
|
-
/**
|
|
5471
|
-
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
5472
|
-
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
5473
|
-
* resolver tries the project default, then the org default, then throws.
|
|
5474
|
-
*/
|
|
5475
|
-
const CredentialScopeTypeSchema$1 = _enum([
|
|
5476
|
-
"organization",
|
|
5477
|
-
"project",
|
|
5478
|
-
"user"
|
|
5479
|
-
]);
|
|
5480
|
-
CredentialAuthKindSchema$1.options;
|
|
5481
|
-
CredentialScopeTypeSchema$1.options;
|
|
5482
5751
|
/** Scope of a platform app credential (maps to `credential_instances.scope_type`). */
|
|
5483
5752
|
const AppCredentialScopeSchema$1 = _enum([
|
|
5484
5753
|
"user",
|
|
@@ -6474,7 +6743,7 @@ object({
|
|
|
6474
6743
|
id: string(),
|
|
6475
6744
|
slug: string(),
|
|
6476
6745
|
name: string(),
|
|
6477
|
-
description: string().
|
|
6746
|
+
description: string().min(1),
|
|
6478
6747
|
type: TriggerTypeSchema$1,
|
|
6479
6748
|
status: TriggerStatusSchema$1,
|
|
6480
6749
|
projectId: string(),
|
|
@@ -6770,7 +7039,7 @@ const AgentSummarySchema$1 = object({
|
|
|
6770
7039
|
name: string().min(1),
|
|
6771
7040
|
projectId: string().min(1),
|
|
6772
7041
|
updatedAt: string().min(1),
|
|
6773
|
-
description: string().
|
|
7042
|
+
description: string().min(1),
|
|
6774
7043
|
sourcePath: string().min(1).optional(),
|
|
6775
7044
|
model: string().optional(),
|
|
6776
7045
|
capabilities: object({
|
|
@@ -6792,7 +7061,7 @@ const WorkflowSummarySchema$1 = object({
|
|
|
6792
7061
|
name: string().min(1),
|
|
6793
7062
|
projectId: string().min(1),
|
|
6794
7063
|
updatedAt: string().min(1),
|
|
6795
|
-
description: string().
|
|
7064
|
+
description: string().min(1),
|
|
6796
7065
|
sourcePath: string().min(1).optional(),
|
|
6797
7066
|
lastRunAt: optionalTimestamp$2
|
|
6798
7067
|
});
|
|
@@ -6802,7 +7071,7 @@ const SkillSummarySchema$1 = object({
|
|
|
6802
7071
|
name: string().min(1),
|
|
6803
7072
|
projectId: string().min(1),
|
|
6804
7073
|
updatedAt: string().min(1),
|
|
6805
|
-
description: string().
|
|
7074
|
+
description: string().min(1),
|
|
6806
7075
|
sourcePath: string().min(1).optional()
|
|
6807
7076
|
});
|
|
6808
7077
|
AgentSummarySchema$1.nullable();
|
|
@@ -6911,6 +7180,245 @@ object({ files: array(object({
|
|
|
6911
7180
|
id: string(),
|
|
6912
7181
|
path: string().min(1)
|
|
6913
7182
|
})) });
|
|
7183
|
+
/** Whether the overview is still being produced or finished. */
|
|
7184
|
+
const WorkflowOverviewStatusSchema$1 = _enum(["generating", "ready"]);
|
|
7185
|
+
/** One phase of the guided-tour overview. */
|
|
7186
|
+
const WorkflowPhaseSchema$1 = object({
|
|
7187
|
+
id: string(),
|
|
7188
|
+
title: string(),
|
|
7189
|
+
copy: string(),
|
|
7190
|
+
nodeIds: array(string())
|
|
7191
|
+
});
|
|
7192
|
+
object({
|
|
7193
|
+
status: WorkflowOverviewStatusSchema$1,
|
|
7194
|
+
summary: string(),
|
|
7195
|
+
phases: array(WorkflowPhaseSchema$1),
|
|
7196
|
+
hash: string(),
|
|
7197
|
+
generatedAt: string().nullable(),
|
|
7198
|
+
model: string()
|
|
7199
|
+
});
|
|
7200
|
+
/** Subset of JSON-Schema field types the dashboard form renders inline. */
|
|
7201
|
+
const WorkflowInputFieldTypeSchema$1 = _enum([
|
|
7202
|
+
"string",
|
|
7203
|
+
"number",
|
|
7204
|
+
"boolean",
|
|
7205
|
+
"enum",
|
|
7206
|
+
"object",
|
|
7207
|
+
"array"
|
|
7208
|
+
]);
|
|
7209
|
+
const WorkflowInputFieldSchema$1 = lazy(() => object({
|
|
7210
|
+
key: string(),
|
|
7211
|
+
label: string(),
|
|
7212
|
+
type: WorkflowInputFieldTypeSchema$1,
|
|
7213
|
+
required: boolean(),
|
|
7214
|
+
description: string().optional(),
|
|
7215
|
+
placeholder: string().optional(),
|
|
7216
|
+
options: array(string()).optional(),
|
|
7217
|
+
default: union([
|
|
7218
|
+
string(),
|
|
7219
|
+
number$1(),
|
|
7220
|
+
boolean()
|
|
7221
|
+
]).optional(),
|
|
7222
|
+
children: array(WorkflowInputFieldSchema$1).optional(),
|
|
7223
|
+
format: string().optional()
|
|
7224
|
+
}));
|
|
7225
|
+
object({
|
|
7226
|
+
schema: object({ fields: array(WorkflowInputFieldSchema$1) }),
|
|
7227
|
+
values: record(string(), unknown()).nullable()
|
|
7228
|
+
});
|
|
7229
|
+
object({ runId: string() });
|
|
7230
|
+
/** Annotation lifecycle: "generating" while the LLM pass streams in, then "ready". */
|
|
7231
|
+
const WorkflowCanvasStatusSchema$1 = _enum(["generating", "ready"]);
|
|
7232
|
+
/** LLM-produced enrichment for a single skeleton node. */
|
|
7233
|
+
const WorkflowCanvasAnnotationSchema$1 = object({
|
|
7234
|
+
label: string().optional(),
|
|
7235
|
+
description: string().optional()
|
|
7236
|
+
});
|
|
7237
|
+
/** The configured value of one input at this call site. */
|
|
7238
|
+
const WorkflowNodeInputBindingSchema$1 = object({
|
|
7239
|
+
tokens: array(discriminatedUnion("kind", [
|
|
7240
|
+
object({
|
|
7241
|
+
kind: literal("text"),
|
|
7242
|
+
text: string()
|
|
7243
|
+
}),
|
|
7244
|
+
object({
|
|
7245
|
+
kind: literal("reference"),
|
|
7246
|
+
sourceNodeId: string().optional(),
|
|
7247
|
+
sourceLabel: string(),
|
|
7248
|
+
field: string().optional()
|
|
7249
|
+
}),
|
|
7250
|
+
object({
|
|
7251
|
+
kind: literal("variable"),
|
|
7252
|
+
text: string(),
|
|
7253
|
+
/** Concrete value when `text` resolves to a top-level literal constant. */
|
|
7254
|
+
resolvedValue: string().optional()
|
|
7255
|
+
}),
|
|
7256
|
+
object({
|
|
7257
|
+
kind: literal("call"),
|
|
7258
|
+
name: string()
|
|
7259
|
+
})
|
|
7260
|
+
])),
|
|
7261
|
+
multiline: boolean().optional()
|
|
7262
|
+
});
|
|
7263
|
+
/** An inspector input with optional call-site binding. */
|
|
7264
|
+
const WorkflowCanvasNodeInputSchema$1 = WorkflowInputFieldSchema$1.and(object({
|
|
7265
|
+
binding: WorkflowNodeInputBindingSchema$1.optional(),
|
|
7266
|
+
additional: boolean().optional()
|
|
7267
|
+
}));
|
|
7268
|
+
/** Authored, deterministic metadata for a single node. */
|
|
7269
|
+
const WorkflowCanvasNodeMetaSchema$1 = object({
|
|
7270
|
+
kind: _enum([
|
|
7271
|
+
"action",
|
|
7272
|
+
"agent",
|
|
7273
|
+
"workflow",
|
|
7274
|
+
"llm",
|
|
7275
|
+
"trigger",
|
|
7276
|
+
"boundary"
|
|
7277
|
+
]),
|
|
7278
|
+
slug: string(),
|
|
7279
|
+
name: string(),
|
|
7280
|
+
description: string().optional(),
|
|
7281
|
+
appSlug: string().optional(),
|
|
7282
|
+
inputs: array(WorkflowCanvasNodeInputSchema$1),
|
|
7283
|
+
outputs: array(WorkflowInputFieldSchema$1),
|
|
7284
|
+
requiredApps: array(string()).optional(),
|
|
7285
|
+
model: string().optional(),
|
|
7286
|
+
toolCount: number$1().int().nonnegative().optional()
|
|
7287
|
+
});
|
|
7288
|
+
object({
|
|
7289
|
+
graph: WorkflowCanvasGraphSchema$1,
|
|
7290
|
+
nodeMetadata: record(string(), WorkflowCanvasNodeMetaSchema$1),
|
|
7291
|
+
annotations: record(string(), WorkflowCanvasAnnotationSchema$1),
|
|
7292
|
+
status: WorkflowCanvasStatusSchema$1,
|
|
7293
|
+
hash: string(),
|
|
7294
|
+
generatedAt: string().nullable(),
|
|
7295
|
+
model: string()
|
|
7296
|
+
});
|
|
7297
|
+
const WorkflowCanvasNodeRunStateSchema$1 = object({
|
|
7298
|
+
status: _enum([
|
|
7299
|
+
"pending",
|
|
7300
|
+
"running",
|
|
7301
|
+
"succeeded",
|
|
7302
|
+
"failed",
|
|
7303
|
+
"skipped"
|
|
7304
|
+
]),
|
|
7305
|
+
iteration: object({
|
|
7306
|
+
index: number$1().int().nonnegative(),
|
|
7307
|
+
total: number$1().int().nonnegative()
|
|
7308
|
+
}).optional()
|
|
7309
|
+
});
|
|
7310
|
+
/** Overall lifecycle of a run as the canvas animates it. */
|
|
7311
|
+
const WorkflowCanvasRunStatusSchema$1 = _enum([
|
|
7312
|
+
"running",
|
|
7313
|
+
"succeeded",
|
|
7314
|
+
"failed",
|
|
7315
|
+
"canceled"
|
|
7316
|
+
]);
|
|
7317
|
+
object({
|
|
7318
|
+
runId: string(),
|
|
7319
|
+
status: WorkflowCanvasRunStatusSchema$1,
|
|
7320
|
+
startedAt: string(),
|
|
7321
|
+
finishedAt: string().nullable(),
|
|
7322
|
+
nodeStates: record(string(), WorkflowCanvasNodeRunStateSchema$1)
|
|
7323
|
+
});
|
|
7324
|
+
/** Scope a credential instance lives in. */
|
|
7325
|
+
const WorkflowCredentialScopeSchema$1 = _enum([
|
|
7326
|
+
"organization",
|
|
7327
|
+
"project",
|
|
7328
|
+
"user"
|
|
7329
|
+
]);
|
|
7330
|
+
/** The concrete credential instance a binding currently resolves to. */
|
|
7331
|
+
const WorkflowResolvedCredentialSchema$1 = object({
|
|
7332
|
+
id: string(),
|
|
7333
|
+
name: string(),
|
|
7334
|
+
scope: WorkflowCredentialScopeSchema$1,
|
|
7335
|
+
appSlug: string().optional(),
|
|
7336
|
+
isDefault: boolean().optional(),
|
|
7337
|
+
projectId: string().optional(),
|
|
7338
|
+
projectName: string().optional()
|
|
7339
|
+
});
|
|
7340
|
+
record(string(), WorkflowCanvasAnnotationSchema$1);
|
|
7341
|
+
/** One opaque code-block the annotation pass should label, keyed by its canvas node id. */
|
|
7342
|
+
const WorkflowCanvasAnnotationCodeBlockSchema$1 = object({
|
|
7343
|
+
nodeId: string(),
|
|
7344
|
+
/** The raw source snippet (the node's label) the LLM turns into human copy. */
|
|
7345
|
+
source: string()
|
|
7346
|
+
});
|
|
7347
|
+
/** Inputs the worker feeds the LLM for the gated code-block annotation pass. */
|
|
7348
|
+
const WorkflowCanvasAnnotationsInputSchema$1 = object({
|
|
7349
|
+
workflowName: string(),
|
|
7350
|
+
workflowDescription: string().nullable(),
|
|
7351
|
+
codeBlocks: array(WorkflowCanvasAnnotationCodeBlockSchema$1)
|
|
7352
|
+
});
|
|
7353
|
+
object({
|
|
7354
|
+
workflowId: string(),
|
|
7355
|
+
projectId: string(),
|
|
7356
|
+
hash: string(),
|
|
7357
|
+
model: string(),
|
|
7358
|
+
input: WorkflowCanvasAnnotationsInputSchema$1
|
|
7359
|
+
});
|
|
7360
|
+
/** One node as the overview LLM sees it (derived from the canvas node metadata + graph). */
|
|
7361
|
+
const WorkflowOverviewNodeSchema$1 = object({
|
|
7362
|
+
nodeId: string(),
|
|
7363
|
+
label: string(),
|
|
7364
|
+
kind: string(),
|
|
7365
|
+
description: string().optional(),
|
|
7366
|
+
/** App/integration slug for steps imported from a `@keystrokehq/<app>` package. */
|
|
7367
|
+
appSlug: string().optional(),
|
|
7368
|
+
/** Authored input field keys (from the action/agent/workflow definition). */
|
|
7369
|
+
inputs: array(string()).optional(),
|
|
7370
|
+
/** Authored output field keys. */
|
|
7371
|
+
outputs: array(string()).optional(),
|
|
7372
|
+
/** Agent-only: the model the agent runs on. */
|
|
7373
|
+
model: string().optional(),
|
|
7374
|
+
/** Agent-only: number of tools available to the agent. */
|
|
7375
|
+
toolCount: number$1().int().nonnegative().optional()
|
|
7376
|
+
});
|
|
7377
|
+
/** Inputs the worker feeds the LLM to produce the workflow overview (summary + phases). */
|
|
7378
|
+
const WorkflowOverviewInputSchema$1 = object({
|
|
7379
|
+
workflowName: string(),
|
|
7380
|
+
workflowDescription: string().nullable(),
|
|
7381
|
+
/** Display labels of the trigger sources upstream of the workflow (read-only context). */
|
|
7382
|
+
triggers: array(string()),
|
|
7383
|
+
nodes: array(WorkflowOverviewNodeSchema$1),
|
|
7384
|
+
/** The workflow's TypeScript source (best-effort; null when the deploy has no source snapshot). */
|
|
7385
|
+
source: string().nullable()
|
|
7386
|
+
});
|
|
7387
|
+
object({
|
|
7388
|
+
workflowId: string(),
|
|
7389
|
+
projectId: string(),
|
|
7390
|
+
hash: string(),
|
|
7391
|
+
model: string(),
|
|
7392
|
+
input: WorkflowOverviewInputSchema$1
|
|
7393
|
+
});
|
|
7394
|
+
const WorkflowCanvasCredentialBindingBaseSchema$1 = object({
|
|
7395
|
+
credentialKey: string(),
|
|
7396
|
+
label: string(),
|
|
7397
|
+
appSlug: string().optional()
|
|
7398
|
+
});
|
|
7399
|
+
/** How one credential requirement on a step currently resolves. */
|
|
7400
|
+
const WorkflowCanvasCredentialBindingSchema$1 = union([
|
|
7401
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7402
|
+
policy: _enum([
|
|
7403
|
+
"project-default",
|
|
7404
|
+
"org-default",
|
|
7405
|
+
"assigned"
|
|
7406
|
+
]),
|
|
7407
|
+
instance: WorkflowResolvedCredentialSchema$1
|
|
7408
|
+
}),
|
|
7409
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7410
|
+
policy: literal("scope-pinned"),
|
|
7411
|
+
pinnedScope: WorkflowCredentialScopeSchema$1,
|
|
7412
|
+
instance: WorkflowResolvedCredentialSchema$1
|
|
7413
|
+
}),
|
|
7414
|
+
WorkflowCanvasCredentialBindingBaseSchema$1.extend({
|
|
7415
|
+
policy: literal("unresolved"),
|
|
7416
|
+
reason: _enum(["needs-selection", "missing"]),
|
|
7417
|
+
pinnedScope: WorkflowCredentialScopeSchema$1.optional()
|
|
7418
|
+
})
|
|
7419
|
+
]);
|
|
7420
|
+
record(string(), array(WorkflowCanvasCredentialBindingSchema$1));
|
|
7421
|
+
record(string(), unknown());
|
|
6914
7422
|
/** Builds base64 `KEYSTROKE_ORG_ARTIFACTS` payload for org worker containers. */
|
|
6915
7423
|
function encodeOrgArtifacts(artifacts) {
|
|
6916
7424
|
return Buffer.from(JSON.stringify(artifacts)).toString("base64");
|
|
@@ -8303,10 +8811,260 @@ function resolveExternalPlatformOrigin(env = process.env) {
|
|
|
8303
8811
|
}
|
|
8304
8812
|
/** On-disk path under the project root (packed in deploy artifacts when present). */
|
|
8305
8813
|
const ROUTE_MANIFEST_REL_PATH = "dist/.keystroke/route-manifest.json";
|
|
8814
|
+
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
8815
|
+
const CredentialAuthKindSchema = zod.z.enum([
|
|
8816
|
+
"api_key",
|
|
8817
|
+
"oauth_managed",
|
|
8818
|
+
"keystroke"
|
|
8819
|
+
]);
|
|
8820
|
+
/**
|
|
8821
|
+
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
8822
|
+
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
8823
|
+
* resolver tries the project default, then the org default, then throws.
|
|
8824
|
+
*/
|
|
8825
|
+
const CredentialScopeTypeSchema = zod.z.enum([
|
|
8826
|
+
"organization",
|
|
8827
|
+
"project",
|
|
8828
|
+
"user"
|
|
8829
|
+
]);
|
|
8830
|
+
CredentialAuthKindSchema.options;
|
|
8831
|
+
CredentialScopeTypeSchema.options;
|
|
8832
|
+
/** Non-empty human-readable label or description (trimmed). */
|
|
8833
|
+
const requiredDisplayTextSchema = zod.z.string().trim().min(1);
|
|
8834
|
+
/**
|
|
8835
|
+
* Structural workflow-canvas graph contract.
|
|
8836
|
+
*
|
|
8837
|
+
* This is the deterministic skeleton the deploy-time AST producer emits for a
|
|
8838
|
+
* workflow (nodes + edges), plus the manifest-derived trigger-source nodes. It
|
|
8839
|
+
* is the single source of truth shared by:
|
|
8840
|
+
* - the AST producer (emits it at deploy, stored with the manifest),
|
|
8841
|
+
* - the platform route that serves the canvas, and
|
|
8842
|
+
* - the SDK / web client that renders it (React Flow).
|
|
8843
|
+
*
|
|
8844
|
+
* Only the structural skeleton lives here. The LLM enrichment + run-overlay
|
|
8845
|
+
* envelope types live in `workflow-canvas-envelope.ts`; the SDK re-exports them.
|
|
8846
|
+
* See WORKFLOW.md (§4 grammar, §8 node ids, §9 caching).
|
|
8847
|
+
*/
|
|
8848
|
+
/**
|
|
8849
|
+
* Canvas node taxonomy — the single discriminator for every canvas node. The
|
|
8850
|
+
* client derives the React Flow component, icon, and per-node treatment from it
|
|
8851
|
+
* (no parallel `type` / `data.kind` fields), and the producer + fixtures emit it
|
|
8852
|
+
* directly, so the structural contract can never silently diverge across the
|
|
8853
|
+
* deploy → render boundary.
|
|
8854
|
+
* - Boundaries: `entry` (Start, owns input) · `exit` (Output, owns output) ·
|
|
8855
|
+
* `error` (a terminal `throw` — an error output that ends the run on a branch)
|
|
8856
|
+
* - Callable: `step` (action / agent / llm / hook / child-workflow invocation) —
|
|
8857
|
+
* the invocation flavor lives in {@link WorkflowCanvasCallKind}
|
|
8858
|
+
* - Structural control flow: `code-block` · `decision` · `merge` · `loop` ·
|
|
8859
|
+
* `parallel` (group containers) · `loop-start` (the group body's entry marker,
|
|
8860
|
+
* shared by loop + parallel)
|
|
8861
|
+
* - Upstream of entry: `trigger-source` (one per manifest trigger attachment)
|
|
8862
|
+
*
|
|
8863
|
+
* `Promise.all([...])` is modeled as a `parallel` group container: the branches
|
|
8864
|
+
* are stacked inside and the container itself is the single prong leaving the
|
|
8865
|
+
* wrapper (there is no separate fork/join pair).
|
|
8866
|
+
*
|
|
8867
|
+
* `exit` and `error` are both terminals: a `return` flows to the shared `exit`
|
|
8868
|
+
* (the workflow output), while a `throw` gets its own `error` terminal off the
|
|
8869
|
+
* branch so guard clauses (`if (bad) throw …`) read as a visible dead-end.
|
|
8870
|
+
*/
|
|
8871
|
+
const WorkflowCanvasNodeTypeSchema = zod.z.enum([
|
|
8872
|
+
"entry",
|
|
8873
|
+
"exit",
|
|
8874
|
+
"error",
|
|
8875
|
+
"step",
|
|
8876
|
+
"code-block",
|
|
8877
|
+
"decision",
|
|
8878
|
+
"merge",
|
|
8879
|
+
"loop",
|
|
8880
|
+
"parallel",
|
|
8881
|
+
"loop-start",
|
|
8882
|
+
"trigger-source"
|
|
8883
|
+
]);
|
|
8884
|
+
zod.z.enum([
|
|
8885
|
+
"workflow-step",
|
|
8886
|
+
"agent",
|
|
8887
|
+
"llm",
|
|
8888
|
+
"wait",
|
|
8889
|
+
"hook",
|
|
8890
|
+
"tool",
|
|
8891
|
+
"child-workflow"
|
|
8892
|
+
]);
|
|
8893
|
+
/** A labeled branch output on a decision-style node. */
|
|
8894
|
+
const WorkflowCanvasNodeOutputSchema = zod.z.object({
|
|
8895
|
+
id: zod.z.string(),
|
|
8896
|
+
label: zod.z.string()
|
|
8897
|
+
});
|
|
8898
|
+
/**
|
|
8899
|
+
* One token of a step's call-site argument value as captured by the producer.
|
|
8900
|
+
*
|
|
8901
|
+
* Raw form, one per source-expression shape so the inspector can render each
|
|
8902
|
+
* distinctly instead of dumping raw text:
|
|
8903
|
+
* - `text` — a literal value (string/number/boolean) or inert template chunk.
|
|
8904
|
+
* - `reference` — an upstream node output; carries only the structural
|
|
8905
|
+
* `sourceNodeId` + `field` (the human `sourceLabel` is filled by the platform
|
|
8906
|
+
* metadata join).
|
|
8907
|
+
* - `variable` — a code identifier / property access that isn't an upstream
|
|
8908
|
+
* reference (e.g. a `const`, a loop variable, `job.id`). `text` is the source
|
|
8909
|
+
* name; the platform may attach a `resolvedValue` for known top-level consts.
|
|
8910
|
+
* - `call` — a function call; carries only the callee `name` (e.g.
|
|
8911
|
+
* `buildPrompt`), never the full argument list.
|
|
8912
|
+
*/
|
|
8913
|
+
const WorkflowCanvasRawValueTokenSchema = zod.z.discriminatedUnion("kind", [
|
|
8914
|
+
zod.z.object({
|
|
8915
|
+
kind: zod.z.literal("text"),
|
|
8916
|
+
text: zod.z.string()
|
|
8917
|
+
}),
|
|
8918
|
+
zod.z.object({
|
|
8919
|
+
kind: zod.z.literal("reference"),
|
|
8920
|
+
/** Upstream node id this value flows from; absent only for unresolved refs. */
|
|
8921
|
+
sourceNodeId: zod.z.string().optional(),
|
|
8922
|
+
/** Output field of the source (dotted path); omitted = the whole output. */
|
|
8923
|
+
field: zod.z.string().optional()
|
|
8924
|
+
}),
|
|
8925
|
+
zod.z.object({
|
|
8926
|
+
kind: zod.z.literal("variable"),
|
|
8927
|
+
text: zod.z.string()
|
|
8928
|
+
}),
|
|
8929
|
+
zod.z.object({
|
|
8930
|
+
kind: zod.z.literal("call"),
|
|
8931
|
+
name: zod.z.string()
|
|
8932
|
+
})
|
|
8933
|
+
]);
|
|
8934
|
+
/**
|
|
8935
|
+
* A step input's configured value at its call site, captured deterministically
|
|
8936
|
+
* by the producer from the call's argument object. The platform join turns this
|
|
8937
|
+
* into the inspector's {@link WorkflowNodeInputBinding} (filling display labels).
|
|
8938
|
+
*/
|
|
8939
|
+
const WorkflowCanvasRawBindingSchema = zod.z.object({
|
|
8940
|
+
tokens: zod.z.array(WorkflowCanvasRawValueTokenSchema),
|
|
8941
|
+
/** Render as a tall multi-line box (object/array/multiline template values). */
|
|
8942
|
+
multiline: zod.z.boolean().optional()
|
|
8943
|
+
});
|
|
8944
|
+
/**
|
|
8945
|
+
* Statically-captured `promptLlm` options for an `llm` step node. Literal-only:
|
|
8946
|
+
* dynamic/expression values (a computed model, a `system` built by a function) are
|
|
8947
|
+
* not captured; `system`/`outputSchema` record presence so the inspector can note
|
|
8948
|
+
* "a system prompt is configured" / "structured output" without their values.
|
|
8949
|
+
*/
|
|
8950
|
+
const WorkflowCanvasLlmOptionsSchema = zod.z.object({
|
|
8951
|
+
model: zod.z.string().optional(),
|
|
8952
|
+
maxTokens: zod.z.number().optional(),
|
|
8953
|
+
temperature: zod.z.number().optional(),
|
|
8954
|
+
thinkingLevel: zod.z.string().optional(),
|
|
8955
|
+
hasSystemPrompt: zod.z.boolean().optional(),
|
|
8956
|
+
hasOutputSchema: zod.z.boolean().optional()
|
|
8957
|
+
});
|
|
8958
|
+
const WorkflowCanvasNodeDataSchema = zod.z.object({
|
|
8959
|
+
label: zod.z.string(),
|
|
8960
|
+
/** Set on group nodes (loop / parallel section containers). */
|
|
8961
|
+
groupKind: zod.z.enum([
|
|
8962
|
+
"loop",
|
|
8963
|
+
"parallel",
|
|
8964
|
+
"conditional"
|
|
8965
|
+
]).optional(),
|
|
8966
|
+
description: zod.z.string().optional(),
|
|
8967
|
+
/** {@link WorkflowCanvasCallKind} or a looser raw call-site label. */
|
|
8968
|
+
callKind: zod.z.string().optional(),
|
|
8969
|
+
/**
|
|
8970
|
+
* App/integration slug for a `step` whose action/agent is imported directly
|
|
8971
|
+
* from a `@keystrokehq/<app>` package (e.g. "slack", "apollo"). Lets the client
|
|
8972
|
+
* badge the node with that app's logo; absent for custom (project-local)
|
|
8973
|
+
* actions, which fall back to the call-kind icon.
|
|
8974
|
+
*/
|
|
8975
|
+
appSlug: zod.z.string().optional(),
|
|
8976
|
+
/** Cron/webhook/poll discriminator on trigger-source nodes. */
|
|
8977
|
+
triggerType: zod.z.string().optional(),
|
|
8978
|
+
/** Branch outputs (decision nodes). */
|
|
8979
|
+
outputs: zod.z.array(WorkflowCanvasNodeOutputSchema).optional(),
|
|
8980
|
+
/**
|
|
8981
|
+
* Action/agent/workflow slug resolved at deploy time (via import → definition).
|
|
8982
|
+
* Optional when the deploy build cannot resolve source (dist-only artifacts).
|
|
8983
|
+
*/
|
|
8984
|
+
slug: zod.z.string().optional(),
|
|
8985
|
+
/**
|
|
8986
|
+
* Durable call-site ids nested inside an off-grammar `code-block` (same-file only).
|
|
8987
|
+
* Used by the run overlay to light the block when any contained step executes.
|
|
8988
|
+
*/
|
|
8989
|
+
containedCallSiteIds: zod.z.array(zod.z.string()).optional(),
|
|
8990
|
+
/**
|
|
8991
|
+
* Per-input call-site value bindings for `step` nodes, keyed by input field name.
|
|
8992
|
+
* Deterministically captured from the call's argument object; reference tokens point
|
|
8993
|
+
* at the upstream node that produced the value. The platform join fills display labels.
|
|
8994
|
+
*/
|
|
8995
|
+
inputBindings: zod.z.record(zod.z.string(), WorkflowCanvasRawBindingSchema).optional(),
|
|
8996
|
+
/**
|
|
8997
|
+
* Static `promptLlm(prompt, options)` configuration captured at the call site for
|
|
8998
|
+
* `llm` step nodes. Only literal values are captured (model/maxTokens/temperature/
|
|
8999
|
+
* thinkingLevel); `system`/`outputSchema` are usually expressions, so only their
|
|
9000
|
+
* presence is recorded. Absent when no options are statically resolvable.
|
|
9001
|
+
*/
|
|
9002
|
+
llmOptions: WorkflowCanvasLlmOptionsSchema.optional()
|
|
9003
|
+
});
|
|
9004
|
+
/**
|
|
9005
|
+
* A single structural node. This is the deploy artifact's shape: identity
|
|
9006
|
+
* (`id`), the canonical discriminator (`nodeType`), display `data`, and group
|
|
9007
|
+
* nesting (`parentId`). All layout/rendering — React Flow component key,
|
|
9008
|
+
* positions, sizes, `extent`, group box dimensions — is derived entirely
|
|
9009
|
+
* client-side from this structure, so it never leaks into the wire contract.
|
|
9010
|
+
*/
|
|
9011
|
+
const WorkflowCanvasGraphNodeSchema = zod.z.object({
|
|
9012
|
+
id: zod.z.string(),
|
|
9013
|
+
nodeType: WorkflowCanvasNodeTypeSchema,
|
|
9014
|
+
data: WorkflowCanvasNodeDataSchema,
|
|
9015
|
+
/** Set on children nested inside a group (loop / parallel) container. */
|
|
9016
|
+
parentId: zod.z.string().optional()
|
|
9017
|
+
});
|
|
9018
|
+
const WorkflowCanvasEdgeSchema = zod.z.object({
|
|
9019
|
+
id: zod.z.string(),
|
|
9020
|
+
source: zod.z.string(),
|
|
9021
|
+
target: zod.z.string(),
|
|
9022
|
+
type: zod.z.string().optional(),
|
|
9023
|
+
label: zod.z.string().optional(),
|
|
9024
|
+
sourceHandle: zod.z.string().optional(),
|
|
9025
|
+
targetHandle: zod.z.string().optional(),
|
|
9026
|
+
data: zod.z.object({ branchKind: zod.z.enum([
|
|
9027
|
+
"then",
|
|
9028
|
+
"else",
|
|
9029
|
+
"parallel-branch",
|
|
9030
|
+
"error"
|
|
9031
|
+
]).optional() }).optional()
|
|
9032
|
+
});
|
|
9033
|
+
/** A statically-evaluable top-level `const` value (literal scalars only). */
|
|
9034
|
+
const WorkflowCanvasConstantValueSchema = zod.z.union([
|
|
9035
|
+
zod.z.string(),
|
|
9036
|
+
zod.z.number(),
|
|
9037
|
+
zod.z.boolean()
|
|
9038
|
+
]);
|
|
9039
|
+
/**
|
|
9040
|
+
* Top-level `const NAME = <literal>` declarations in the workflow source, captured
|
|
9041
|
+
* at deploy. Lets the platform resolve `variable` value tokens (e.g. a `model` set
|
|
9042
|
+
* to a named const) to their concrete value for display. Scalars only — computed,
|
|
9043
|
+
* function-local, or non-literal consts are intentionally omitted.
|
|
9044
|
+
*/
|
|
9045
|
+
const WorkflowCanvasConstantsSchema = zod.z.record(zod.z.string(), WorkflowCanvasConstantValueSchema);
|
|
9046
|
+
const WorkflowCanvasGraphSchema = zod.z.object({
|
|
9047
|
+
nodes: zod.z.array(WorkflowCanvasGraphNodeSchema),
|
|
9048
|
+
edges: zod.z.array(WorkflowCanvasEdgeSchema),
|
|
9049
|
+
/** Top-level literal constants from the workflow source (for value-token resolution). */
|
|
9050
|
+
constants: WorkflowCanvasConstantsSchema.optional()
|
|
9051
|
+
});
|
|
9052
|
+
/**
|
|
9053
|
+
* Deploy-time summary of one credential a step requires, derived from the
|
|
9054
|
+
* action/agent-tool definition's `.credentials`. The workflow-canvas credential
|
|
9055
|
+
* overlay joins a step node's `slug` to these to resolve the bound instance.
|
|
9056
|
+
* `key` doubles as the app slug (matches `credential_instances.app_slug`).
|
|
9057
|
+
*/
|
|
9058
|
+
const CredentialRequirementSummarySchema = zod.z.object({
|
|
9059
|
+
key: zod.z.string(),
|
|
9060
|
+
kind: CredentialAuthKindSchema,
|
|
9061
|
+
/** Scope pinned via `.scope(...)`; absent means project-default → org-default. */
|
|
9062
|
+
scope: CredentialScopeTypeSchema.optional()
|
|
9063
|
+
});
|
|
8306
9064
|
const StoredRouteManifestSkillSchema = zod.z.object({
|
|
8307
9065
|
slug: zod.z.string(),
|
|
8308
|
-
name:
|
|
8309
|
-
description:
|
|
9066
|
+
name: requiredDisplayTextSchema,
|
|
9067
|
+
description: requiredDisplayTextSchema,
|
|
8310
9068
|
moduleFile: zod.z.string()
|
|
8311
9069
|
});
|
|
8312
9070
|
const attachmentSchemasSchema = zod.z.record(zod.z.string(), zod.z.object({
|
|
@@ -8314,8 +9072,8 @@ const attachmentSchemasSchema = zod.z.record(zod.z.string(), zod.z.object({
|
|
|
8314
9072
|
filterSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
|
|
8315
9073
|
}));
|
|
8316
9074
|
const attachmentMetaSchema = zod.z.record(zod.z.string(), zod.z.object({
|
|
8317
|
-
name:
|
|
8318
|
-
description:
|
|
9075
|
+
name: requiredDisplayTextSchema,
|
|
9076
|
+
description: requiredDisplayTextSchema
|
|
8319
9077
|
}));
|
|
8320
9078
|
const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
|
|
8321
9079
|
zod.z.object({ kind: zod.z.literal("health") }),
|
|
@@ -8323,23 +9081,43 @@ const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
|
|
|
8323
9081
|
kind: zod.z.literal("agent"),
|
|
8324
9082
|
slug: zod.z.string(),
|
|
8325
9083
|
moduleFile: zod.z.string(),
|
|
8326
|
-
name:
|
|
8327
|
-
description:
|
|
9084
|
+
name: requiredDisplayTextSchema,
|
|
9085
|
+
description: requiredDisplayTextSchema,
|
|
8328
9086
|
model: zod.z.string(),
|
|
8329
9087
|
systemPrompt: zod.z.string(),
|
|
8330
9088
|
toolCount: zod.z.number().int().nonnegative(),
|
|
8331
9089
|
credentialCount: zod.z.number().int().nonnegative(),
|
|
8332
9090
|
appSlugs: zod.z.array(zod.z.string()).default([]),
|
|
8333
|
-
toolSlugs: zod.z.array(zod.z.string()).default([])
|
|
9091
|
+
toolSlugs: zod.z.array(zod.z.string()).default([]),
|
|
9092
|
+
/** Credential requirements per tool slug (the agent's credential consumer key). */
|
|
9093
|
+
toolRequirements: zod.z.record(zod.z.string(), zod.z.array(CredentialRequirementSummarySchema)).optional()
|
|
9094
|
+
}),
|
|
9095
|
+
zod.z.object({
|
|
9096
|
+
kind: zod.z.literal("action"),
|
|
9097
|
+
slug: zod.z.string(),
|
|
9098
|
+
name: requiredDisplayTextSchema,
|
|
9099
|
+
description: requiredDisplayTextSchema,
|
|
9100
|
+
moduleFile: zod.z.string(),
|
|
9101
|
+
/** App slug for actions imported from an integration package (`@keystrokehq/<app>/actions`). */
|
|
9102
|
+
appSlug: zod.z.string().optional(),
|
|
9103
|
+
inputSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
|
|
9104
|
+
outputSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
|
|
9105
|
+
/** Credentials this action requires (for the canvas credential overlay). */
|
|
9106
|
+
requirements: zod.z.array(CredentialRequirementSummarySchema).optional()
|
|
8334
9107
|
}),
|
|
8335
9108
|
zod.z.object({
|
|
8336
9109
|
kind: zod.z.literal("workflow"),
|
|
8337
9110
|
slug: zod.z.string(),
|
|
8338
|
-
name:
|
|
8339
|
-
description:
|
|
9111
|
+
name: requiredDisplayTextSchema,
|
|
9112
|
+
description: requiredDisplayTextSchema,
|
|
8340
9113
|
subscribable: zod.z.boolean(),
|
|
8341
9114
|
moduleFile: zod.z.string(),
|
|
8342
|
-
requestSchema: zod.z.record(zod.z.string(), zod.z.unknown())
|
|
9115
|
+
requestSchema: zod.z.record(zod.z.string(), zod.z.unknown()),
|
|
9116
|
+
responseSchema: zod.z.record(zod.z.string(), zod.z.unknown()).optional(),
|
|
9117
|
+
/** Deterministic AST control-flow skeleton (deploy-time producer). */
|
|
9118
|
+
flowGraph: WorkflowCanvasGraphSchema.optional(),
|
|
9119
|
+
/** sha256 of the workflow source the `flowGraph` was produced from (staleness). */
|
|
9120
|
+
flowGraphSourceHash: zod.z.string().optional()
|
|
8343
9121
|
}),
|
|
8344
9122
|
zod.z.object({
|
|
8345
9123
|
kind: zod.z.literal("trigger-webhook"),
|
|
@@ -8358,8 +9136,8 @@ const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
|
|
|
8358
9136
|
moduleFile: zod.z.string(),
|
|
8359
9137
|
sourceHash: zod.z.string().optional(),
|
|
8360
9138
|
schedule: zod.z.string(),
|
|
8361
|
-
name:
|
|
8362
|
-
description:
|
|
9139
|
+
name: requiredDisplayTextSchema,
|
|
9140
|
+
description: requiredDisplayTextSchema
|
|
8363
9141
|
}),
|
|
8364
9142
|
zod.z.object({
|
|
8365
9143
|
kind: zod.z.literal("trigger-poll-group"),
|
|
@@ -8375,8 +9153,8 @@ const storedRouteManifestEntryV2Schema = zod.z.discriminatedUnion("kind", [
|
|
|
8375
9153
|
moduleFile: zod.z.string(),
|
|
8376
9154
|
sourceHash: zod.z.string().optional(),
|
|
8377
9155
|
schedule: zod.z.string(),
|
|
8378
|
-
name:
|
|
8379
|
-
description:
|
|
9156
|
+
name: requiredDisplayTextSchema,
|
|
9157
|
+
description: requiredDisplayTextSchema
|
|
8380
9158
|
})
|
|
8381
9159
|
]);
|
|
8382
9160
|
const storedRouteManifestV2Schema = zod.z.object({
|
|
@@ -8385,165 +9163,14 @@ const storedRouteManifestV2Schema = zod.z.object({
|
|
|
8385
9163
|
skills: zod.z.array(StoredRouteManifestSkillSchema).default([]),
|
|
8386
9164
|
integrations: zod.z.array(zod.z.string()).optional()
|
|
8387
9165
|
});
|
|
8388
|
-
|
|
8389
|
-
|
|
8390
|
-
|
|
8391
|
-
|
|
8392
|
-
|
|
8393
|
-
|
|
8394
|
-
"trigger-run-detail"
|
|
8395
|
-
]);
|
|
8396
|
-
function webhookEndpointFromPath(path) {
|
|
8397
|
-
return path.replace(/^\/triggers\//, "").replace(/^\/+|\/+$/g, "");
|
|
8398
|
-
}
|
|
8399
|
-
function legacyAgentAppSlugs(entry) {
|
|
8400
|
-
if (Array.isArray(entry.appSlugs)) return entry.appSlugs;
|
|
8401
|
-
if (Array.isArray(entry.credentialSlugs)) return entry.credentialSlugs;
|
|
8402
|
-
if (Array.isArray(entry.credentialKeys)) return entry.credentialKeys;
|
|
8403
|
-
return [];
|
|
8404
|
-
}
|
|
8405
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8406
|
-
function normalizeEntryToV2(entry) {
|
|
8407
|
-
const kind = entry.kind;
|
|
8408
|
-
if (typeof kind !== "string") return null;
|
|
8409
|
-
if (DERIVED_ENTRY_KINDS.has(kind) || kind === "plugin") return null;
|
|
8410
|
-
if (kind === "health") return { kind: "health" };
|
|
8411
|
-
if (kind === "agent") {
|
|
8412
|
-
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.agentSlug === "string" ? entry.agentSlug : void 0;
|
|
8413
|
-
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
8414
|
-
return {
|
|
8415
|
-
kind: "agent",
|
|
8416
|
-
slug,
|
|
8417
|
-
moduleFile: entry.moduleFile,
|
|
8418
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8419
|
-
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
8420
|
-
model: typeof entry.model === "string" ? entry.model : "",
|
|
8421
|
-
systemPrompt: typeof entry.systemPrompt === "string" ? entry.systemPrompt : "",
|
|
8422
|
-
toolCount: typeof entry.toolCount === "number" ? entry.toolCount : 0,
|
|
8423
|
-
credentialCount: typeof entry.credentialCount === "number" ? entry.credentialCount : 0,
|
|
8424
|
-
appSlugs: legacyAgentAppSlugs(entry),
|
|
8425
|
-
toolSlugs: Array.isArray(entry.toolSlugs) ? entry.toolSlugs : []
|
|
8426
|
-
};
|
|
8427
|
-
}
|
|
8428
|
-
if (kind === "workflow") {
|
|
8429
|
-
const slug = typeof entry.slug === "string" ? entry.slug : typeof entry.workflowSlug === "string" ? entry.workflowSlug : void 0;
|
|
8430
|
-
if (!slug || typeof entry.moduleFile !== "string") return null;
|
|
8431
|
-
const name = typeof entry.name === "string" ? entry.name : typeof entry.workflowName === "string" ? entry.workflowName : void 0;
|
|
8432
|
-
return {
|
|
8433
|
-
kind: "workflow",
|
|
8434
|
-
slug,
|
|
8435
|
-
moduleFile: entry.moduleFile,
|
|
8436
|
-
...name ? { name } : {},
|
|
8437
|
-
...typeof entry.description === "string" ? { description: entry.description } : {},
|
|
8438
|
-
subscribable: entry.subscribable === true,
|
|
8439
|
-
requestSchema: entry.requestSchema && typeof entry.requestSchema === "object" ? entry.requestSchema : {}
|
|
8440
|
-
};
|
|
8441
|
-
}
|
|
8442
|
-
if (kind === "trigger-webhook") {
|
|
8443
|
-
if (typeof entry.moduleFile !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
8444
|
-
const endpoint = typeof entry.endpoint === "string" ? entry.endpoint : typeof entry.path === "string" ? webhookEndpointFromPath(entry.path) : void 0;
|
|
8445
|
-
if (!endpoint) return null;
|
|
8446
|
-
return {
|
|
8447
|
-
kind: "trigger-webhook",
|
|
8448
|
-
endpoint,
|
|
8449
|
-
attachmentIds: entry.attachmentIds,
|
|
8450
|
-
moduleFile: entry.moduleFile,
|
|
8451
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8452
|
-
attachmentSchemas: entry.attachmentSchemas && typeof entry.attachmentSchemas === "object" ? entry.attachmentSchemas : {},
|
|
8453
|
-
...entry.attachmentMeta && typeof entry.attachmentMeta === "object" ? { attachmentMeta: entry.attachmentMeta } : {}
|
|
8454
|
-
};
|
|
8455
|
-
}
|
|
8456
|
-
if (kind === "trigger-poll") {
|
|
8457
|
-
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
8458
|
-
return {
|
|
8459
|
-
kind: "trigger-poll",
|
|
8460
|
-
attachmentId: entry.attachmentId,
|
|
8461
|
-
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
8462
|
-
moduleFile: entry.moduleFile,
|
|
8463
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8464
|
-
schedule: entry.schedule,
|
|
8465
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8466
|
-
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
8467
|
-
};
|
|
8468
|
-
}
|
|
8469
|
-
if (kind === "trigger-poll-group") {
|
|
8470
|
-
if (typeof entry.pollId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string" || !Array.isArray(entry.attachmentIds)) return null;
|
|
8471
|
-
return {
|
|
8472
|
-
kind: "trigger-poll-group",
|
|
8473
|
-
pollId: entry.pollId,
|
|
8474
|
-
attachmentIds: entry.attachmentIds,
|
|
8475
|
-
moduleFile: entry.moduleFile,
|
|
8476
|
-
schedule: entry.schedule
|
|
8477
|
-
};
|
|
8478
|
-
}
|
|
8479
|
-
if (kind === "cron-schedule") {
|
|
8480
|
-
if (typeof entry.attachmentId !== "string" || typeof entry.moduleFile !== "string" || typeof entry.schedule !== "string") return null;
|
|
8481
|
-
return {
|
|
8482
|
-
kind: "cron-schedule",
|
|
8483
|
-
attachmentId: entry.attachmentId,
|
|
8484
|
-
attachmentIds: Array.isArray(entry.attachmentIds) ? entry.attachmentIds : [entry.attachmentId],
|
|
8485
|
-
moduleFile: entry.moduleFile,
|
|
8486
|
-
...typeof entry.sourceHash === "string" ? { sourceHash: entry.sourceHash } : {},
|
|
8487
|
-
schedule: entry.schedule,
|
|
8488
|
-
...typeof entry.name === "string" ? { name: entry.name } : {},
|
|
8489
|
-
...typeof entry.description === "string" ? { description: entry.description } : {}
|
|
8490
|
-
};
|
|
8491
|
-
}
|
|
8492
|
-
return null;
|
|
8493
|
-
}
|
|
8494
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8495
|
-
function normalizeV2ManifestInput(value) {
|
|
8496
|
-
if (!value || typeof value !== "object") return value;
|
|
8497
|
-
const raw = value;
|
|
8498
|
-
if (raw.version !== 2 || !Array.isArray(raw.entries)) return value;
|
|
8499
|
-
return {
|
|
8500
|
-
...raw,
|
|
8501
|
-
entries: raw.entries.map((entry) => {
|
|
8502
|
-
if (!entry || typeof entry !== "object") return entry;
|
|
8503
|
-
const kind = entry.kind;
|
|
8504
|
-
if (kind === "trigger-poll" || kind === "cron-schedule" || kind === "trigger-webhook" || kind === "trigger-poll-group") {
|
|
8505
|
-
const trigger = entry;
|
|
8506
|
-
if (Array.isArray(trigger.attachmentIds)) return entry;
|
|
8507
|
-
return {
|
|
8508
|
-
...trigger,
|
|
8509
|
-
attachmentIds: typeof trigger.attachmentId === "string" ? [trigger.attachmentId] : []
|
|
8510
|
-
};
|
|
8511
|
-
}
|
|
8512
|
-
if (kind !== "agent") return entry;
|
|
8513
|
-
const agent = entry;
|
|
8514
|
-
if (Array.isArray(agent.appSlugs)) return entry;
|
|
8515
|
-
const appSlugs = legacyAgentAppSlugs(agent);
|
|
8516
|
-
if (appSlugs.length === 0) return entry;
|
|
8517
|
-
const { credentialKeys: _credentialKeys, credentialSlugs: _credentialSlugs, ...rest } = agent;
|
|
8518
|
-
return {
|
|
8519
|
-
...rest,
|
|
8520
|
-
appSlugs,
|
|
8521
|
-
toolSlugs: Array.isArray(agent.toolSlugs) ? agent.toolSlugs : []
|
|
8522
|
-
};
|
|
8523
|
-
})
|
|
8524
|
-
};
|
|
8525
|
-
}
|
|
8526
|
-
/** TODO remove after all artifacts rebuilt — upcasts legacy v1 manifests to v2. */
|
|
8527
|
-
function normalizeStoredRouteManifestToV2(value) {
|
|
8528
|
-
if (!value || typeof value !== "object") throw new Error("Invalid route manifest");
|
|
8529
|
-
const raw = value;
|
|
8530
|
-
if (raw.version === 2) return storedRouteManifestV2Schema.parse(normalizeV2ManifestInput(value));
|
|
8531
|
-
const entriesRaw = Array.isArray(raw.entries) ? raw.entries : [];
|
|
8532
|
-
const entries = [];
|
|
8533
|
-
for (const entry of entriesRaw) {
|
|
8534
|
-
if (!entry || typeof entry !== "object") continue;
|
|
8535
|
-
const normalized = normalizeEntryToV2(entry);
|
|
8536
|
-
if (normalized) entries.push(normalized);
|
|
8537
|
-
}
|
|
8538
|
-
return storedRouteManifestV2Schema.parse({
|
|
8539
|
-
version: 2,
|
|
8540
|
-
entries,
|
|
8541
|
-
skills: raw.skills ?? [],
|
|
8542
|
-
integrations: raw.integrations
|
|
8543
|
-
});
|
|
8544
|
-
}
|
|
9166
|
+
/**
|
|
9167
|
+
* Parse a stored route manifest. Only the strict v2 schema is supported: the
|
|
9168
|
+
* builder always emits v2 and every deploy regenerates the manifest, so there is
|
|
9169
|
+
* no legacy upcasting. (The pre-v2 `normalizeEntryToV2` path was removed once the
|
|
9170
|
+
* data tables were truncated and all artifacts redeployed.)
|
|
9171
|
+
*/
|
|
8545
9172
|
function parseStoredRouteManifest(value) {
|
|
8546
|
-
return
|
|
9173
|
+
return storedRouteManifestV2Schema.parse(value);
|
|
8547
9174
|
}
|
|
8548
9175
|
/** Messaging platforms that support agent gateway bindings. */
|
|
8549
9176
|
const ChannelPlatformKeySchema = zod.z.enum(["slack"]);
|
|
@@ -9302,24 +9929,6 @@ function parseAppSlug(slug) {
|
|
|
9302
9929
|
slug: trimmed
|
|
9303
9930
|
};
|
|
9304
9931
|
}
|
|
9305
|
-
/** How a credential instance is stored (`credential_instances.auth_kind`). */
|
|
9306
|
-
const CredentialAuthKindSchema = zod.z.enum([
|
|
9307
|
-
"api_key",
|
|
9308
|
-
"oauth_managed",
|
|
9309
|
-
"keystroke"
|
|
9310
|
-
]);
|
|
9311
|
-
/**
|
|
9312
|
-
* Where a credential instance is stored (`credential_instances.scope_type`), and the only thing an
|
|
9313
|
-
* action/tool can pin via `.scope(...)`. There is no resolution chain: when no scope is pinned, the
|
|
9314
|
-
* resolver tries the project default, then the org default, then throws.
|
|
9315
|
-
*/
|
|
9316
|
-
const CredentialScopeTypeSchema = zod.z.enum([
|
|
9317
|
-
"organization",
|
|
9318
|
-
"project",
|
|
9319
|
-
"user"
|
|
9320
|
-
]);
|
|
9321
|
-
CredentialAuthKindSchema.options;
|
|
9322
|
-
CredentialScopeTypeSchema.options;
|
|
9323
9932
|
/** Human-readable app name from a credential slug (e.g. `google-drive` → `Google Drive`). */
|
|
9324
9933
|
function displayCredentialAppName(appId) {
|
|
9325
9934
|
return appId.split(/[-_]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
|
|
@@ -10414,7 +11023,7 @@ const WorkspaceTriggerSummarySchema = zod.z.object({
|
|
|
10414
11023
|
id: zod.z.string(),
|
|
10415
11024
|
slug: zod.z.string(),
|
|
10416
11025
|
name: zod.z.string(),
|
|
10417
|
-
description: zod.z.string().
|
|
11026
|
+
description: zod.z.string().min(1),
|
|
10418
11027
|
type: TriggerTypeSchema,
|
|
10419
11028
|
status: TriggerStatusSchema,
|
|
10420
11029
|
projectId: zod.z.string(),
|
|
@@ -10840,7 +11449,7 @@ const AgentSummarySchema = zod.z.object({
|
|
|
10840
11449
|
name: zod.z.string().min(1),
|
|
10841
11450
|
projectId: zod.z.string().min(1),
|
|
10842
11451
|
updatedAt: zod.z.string().min(1),
|
|
10843
|
-
description: zod.z.string().
|
|
11452
|
+
description: zod.z.string().min(1),
|
|
10844
11453
|
sourcePath: zod.z.string().min(1).optional(),
|
|
10845
11454
|
model: zod.z.string().optional(),
|
|
10846
11455
|
capabilities: zod.z.object({
|
|
@@ -10862,7 +11471,7 @@ const WorkflowSummarySchema = zod.z.object({
|
|
|
10862
11471
|
name: zod.z.string().min(1),
|
|
10863
11472
|
projectId: zod.z.string().min(1),
|
|
10864
11473
|
updatedAt: zod.z.string().min(1),
|
|
10865
|
-
description: zod.z.string().
|
|
11474
|
+
description: zod.z.string().min(1),
|
|
10866
11475
|
sourcePath: zod.z.string().min(1).optional(),
|
|
10867
11476
|
lastRunAt: optionalTimestamp
|
|
10868
11477
|
});
|
|
@@ -10872,7 +11481,7 @@ const SkillSummarySchema = zod.z.object({
|
|
|
10872
11481
|
name: zod.z.string().min(1),
|
|
10873
11482
|
projectId: zod.z.string().min(1),
|
|
10874
11483
|
updatedAt: zod.z.string().min(1),
|
|
10875
|
-
description: zod.z.string().
|
|
11484
|
+
description: zod.z.string().min(1),
|
|
10876
11485
|
sourcePath: zod.z.string().min(1).optional()
|
|
10877
11486
|
});
|
|
10878
11487
|
const AgentSummaryListResponseSchema = zod.z.array(AgentSummarySchema);
|
|
@@ -11014,6 +11623,366 @@ const ListAgentWorkspaceFilesResponseSchema = zod.z.object({ files: zod.z.array(
|
|
|
11014
11623
|
function agentWorkspaceFileId(path) {
|
|
11015
11624
|
return projectFileId(path);
|
|
11016
11625
|
}
|
|
11626
|
+
/** Whether the overview is still being produced or finished. */
|
|
11627
|
+
const WorkflowOverviewStatusSchema = zod.z.enum(["generating", "ready"]);
|
|
11628
|
+
/** One phase of the guided-tour overview. */
|
|
11629
|
+
const WorkflowPhaseSchema = zod.z.object({
|
|
11630
|
+
id: zod.z.string(),
|
|
11631
|
+
title: zod.z.string(),
|
|
11632
|
+
copy: zod.z.string(),
|
|
11633
|
+
nodeIds: zod.z.array(zod.z.string())
|
|
11634
|
+
});
|
|
11635
|
+
/** LLM-generated overview envelope. */
|
|
11636
|
+
const WorkspaceWorkflowOverviewSchema = zod.z.object({
|
|
11637
|
+
status: WorkflowOverviewStatusSchema,
|
|
11638
|
+
summary: zod.z.string(),
|
|
11639
|
+
phases: zod.z.array(WorkflowPhaseSchema),
|
|
11640
|
+
hash: zod.z.string(),
|
|
11641
|
+
generatedAt: zod.z.string().nullable(),
|
|
11642
|
+
model: zod.z.string()
|
|
11643
|
+
});
|
|
11644
|
+
/** Subset of JSON-Schema field types the dashboard form renders inline. */
|
|
11645
|
+
const WorkflowInputFieldTypeSchema = zod.z.enum([
|
|
11646
|
+
"string",
|
|
11647
|
+
"number",
|
|
11648
|
+
"boolean",
|
|
11649
|
+
"enum",
|
|
11650
|
+
"object",
|
|
11651
|
+
"array"
|
|
11652
|
+
]);
|
|
11653
|
+
const WorkflowInputFieldSchema = zod.z.lazy(() => zod.z.object({
|
|
11654
|
+
key: zod.z.string(),
|
|
11655
|
+
label: zod.z.string(),
|
|
11656
|
+
type: WorkflowInputFieldTypeSchema,
|
|
11657
|
+
required: zod.z.boolean(),
|
|
11658
|
+
description: zod.z.string().optional(),
|
|
11659
|
+
placeholder: zod.z.string().optional(),
|
|
11660
|
+
options: zod.z.array(zod.z.string()).optional(),
|
|
11661
|
+
default: zod.z.union([
|
|
11662
|
+
zod.z.string(),
|
|
11663
|
+
zod.z.number(),
|
|
11664
|
+
zod.z.boolean()
|
|
11665
|
+
]).optional(),
|
|
11666
|
+
children: zod.z.array(WorkflowInputFieldSchema).optional(),
|
|
11667
|
+
format: zod.z.string().optional()
|
|
11668
|
+
}));
|
|
11669
|
+
/** Flat, render-ready view of a workflow's input schema. */
|
|
11670
|
+
const WorkflowInputSchemaSchema = zod.z.object({ fields: zod.z.array(WorkflowInputFieldSchema) });
|
|
11671
|
+
/** A workflow's run-input contract plus its persisted values. */
|
|
11672
|
+
const WorkflowRunInputsSchema = zod.z.object({
|
|
11673
|
+
schema: WorkflowInputSchemaSchema,
|
|
11674
|
+
values: zod.z.record(zod.z.string(), zod.z.unknown()).nullable()
|
|
11675
|
+
});
|
|
11676
|
+
zod.z.object({ runId: zod.z.string() });
|
|
11677
|
+
/** Annotation lifecycle: "generating" while the LLM pass streams in, then "ready". */
|
|
11678
|
+
const WorkflowCanvasStatusSchema = zod.z.enum(["generating", "ready"]);
|
|
11679
|
+
/** LLM-produced enrichment for a single skeleton node. */
|
|
11680
|
+
const WorkflowCanvasAnnotationSchema = zod.z.object({
|
|
11681
|
+
label: zod.z.string().optional(),
|
|
11682
|
+
description: zod.z.string().optional()
|
|
11683
|
+
});
|
|
11684
|
+
/**
|
|
11685
|
+
* One token of a configured input value (inspector form). Mirrors the producer's
|
|
11686
|
+
* raw token kinds, with display fields filled by the platform join: `reference`
|
|
11687
|
+
* gains a human `sourceLabel`; `variable` may gain a `resolvedValue` when the name
|
|
11688
|
+
* matches a known top-level constant.
|
|
11689
|
+
*/
|
|
11690
|
+
const WorkflowNodeValueTokenSchema = zod.z.discriminatedUnion("kind", [
|
|
11691
|
+
zod.z.object({
|
|
11692
|
+
kind: zod.z.literal("text"),
|
|
11693
|
+
text: zod.z.string()
|
|
11694
|
+
}),
|
|
11695
|
+
zod.z.object({
|
|
11696
|
+
kind: zod.z.literal("reference"),
|
|
11697
|
+
sourceNodeId: zod.z.string().optional(),
|
|
11698
|
+
sourceLabel: zod.z.string(),
|
|
11699
|
+
field: zod.z.string().optional()
|
|
11700
|
+
}),
|
|
11701
|
+
zod.z.object({
|
|
11702
|
+
kind: zod.z.literal("variable"),
|
|
11703
|
+
text: zod.z.string(),
|
|
11704
|
+
/** Concrete value when `text` resolves to a top-level literal constant. */
|
|
11705
|
+
resolvedValue: zod.z.string().optional()
|
|
11706
|
+
}),
|
|
11707
|
+
zod.z.object({
|
|
11708
|
+
kind: zod.z.literal("call"),
|
|
11709
|
+
name: zod.z.string()
|
|
11710
|
+
})
|
|
11711
|
+
]);
|
|
11712
|
+
/** The configured value of one input at this call site. */
|
|
11713
|
+
const WorkflowNodeInputBindingSchema = zod.z.object({
|
|
11714
|
+
tokens: zod.z.array(WorkflowNodeValueTokenSchema),
|
|
11715
|
+
multiline: zod.z.boolean().optional()
|
|
11716
|
+
});
|
|
11717
|
+
/** An inspector input with optional call-site binding. */
|
|
11718
|
+
const WorkflowCanvasNodeInputSchema = WorkflowInputFieldSchema.and(zod.z.object({
|
|
11719
|
+
binding: WorkflowNodeInputBindingSchema.optional(),
|
|
11720
|
+
additional: zod.z.boolean().optional()
|
|
11721
|
+
}));
|
|
11722
|
+
/** Authored, deterministic metadata for a single node. */
|
|
11723
|
+
const WorkflowCanvasNodeMetaSchema = zod.z.object({
|
|
11724
|
+
kind: zod.z.enum([
|
|
11725
|
+
"action",
|
|
11726
|
+
"agent",
|
|
11727
|
+
"workflow",
|
|
11728
|
+
"llm",
|
|
11729
|
+
"trigger",
|
|
11730
|
+
"boundary"
|
|
11731
|
+
]),
|
|
11732
|
+
slug: zod.z.string(),
|
|
11733
|
+
name: zod.z.string(),
|
|
11734
|
+
description: zod.z.string().optional(),
|
|
11735
|
+
appSlug: zod.z.string().optional(),
|
|
11736
|
+
inputs: zod.z.array(WorkflowCanvasNodeInputSchema),
|
|
11737
|
+
outputs: zod.z.array(WorkflowInputFieldSchema),
|
|
11738
|
+
requiredApps: zod.z.array(zod.z.string()).optional(),
|
|
11739
|
+
model: zod.z.string().optional(),
|
|
11740
|
+
toolCount: zod.z.number().int().nonnegative().optional()
|
|
11741
|
+
});
|
|
11742
|
+
/** The workflow canvas envelope. */
|
|
11743
|
+
const WorkflowCanvasSchema = zod.z.object({
|
|
11744
|
+
graph: WorkflowCanvasGraphSchema,
|
|
11745
|
+
nodeMetadata: zod.z.record(zod.z.string(), WorkflowCanvasNodeMetaSchema),
|
|
11746
|
+
annotations: zod.z.record(zod.z.string(), WorkflowCanvasAnnotationSchema),
|
|
11747
|
+
status: WorkflowCanvasStatusSchema,
|
|
11748
|
+
hash: zod.z.string(),
|
|
11749
|
+
generatedAt: zod.z.string().nullable(),
|
|
11750
|
+
model: zod.z.string()
|
|
11751
|
+
});
|
|
11752
|
+
/** Per-node execution state for a single run. */
|
|
11753
|
+
const WorkflowCanvasNodeRunStatusSchema = zod.z.enum([
|
|
11754
|
+
"pending",
|
|
11755
|
+
"running",
|
|
11756
|
+
"succeeded",
|
|
11757
|
+
"failed",
|
|
11758
|
+
"skipped"
|
|
11759
|
+
]);
|
|
11760
|
+
const WorkflowCanvasNodeRunStateSchema = zod.z.object({
|
|
11761
|
+
status: WorkflowCanvasNodeRunStatusSchema,
|
|
11762
|
+
iteration: zod.z.object({
|
|
11763
|
+
index: zod.z.number().int().nonnegative(),
|
|
11764
|
+
total: zod.z.number().int().nonnegative()
|
|
11765
|
+
}).optional()
|
|
11766
|
+
});
|
|
11767
|
+
/** Overall lifecycle of a run as the canvas animates it. */
|
|
11768
|
+
const WorkflowCanvasRunStatusSchema = zod.z.enum([
|
|
11769
|
+
"running",
|
|
11770
|
+
"succeeded",
|
|
11771
|
+
"failed",
|
|
11772
|
+
"canceled"
|
|
11773
|
+
]);
|
|
11774
|
+
/** A run projected onto the canvas. */
|
|
11775
|
+
const WorkflowCanvasRunSchema = zod.z.object({
|
|
11776
|
+
runId: zod.z.string(),
|
|
11777
|
+
status: WorkflowCanvasRunStatusSchema,
|
|
11778
|
+
startedAt: zod.z.string(),
|
|
11779
|
+
finishedAt: zod.z.string().nullable(),
|
|
11780
|
+
nodeStates: zod.z.record(zod.z.string(), WorkflowCanvasNodeRunStateSchema)
|
|
11781
|
+
});
|
|
11782
|
+
/** Scope a credential instance lives in. */
|
|
11783
|
+
const WorkflowCredentialScopeSchema = zod.z.enum([
|
|
11784
|
+
"organization",
|
|
11785
|
+
"project",
|
|
11786
|
+
"user"
|
|
11787
|
+
]);
|
|
11788
|
+
/** The concrete credential instance a binding currently resolves to. */
|
|
11789
|
+
const WorkflowResolvedCredentialSchema = zod.z.object({
|
|
11790
|
+
id: zod.z.string(),
|
|
11791
|
+
name: zod.z.string(),
|
|
11792
|
+
scope: WorkflowCredentialScopeSchema,
|
|
11793
|
+
appSlug: zod.z.string().optional(),
|
|
11794
|
+
isDefault: zod.z.boolean().optional(),
|
|
11795
|
+
projectId: zod.z.string().optional(),
|
|
11796
|
+
projectName: zod.z.string().optional()
|
|
11797
|
+
});
|
|
11798
|
+
/** Default model for the gated code-block annotation pass — cheap, same as trigger overviews. */
|
|
11799
|
+
const DEFAULT_WORKFLOW_CANVAS_MODEL = "deepseek/deepseek-v4-flash";
|
|
11800
|
+
zod.z.record(zod.z.string(), WorkflowCanvasAnnotationSchema);
|
|
11801
|
+
/** One opaque code-block the annotation pass should label, keyed by its canvas node id. */
|
|
11802
|
+
const WorkflowCanvasAnnotationCodeBlockSchema = zod.z.object({
|
|
11803
|
+
nodeId: zod.z.string(),
|
|
11804
|
+
/** The raw source snippet (the node's label) the LLM turns into human copy. */
|
|
11805
|
+
source: zod.z.string()
|
|
11806
|
+
});
|
|
11807
|
+
/** Inputs the worker feeds the LLM for the gated code-block annotation pass. */
|
|
11808
|
+
const WorkflowCanvasAnnotationsInputSchema = zod.z.object({
|
|
11809
|
+
workflowName: zod.z.string(),
|
|
11810
|
+
workflowDescription: zod.z.string().nullable(),
|
|
11811
|
+
codeBlocks: zod.z.array(WorkflowCanvasAnnotationCodeBlockSchema)
|
|
11812
|
+
});
|
|
11813
|
+
zod.z.object({
|
|
11814
|
+
workflowId: zod.z.string(),
|
|
11815
|
+
projectId: zod.z.string(),
|
|
11816
|
+
hash: zod.z.string(),
|
|
11817
|
+
model: zod.z.string(),
|
|
11818
|
+
input: WorkflowCanvasAnnotationsInputSchema
|
|
11819
|
+
});
|
|
11820
|
+
/** Default model for the workflow overview pass — cheap, same as the annotation/trigger passes. */
|
|
11821
|
+
const DEFAULT_WORKFLOW_OVERVIEW_MODEL = "deepseek/deepseek-v4-flash";
|
|
11822
|
+
/** One node as the overview LLM sees it (derived from the canvas node metadata + graph). */
|
|
11823
|
+
const WorkflowOverviewNodeSchema = zod.z.object({
|
|
11824
|
+
nodeId: zod.z.string(),
|
|
11825
|
+
label: zod.z.string(),
|
|
11826
|
+
kind: zod.z.string(),
|
|
11827
|
+
description: zod.z.string().optional(),
|
|
11828
|
+
/** App/integration slug for steps imported from a `@keystrokehq/<app>` package. */
|
|
11829
|
+
appSlug: zod.z.string().optional(),
|
|
11830
|
+
/** Authored input field keys (from the action/agent/workflow definition). */
|
|
11831
|
+
inputs: zod.z.array(zod.z.string()).optional(),
|
|
11832
|
+
/** Authored output field keys. */
|
|
11833
|
+
outputs: zod.z.array(zod.z.string()).optional(),
|
|
11834
|
+
/** Agent-only: the model the agent runs on. */
|
|
11835
|
+
model: zod.z.string().optional(),
|
|
11836
|
+
/** Agent-only: number of tools available to the agent. */
|
|
11837
|
+
toolCount: zod.z.number().int().nonnegative().optional()
|
|
11838
|
+
});
|
|
11839
|
+
/** Inputs the worker feeds the LLM to produce the workflow overview (summary + phases). */
|
|
11840
|
+
const WorkflowOverviewInputSchema = zod.z.object({
|
|
11841
|
+
workflowName: zod.z.string(),
|
|
11842
|
+
workflowDescription: zod.z.string().nullable(),
|
|
11843
|
+
/** Display labels of the trigger sources upstream of the workflow (read-only context). */
|
|
11844
|
+
triggers: zod.z.array(zod.z.string()),
|
|
11845
|
+
nodes: zod.z.array(WorkflowOverviewNodeSchema),
|
|
11846
|
+
/** The workflow's TypeScript source (best-effort; null when the deploy has no source snapshot). */
|
|
11847
|
+
source: zod.z.string().nullable()
|
|
11848
|
+
});
|
|
11849
|
+
zod.z.object({
|
|
11850
|
+
workflowId: zod.z.string(),
|
|
11851
|
+
projectId: zod.z.string(),
|
|
11852
|
+
hash: zod.z.string(),
|
|
11853
|
+
model: zod.z.string(),
|
|
11854
|
+
input: WorkflowOverviewInputSchema
|
|
11855
|
+
});
|
|
11856
|
+
const WorkflowCanvasCredentialBindingBaseSchema = zod.z.object({
|
|
11857
|
+
credentialKey: zod.z.string(),
|
|
11858
|
+
label: zod.z.string(),
|
|
11859
|
+
appSlug: zod.z.string().optional()
|
|
11860
|
+
});
|
|
11861
|
+
/** How one credential requirement on a step currently resolves. */
|
|
11862
|
+
const WorkflowCanvasCredentialBindingSchema = zod.z.union([
|
|
11863
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11864
|
+
policy: zod.z.enum([
|
|
11865
|
+
"project-default",
|
|
11866
|
+
"org-default",
|
|
11867
|
+
"assigned"
|
|
11868
|
+
]),
|
|
11869
|
+
instance: WorkflowResolvedCredentialSchema
|
|
11870
|
+
}),
|
|
11871
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11872
|
+
policy: zod.z.literal("scope-pinned"),
|
|
11873
|
+
pinnedScope: WorkflowCredentialScopeSchema,
|
|
11874
|
+
instance: WorkflowResolvedCredentialSchema
|
|
11875
|
+
}),
|
|
11876
|
+
WorkflowCanvasCredentialBindingBaseSchema.extend({
|
|
11877
|
+
policy: zod.z.literal("unresolved"),
|
|
11878
|
+
reason: zod.z.enum(["needs-selection", "missing"]),
|
|
11879
|
+
pinnedScope: WorkflowCredentialScopeSchema.optional()
|
|
11880
|
+
})
|
|
11881
|
+
]);
|
|
11882
|
+
/** Live credential overlay: canvas node id → its step's credential bindings. */
|
|
11883
|
+
const WorkflowCanvasCredentialBindingsSchema = zod.z.record(zod.z.string(), zod.z.array(WorkflowCanvasCredentialBindingSchema));
|
|
11884
|
+
function isObject(value) {
|
|
11885
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11886
|
+
}
|
|
11887
|
+
function titleCaseKey(key) {
|
|
11888
|
+
return key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/[-_/]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
11889
|
+
}
|
|
11890
|
+
function normalizeFieldType(schema) {
|
|
11891
|
+
const rawType = schema.type;
|
|
11892
|
+
if (Array.isArray(rawType)) {
|
|
11893
|
+
const primary = rawType.find((entry) => entry !== "null");
|
|
11894
|
+
if (typeof primary === "string") return normalizeFieldType({
|
|
11895
|
+
...schema,
|
|
11896
|
+
type: primary
|
|
11897
|
+
});
|
|
11898
|
+
return null;
|
|
11899
|
+
}
|
|
11900
|
+
if (typeof rawType !== "string") return null;
|
|
11901
|
+
if (Array.isArray(schema.enum) && schema.enum.every((entry) => typeof entry === "string")) return "enum";
|
|
11902
|
+
switch (rawType) {
|
|
11903
|
+
case "string":
|
|
11904
|
+
case "number":
|
|
11905
|
+
case "integer": return rawType === "integer" ? "number" : rawType;
|
|
11906
|
+
case "boolean": return "boolean";
|
|
11907
|
+
case "object": return "object";
|
|
11908
|
+
case "array": return "array";
|
|
11909
|
+
default: return null;
|
|
11910
|
+
}
|
|
11911
|
+
}
|
|
11912
|
+
function normalizeField(key, schema, required) {
|
|
11913
|
+
const type = normalizeFieldType(schema);
|
|
11914
|
+
if (!type) return null;
|
|
11915
|
+
const field = {
|
|
11916
|
+
key,
|
|
11917
|
+
label: typeof schema.title === "string" ? schema.title : titleCaseKey(key),
|
|
11918
|
+
type,
|
|
11919
|
+
required,
|
|
11920
|
+
...typeof schema.description === "string" ? { description: schema.description } : {},
|
|
11921
|
+
...typeof schema.format === "string" ? { format: schema.format } : {}
|
|
11922
|
+
};
|
|
11923
|
+
if (type === "enum" && Array.isArray(schema.enum)) field.options = schema.enum.filter((entry) => typeof entry === "string");
|
|
11924
|
+
if (schema.default !== void 0 && (typeof schema.default === "string" || typeof schema.default === "number" || typeof schema.default === "boolean")) field.default = schema.default;
|
|
11925
|
+
if (type === "object" && isObject(schema.properties)) {
|
|
11926
|
+
const childRequired = Array.isArray(schema.required) ? schema.required.filter((entry) => typeof entry === "string") : [];
|
|
11927
|
+
field.children = Object.entries(schema.properties).flatMap(([childKey, childSchema]) => {
|
|
11928
|
+
if (!isObject(childSchema)) return [];
|
|
11929
|
+
const child = normalizeField(childKey, childSchema, childRequired.includes(childKey));
|
|
11930
|
+
return child ? [child] : [];
|
|
11931
|
+
});
|
|
11932
|
+
}
|
|
11933
|
+
if (type === "array" && isObject(schema.items)) {
|
|
11934
|
+
const item = normalizeField("item", schema.items, false);
|
|
11935
|
+
if (item) field.children = [item];
|
|
11936
|
+
}
|
|
11937
|
+
return field;
|
|
11938
|
+
}
|
|
11939
|
+
/** Normalize a workflow manifest JSON Schema into the dashboard run-input form shape. */
|
|
11940
|
+
function jsonSchemaToWorkflowInputSchema(requestSchema) {
|
|
11941
|
+
if (!isObject(requestSchema)) return { fields: [] };
|
|
11942
|
+
const properties = isObject(requestSchema.properties) ? requestSchema.properties : {};
|
|
11943
|
+
const required = Array.isArray(requestSchema.required) ? requestSchema.required.filter((entry) => typeof entry === "string") : [];
|
|
11944
|
+
return { fields: Object.entries(properties).flatMap(([key, propertySchema]) => {
|
|
11945
|
+
if (!isObject(propertySchema)) return [];
|
|
11946
|
+
const field = normalizeField(key, propertySchema, required.includes(key));
|
|
11947
|
+
return field ? [field] : [];
|
|
11948
|
+
}) };
|
|
11949
|
+
}
|
|
11950
|
+
function isEmpty(value) {
|
|
11951
|
+
return value === void 0 || value === null || value === "";
|
|
11952
|
+
}
|
|
11953
|
+
function validateFieldValue(field, value) {
|
|
11954
|
+
if (field.required && isEmpty(value)) return "Required";
|
|
11955
|
+
if (isEmpty(value)) return null;
|
|
11956
|
+
switch (field.type) {
|
|
11957
|
+
case "number":
|
|
11958
|
+
if (typeof value !== "number" && Number.isNaN(Number(value))) return "Must be a number";
|
|
11959
|
+
return null;
|
|
11960
|
+
case "boolean":
|
|
11961
|
+
if (typeof value !== "boolean") return "Must be a boolean";
|
|
11962
|
+
return null;
|
|
11963
|
+
case "enum":
|
|
11964
|
+
if (typeof value !== "string" || field.options && !field.options.includes(value)) return "Invalid option";
|
|
11965
|
+
return null;
|
|
11966
|
+
default: return null;
|
|
11967
|
+
}
|
|
11968
|
+
}
|
|
11969
|
+
/** Validate a run-input payload against the normalized schema (authoritative on save). */
|
|
11970
|
+
function validateWorkflowRunInputValues(schema, values) {
|
|
11971
|
+
const allowedKeys = new Set(schema.fields.map((field) => field.key));
|
|
11972
|
+
for (const key of Object.keys(values)) if (!allowedKeys.has(key)) return {
|
|
11973
|
+
ok: false,
|
|
11974
|
+
error: `Unknown field "${key}"`
|
|
11975
|
+
};
|
|
11976
|
+
for (const field of schema.fields) {
|
|
11977
|
+
const message = validateFieldValue(field, values[field.key]);
|
|
11978
|
+
if (message) return {
|
|
11979
|
+
ok: false,
|
|
11980
|
+
error: `${field.key}: ${message}`
|
|
11981
|
+
};
|
|
11982
|
+
}
|
|
11983
|
+
return { ok: true };
|
|
11984
|
+
}
|
|
11985
|
+
const WorkflowRunInputsPutBodySchema = zod.z.record(zod.z.string(), zod.z.unknown());
|
|
11017
11986
|
function mapOrganization(row) {
|
|
11018
11987
|
return OrganizationSchema.parse({
|
|
11019
11988
|
id: row.id,
|
|
@@ -11114,8 +12083,8 @@ function mapProjectDeployment(row) {
|
|
|
11114
12083
|
const zodSchema$2 = zod.z.custom((v) => v instanceof zod.z.ZodType, "must be a Zod schema");
|
|
11115
12084
|
zod.z.object({
|
|
11116
12085
|
slug: zod.z.string().trim().min(1),
|
|
11117
|
-
name:
|
|
11118
|
-
description:
|
|
12086
|
+
name: requiredDisplayTextSchema,
|
|
12087
|
+
description: requiredDisplayTextSchema,
|
|
11119
12088
|
input: zodSchema$2,
|
|
11120
12089
|
output: zodSchema$2,
|
|
11121
12090
|
credentials: zod.z.array(credentialInputSchema).optional(),
|
|
@@ -11135,6 +12104,26 @@ function registerWorkflowRunGetter(fn) {
|
|
|
11135
12104
|
}
|
|
11136
12105
|
new node_async_hooks.AsyncLocalStorage();
|
|
11137
12106
|
//#endregion
|
|
12107
|
+
//#region ../../packages/credentials/dist/store-4At2Wnk9.mjs
|
|
12108
|
+
function normalizeRow(row) {
|
|
12109
|
+
const { projectId: _projectId, ...rest } = row;
|
|
12110
|
+
return rest;
|
|
12111
|
+
}
|
|
12112
|
+
async function listCredentialAssignmentsByTarget$1(options) {
|
|
12113
|
+
return (await (0, _keystrokehq_database.listCredentialAssignmentsByTarget)(options)).map(normalizeRow);
|
|
12114
|
+
}
|
|
12115
|
+
function normalizeLocalRow(row) {
|
|
12116
|
+
const { projectId: _projectId, ...rest } = row;
|
|
12117
|
+
return rest;
|
|
12118
|
+
}
|
|
12119
|
+
async function selectCredentialInstanceById$1$1(id) {
|
|
12120
|
+
const row = await (0, _keystrokehq_database.selectCredentialInstanceById)(id);
|
|
12121
|
+
return row ? normalizeLocalRow(row) : void 0;
|
|
12122
|
+
}
|
|
12123
|
+
async function selectCredentialInstancesForScope$1$1(appSlug, scopeType, scopeId) {
|
|
12124
|
+
return (await (0, _keystrokehq_database.selectCredentialInstancesForScope)(appSlug, scopeType, scopeId)).map(normalizeLocalRow);
|
|
12125
|
+
}
|
|
12126
|
+
//#endregion
|
|
11138
12127
|
//#region ../../packages/secrets/dist/index.mjs
|
|
11139
12128
|
const ALGORITHM = "aes-256-gcm";
|
|
11140
12129
|
const IV_LENGTH = 12;
|
|
@@ -29536,6 +30525,130 @@ var import_dist$1 = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exp
|
|
|
29536
30525
|
exports.visit = visit.visit;
|
|
29537
30526
|
exports.visitAsync = visit.visitAsync;
|
|
29538
30527
|
})))(), 1);
|
|
30528
|
+
const EMPTY_ASSIGNMENT_SET = {
|
|
30529
|
+
byConsumer: {},
|
|
30530
|
+
wildcard: {}
|
|
30531
|
+
};
|
|
30532
|
+
function selectAssignedInstanceId(assignments, consumerId, credentialSlug) {
|
|
30533
|
+
if (!assignments) return;
|
|
30534
|
+
if (consumerId) {
|
|
30535
|
+
const specific = assignments.byConsumer[consumerId]?.[credentialSlug];
|
|
30536
|
+
if (specific) return specific;
|
|
30537
|
+
}
|
|
30538
|
+
return assignments.wildcard[credentialSlug];
|
|
30539
|
+
}
|
|
30540
|
+
function buildAssignmentSet(rows) {
|
|
30541
|
+
const byConsumer = {};
|
|
30542
|
+
const wildcard = {};
|
|
30543
|
+
for (const row of rows) {
|
|
30544
|
+
if (row.consumerId === "*") {
|
|
30545
|
+
wildcard[row.credentialSlug] = row.instanceId;
|
|
30546
|
+
continue;
|
|
30547
|
+
}
|
|
30548
|
+
const bucket = byConsumer[row.consumerId] ?? {};
|
|
30549
|
+
bucket[row.credentialSlug] = row.instanceId;
|
|
30550
|
+
byConsumer[row.consumerId] = bucket;
|
|
30551
|
+
}
|
|
30552
|
+
return {
|
|
30553
|
+
byConsumer,
|
|
30554
|
+
wildcard
|
|
30555
|
+
};
|
|
30556
|
+
}
|
|
30557
|
+
async function loadCredentialAssignments(options) {
|
|
30558
|
+
if (!(0, _keystrokehq_database.isDatabaseInitialized)()) return EMPTY_ASSIGNMENT_SET;
|
|
30559
|
+
return buildAssignmentSet(await listCredentialAssignmentsByTarget$1(options));
|
|
30560
|
+
}
|
|
30561
|
+
async function withCredentialAssignments(context, options) {
|
|
30562
|
+
const assignments = await loadCredentialAssignments(options);
|
|
30563
|
+
return {
|
|
30564
|
+
...context,
|
|
30565
|
+
assignments
|
|
30566
|
+
};
|
|
30567
|
+
}
|
|
30568
|
+
function toSummary(row) {
|
|
30569
|
+
return {
|
|
30570
|
+
id: row.id,
|
|
30571
|
+
appSlug: row.appSlug,
|
|
30572
|
+
name: row.name,
|
|
30573
|
+
label: row.label,
|
|
30574
|
+
scopeType: row.scopeType,
|
|
30575
|
+
scopeId: row.scopeId,
|
|
30576
|
+
isDefault: row.isDefault
|
|
30577
|
+
};
|
|
30578
|
+
}
|
|
30579
|
+
/** Pick the single instance for a scope: the only one, or the unique default; else ambiguous. */
|
|
30580
|
+
function pickInstance$1(rows) {
|
|
30581
|
+
if (rows.length === 0) return { kind: "none" };
|
|
30582
|
+
if (rows.length === 1) return {
|
|
30583
|
+
kind: "row",
|
|
30584
|
+
row: rows[0]
|
|
30585
|
+
};
|
|
30586
|
+
const defaults = rows.filter((row) => row.isDefault);
|
|
30587
|
+
if (defaults.length === 1) return {
|
|
30588
|
+
kind: "row",
|
|
30589
|
+
row: defaults[0]
|
|
30590
|
+
};
|
|
30591
|
+
return { kind: "needs-selection" };
|
|
30592
|
+
}
|
|
30593
|
+
function scopeIdFor(scope, context, orgId) {
|
|
30594
|
+
switch (scope) {
|
|
30595
|
+
case "organization": return orgId;
|
|
30596
|
+
case "project": return context.projectId;
|
|
30597
|
+
case "user": return context.userId;
|
|
30598
|
+
}
|
|
30599
|
+
}
|
|
30600
|
+
async function describeCredentialBinding(options) {
|
|
30601
|
+
const { key, scope, consumerId, context } = options;
|
|
30602
|
+
const orgId = context.orgId ?? (0, _keystrokehq_database.getServerTenantScopeId)();
|
|
30603
|
+
const assignedId = selectAssignedInstanceId(context.assignments, consumerId, key);
|
|
30604
|
+
if (assignedId) {
|
|
30605
|
+
const row = await selectCredentialInstanceById$1$1(assignedId);
|
|
30606
|
+
if (row && row.appSlug === key) return {
|
|
30607
|
+
policy: "assigned",
|
|
30608
|
+
row: toSummary(row)
|
|
30609
|
+
};
|
|
30610
|
+
}
|
|
30611
|
+
if (scope) {
|
|
30612
|
+
const scopeId = scopeIdFor(scope, context, orgId);
|
|
30613
|
+
const picked = scopeId ? pickInstance$1(await selectCredentialInstancesForScope$1$1(key, scope, scopeId)) : { kind: "none" };
|
|
30614
|
+
if (picked.kind === "row") return {
|
|
30615
|
+
policy: "scope-pinned",
|
|
30616
|
+
pinnedScope: scope,
|
|
30617
|
+
row: toSummary(picked.row)
|
|
30618
|
+
};
|
|
30619
|
+
return {
|
|
30620
|
+
policy: "unresolved",
|
|
30621
|
+
reason: picked.kind === "needs-selection" ? "needs-selection" : "missing",
|
|
30622
|
+
pinnedScope: scope
|
|
30623
|
+
};
|
|
30624
|
+
}
|
|
30625
|
+
if (context.projectId) {
|
|
30626
|
+
const picked = pickInstance$1(await selectCredentialInstancesForScope$1$1(key, "project", context.projectId));
|
|
30627
|
+
if (picked.kind === "row") return {
|
|
30628
|
+
policy: "project-default",
|
|
30629
|
+
row: toSummary(picked.row)
|
|
30630
|
+
};
|
|
30631
|
+
if (picked.kind === "needs-selection") return {
|
|
30632
|
+
policy: "unresolved",
|
|
30633
|
+
reason: "needs-selection"
|
|
30634
|
+
};
|
|
30635
|
+
}
|
|
30636
|
+
if (orgId) {
|
|
30637
|
+
const picked = pickInstance$1(await selectCredentialInstancesForScope$1$1(key, "organization", orgId));
|
|
30638
|
+
if (picked.kind === "row") return {
|
|
30639
|
+
policy: "org-default",
|
|
30640
|
+
row: toSummary(picked.row)
|
|
30641
|
+
};
|
|
30642
|
+
if (picked.kind === "needs-selection") return {
|
|
30643
|
+
policy: "unresolved",
|
|
30644
|
+
reason: "needs-selection"
|
|
30645
|
+
};
|
|
30646
|
+
}
|
|
30647
|
+
return {
|
|
30648
|
+
policy: "unresolved",
|
|
30649
|
+
reason: "missing"
|
|
30650
|
+
};
|
|
30651
|
+
}
|
|
29539
30652
|
function encodeOAuthState(payload) {
|
|
29540
30653
|
return (0, _keystrokehq_database.encryptCredentialPayload)(JSON.stringify(payload));
|
|
29541
30654
|
}
|
|
@@ -29808,8 +30921,8 @@ const zodSchema$1 = zod.z.custom((v) => v instanceof zod.z.ZodType, "must be a Z
|
|
|
29808
30921
|
/** Runtime validation for an unbranded workflow definition. */
|
|
29809
30922
|
const workflowCoreSchema = zod.z.object({
|
|
29810
30923
|
slug: zod.z.string().trim().min(1),
|
|
29811
|
-
name:
|
|
29812
|
-
description:
|
|
30924
|
+
name: requiredDisplayTextSchema,
|
|
30925
|
+
description: requiredDisplayTextSchema,
|
|
29813
30926
|
subscription: zod.z.object({ mode: zod.z.enum(["system", "subscribable"]).optional() }).optional(),
|
|
29814
30927
|
input: zodSchema$1,
|
|
29815
30928
|
output: zodSchema$1,
|
|
@@ -29825,6 +30938,7 @@ function isWorkflow(value) {
|
|
|
29825
30938
|
if (!(WORKFLOW in value) || value[WORKFLOW] !== true) return false;
|
|
29826
30939
|
return workflowCoreSchema.safeParse(value).success;
|
|
29827
30940
|
}
|
|
30941
|
+
new node_async_hooks.AsyncLocalStorage();
|
|
29828
30942
|
const storage = new node_async_hooks.AsyncLocalStorage();
|
|
29829
30943
|
registerWorkflowRunGetter(() => {
|
|
29830
30944
|
const store = storage.getStore();
|
|
@@ -29887,11 +31001,12 @@ function normalizeLegacySlugFields(value) {
|
|
|
29887
31001
|
return next;
|
|
29888
31002
|
}
|
|
29889
31003
|
const slugField = zod.z.string().trim().min(1);
|
|
29890
|
-
const
|
|
31004
|
+
const requiredTextField = zod.z.string().trim().min(1);
|
|
31005
|
+
const optionalTextField = zod.z.string().trim().min(1).optional();
|
|
29891
31006
|
const baseSourceShape = {
|
|
29892
31007
|
slug: slugField,
|
|
29893
|
-
name:
|
|
29894
|
-
description:
|
|
31008
|
+
name: requiredTextField,
|
|
31009
|
+
description: requiredTextField,
|
|
29895
31010
|
attach: zod.z.function()
|
|
29896
31011
|
};
|
|
29897
31012
|
const webhookSourceSchema = zod.z.object({
|
|
@@ -43771,6 +44886,18 @@ Object.defineProperty(exports, "DEFAULT_TRIGGER_OVERVIEW_MODEL", {
|
|
|
43771
44886
|
return DEFAULT_TRIGGER_OVERVIEW_MODEL;
|
|
43772
44887
|
}
|
|
43773
44888
|
});
|
|
44889
|
+
Object.defineProperty(exports, "DEFAULT_WORKFLOW_CANVAS_MODEL", {
|
|
44890
|
+
enumerable: true,
|
|
44891
|
+
get: function() {
|
|
44892
|
+
return DEFAULT_WORKFLOW_CANVAS_MODEL;
|
|
44893
|
+
}
|
|
44894
|
+
});
|
|
44895
|
+
Object.defineProperty(exports, "DEFAULT_WORKFLOW_OVERVIEW_MODEL", {
|
|
44896
|
+
enumerable: true,
|
|
44897
|
+
get: function() {
|
|
44898
|
+
return DEFAULT_WORKFLOW_OVERVIEW_MODEL;
|
|
44899
|
+
}
|
|
44900
|
+
});
|
|
43774
44901
|
Object.defineProperty(exports, "DeclineOrganizationInvitationResponseSchema", {
|
|
43775
44902
|
enumerable: true,
|
|
43776
44903
|
get: function() {
|
|
@@ -44275,6 +45402,36 @@ Object.defineProperty(exports, "UserPreferencesSchema", {
|
|
|
44275
45402
|
return UserPreferencesSchema;
|
|
44276
45403
|
}
|
|
44277
45404
|
});
|
|
45405
|
+
Object.defineProperty(exports, "WorkflowCanvasCredentialBindingsSchema", {
|
|
45406
|
+
enumerable: true,
|
|
45407
|
+
get: function() {
|
|
45408
|
+
return WorkflowCanvasCredentialBindingsSchema;
|
|
45409
|
+
}
|
|
45410
|
+
});
|
|
45411
|
+
Object.defineProperty(exports, "WorkflowCanvasRunSchema", {
|
|
45412
|
+
enumerable: true,
|
|
45413
|
+
get: function() {
|
|
45414
|
+
return WorkflowCanvasRunSchema;
|
|
45415
|
+
}
|
|
45416
|
+
});
|
|
45417
|
+
Object.defineProperty(exports, "WorkflowCanvasSchema", {
|
|
45418
|
+
enumerable: true,
|
|
45419
|
+
get: function() {
|
|
45420
|
+
return WorkflowCanvasSchema;
|
|
45421
|
+
}
|
|
45422
|
+
});
|
|
45423
|
+
Object.defineProperty(exports, "WorkflowRunInputsPutBodySchema", {
|
|
45424
|
+
enumerable: true,
|
|
45425
|
+
get: function() {
|
|
45426
|
+
return WorkflowRunInputsPutBodySchema;
|
|
45427
|
+
}
|
|
45428
|
+
});
|
|
45429
|
+
Object.defineProperty(exports, "WorkflowRunInputsSchema", {
|
|
45430
|
+
enumerable: true,
|
|
45431
|
+
get: function() {
|
|
45432
|
+
return WorkflowRunInputsSchema;
|
|
45433
|
+
}
|
|
45434
|
+
});
|
|
44278
45435
|
Object.defineProperty(exports, "WorkflowSummaryDetailResponseSchema", {
|
|
44279
45436
|
enumerable: true,
|
|
44280
45437
|
get: function() {
|
|
@@ -44323,6 +45480,12 @@ Object.defineProperty(exports, "WorkspaceTriggerRunListResponseSchema", {
|
|
|
44323
45480
|
return WorkspaceTriggerRunListResponseSchema;
|
|
44324
45481
|
}
|
|
44325
45482
|
});
|
|
45483
|
+
Object.defineProperty(exports, "WorkspaceWorkflowOverviewSchema", {
|
|
45484
|
+
enumerable: true,
|
|
45485
|
+
get: function() {
|
|
45486
|
+
return WorkspaceWorkflowOverviewSchema;
|
|
45487
|
+
}
|
|
45488
|
+
});
|
|
44326
45489
|
Object.defineProperty(exports, "__commonJSMin", {
|
|
44327
45490
|
enumerable: true,
|
|
44328
45491
|
get: function() {
|
|
@@ -44419,6 +45582,12 @@ Object.defineProperty(exports, "deriveCredentialInstanceSlug", {
|
|
|
44419
45582
|
return deriveCredentialInstanceSlug;
|
|
44420
45583
|
}
|
|
44421
45584
|
});
|
|
45585
|
+
Object.defineProperty(exports, "describeCredentialBinding", {
|
|
45586
|
+
enumerable: true,
|
|
45587
|
+
get: function() {
|
|
45588
|
+
return describeCredentialBinding;
|
|
45589
|
+
}
|
|
45590
|
+
});
|
|
44422
45591
|
Object.defineProperty(exports, "discoverGraphqlApp", {
|
|
44423
45592
|
enumerable: true,
|
|
44424
45593
|
get: function() {
|
|
@@ -44503,6 +45672,12 @@ Object.defineProperty(exports, "isUserAvatarStorageKey", {
|
|
|
44503
45672
|
return isUserAvatarStorageKey;
|
|
44504
45673
|
}
|
|
44505
45674
|
});
|
|
45675
|
+
Object.defineProperty(exports, "jsonSchemaToWorkflowInputSchema", {
|
|
45676
|
+
enumerable: true,
|
|
45677
|
+
get: function() {
|
|
45678
|
+
return jsonSchemaToWorkflowInputSchema;
|
|
45679
|
+
}
|
|
45680
|
+
});
|
|
44506
45681
|
Object.defineProperty(exports, "keystrokeAssetsAvatarKeyFromPublicUrl", {
|
|
44507
45682
|
enumerable: true,
|
|
44508
45683
|
get: function() {
|
|
@@ -44689,11 +45864,23 @@ Object.defineProperty(exports, "validateCredentialValueAgainstFields", {
|
|
|
44689
45864
|
return validateCredentialValueAgainstFields;
|
|
44690
45865
|
}
|
|
44691
45866
|
});
|
|
45867
|
+
Object.defineProperty(exports, "validateWorkflowRunInputValues", {
|
|
45868
|
+
enumerable: true,
|
|
45869
|
+
get: function() {
|
|
45870
|
+
return validateWorkflowRunInputValues;
|
|
45871
|
+
}
|
|
45872
|
+
});
|
|
44692
45873
|
Object.defineProperty(exports, "validationErrorResponse", {
|
|
44693
45874
|
enumerable: true,
|
|
44694
45875
|
get: function() {
|
|
44695
45876
|
return validationErrorResponse;
|
|
44696
45877
|
}
|
|
44697
45878
|
});
|
|
45879
|
+
Object.defineProperty(exports, "withCredentialAssignments", {
|
|
45880
|
+
enumerable: true,
|
|
45881
|
+
get: function() {
|
|
45882
|
+
return withCredentialAssignments;
|
|
45883
|
+
}
|
|
45884
|
+
});
|
|
44698
45885
|
|
|
44699
|
-
//# sourceMappingURL=dist-
|
|
45886
|
+
//# sourceMappingURL=dist-BSIIH4ft.cjs.map
|