@keystrokehq/platform 0.1.25 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{awk2-LA3USKJP-6nTiL1Fx.cjs → awk2-LA3USKJP-DWN5gyAn.cjs} +2 -2
- package/dist/{awk2-LA3USKJP-6nTiL1Fx.cjs.map → awk2-LA3USKJP-DWN5gyAn.cjs.map} +1 -1
- package/dist/{awk2-LA3USKJP-DsFCxrAn.mjs → awk2-LA3USKJP-DeBBkGI5.mjs} +2 -2
- package/dist/{awk2-LA3USKJP-DsFCxrAn.mjs.map → awk2-LA3USKJP-DeBBkGI5.mjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-Jli-NZKT.cjs → base64-C2AIWVNC-Dp8sCZAt.cjs} +2 -2
- package/dist/{base64-C2AIWVNC-Jli-NZKT.cjs.map → base64-C2AIWVNC-Dp8sCZAt.cjs.map} +1 -1
- package/dist/{base64-C2AIWVNC-BTfHxe6x.mjs → base64-C2AIWVNC-JuDjFqOp.mjs} +2 -2
- package/dist/{base64-C2AIWVNC-BTfHxe6x.mjs.map → base64-C2AIWVNC-JuDjFqOp.mjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-Cl3zWejT.cjs → bash-YZ33HQZQ-DVA0EDj-.cjs} +2 -2
- package/dist/{bash-YZ33HQZQ-Cl3zWejT.cjs.map → bash-YZ33HQZQ-DVA0EDj-.cjs.map} +1 -1
- package/dist/{bash-YZ33HQZQ-BvR1blQy.mjs → bash-YZ33HQZQ-rOVeZOAg.mjs} +2 -2
- package/dist/{bash-YZ33HQZQ-BvR1blQy.mjs.map → bash-YZ33HQZQ-rOVeZOAg.mjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-p5WuEnly.cjs → cat-TSFMZVYS-COvFG8Nb.cjs} +3 -3
- package/dist/{cat-TSFMZVYS-p5WuEnly.cjs.map → cat-TSFMZVYS-COvFG8Nb.cjs.map} +1 -1
- package/dist/{cat-TSFMZVYS-BR3SDCDa.mjs → cat-TSFMZVYS-CXlrdMsd.mjs} +3 -3
- package/dist/{cat-TSFMZVYS-BR3SDCDa.mjs.map → cat-TSFMZVYS-CXlrdMsd.mjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-DnLsyMd1.cjs → chunk-5H5SCKJM-CHHdX4ki.cjs} +2 -2
- package/dist/{chunk-5H5SCKJM-DnLsyMd1.cjs.map → chunk-5H5SCKJM-CHHdX4ki.cjs.map} +1 -1
- package/dist/{chunk-5H5SCKJM-CPKgF86S.mjs → chunk-5H5SCKJM-Dkx3HLwU.mjs} +2 -2
- package/dist/{chunk-5H5SCKJM-CPKgF86S.mjs.map → chunk-5H5SCKJM-Dkx3HLwU.mjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-Dj95F41M.cjs → chunk-AQ6FYS2X-BypvbWc4.cjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-Dj95F41M.cjs.map → chunk-AQ6FYS2X-BypvbWc4.cjs.map} +1 -1
- package/dist/{chunk-AQ6FYS2X-CUa1A4Pd.mjs → chunk-AQ6FYS2X-C_yeVyzo.mjs} +2 -2
- package/dist/{chunk-AQ6FYS2X-CUa1A4Pd.mjs.map → chunk-AQ6FYS2X-C_yeVyzo.mjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-Crh-KqiZ.cjs → chunk-CHFEPBH4-B713gemY.cjs} +2 -2
- package/dist/{chunk-CHFEPBH4-Crh-KqiZ.cjs.map → chunk-CHFEPBH4-B713gemY.cjs.map} +1 -1
- package/dist/{chunk-CHFEPBH4-CnDOsQ68.mjs → chunk-CHFEPBH4-BN_FjUum.mjs} +2 -2
- package/dist/{chunk-CHFEPBH4-CnDOsQ68.mjs.map → chunk-CHFEPBH4-BN_FjUum.mjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-C3Qo8RVI.cjs → chunk-EBAPSGAO-C5khy_yB.cjs} +2 -2
- package/dist/{chunk-EBAPSGAO-C3Qo8RVI.cjs.map → chunk-EBAPSGAO-C5khy_yB.cjs.map} +1 -1
- package/dist/{chunk-EBAPSGAO-B60xzKy-.mjs → chunk-EBAPSGAO-CWkUWuMF.mjs} +2 -2
- package/dist/{chunk-EBAPSGAO-B60xzKy-.mjs.map → chunk-EBAPSGAO-CWkUWuMF.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CzSjgGrS.mjs → chunk-LEKBROJD-DGOBGAWj.mjs} +2 -2
- package/dist/{chunk-LEKBROJD-CzSjgGrS.mjs.map → chunk-LEKBROJD-DGOBGAWj.mjs.map} +1 -1
- package/dist/{chunk-LEKBROJD-CQrKRfn9.cjs → chunk-LEKBROJD-n0FRgkoB.cjs} +2 -2
- package/dist/{chunk-LEKBROJD-CQrKRfn9.cjs.map → chunk-LEKBROJD-n0FRgkoB.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-BlYPREz9.cjs → chunk-VPADYNBD-B4yWrLcA.cjs} +2 -2
- package/dist/{chunk-VPADYNBD-BlYPREz9.cjs.map → chunk-VPADYNBD-B4yWrLcA.cjs.map} +1 -1
- package/dist/{chunk-VPADYNBD-Bu1xj_qj.mjs → chunk-VPADYNBD-Dg8PNXJd.mjs} +2 -2
- package/dist/{chunk-VPADYNBD-Bu1xj_qj.mjs.map → chunk-VPADYNBD-Dg8PNXJd.mjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-CmE-atJH.cjs → chunk-YCLFEX4T-Bnzy1Euf.cjs} +2 -2
- package/dist/{chunk-YCLFEX4T-CmE-atJH.cjs.map → chunk-YCLFEX4T-Bnzy1Euf.cjs.map} +1 -1
- package/dist/{chunk-YCLFEX4T-BMs3IOYN.mjs → chunk-YCLFEX4T-DU6t56E4.mjs} +2 -2
- package/dist/{chunk-YCLFEX4T-BMs3IOYN.mjs.map → chunk-YCLFEX4T-DU6t56E4.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-CKCd9cj4.mjs → column-XT6UFXNQ-5YutVL6D.mjs} +2 -2
- package/dist/{column-XT6UFXNQ-CKCd9cj4.mjs.map → column-XT6UFXNQ-5YutVL6D.mjs.map} +1 -1
- package/dist/{column-XT6UFXNQ-C-MvTg4x.cjs → column-XT6UFXNQ-Dy7Oa0td.cjs} +2 -2
- package/dist/{column-XT6UFXNQ-C-MvTg4x.cjs.map → column-XT6UFXNQ-Dy7Oa0td.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-DIsxSu6X.cjs → comm-VV2LDX2J-CAqAa0VH.cjs} +2 -2
- package/dist/{comm-VV2LDX2J-DIsxSu6X.cjs.map → comm-VV2LDX2J-CAqAa0VH.cjs.map} +1 -1
- package/dist/{comm-VV2LDX2J-Cxkv2cbu.mjs → comm-VV2LDX2J-NATbHp7x.mjs} +2 -2
- package/dist/{comm-VV2LDX2J-Cxkv2cbu.mjs.map → comm-VV2LDX2J-NATbHp7x.mjs.map} +1 -1
- package/dist/{config-4tlyrD1h.d.mts → config-Bf_tiPRV.d.mts} +3 -3
- package/dist/{config-DCMtEjGV.d.cts → config-DiHYzgnA.d.cts} +3 -3
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +1 -1
- package/dist/{cp-BISAAS7A-RoHZxKSQ.cjs → cp-BISAAS7A-CsllNNA2.cjs} +2 -2
- package/dist/{cp-BISAAS7A-RoHZxKSQ.cjs.map → cp-BISAAS7A-CsllNNA2.cjs.map} +1 -1
- package/dist/{cp-BISAAS7A-CpbLLWK0.mjs → cp-BISAAS7A-ptJev1Ed.mjs} +2 -2
- package/dist/{cp-BISAAS7A-CpbLLWK0.mjs.map → cp-BISAAS7A-ptJev1Ed.mjs.map} +1 -1
- package/dist/{cut-OKARJCCV-DV8QkVm0.cjs → cut-OKARJCCV-C3IgdttS.cjs} +3 -3
- package/dist/{cut-OKARJCCV-DV8QkVm0.cjs.map → cut-OKARJCCV-C3IgdttS.cjs.map} +1 -1
- package/dist/{cut-OKARJCCV-Co1hDP2h.mjs → cut-OKARJCCV-CAXXP7Q-.mjs} +3 -3
- package/dist/{cut-OKARJCCV-Co1hDP2h.mjs.map → cut-OKARJCCV-CAXXP7Q-.mjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-CeQncm_4.cjs → diff-MWJFIG7X-BN4jYNC5.cjs} +2 -2
- package/dist/{diff-MWJFIG7X-CeQncm_4.cjs.map → diff-MWJFIG7X-BN4jYNC5.cjs.map} +1 -1
- package/dist/{diff-MWJFIG7X-Buur00F5.mjs → diff-MWJFIG7X-CvZCw_Zo.mjs} +2 -2
- package/dist/{diff-MWJFIG7X-Buur00F5.mjs.map → diff-MWJFIG7X-CvZCw_Zo.mjs.map} +1 -1
- package/dist/{dist-BGnpuTuc.cjs → dist-BSIIH4ft.cjs} +1431 -244
- package/dist/dist-BSIIH4ft.cjs.map +1 -0
- package/dist/{dist-DEUmH1sy.mjs → dist-Dfoa0fsU.mjs} +1361 -246
- package/dist/dist-Dfoa0fsU.mjs.map +1 -0
- package/dist/{du-572XNP42-CjV9eojc.cjs → du-572XNP42-DlYoI7xK.cjs} +2 -2
- package/dist/{du-572XNP42-CjV9eojc.cjs.map → du-572XNP42-DlYoI7xK.cjs.map} +1 -1
- package/dist/{du-572XNP42-BN--uF4D.mjs → du-572XNP42-dXgrmb6w.mjs} +2 -2
- package/dist/{du-572XNP42-BN--uF4D.mjs.map → du-572XNP42-dXgrmb6w.mjs.map} +1 -1
- package/dist/{env-36M5BO7M-DAa5KfBX.cjs → env-36M5BO7M-CiUSJDkN.cjs} +2 -2
- package/dist/{env-36M5BO7M-DAa5KfBX.cjs.map → env-36M5BO7M-CiUSJDkN.cjs.map} +1 -1
- package/dist/{env-36M5BO7M-D69jRYN4.mjs → env-36M5BO7M-D_IGqT9p.mjs} +2 -2
- package/dist/{env-36M5BO7M-D69jRYN4.mjs.map → env-36M5BO7M-D_IGqT9p.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-COLerElO.mjs → expand-JSPG6VOP-CyEF3l9T.mjs} +2 -2
- package/dist/{expand-JSPG6VOP-COLerElO.mjs.map → expand-JSPG6VOP-CyEF3l9T.mjs.map} +1 -1
- package/dist/{expand-JSPG6VOP-C6vKMQyI.cjs → expand-JSPG6VOP-DI9tAEq8.cjs} +2 -2
- package/dist/{expand-JSPG6VOP-C6vKMQyI.cjs.map → expand-JSPG6VOP-DI9tAEq8.cjs.map} +1 -1
- package/dist/{expr-5JAACS4X-Bq-liRWE.mjs → expr-5JAACS4X-BjSLGpzH.mjs} +2 -2
- package/dist/{expr-5JAACS4X-Bq-liRWE.mjs.map → expr-5JAACS4X-BjSLGpzH.mjs.map} +1 -1
- package/dist/{expr-5JAACS4X-DwNhN5_2.cjs → expr-5JAACS4X-BtODvrh-.cjs} +2 -2
- package/dist/{expr-5JAACS4X-DwNhN5_2.cjs.map → expr-5JAACS4X-BtODvrh-.cjs.map} +1 -1
- package/dist/{find-INTH3OLC-CZJwhn7l.mjs → find-INTH3OLC-BcssH53Z.mjs} +3 -3
- package/dist/{find-INTH3OLC-CZJwhn7l.mjs.map → find-INTH3OLC-BcssH53Z.mjs.map} +1 -1
- package/dist/{find-INTH3OLC-CUamPw7X.cjs → find-INTH3OLC-CgU4UvVu.cjs} +3 -3
- package/dist/{find-INTH3OLC-CUamPw7X.cjs.map → find-INTH3OLC-CgU4UvVu.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-Cu6mhoq6.cjs → fold-4TQNYMSW-C-vHdcsu.cjs} +2 -2
- package/dist/{fold-4TQNYMSW-Cu6mhoq6.cjs.map → fold-4TQNYMSW-C-vHdcsu.cjs.map} +1 -1
- package/dist/{fold-4TQNYMSW-GT1iyvMw.mjs → fold-4TQNYMSW-W2QBLbOw.mjs} +2 -2
- package/dist/{fold-4TQNYMSW-GT1iyvMw.mjs.map → fold-4TQNYMSW-W2QBLbOw.mjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-D2lsL0yl.cjs → grep-V3LQVMRQ-CFEy1H5w.cjs} +4 -4
- package/dist/{grep-V3LQVMRQ-D2lsL0yl.cjs.map → grep-V3LQVMRQ-CFEy1H5w.cjs.map} +1 -1
- package/dist/{grep-V3LQVMRQ-BZCEkiLT.mjs → grep-V3LQVMRQ-D2erCIt8.mjs} +4 -4
- package/dist/{grep-V3LQVMRQ-BZCEkiLT.mjs.map → grep-V3LQVMRQ-D2erCIt8.mjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-4WU25K8t.cjs → gzip-O5ASJAFY-BFMYd-hT.cjs} +2 -2
- package/dist/{gzip-O5ASJAFY-4WU25K8t.cjs.map → gzip-O5ASJAFY-BFMYd-hT.cjs.map} +1 -1
- package/dist/{gzip-O5ASJAFY-BRUoPm0T.mjs → gzip-O5ASJAFY-CqxUEEM2.mjs} +2 -2
- package/dist/{gzip-O5ASJAFY-BRUoPm0T.mjs.map → gzip-O5ASJAFY-CqxUEEM2.mjs.map} +1 -1
- package/dist/{head-442HYESI-BQswaDJF.mjs → head-442HYESI-BUT7-OAn.mjs} +2 -2
- package/dist/{head-442HYESI-BQswaDJF.mjs.map → head-442HYESI-BUT7-OAn.mjs.map} +1 -1
- package/dist/{head-442HYESI-CREwdwGh.cjs → head-442HYESI-Dl61xdxd.cjs} +2 -2
- package/dist/{head-442HYESI-CREwdwGh.cjs.map → head-442HYESI-Dl61xdxd.cjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-CyQGg7tY.mjs → help-HZ6M2CKN-BNhOdIlA.mjs} +2 -2
- package/dist/{help-HZ6M2CKN-CyQGg7tY.mjs.map → help-HZ6M2CKN-BNhOdIlA.mjs.map} +1 -1
- package/dist/{help-HZ6M2CKN-Dm1xJuah.cjs → help-HZ6M2CKN-D58VQaUX.cjs} +2 -2
- package/dist/{help-HZ6M2CKN-Dm1xJuah.cjs.map → help-HZ6M2CKN-D58VQaUX.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-kxS6FqAo.cjs → html-to-markdown-JW4MSQZO-Cy2yEvwt.cjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-kxS6FqAo.cjs.map → html-to-markdown-JW4MSQZO-Cy2yEvwt.cjs.map} +1 -1
- package/dist/{html-to-markdown-JW4MSQZO-bFXHY2YJ.mjs → html-to-markdown-JW4MSQZO-D77ZtAkg.mjs} +3 -3
- package/dist/{html-to-markdown-JW4MSQZO-bFXHY2YJ.mjs.map → html-to-markdown-JW4MSQZO-D77ZtAkg.mjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-D4bq1eah.cjs → join-TBRGI3LQ-CGvygkdd.cjs} +2 -2
- package/dist/{join-TBRGI3LQ-D4bq1eah.cjs.map → join-TBRGI3LQ-CGvygkdd.cjs.map} +1 -1
- package/dist/{join-TBRGI3LQ-mMKbGeyt.mjs → join-TBRGI3LQ-DX7NMuzt.mjs} +2 -2
- package/dist/{join-TBRGI3LQ-mMKbGeyt.mjs.map → join-TBRGI3LQ-DX7NMuzt.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-BtVEt-iG.mjs → jq-4XLYLOS5-C58Dd7RS.mjs} +4 -4
- package/dist/{jq-4XLYLOS5-BtVEt-iG.mjs.map → jq-4XLYLOS5-C58Dd7RS.mjs.map} +1 -1
- package/dist/{jq-4XLYLOS5-1kPGLNfP.cjs → jq-4XLYLOS5-CcpoXWem.cjs} +4 -4
- package/dist/{jq-4XLYLOS5-1kPGLNfP.cjs.map → jq-4XLYLOS5-CcpoXWem.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-BiJgLg8R.cjs → js-exec-N5KEZBH7-BfVFKq8I.cjs} +4 -4
- package/dist/{js-exec-N5KEZBH7-BiJgLg8R.cjs.map → js-exec-N5KEZBH7-BfVFKq8I.cjs.map} +1 -1
- package/dist/{js-exec-N5KEZBH7-yV-xrF3D.mjs → js-exec-N5KEZBH7-PxuNBAca.mjs} +3 -3
- package/dist/{js-exec-N5KEZBH7-yV-xrF3D.mjs.map → js-exec-N5KEZBH7-PxuNBAca.mjs.map} +1 -1
- package/dist/{lib-B8KKXVFM.mjs → lib-C3b113o2.mjs} +2 -2
- package/dist/{lib-B8KKXVFM.mjs.map → lib-C3b113o2.mjs.map} +1 -1
- package/dist/{lib-2PzUfcog.cjs → lib-CB6hGKB-.cjs} +2 -2
- package/dist/{lib-2PzUfcog.cjs.map → lib-CB6hGKB-.cjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-Dn6vKThL.mjs → ln-4LGSXXGD-C8uxwN4w.mjs} +2 -2
- package/dist/{ln-4LGSXXGD-Dn6vKThL.mjs.map → ln-4LGSXXGD-C8uxwN4w.mjs.map} +1 -1
- package/dist/{ln-4LGSXXGD-BzwowxRB.cjs → ln-4LGSXXGD-D1ZvU7qg.cjs} +2 -2
- package/dist/{ln-4LGSXXGD-BzwowxRB.cjs.map → ln-4LGSXXGD-D1ZvU7qg.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-CUJkuUh-.cjs → ls-ZJGQER7M-BIFh_LBI.cjs} +2 -2
- package/dist/{ls-ZJGQER7M-CUJkuUh-.cjs.map → ls-ZJGQER7M-BIFh_LBI.cjs.map} +1 -1
- package/dist/{ls-ZJGQER7M-BeJZta9T.mjs → ls-ZJGQER7M-VlE8NU2n.mjs} +2 -2
- package/dist/{ls-ZJGQER7M-BeJZta9T.mjs.map → ls-ZJGQER7M-VlE8NU2n.mjs.map} +1 -1
- package/dist/{lzma--dxpHlNq.cjs → lzma-BFhxhjwM.cjs} +3 -3
- package/dist/{lzma--dxpHlNq.cjs.map → lzma-BFhxhjwM.cjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CSOni4rN.mjs → md5sum-SPU24VSG-D9FkR68Z.mjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CSOni4rN.mjs.map → md5sum-SPU24VSG-D9FkR68Z.mjs.map} +1 -1
- package/dist/{md5sum-SPU24VSG-CbRWoiQV.cjs → md5sum-SPU24VSG-DeBwcDpn.cjs} +3 -3
- package/dist/{md5sum-SPU24VSG-CbRWoiQV.cjs.map → md5sum-SPU24VSG-DeBwcDpn.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-DQZ1k-4g.cjs → mkdir-MEPGZOB6-CTaJw5WD.cjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-DQZ1k-4g.cjs.map → mkdir-MEPGZOB6-CTaJw5WD.cjs.map} +1 -1
- package/dist/{mkdir-MEPGZOB6-X9vy2RCy.mjs → mkdir-MEPGZOB6-DKhEU_mo.mjs} +2 -2
- package/dist/{mkdir-MEPGZOB6-X9vy2RCy.mjs.map → mkdir-MEPGZOB6-DKhEU_mo.mjs.map} +1 -1
- package/dist/{mv-W5BIQ646-CoEt2Xu7.cjs → mv-W5BIQ646-04XTiLIP.cjs} +2 -2
- package/dist/{mv-W5BIQ646-CoEt2Xu7.cjs.map → mv-W5BIQ646-04XTiLIP.cjs.map} +1 -1
- package/dist/{mv-W5BIQ646-D6ALdw02.mjs → mv-W5BIQ646-wEz7EErl.mjs} +2 -2
- package/dist/{mv-W5BIQ646-D6ALdw02.mjs.map → mv-W5BIQ646-wEz7EErl.mjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DDQ244Zw.cjs → nl-WSDW7I4O-Bc1YFLf6.cjs} +2 -2
- package/dist/{nl-WSDW7I4O-DDQ244Zw.cjs.map → nl-WSDW7I4O-Bc1YFLf6.cjs.map} +1 -1
- package/dist/{nl-WSDW7I4O-DyeXenY-.mjs → nl-WSDW7I4O-BxQfwu-N.mjs} +2 -2
- package/dist/{nl-WSDW7I4O-DyeXenY-.mjs.map → nl-WSDW7I4O-BxQfwu-N.mjs.map} +1 -1
- package/dist/{od-WOKFDJTP--Dv5qEwr.cjs → od-WOKFDJTP-BMJoqBvk.cjs} +2 -2
- package/dist/{od-WOKFDJTP--Dv5qEwr.cjs.map → od-WOKFDJTP-BMJoqBvk.cjs.map} +1 -1
- package/dist/{od-WOKFDJTP-C4rrBoz_.mjs → od-WOKFDJTP-BMjM1Vpo.mjs} +2 -2
- package/dist/{od-WOKFDJTP-C4rrBoz_.mjs.map → od-WOKFDJTP-BMjM1Vpo.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-Bji1Bpv0.mjs → paste-7JC6S4DX-BNyYBkM9.mjs} +2 -2
- package/dist/{paste-7JC6S4DX-Bji1Bpv0.mjs.map → paste-7JC6S4DX-BNyYBkM9.mjs.map} +1 -1
- package/dist/{paste-7JC6S4DX-B3VzuAt0.cjs → paste-7JC6S4DX-xeKsL7xT.cjs} +2 -2
- package/dist/{paste-7JC6S4DX-B3VzuAt0.cjs.map → paste-7JC6S4DX-xeKsL7xT.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-BTeOHCJZ.cjs → printf-TWGXF445-DYS8xu0v.cjs} +3 -3
- package/dist/{printf-TWGXF445-BTeOHCJZ.cjs.map → printf-TWGXF445-DYS8xu0v.cjs.map} +1 -1
- package/dist/{printf-TWGXF445-BlhAZROi.mjs → printf-TWGXF445-XVD9Mxrm.mjs} +3 -3
- package/dist/{printf-TWGXF445-BlhAZROi.mjs.map → printf-TWGXF445-XVD9Mxrm.mjs.map} +1 -1
- package/dist/{python3-POMOR4OA-DG1ouNsU.cjs → python3-POMOR4OA-DYGxPjXO.cjs} +4 -4
- package/dist/{python3-POMOR4OA-DG1ouNsU.cjs.map → python3-POMOR4OA-DYGxPjXO.cjs.map} +1 -1
- package/dist/{python3-POMOR4OA-DR8mqMXh.mjs → python3-POMOR4OA-Dnqvkl59.mjs} +3 -3
- package/dist/{python3-POMOR4OA-DR8mqMXh.mjs.map → python3-POMOR4OA-Dnqvkl59.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CI_VGXqm.mjs → rev-5EHFX4EJ-DhVvFoTy.mjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CI_VGXqm.mjs.map → rev-5EHFX4EJ-DhVvFoTy.mjs.map} +1 -1
- package/dist/{rev-5EHFX4EJ-CTqxt9T2.cjs → rev-5EHFX4EJ-pW6JW5qN.cjs} +2 -2
- package/dist/{rev-5EHFX4EJ-CTqxt9T2.cjs.map → rev-5EHFX4EJ-pW6JW5qN.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BxiM0Km5.cjs → rg-S4FXYXWB-C73Aq2Xr.cjs} +3 -3
- package/dist/{rg-S4FXYXWB-BxiM0Km5.cjs.map → rg-S4FXYXWB-C73Aq2Xr.cjs.map} +1 -1
- package/dist/{rg-S4FXYXWB-BV530Cw5.mjs → rg-S4FXYXWB-z2oeRO1P.mjs} +3 -3
- package/dist/{rg-S4FXYXWB-BV530Cw5.mjs.map → rg-S4FXYXWB-z2oeRO1P.mjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-BZ_Vwtjq.cjs → rm-SSGETQVQ-CHrR_Tku.cjs} +2 -2
- package/dist/{rm-SSGETQVQ-BZ_Vwtjq.cjs.map → rm-SSGETQVQ-CHrR_Tku.cjs.map} +1 -1
- package/dist/{rm-SSGETQVQ-0mxnhARQ.mjs → rm-SSGETQVQ-Jci5Ip6D.mjs} +2 -2
- package/dist/{rm-SSGETQVQ-0mxnhARQ.mjs.map → rm-SSGETQVQ-Jci5Ip6D.mjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-DSmolqBX.cjs → rmdir-OC4ZLPYA-C9GToyPE.cjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-DSmolqBX.cjs.map → rmdir-OC4ZLPYA-C9GToyPE.cjs.map} +1 -1
- package/dist/{rmdir-OC4ZLPYA-B91oqgzk.mjs → rmdir-OC4ZLPYA-CbUJDjKj.mjs} +2 -2
- package/dist/{rmdir-OC4ZLPYA-B91oqgzk.mjs.map → rmdir-OC4ZLPYA-CbUJDjKj.mjs.map} +1 -1
- package/dist/run.cjs +1 -1
- package/dist/run.mjs +1 -1
- package/dist/{sed-S5UIK574-CUHVLRCU.cjs → sed-S5UIK574-CKdzn0sh.cjs} +2 -2
- package/dist/{sed-S5UIK574-CUHVLRCU.cjs.map → sed-S5UIK574-CKdzn0sh.cjs.map} +1 -1
- package/dist/{sed-S5UIK574-Bn1VT3VJ.mjs → sed-S5UIK574-DMSLNP6f.mjs} +2 -2
- package/dist/{sed-S5UIK574-Bn1VT3VJ.mjs.map → sed-S5UIK574-DMSLNP6f.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-DL_UeFqk.mjs → sha1sum-2PTOAFR6-BvcG60rc.mjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-DL_UeFqk.mjs.map → sha1sum-2PTOAFR6-BvcG60rc.mjs.map} +1 -1
- package/dist/{sha1sum-2PTOAFR6-DqcsWk6l.cjs → sha1sum-2PTOAFR6-D-6ahlIg.cjs} +3 -3
- package/dist/{sha1sum-2PTOAFR6-DqcsWk6l.cjs.map → sha1sum-2PTOAFR6-D-6ahlIg.cjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-CmnB6TL1.mjs → sha256sum-NS7D3IXX-DVH9Rp51.mjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-CmnB6TL1.mjs.map → sha256sum-NS7D3IXX-DVH9Rp51.mjs.map} +1 -1
- package/dist/{sha256sum-NS7D3IXX-DzpZonik.cjs → sha256sum-NS7D3IXX-Drwo830V.cjs} +3 -3
- package/dist/{sha256sum-NS7D3IXX-DzpZonik.cjs.map → sha256sum-NS7D3IXX-Drwo830V.cjs.map} +1 -1
- package/dist/{sleep-X22JJINO-CbNXwoha.mjs → sleep-X22JJINO-B-F8EJ1A.mjs} +2 -2
- package/dist/{sleep-X22JJINO-CbNXwoha.mjs.map → sleep-X22JJINO-B-F8EJ1A.mjs.map} +1 -1
- package/dist/{sleep-X22JJINO-DFFy9Bw9.cjs → sleep-X22JJINO-VzGR_aAP.cjs} +2 -2
- package/dist/{sleep-X22JJINO-DFFy9Bw9.cjs.map → sleep-X22JJINO-VzGR_aAP.cjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-BYbDNrah.mjs → sort-SW2YEO5B-BlCI4ke5.mjs} +3 -3
- package/dist/{sort-SW2YEO5B-BYbDNrah.mjs.map → sort-SW2YEO5B-BlCI4ke5.mjs.map} +1 -1
- package/dist/{sort-SW2YEO5B-gdNgTdnH.cjs → sort-SW2YEO5B-oXMaUVfX.cjs} +3 -3
- package/dist/{sort-SW2YEO5B-gdNgTdnH.cjs.map → sort-SW2YEO5B-oXMaUVfX.cjs.map} +1 -1
- package/dist/{split-4KKZZXXE-DaVNgVyU.mjs → split-4KKZZXXE-DInsLVFn.mjs} +2 -2
- package/dist/{split-4KKZZXXE-DaVNgVyU.mjs.map → split-4KKZZXXE-DInsLVFn.mjs.map} +1 -1
- package/dist/{split-4KKZZXXE-BQei9Yb7.cjs → split-4KKZZXXE-uNycTBLx.cjs} +2 -2
- package/dist/{split-4KKZZXXE-BQei9Yb7.cjs.map → split-4KKZZXXE-uNycTBLx.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-Did6BRU0.cjs → sqlite3-CGOEFJAO-DLGaPKmF.cjs} +4 -4
- package/dist/{sqlite3-CGOEFJAO-Did6BRU0.cjs.map → sqlite3-CGOEFJAO-DLGaPKmF.cjs.map} +1 -1
- package/dist/{sqlite3-CGOEFJAO-DWuK8T1P.mjs → sqlite3-CGOEFJAO-DdQnH7sK.mjs} +3 -3
- package/dist/{sqlite3-CGOEFJAO-DWuK8T1P.mjs.map → sqlite3-CGOEFJAO-DdQnH7sK.mjs.map} +1 -1
- package/dist/{start-BXs2tRMp.cjs → start-B-r5AcHg.cjs} +1109 -129
- package/dist/start-B-r5AcHg.cjs.map +1 -0
- package/dist/{start-Bkcu3Xyf.mjs → start-BopA4OXE.mjs} +1109 -129
- package/dist/start-BopA4OXE.mjs.map +1 -0
- package/dist/start.cjs +1 -1
- package/dist/start.d.cts +1 -1
- package/dist/start.d.mts +1 -1
- package/dist/start.mjs +1 -1
- package/dist/{strings-6WDHLGMX-DghW6u1V.mjs → strings-6WDHLGMX-CQhR5NWI.mjs} +2 -2
- package/dist/{strings-6WDHLGMX-DghW6u1V.mjs.map → strings-6WDHLGMX-CQhR5NWI.mjs.map} +1 -1
- package/dist/{strings-6WDHLGMX-BYLV5mVI.cjs → strings-6WDHLGMX-CgNUl2be.cjs} +2 -2
- package/dist/{strings-6WDHLGMX-BYLV5mVI.cjs.map → strings-6WDHLGMX-CgNUl2be.cjs.map} +1 -1
- package/dist/{tac-2STMMJYW-dyBrgE3g.mjs → tac-2STMMJYW-DPVvOOFh.mjs} +2 -2
- package/dist/{tac-2STMMJYW-dyBrgE3g.mjs.map → tac-2STMMJYW-DPVvOOFh.mjs.map} +1 -1
- package/dist/{tac-2STMMJYW-BUj2w_ls.cjs → tac-2STMMJYW-XOnEZ_Pa.cjs} +2 -2
- package/dist/{tac-2STMMJYW-BUj2w_ls.cjs.map → tac-2STMMJYW-XOnEZ_Pa.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-Cb1qzi12.cjs → tail-R4PCA2C4-BPlLX9IB.cjs} +2 -2
- package/dist/{tail-R4PCA2C4-Cb1qzi12.cjs.map → tail-R4PCA2C4-BPlLX9IB.cjs.map} +1 -1
- package/dist/{tail-R4PCA2C4-BYcpWm-i.mjs → tail-R4PCA2C4-BXsd_oGy.mjs} +2 -2
- package/dist/{tail-R4PCA2C4-BYcpWm-i.mjs.map → tail-R4PCA2C4-BXsd_oGy.mjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-y56eAWkM.cjs → tar-STHHZTZ6-BSs3Wex8.cjs} +5 -5
- package/dist/{tar-STHHZTZ6-y56eAWkM.cjs.map → tar-STHHZTZ6-BSs3Wex8.cjs.map} +1 -1
- package/dist/{tar-STHHZTZ6-FTWsSEpr.mjs → tar-STHHZTZ6-DTf5Ifnn.mjs} +4 -4
- package/dist/{tar-STHHZTZ6-FTWsSEpr.mjs.map → tar-STHHZTZ6-DTf5Ifnn.mjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-oYjZsafd.cjs → tee-YUZ2FKCJ-DgWILkVl.cjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-oYjZsafd.cjs.map → tee-YUZ2FKCJ-DgWILkVl.cjs.map} +1 -1
- package/dist/{tee-YUZ2FKCJ-DArfnCcS.mjs → tee-YUZ2FKCJ-HOwDepoa.mjs} +2 -2
- package/dist/{tee-YUZ2FKCJ-DArfnCcS.mjs.map → tee-YUZ2FKCJ-HOwDepoa.mjs.map} +1 -1
- package/dist/{time-D4LNBSWX-BTetD0sZ.cjs → time-D4LNBSWX-Czgb4a8J.cjs} +2 -2
- package/dist/{time-D4LNBSWX-BTetD0sZ.cjs.map → time-D4LNBSWX-Czgb4a8J.cjs.map} +1 -1
- package/dist/{time-D4LNBSWX-D0AgPrVU.mjs → time-D4LNBSWX-DShdsFLL.mjs} +2 -2
- package/dist/{time-D4LNBSWX-D0AgPrVU.mjs.map → time-D4LNBSWX-DShdsFLL.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-m0hOl9RU.mjs → timeout-YDCRSLPQ-CrDWh7NY.mjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-m0hOl9RU.mjs.map → timeout-YDCRSLPQ-CrDWh7NY.mjs.map} +1 -1
- package/dist/{timeout-YDCRSLPQ-D_NEhBtI.cjs → timeout-YDCRSLPQ-fyDe4rrM.cjs} +2 -2
- package/dist/{timeout-YDCRSLPQ-D_NEhBtI.cjs.map → timeout-YDCRSLPQ-fyDe4rrM.cjs.map} +1 -1
- package/dist/{touch-UA33VN3N-D-0iV3bm.mjs → touch-UA33VN3N-D8fHlx6X.mjs} +2 -2
- package/dist/{touch-UA33VN3N-D-0iV3bm.mjs.map → touch-UA33VN3N-D8fHlx6X.mjs.map} +1 -1
- package/dist/{touch-UA33VN3N-C3gdLoXZ.cjs → touch-UA33VN3N-QQeRWr4H.cjs} +2 -2
- package/dist/{touch-UA33VN3N-C3gdLoXZ.cjs.map → touch-UA33VN3N-QQeRWr4H.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-DgJzlhNw.cjs → tr-36LHWFRQ-BvZgWBI7.cjs} +2 -2
- package/dist/{tr-36LHWFRQ-DgJzlhNw.cjs.map → tr-36LHWFRQ-BvZgWBI7.cjs.map} +1 -1
- package/dist/{tr-36LHWFRQ-DSKHB_Nc.mjs → tr-36LHWFRQ-DkmoHg-J.mjs} +2 -2
- package/dist/{tr-36LHWFRQ-DSKHB_Nc.mjs.map → tr-36LHWFRQ-DkmoHg-J.mjs.map} +1 -1
- package/dist/{tree-YLD52CNT-io_fc43x.cjs → tree-YLD52CNT-D28PbXCj.cjs} +2 -2
- package/dist/{tree-YLD52CNT-io_fc43x.cjs.map → tree-YLD52CNT-D28PbXCj.cjs.map} +1 -1
- package/dist/{tree-YLD52CNT-BWhZ09Ar.mjs → tree-YLD52CNT-xjlCOZ0t.mjs} +2 -2
- package/dist/{tree-YLD52CNT-BWhZ09Ar.mjs.map → tree-YLD52CNT-xjlCOZ0t.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-CAimwjsv.mjs → unexpand-CADSA4VO-Bhs2BUQ5.mjs} +2 -2
- package/dist/{unexpand-CADSA4VO-CAimwjsv.mjs.map → unexpand-CADSA4VO-Bhs2BUQ5.mjs.map} +1 -1
- package/dist/{unexpand-CADSA4VO-zLmcC151.cjs → unexpand-CADSA4VO-Ct-tDYst.cjs} +2 -2
- package/dist/{unexpand-CADSA4VO-zLmcC151.cjs.map → unexpand-CADSA4VO-Ct-tDYst.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-ZZpwZg0c.cjs → uniq-XSIZR6PB-4d0zRoTa.cjs} +3 -3
- package/dist/{uniq-XSIZR6PB-ZZpwZg0c.cjs.map → uniq-XSIZR6PB-4d0zRoTa.cjs.map} +1 -1
- package/dist/{uniq-XSIZR6PB-CWAKZmGl.mjs → uniq-XSIZR6PB-B5Bk1TsC.mjs} +3 -3
- package/dist/{uniq-XSIZR6PB-CWAKZmGl.mjs.map → uniq-XSIZR6PB-B5Bk1TsC.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-DhNBsFLd.mjs → wc-LF7NU4LA-B3_zHGUI.mjs} +3 -3
- package/dist/{wc-LF7NU4LA-DhNBsFLd.mjs.map → wc-LF7NU4LA-B3_zHGUI.mjs.map} +1 -1
- package/dist/{wc-LF7NU4LA-C4FhC6BH.cjs → wc-LF7NU4LA-D8KKcjuc.cjs} +3 -3
- package/dist/{wc-LF7NU4LA-C4FhC6BH.cjs.map → wc-LF7NU4LA-D8KKcjuc.cjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-DN7DU1ab.mjs → xan-Y6WF3IRG-9KChSctb.mjs} +6 -6
- package/dist/{xan-Y6WF3IRG-DN7DU1ab.mjs.map → xan-Y6WF3IRG-9KChSctb.mjs.map} +1 -1
- package/dist/{xan-Y6WF3IRG-BU79SNfn.cjs → xan-Y6WF3IRG-DlMObnyI.cjs} +6 -6
- package/dist/{xan-Y6WF3IRG-BU79SNfn.cjs.map → xan-Y6WF3IRG-DlMObnyI.cjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-DqGQzO2o.mjs → xan-view-HDVKHFC2-CuXxKOL_.mjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-DqGQzO2o.mjs.map → xan-view-HDVKHFC2-CuXxKOL_.mjs.map} +1 -1
- package/dist/{xan-view-HDVKHFC2-Dew1rWvx.cjs → xan-view-HDVKHFC2-D4UaWbCt.cjs} +3 -3
- package/dist/{xan-view-HDVKHFC2-Dew1rWvx.cjs.map → xan-view-HDVKHFC2-D4UaWbCt.cjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-BH-SyQsU.mjs → xargs-MGZPH7AX-BdScic0s.mjs} +2 -2
- package/dist/{xargs-MGZPH7AX-BH-SyQsU.mjs.map → xargs-MGZPH7AX-BdScic0s.mjs.map} +1 -1
- package/dist/{xargs-MGZPH7AX-BS-zAwl9.cjs → xargs-MGZPH7AX-DY0UyJRW.cjs} +2 -2
- package/dist/{xargs-MGZPH7AX-BS-zAwl9.cjs.map → xargs-MGZPH7AX-DY0UyJRW.cjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-CY_mBr2e.mjs → yq-4QJW3EQG-BvkjygaH.mjs} +3 -3
- package/dist/{yq-4QJW3EQG-CY_mBr2e.mjs.map → yq-4QJW3EQG-BvkjygaH.mjs.map} +1 -1
- package/dist/{yq-4QJW3EQG-B_e-AoZW.cjs → yq-4QJW3EQG-CF1OM3GO.cjs} +3 -3
- package/dist/{yq-4QJW3EQG-B_e-AoZW.cjs.map → yq-4QJW3EQG-CF1OM3GO.cjs.map} +1 -1
- package/package.json +3 -3
- package/dist/dist-BGnpuTuc.cjs.map +0 -1
- package/dist/dist-DEUmH1sy.mjs.map +0 -1
- package/dist/start-BXs2tRMp.cjs.map +0 -1
- package/dist/start-Bkcu3Xyf.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_dist = require("./dist-
|
|
1
|
+
const require_dist = require("./dist-BSIIH4ft.cjs");
|
|
2
2
|
require("./chunk-BZUGFHVS-7RRM7Jpb.cjs");
|
|
3
3
|
const require_chunk_TN7HHBQW = require("./chunk-TN7HHBQW-D_SK6w5n.cjs");
|
|
4
4
|
const require_with_project_scope = require("./with-project-scope-Cz_Tmvau.cjs");
|
|
@@ -7,7 +7,7 @@ let _keystrokehq_database = require("@keystrokehq/database");
|
|
|
7
7
|
let zod = require("zod");
|
|
8
8
|
let node_async_hooks = require("node:async_hooks");
|
|
9
9
|
let _keystrokehq_platform_database = require("@keystrokehq/platform-database");
|
|
10
|
-
require("node:crypto");
|
|
10
|
+
let node_crypto = require("node:crypto");
|
|
11
11
|
let node_fs = require("node:fs");
|
|
12
12
|
node_fs = require_dist.__toESM(node_fs, 1);
|
|
13
13
|
let node_path = require("node:path");
|
|
@@ -16,8 +16,9 @@ let node_os = require("node:os");
|
|
|
16
16
|
let _hono_node_server = require("@hono/node-server");
|
|
17
17
|
let _keystrokehq_auth = require("@keystrokehq/auth");
|
|
18
18
|
let _keystrokehq_runtime = require("@keystrokehq/runtime");
|
|
19
|
-
require("node:url");
|
|
20
19
|
let node_module = require("node:module");
|
|
20
|
+
require("node:url");
|
|
21
|
+
require("typescript");
|
|
21
22
|
let _keystrokehq_http = require("@keystrokehq/http");
|
|
22
23
|
let hono = require("hono");
|
|
23
24
|
let resend = require("resend");
|
|
@@ -20029,7 +20030,7 @@ var g = class i {
|
|
|
20029
20030
|
endPos() {
|
|
20030
20031
|
return this.end;
|
|
20031
20032
|
}
|
|
20032
|
-
}, z$
|
|
20033
|
+
}, z$7 = class extends L {
|
|
20033
20034
|
constructor(t, e = 0, s = t.length) {
|
|
20034
20035
|
super(), this.bytes = t, this.start = e, this.end = s;
|
|
20035
20036
|
}
|
|
@@ -20086,7 +20087,7 @@ var g = class i {
|
|
|
20086
20087
|
}
|
|
20087
20088
|
}, R = class {
|
|
20088
20089
|
static fromUTF8(t, e = 0, s = t.length) {
|
|
20089
|
-
return new z$
|
|
20090
|
+
return new z$7(t, e, s);
|
|
20090
20091
|
}
|
|
20091
20092
|
static fromUTF16(t, e = 0, s = t.length) {
|
|
20092
20093
|
return new $$1(t, e, s);
|
|
@@ -22872,43 +22873,43 @@ var tt = [
|
|
|
22872
22873
|
},
|
|
22873
22874
|
{
|
|
22874
22875
|
name: "cat",
|
|
22875
|
-
load: async () => (await Promise.resolve().then(() => require("./cat-TSFMZVYS-
|
|
22876
|
+
load: async () => (await Promise.resolve().then(() => require("./cat-TSFMZVYS-COvFG8Nb.cjs"))).catCommand
|
|
22876
22877
|
},
|
|
22877
22878
|
{
|
|
22878
22879
|
name: "printf",
|
|
22879
|
-
load: async () => (await Promise.resolve().then(() => require("./printf-TWGXF445-
|
|
22880
|
+
load: async () => (await Promise.resolve().then(() => require("./printf-TWGXF445-DYS8xu0v.cjs"))).printfCommand
|
|
22880
22881
|
},
|
|
22881
22882
|
{
|
|
22882
22883
|
name: "ls",
|
|
22883
|
-
load: async () => (await Promise.resolve().then(() => require("./ls-ZJGQER7M-
|
|
22884
|
+
load: async () => (await Promise.resolve().then(() => require("./ls-ZJGQER7M-BIFh_LBI.cjs"))).lsCommand
|
|
22884
22885
|
},
|
|
22885
22886
|
{
|
|
22886
22887
|
name: "mkdir",
|
|
22887
|
-
load: async () => (await Promise.resolve().then(() => require("./mkdir-MEPGZOB6-
|
|
22888
|
+
load: async () => (await Promise.resolve().then(() => require("./mkdir-MEPGZOB6-CTaJw5WD.cjs"))).mkdirCommand
|
|
22888
22889
|
},
|
|
22889
22890
|
{
|
|
22890
22891
|
name: "rmdir",
|
|
22891
|
-
load: async () => (await Promise.resolve().then(() => require("./rmdir-OC4ZLPYA-
|
|
22892
|
+
load: async () => (await Promise.resolve().then(() => require("./rmdir-OC4ZLPYA-C9GToyPE.cjs"))).rmdirCommand
|
|
22892
22893
|
},
|
|
22893
22894
|
{
|
|
22894
22895
|
name: "touch",
|
|
22895
|
-
load: async () => (await Promise.resolve().then(() => require("./touch-UA33VN3N-
|
|
22896
|
+
load: async () => (await Promise.resolve().then(() => require("./touch-UA33VN3N-QQeRWr4H.cjs"))).touchCommand
|
|
22896
22897
|
},
|
|
22897
22898
|
{
|
|
22898
22899
|
name: "rm",
|
|
22899
|
-
load: async () => (await Promise.resolve().then(() => require("./rm-SSGETQVQ-
|
|
22900
|
+
load: async () => (await Promise.resolve().then(() => require("./rm-SSGETQVQ-CHrR_Tku.cjs"))).rmCommand
|
|
22900
22901
|
},
|
|
22901
22902
|
{
|
|
22902
22903
|
name: "cp",
|
|
22903
|
-
load: async () => (await Promise.resolve().then(() => require("./cp-BISAAS7A-
|
|
22904
|
+
load: async () => (await Promise.resolve().then(() => require("./cp-BISAAS7A-CsllNNA2.cjs"))).cpCommand
|
|
22904
22905
|
},
|
|
22905
22906
|
{
|
|
22906
22907
|
name: "mv",
|
|
22907
|
-
load: async () => (await Promise.resolve().then(() => require("./mv-W5BIQ646-
|
|
22908
|
+
load: async () => (await Promise.resolve().then(() => require("./mv-W5BIQ646-04XTiLIP.cjs"))).mvCommand
|
|
22908
22909
|
},
|
|
22909
22910
|
{
|
|
22910
22911
|
name: "ln",
|
|
22911
|
-
load: async () => (await Promise.resolve().then(() => require("./ln-4LGSXXGD-
|
|
22912
|
+
load: async () => (await Promise.resolve().then(() => require("./ln-4LGSXXGD-D1ZvU7qg.cjs"))).lnCommand
|
|
22912
22913
|
},
|
|
22913
22914
|
{
|
|
22914
22915
|
name: "chmod",
|
|
@@ -22924,15 +22925,15 @@ var tt = [
|
|
|
22924
22925
|
},
|
|
22925
22926
|
{
|
|
22926
22927
|
name: "head",
|
|
22927
|
-
load: async () => (await Promise.resolve().then(() => require("./head-442HYESI-
|
|
22928
|
+
load: async () => (await Promise.resolve().then(() => require("./head-442HYESI-Dl61xdxd.cjs"))).headCommand
|
|
22928
22929
|
},
|
|
22929
22930
|
{
|
|
22930
22931
|
name: "tail",
|
|
22931
|
-
load: async () => (await Promise.resolve().then(() => require("./tail-R4PCA2C4-
|
|
22932
|
+
load: async () => (await Promise.resolve().then(() => require("./tail-R4PCA2C4-BPlLX9IB.cjs"))).tailCommand
|
|
22932
22933
|
},
|
|
22933
22934
|
{
|
|
22934
22935
|
name: "wc",
|
|
22935
|
-
load: async () => (await Promise.resolve().then(() => require("./wc-LF7NU4LA-
|
|
22936
|
+
load: async () => (await Promise.resolve().then(() => require("./wc-LF7NU4LA-D8KKcjuc.cjs"))).wcCommand
|
|
22936
22937
|
},
|
|
22937
22938
|
{
|
|
22938
22939
|
name: "stat",
|
|
@@ -22940,95 +22941,95 @@ var tt = [
|
|
|
22940
22941
|
},
|
|
22941
22942
|
{
|
|
22942
22943
|
name: "grep",
|
|
22943
|
-
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-
|
|
22944
|
+
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-CFEy1H5w.cjs"))).grepCommand
|
|
22944
22945
|
},
|
|
22945
22946
|
{
|
|
22946
22947
|
name: "fgrep",
|
|
22947
|
-
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-
|
|
22948
|
+
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-CFEy1H5w.cjs"))).fgrepCommand
|
|
22948
22949
|
},
|
|
22949
22950
|
{
|
|
22950
22951
|
name: "egrep",
|
|
22951
|
-
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-
|
|
22952
|
+
load: async () => (await Promise.resolve().then(() => require("./grep-V3LQVMRQ-CFEy1H5w.cjs"))).egrepCommand
|
|
22952
22953
|
},
|
|
22953
22954
|
{
|
|
22954
22955
|
name: "rg",
|
|
22955
|
-
load: async () => (await Promise.resolve().then(() => require("./rg-S4FXYXWB-
|
|
22956
|
+
load: async () => (await Promise.resolve().then(() => require("./rg-S4FXYXWB-C73Aq2Xr.cjs"))).rgCommand
|
|
22956
22957
|
},
|
|
22957
22958
|
{
|
|
22958
22959
|
name: "sed",
|
|
22959
|
-
load: async () => (await Promise.resolve().then(() => require("./sed-S5UIK574-
|
|
22960
|
+
load: async () => (await Promise.resolve().then(() => require("./sed-S5UIK574-CKdzn0sh.cjs"))).sedCommand
|
|
22960
22961
|
},
|
|
22961
22962
|
{
|
|
22962
22963
|
name: "awk",
|
|
22963
|
-
load: async () => (await Promise.resolve().then(() => require("./awk2-LA3USKJP-
|
|
22964
|
+
load: async () => (await Promise.resolve().then(() => require("./awk2-LA3USKJP-DWN5gyAn.cjs"))).awkCommand2
|
|
22964
22965
|
},
|
|
22965
22966
|
{
|
|
22966
22967
|
name: "sort",
|
|
22967
|
-
load: async () => (await Promise.resolve().then(() => require("./sort-SW2YEO5B-
|
|
22968
|
+
load: async () => (await Promise.resolve().then(() => require("./sort-SW2YEO5B-oXMaUVfX.cjs"))).sortCommand
|
|
22968
22969
|
},
|
|
22969
22970
|
{
|
|
22970
22971
|
name: "uniq",
|
|
22971
|
-
load: async () => (await Promise.resolve().then(() => require("./uniq-XSIZR6PB-
|
|
22972
|
+
load: async () => (await Promise.resolve().then(() => require("./uniq-XSIZR6PB-4d0zRoTa.cjs"))).uniqCommand
|
|
22972
22973
|
},
|
|
22973
22974
|
{
|
|
22974
22975
|
name: "comm",
|
|
22975
|
-
load: async () => (await Promise.resolve().then(() => require("./comm-VV2LDX2J-
|
|
22976
|
+
load: async () => (await Promise.resolve().then(() => require("./comm-VV2LDX2J-CAqAa0VH.cjs"))).commCommand
|
|
22976
22977
|
},
|
|
22977
22978
|
{
|
|
22978
22979
|
name: "cut",
|
|
22979
|
-
load: async () => (await Promise.resolve().then(() => require("./cut-OKARJCCV-
|
|
22980
|
+
load: async () => (await Promise.resolve().then(() => require("./cut-OKARJCCV-C3IgdttS.cjs"))).cutCommand
|
|
22980
22981
|
},
|
|
22981
22982
|
{
|
|
22982
22983
|
name: "paste",
|
|
22983
|
-
load: async () => (await Promise.resolve().then(() => require("./paste-7JC6S4DX-
|
|
22984
|
+
load: async () => (await Promise.resolve().then(() => require("./paste-7JC6S4DX-xeKsL7xT.cjs"))).pasteCommand
|
|
22984
22985
|
},
|
|
22985
22986
|
{
|
|
22986
22987
|
name: "tr",
|
|
22987
|
-
load: async () => (await Promise.resolve().then(() => require("./tr-36LHWFRQ-
|
|
22988
|
+
load: async () => (await Promise.resolve().then(() => require("./tr-36LHWFRQ-BvZgWBI7.cjs"))).trCommand
|
|
22988
22989
|
},
|
|
22989
22990
|
{
|
|
22990
22991
|
name: "rev",
|
|
22991
|
-
load: async () => (await Promise.resolve().then(() => require("./rev-5EHFX4EJ-
|
|
22992
|
+
load: async () => (await Promise.resolve().then(() => require("./rev-5EHFX4EJ-pW6JW5qN.cjs"))).rev
|
|
22992
22993
|
},
|
|
22993
22994
|
{
|
|
22994
22995
|
name: "nl",
|
|
22995
|
-
load: async () => (await Promise.resolve().then(() => require("./nl-WSDW7I4O-
|
|
22996
|
+
load: async () => (await Promise.resolve().then(() => require("./nl-WSDW7I4O-Bc1YFLf6.cjs"))).nl
|
|
22996
22997
|
},
|
|
22997
22998
|
{
|
|
22998
22999
|
name: "fold",
|
|
22999
|
-
load: async () => (await Promise.resolve().then(() => require("./fold-4TQNYMSW-
|
|
23000
|
+
load: async () => (await Promise.resolve().then(() => require("./fold-4TQNYMSW-C-vHdcsu.cjs"))).fold
|
|
23000
23001
|
},
|
|
23001
23002
|
{
|
|
23002
23003
|
name: "expand",
|
|
23003
|
-
load: async () => (await Promise.resolve().then(() => require("./expand-JSPG6VOP-
|
|
23004
|
+
load: async () => (await Promise.resolve().then(() => require("./expand-JSPG6VOP-DI9tAEq8.cjs"))).expand
|
|
23004
23005
|
},
|
|
23005
23006
|
{
|
|
23006
23007
|
name: "unexpand",
|
|
23007
|
-
load: async () => (await Promise.resolve().then(() => require("./unexpand-CADSA4VO-
|
|
23008
|
+
load: async () => (await Promise.resolve().then(() => require("./unexpand-CADSA4VO-Ct-tDYst.cjs"))).unexpand
|
|
23008
23009
|
},
|
|
23009
23010
|
{
|
|
23010
23011
|
name: "strings",
|
|
23011
|
-
load: async () => (await Promise.resolve().then(() => require("./strings-6WDHLGMX-
|
|
23012
|
+
load: async () => (await Promise.resolve().then(() => require("./strings-6WDHLGMX-CgNUl2be.cjs"))).strings
|
|
23012
23013
|
},
|
|
23013
23014
|
{
|
|
23014
23015
|
name: "split",
|
|
23015
|
-
load: async () => (await Promise.resolve().then(() => require("./split-4KKZZXXE-
|
|
23016
|
+
load: async () => (await Promise.resolve().then(() => require("./split-4KKZZXXE-uNycTBLx.cjs"))).split
|
|
23016
23017
|
},
|
|
23017
23018
|
{
|
|
23018
23019
|
name: "column",
|
|
23019
|
-
load: async () => (await Promise.resolve().then(() => require("./column-XT6UFXNQ-
|
|
23020
|
+
load: async () => (await Promise.resolve().then(() => require("./column-XT6UFXNQ-Dy7Oa0td.cjs"))).column
|
|
23020
23021
|
},
|
|
23021
23022
|
{
|
|
23022
23023
|
name: "join",
|
|
23023
|
-
load: async () => (await Promise.resolve().then(() => require("./join-TBRGI3LQ-
|
|
23024
|
+
load: async () => (await Promise.resolve().then(() => require("./join-TBRGI3LQ-CGvygkdd.cjs"))).join
|
|
23024
23025
|
},
|
|
23025
23026
|
{
|
|
23026
23027
|
name: "tee",
|
|
23027
|
-
load: async () => (await Promise.resolve().then(() => require("./tee-YUZ2FKCJ-
|
|
23028
|
+
load: async () => (await Promise.resolve().then(() => require("./tee-YUZ2FKCJ-DgWILkVl.cjs"))).teeCommand
|
|
23028
23029
|
},
|
|
23029
23030
|
{
|
|
23030
23031
|
name: "find",
|
|
23031
|
-
load: async () => (await Promise.resolve().then(() => require("./find-INTH3OLC-
|
|
23032
|
+
load: async () => (await Promise.resolve().then(() => require("./find-INTH3OLC-CgU4UvVu.cjs"))).findCommand
|
|
23032
23033
|
},
|
|
23033
23034
|
{
|
|
23034
23035
|
name: "basename",
|
|
@@ -23040,19 +23041,19 @@ var tt = [
|
|
|
23040
23041
|
},
|
|
23041
23042
|
{
|
|
23042
23043
|
name: "tree",
|
|
23043
|
-
load: async () => (await Promise.resolve().then(() => require("./tree-YLD52CNT-
|
|
23044
|
+
load: async () => (await Promise.resolve().then(() => require("./tree-YLD52CNT-D28PbXCj.cjs"))).treeCommand
|
|
23044
23045
|
},
|
|
23045
23046
|
{
|
|
23046
23047
|
name: "du",
|
|
23047
|
-
load: async () => (await Promise.resolve().then(() => require("./du-572XNP42-
|
|
23048
|
+
load: async () => (await Promise.resolve().then(() => require("./du-572XNP42-DlYoI7xK.cjs"))).duCommand
|
|
23048
23049
|
},
|
|
23049
23050
|
{
|
|
23050
23051
|
name: "env",
|
|
23051
|
-
load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-
|
|
23052
|
+
load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-CiUSJDkN.cjs"))).envCommand
|
|
23052
23053
|
},
|
|
23053
23054
|
{
|
|
23054
23055
|
name: "printenv",
|
|
23055
|
-
load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-
|
|
23056
|
+
load: async () => (await Promise.resolve().then(() => require("./env-36M5BO7M-CiUSJDkN.cjs"))).printenvCommand
|
|
23056
23057
|
},
|
|
23057
23058
|
{
|
|
23058
23059
|
name: "alias",
|
|
@@ -23068,7 +23069,7 @@ var tt = [
|
|
|
23068
23069
|
},
|
|
23069
23070
|
{
|
|
23070
23071
|
name: "xargs",
|
|
23071
|
-
load: async () => (await Promise.resolve().then(() => require("./xargs-MGZPH7AX-
|
|
23072
|
+
load: async () => (await Promise.resolve().then(() => require("./xargs-MGZPH7AX-DY0UyJRW.cjs"))).xargsCommand
|
|
23072
23073
|
},
|
|
23073
23074
|
{
|
|
23074
23075
|
name: "true",
|
|
@@ -23084,23 +23085,23 @@ var tt = [
|
|
|
23084
23085
|
},
|
|
23085
23086
|
{
|
|
23086
23087
|
name: "bash",
|
|
23087
|
-
load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-
|
|
23088
|
+
load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-DVA0EDj-.cjs"))).bashCommand
|
|
23088
23089
|
},
|
|
23089
23090
|
{
|
|
23090
23091
|
name: "sh",
|
|
23091
|
-
load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-
|
|
23092
|
+
load: async () => (await Promise.resolve().then(() => require("./bash-YZ33HQZQ-DVA0EDj-.cjs"))).shCommand
|
|
23092
23093
|
},
|
|
23093
23094
|
{
|
|
23094
23095
|
name: "jq",
|
|
23095
|
-
load: async () => (await Promise.resolve().then(() => require("./jq-4XLYLOS5-
|
|
23096
|
+
load: async () => (await Promise.resolve().then(() => require("./jq-4XLYLOS5-CcpoXWem.cjs"))).jqCommand
|
|
23096
23097
|
},
|
|
23097
23098
|
{
|
|
23098
23099
|
name: "base64",
|
|
23099
|
-
load: async () => (await Promise.resolve().then(() => require("./base64-C2AIWVNC-
|
|
23100
|
+
load: async () => (await Promise.resolve().then(() => require("./base64-C2AIWVNC-Dp8sCZAt.cjs"))).base64Command
|
|
23100
23101
|
},
|
|
23101
23102
|
{
|
|
23102
23103
|
name: "diff",
|
|
23103
|
-
load: async () => (await Promise.resolve().then(() => require("./diff-MWJFIG7X-
|
|
23104
|
+
load: async () => (await Promise.resolve().then(() => require("./diff-MWJFIG7X-BN4jYNC5.cjs"))).diffCommand
|
|
23104
23105
|
},
|
|
23105
23106
|
{
|
|
23106
23107
|
name: "date",
|
|
@@ -23108,15 +23109,15 @@ var tt = [
|
|
|
23108
23109
|
},
|
|
23109
23110
|
{
|
|
23110
23111
|
name: "sleep",
|
|
23111
|
-
load: async () => (await Promise.resolve().then(() => require("./sleep-X22JJINO-
|
|
23112
|
+
load: async () => (await Promise.resolve().then(() => require("./sleep-X22JJINO-VzGR_aAP.cjs"))).sleepCommand
|
|
23112
23113
|
},
|
|
23113
23114
|
{
|
|
23114
23115
|
name: "timeout",
|
|
23115
|
-
load: async () => (await Promise.resolve().then(() => require("./timeout-YDCRSLPQ-
|
|
23116
|
+
load: async () => (await Promise.resolve().then(() => require("./timeout-YDCRSLPQ-fyDe4rrM.cjs"))).timeoutCommand
|
|
23116
23117
|
},
|
|
23117
23118
|
{
|
|
23118
23119
|
name: "time",
|
|
23119
|
-
load: async () => (await Promise.resolve().then(() => require("./time-D4LNBSWX-
|
|
23120
|
+
load: async () => (await Promise.resolve().then(() => require("./time-D4LNBSWX-Czgb4a8J.cjs"))).timeCommand
|
|
23120
23121
|
},
|
|
23121
23122
|
{
|
|
23122
23123
|
name: "seq",
|
|
@@ -23124,19 +23125,19 @@ var tt = [
|
|
|
23124
23125
|
},
|
|
23125
23126
|
{
|
|
23126
23127
|
name: "expr",
|
|
23127
|
-
load: async () => (await Promise.resolve().then(() => require("./expr-5JAACS4X-
|
|
23128
|
+
load: async () => (await Promise.resolve().then(() => require("./expr-5JAACS4X-BtODvrh-.cjs"))).exprCommand
|
|
23128
23129
|
},
|
|
23129
23130
|
{
|
|
23130
23131
|
name: "md5sum",
|
|
23131
|
-
load: async () => (await Promise.resolve().then(() => require("./md5sum-SPU24VSG-
|
|
23132
|
+
load: async () => (await Promise.resolve().then(() => require("./md5sum-SPU24VSG-DeBwcDpn.cjs"))).md5sumCommand
|
|
23132
23133
|
},
|
|
23133
23134
|
{
|
|
23134
23135
|
name: "sha1sum",
|
|
23135
|
-
load: async () => (await Promise.resolve().then(() => require("./sha1sum-2PTOAFR6-
|
|
23136
|
+
load: async () => (await Promise.resolve().then(() => require("./sha1sum-2PTOAFR6-D-6ahlIg.cjs"))).sha1sumCommand
|
|
23136
23137
|
},
|
|
23137
23138
|
{
|
|
23138
23139
|
name: "sha256sum",
|
|
23139
|
-
load: async () => (await Promise.resolve().then(() => require("./sha256sum-NS7D3IXX-
|
|
23140
|
+
load: async () => (await Promise.resolve().then(() => require("./sha256sum-NS7D3IXX-Drwo830V.cjs"))).sha256sumCommand
|
|
23140
23141
|
},
|
|
23141
23142
|
{
|
|
23142
23143
|
name: "file",
|
|
@@ -23144,11 +23145,11 @@ var tt = [
|
|
|
23144
23145
|
},
|
|
23145
23146
|
{
|
|
23146
23147
|
name: "html-to-markdown",
|
|
23147
|
-
load: async () => (await Promise.resolve().then(() => require("./html-to-markdown-JW4MSQZO-
|
|
23148
|
+
load: async () => (await Promise.resolve().then(() => require("./html-to-markdown-JW4MSQZO-Cy2yEvwt.cjs"))).htmlToMarkdownCommand
|
|
23148
23149
|
},
|
|
23149
23150
|
{
|
|
23150
23151
|
name: "help",
|
|
23151
|
-
load: async () => (await Promise.resolve().then(() => require("./help-HZ6M2CKN-
|
|
23152
|
+
load: async () => (await Promise.resolve().then(() => require("./help-HZ6M2CKN-D58VQaUX.cjs"))).helpCommand
|
|
23152
23153
|
},
|
|
23153
23154
|
{
|
|
23154
23155
|
name: "which",
|
|
@@ -23156,7 +23157,7 @@ var tt = [
|
|
|
23156
23157
|
},
|
|
23157
23158
|
{
|
|
23158
23159
|
name: "tac",
|
|
23159
|
-
load: async () => (await Promise.resolve().then(() => require("./tac-2STMMJYW-
|
|
23160
|
+
load: async () => (await Promise.resolve().then(() => require("./tac-2STMMJYW-XOnEZ_Pa.cjs"))).tac
|
|
23160
23161
|
},
|
|
23161
23162
|
{
|
|
23162
23163
|
name: "hostname",
|
|
@@ -23168,49 +23169,49 @@ var tt = [
|
|
|
23168
23169
|
},
|
|
23169
23170
|
{
|
|
23170
23171
|
name: "od",
|
|
23171
|
-
load: async () => (await Promise.resolve().then(() => require("./od-WOKFDJTP
|
|
23172
|
+
load: async () => (await Promise.resolve().then(() => require("./od-WOKFDJTP-BMJoqBvk.cjs"))).od
|
|
23172
23173
|
},
|
|
23173
23174
|
{
|
|
23174
23175
|
name: "gzip",
|
|
23175
|
-
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-
|
|
23176
|
+
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-BFMYd-hT.cjs"))).gzipCommand
|
|
23176
23177
|
},
|
|
23177
23178
|
{
|
|
23178
23179
|
name: "gunzip",
|
|
23179
|
-
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-
|
|
23180
|
+
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-BFMYd-hT.cjs"))).gunzipCommand
|
|
23180
23181
|
},
|
|
23181
23182
|
{
|
|
23182
23183
|
name: "zcat",
|
|
23183
|
-
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-
|
|
23184
|
+
load: async () => (await Promise.resolve().then(() => require("./gzip-O5ASJAFY-BFMYd-hT.cjs"))).zcatCommand
|
|
23184
23185
|
}
|
|
23185
23186
|
];
|
|
23186
23187
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (tt.push({
|
|
23187
23188
|
name: "tar",
|
|
23188
|
-
load: async () => (await Promise.resolve().then(() => require("./tar-STHHZTZ6-
|
|
23189
|
+
load: async () => (await Promise.resolve().then(() => require("./tar-STHHZTZ6-BSs3Wex8.cjs"))).tarCommand
|
|
23189
23190
|
}), tt.push({
|
|
23190
23191
|
name: "yq",
|
|
23191
|
-
load: async () => (await Promise.resolve().then(() => require("./yq-4QJW3EQG-
|
|
23192
|
+
load: async () => (await Promise.resolve().then(() => require("./yq-4QJW3EQG-CF1OM3GO.cjs"))).yqCommand
|
|
23192
23193
|
}), tt.push({
|
|
23193
23194
|
name: "xan",
|
|
23194
|
-
load: async () => (await Promise.resolve().then(() => require("./xan-Y6WF3IRG-
|
|
23195
|
+
load: async () => (await Promise.resolve().then(() => require("./xan-Y6WF3IRG-DlMObnyI.cjs"))).xanCommand
|
|
23195
23196
|
}), tt.push({
|
|
23196
23197
|
name: "sqlite3",
|
|
23197
|
-
load: async () => (await Promise.resolve().then(() => require("./sqlite3-CGOEFJAO-
|
|
23198
|
+
load: async () => (await Promise.resolve().then(() => require("./sqlite3-CGOEFJAO-DLGaPKmF.cjs"))).sqlite3Command
|
|
23198
23199
|
}));
|
|
23199
23200
|
var Yt = [];
|
|
23200
23201
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (Yt.push({
|
|
23201
23202
|
name: "python3",
|
|
23202
|
-
load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-
|
|
23203
|
+
load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-DYGxPjXO.cjs"))).python3Command
|
|
23203
23204
|
}), Yt.push({
|
|
23204
23205
|
name: "python",
|
|
23205
|
-
load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-
|
|
23206
|
+
load: async () => (await Promise.resolve().then(() => require("./python3-POMOR4OA-DYGxPjXO.cjs"))).pythonCommand
|
|
23206
23207
|
}));
|
|
23207
23208
|
var Qt = [];
|
|
23208
23209
|
(typeof __BROWSER__ > "u" || !__BROWSER__) && (Qt.push({
|
|
23209
23210
|
name: "js-exec",
|
|
23210
|
-
load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-
|
|
23211
|
+
load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-BfVFKq8I.cjs"))).jsExecCommand
|
|
23211
23212
|
}), Qt.push({
|
|
23212
23213
|
name: "node",
|
|
23213
|
-
load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-
|
|
23214
|
+
load: async () => (await Promise.resolve().then(() => require("./js-exec-N5KEZBH7-BfVFKq8I.cjs"))).nodeStubCommand
|
|
23214
23215
|
}));
|
|
23215
23216
|
new TextEncoder();
|
|
23216
23217
|
Object.freeze({
|
|
@@ -24228,11 +24229,12 @@ function normalizeLegacySlugFields(value) {
|
|
|
24228
24229
|
return next;
|
|
24229
24230
|
}
|
|
24230
24231
|
const slugField = zod.z.string().trim().min(1);
|
|
24231
|
-
const
|
|
24232
|
+
const requiredTextField = zod.z.string().trim().min(1);
|
|
24233
|
+
const optionalTextField = zod.z.string().trim().min(1).optional();
|
|
24232
24234
|
const baseSourceShape = {
|
|
24233
24235
|
slug: slugField,
|
|
24234
|
-
name:
|
|
24235
|
-
description:
|
|
24236
|
+
name: requiredTextField,
|
|
24237
|
+
description: requiredTextField,
|
|
24236
24238
|
attach: zod.z.function()
|
|
24237
24239
|
};
|
|
24238
24240
|
const webhookSourceSchema = zod.z.object({
|
|
@@ -24850,7 +24852,7 @@ function withOrganizationProjectDatabase() {
|
|
|
24850
24852
|
}
|
|
24851
24853
|
//#endregion
|
|
24852
24854
|
//#region src/routes/account/users/me/avatar/GET.ts
|
|
24853
|
-
const handler$
|
|
24855
|
+
const handler$91 = async (c) => {
|
|
24854
24856
|
const dbUser = await (0, _keystrokehq_platform_database.selectUserById)(c.get("user").id);
|
|
24855
24857
|
if (!dbUser) return c.json(require_dist.ErrorResponseSchema.parse({ error: "User not found" }), 404);
|
|
24856
24858
|
return c.json(require_dist.UserAvatarSchema.parse({ url: dbUser.image ?? null }));
|
|
@@ -24869,7 +24871,7 @@ function avatarExtensionForContentType(contentType) {
|
|
|
24869
24871
|
}
|
|
24870
24872
|
//#endregion
|
|
24871
24873
|
//#region src/routes/account/users/me/avatar/presign/POST.ts
|
|
24872
|
-
const handler$
|
|
24874
|
+
const handler$90 = async (c) => {
|
|
24873
24875
|
const parsed = require_dist.PresignUserAvatarRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
24874
24876
|
if (!parsed.success) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid avatar upload request" }), 400);
|
|
24875
24877
|
const extension = avatarExtensionForContentType(parsed.data.contentType);
|
|
@@ -24909,7 +24911,7 @@ async function deleteStoredImageIfOwned(input) {
|
|
|
24909
24911
|
}
|
|
24910
24912
|
//#endregion
|
|
24911
24913
|
//#region src/routes/account/users/me/avatar/PATCH.ts
|
|
24912
|
-
const handler$
|
|
24914
|
+
const handler$89 = async (c) => {
|
|
24913
24915
|
const parsed = require_dist.UserAvatarPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
24914
24916
|
if (!parsed.success) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid avatar update" }), 400);
|
|
24915
24917
|
const user = c.get("user");
|
|
@@ -24951,14 +24953,14 @@ const handler$81 = async (c) => {
|
|
|
24951
24953
|
};
|
|
24952
24954
|
//#endregion
|
|
24953
24955
|
//#region src/routes/account/users/me/preferences/GET.ts
|
|
24954
|
-
const handler$
|
|
24956
|
+
const handler$88 = async (c) => {
|
|
24955
24957
|
const dbUser = await (0, _keystrokehq_platform_database.selectUserById)(c.get("user").id);
|
|
24956
24958
|
if (!dbUser) return c.json(require_dist.ErrorResponseSchema.parse({ error: "User not found" }), 404);
|
|
24957
24959
|
return c.json(require_dist.UserPreferencesSchema.parse(require_dist.normalizeUserPreferences(dbUser.preferences)));
|
|
24958
24960
|
};
|
|
24959
24961
|
//#endregion
|
|
24960
24962
|
//#region src/routes/account/users/me/preferences/PATCH.ts
|
|
24961
|
-
const handler$
|
|
24963
|
+
const handler$87 = async (c) => {
|
|
24962
24964
|
const parsed = require_dist.UserPreferencesPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
24963
24965
|
if (!parsed.success) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid preferences update" }), 400);
|
|
24964
24966
|
const user = c.get("user");
|
|
@@ -24973,7 +24975,7 @@ const handler$79 = async (c) => {
|
|
|
24973
24975
|
};
|
|
24974
24976
|
//#endregion
|
|
24975
24977
|
//#region src/routes/account/organizations/GET.ts
|
|
24976
|
-
const handler$
|
|
24978
|
+
const handler$86 = async (c) => {
|
|
24977
24979
|
const memberships = await (0, _keystrokehq_platform_database.selectUserOrganizations)(c.get("user").id);
|
|
24978
24980
|
return c.json(require_dist.ListOrganizationsResponseSchema.parse(memberships.map(require_dist.mapUserOrganization)));
|
|
24979
24981
|
};
|
|
@@ -25051,7 +25053,7 @@ function createOrganizationHandler(deps) {
|
|
|
25051
25053
|
}
|
|
25052
25054
|
//#endregion
|
|
25053
25055
|
//#region src/routes/account/organizations/slug-available/GET.ts
|
|
25054
|
-
const handler$
|
|
25056
|
+
const handler$85 = async (c) => {
|
|
25055
25057
|
const parsed = require_dist.SlugAvailabilityQuerySchema.safeParse({
|
|
25056
25058
|
slug: c.req.query("slug"),
|
|
25057
25059
|
excludeOrganizationId: c.req.query("excludeOrganizationId")
|
|
@@ -25062,7 +25064,7 @@ const handler$77 = async (c) => {
|
|
|
25062
25064
|
};
|
|
25063
25065
|
//#endregion
|
|
25064
25066
|
//#region src/routes/account/organizations/[organizationId]/GET.ts
|
|
25065
|
-
const handler$
|
|
25067
|
+
const handler$84 = async (c) => {
|
|
25066
25068
|
const { organizationId } = c.get("organization");
|
|
25067
25069
|
const membership = await (0, _keystrokehq_platform_database.selectUserOrganizationMembership)(c.get("user").id, organizationId);
|
|
25068
25070
|
if (!membership) throw new Error(`Organization membership missing after param guard: ${organizationId}`);
|
|
@@ -25070,7 +25072,7 @@ const handler$76 = async (c) => {
|
|
|
25070
25072
|
};
|
|
25071
25073
|
//#endregion
|
|
25072
25074
|
//#region src/routes/account/organizations/[organizationId]/PATCH.ts
|
|
25073
|
-
const handler$
|
|
25075
|
+
const handler$83 = async (c) => {
|
|
25074
25076
|
const organization = c.get("organization");
|
|
25075
25077
|
const body = await c.req.json().catch(() => null);
|
|
25076
25078
|
const parsed = require_dist.UpdateOrganizationRequestSchema.safeParse(body);
|
|
@@ -25095,7 +25097,7 @@ const handler$75 = async (c) => {
|
|
|
25095
25097
|
};
|
|
25096
25098
|
//#endregion
|
|
25097
25099
|
//#region src/routes/account/organizations/[organizationId]/branding/GET.ts
|
|
25098
|
-
const handler$
|
|
25100
|
+
const handler$82 = async (c) => {
|
|
25099
25101
|
const { organizationId } = c.get("organization");
|
|
25100
25102
|
const organization = await (0, _keystrokehq_platform_database.selectOrganizationById)(organizationId);
|
|
25101
25103
|
if (!organization) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
@@ -25144,7 +25146,7 @@ async function finalizeOrgLogoVariant(input) {
|
|
|
25144
25146
|
publicUrl: finalized.publicUrl
|
|
25145
25147
|
};
|
|
25146
25148
|
}
|
|
25147
|
-
const handler$
|
|
25149
|
+
const handler$81 = async (c) => {
|
|
25148
25150
|
const parsed = require_dist.OrganizationSidebarBrandingPatchSchema.safeParse(await c.req.json().catch(() => null));
|
|
25149
25151
|
if (!parsed.success) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid branding update" }), 400);
|
|
25150
25152
|
const { organizationId } = c.get("organization");
|
|
@@ -25172,7 +25174,7 @@ const handler$73 = async (c) => {
|
|
|
25172
25174
|
};
|
|
25173
25175
|
//#endregion
|
|
25174
25176
|
//#region src/routes/account/organizations/[organizationId]/branding/logo/presign/POST.ts
|
|
25175
|
-
const handler$
|
|
25177
|
+
const handler$80 = async (c) => {
|
|
25176
25178
|
const parsed = require_dist.PresignOrgLogoRequestSchema.safeParse(await c.req.json().catch(() => null));
|
|
25177
25179
|
if (!parsed.success) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid logo upload request" }), 400);
|
|
25178
25180
|
const extension = avatarExtensionForContentType(parsed.data.contentType);
|
|
@@ -25273,7 +25275,7 @@ async function attachRanAsToDetail(detail, ranByUserId) {
|
|
|
25273
25275
|
}
|
|
25274
25276
|
//#endregion
|
|
25275
25277
|
//#region src/routes/account/history/GET.ts
|
|
25276
|
-
const handler$
|
|
25278
|
+
const handler$79 = async (c) => {
|
|
25277
25279
|
const organization = c.get("organization");
|
|
25278
25280
|
const ctx = accessContext(c);
|
|
25279
25281
|
const query = require_dist.HistoryRunListQuerySchema.parse({
|
|
@@ -25296,7 +25298,7 @@ const handler$71 = async (c) => {
|
|
|
25296
25298
|
};
|
|
25297
25299
|
//#endregion
|
|
25298
25300
|
//#region src/routes/account/history/[runId]/GET.ts
|
|
25299
|
-
const handler$
|
|
25301
|
+
const handler$78 = async (c) => {
|
|
25300
25302
|
const runId = c.req.param("runId") ?? "";
|
|
25301
25303
|
if (!runId) return c.json(null, 404);
|
|
25302
25304
|
const core = await (0, _keystrokehq_database.findHistoryRunCore)(runId);
|
|
@@ -25331,11 +25333,12 @@ function formatModel(model) {
|
|
|
25331
25333
|
return model;
|
|
25332
25334
|
}
|
|
25333
25335
|
function toAgentSummary(row, options) {
|
|
25336
|
+
const name = row.name?.trim() || titleCaseKey(row.slug);
|
|
25334
25337
|
return require_dist.AgentSummarySchema.parse({
|
|
25335
25338
|
id: row.id,
|
|
25336
25339
|
slug: row.slug,
|
|
25337
|
-
name
|
|
25338
|
-
description: row.description
|
|
25340
|
+
name,
|
|
25341
|
+
description: row.description?.trim() || name,
|
|
25339
25342
|
projectId: row.projectId,
|
|
25340
25343
|
updatedAt: row.updatedAt.toISOString(),
|
|
25341
25344
|
sourcePath: row.moduleFile,
|
|
@@ -25353,7 +25356,7 @@ function toAgentSummary(row, options) {
|
|
|
25353
25356
|
}
|
|
25354
25357
|
//#endregion
|
|
25355
25358
|
//#region src/routes/account/agents/GET.ts
|
|
25356
|
-
const handler$
|
|
25359
|
+
const handler$77 = async (c) => {
|
|
25357
25360
|
const filter = await resolveListProjectIds(c, listScope(c, agentListScope(accessContext(c))), c.req.query("projectId"));
|
|
25358
25361
|
if (filter === "empty") return c.json(require_dist.AgentSummaryListResponseSchema.parse([]));
|
|
25359
25362
|
const rows = await (0, _keystrokehq_database.listActiveAgents)(filter);
|
|
@@ -25367,7 +25370,7 @@ function touchResourceActivityBestEffort(options) {
|
|
|
25367
25370
|
}
|
|
25368
25371
|
//#endregion
|
|
25369
25372
|
//#region src/routes/account/agents/[agentId]/GET.ts
|
|
25370
|
-
const handler$
|
|
25373
|
+
const handler$76 = async (c) => {
|
|
25371
25374
|
const agentId = c.req.param("agentId") ?? "";
|
|
25372
25375
|
const row = agentId ? await (0, _keystrokehq_database.selectActiveAgentById)(agentId) : void 0;
|
|
25373
25376
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessAgent)) return c.json(require_dist.AgentSummaryDetailResponseSchema.parse(null));
|
|
@@ -25390,7 +25393,7 @@ const handler$68 = async (c) => {
|
|
|
25390
25393
|
function relativePathsFromStorageKeys(prefix, keys) {
|
|
25391
25394
|
return keys.filter((key) => key.startsWith(prefix) && key.endsWith(".md")).map((key) => key.slice(prefix.length)).filter((path) => !path.startsWith(".") && !path.includes("/."));
|
|
25392
25395
|
}
|
|
25393
|
-
const handler$
|
|
25396
|
+
const handler$75 = async (c) => {
|
|
25394
25397
|
const agentId = c.req.param("agentId") ?? "";
|
|
25395
25398
|
const row = agentId ? await (0, _keystrokehq_database.selectActiveAgentById)(agentId) : void 0;
|
|
25396
25399
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessAgent)) return c.json(require_dist.ListAgentMemoryFilesResponseSchema.parse({ files: [] }), 404);
|
|
@@ -25415,7 +25418,7 @@ function isStorageNotFoundError(error) {
|
|
|
25415
25418
|
const status = typeof record.$metadata === "object" && record.$metadata !== null ? record.$metadata.httpStatusCode : void 0;
|
|
25416
25419
|
return name === "NoSuchKey" || code === "NoSuchKey" || code === "NotFound" || status === 404;
|
|
25417
25420
|
}
|
|
25418
|
-
const handler$
|
|
25421
|
+
const handler$74 = async (c) => {
|
|
25419
25422
|
const agentId = c.req.param("agentId") ?? "";
|
|
25420
25423
|
const path = c.req.query("path");
|
|
25421
25424
|
if (!path) return c.json(require_dist.ErrorResponseSchema.parse({ error: "File path is required" }), 400);
|
|
@@ -25469,7 +25472,7 @@ function workspaceRelativePathsFromStorageKeys(keys) {
|
|
|
25469
25472
|
}
|
|
25470
25473
|
//#endregion
|
|
25471
25474
|
//#region src/routes/account/agents/[agentId]/workspace/files/GET.ts
|
|
25472
|
-
const handler$
|
|
25475
|
+
const handler$73 = async (c) => {
|
|
25473
25476
|
const agentId = c.req.param("agentId") ?? "";
|
|
25474
25477
|
const row = agentId ? await (0, _keystrokehq_database.selectActiveAgentById)(agentId) : void 0;
|
|
25475
25478
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessAgent)) return c.json(require_dist.ListAgentWorkspaceFilesResponseSchema.parse({ files: [] }), 404);
|
|
@@ -25492,7 +25495,7 @@ const handler$65 = async (c) => {
|
|
|
25492
25495
|
};
|
|
25493
25496
|
//#endregion
|
|
25494
25497
|
//#region src/routes/account/agents/[agentId]/workspace/files/content/GET.ts
|
|
25495
|
-
const handler$
|
|
25498
|
+
const handler$72 = async (c) => {
|
|
25496
25499
|
const agentId = c.req.param("agentId") ?? "";
|
|
25497
25500
|
const path = c.req.query("path");
|
|
25498
25501
|
if (!path) return c.json(require_dist.ErrorResponseSchema.parse({ error: "File path is required" }), 400);
|
|
@@ -25541,15 +25544,15 @@ async function cancelHistoryRun(c, kind, cancel) {
|
|
|
25541
25544
|
}
|
|
25542
25545
|
//#endregion
|
|
25543
25546
|
//#region src/routes/account/agents/sessions/[sessionId]/cancel/POST.ts
|
|
25544
|
-
const handler$
|
|
25547
|
+
const handler$71 = (c) => cancelHistoryRun(c, "agent", _keystrokehq_database.cancelAgentSession);
|
|
25545
25548
|
//#endregion
|
|
25546
25549
|
//#region src/routes/account/resources/workflows.ts
|
|
25547
25550
|
function toWorkflowSummary(row, options) {
|
|
25548
25551
|
return require_dist.WorkflowSummarySchema.parse({
|
|
25549
25552
|
id: row.id,
|
|
25550
25553
|
slug: row.slug,
|
|
25551
|
-
name: row.name
|
|
25552
|
-
description: row.description
|
|
25554
|
+
name: row.name.trim(),
|
|
25555
|
+
description: row.description.trim(),
|
|
25553
25556
|
projectId: row.projectId,
|
|
25554
25557
|
updatedAt: row.updatedAt.toISOString(),
|
|
25555
25558
|
sourcePath: row.moduleFile,
|
|
@@ -25558,7 +25561,7 @@ function toWorkflowSummary(row, options) {
|
|
|
25558
25561
|
}
|
|
25559
25562
|
//#endregion
|
|
25560
25563
|
//#region src/routes/account/workflows/GET.ts
|
|
25561
|
-
const handler$
|
|
25564
|
+
const handler$70 = async (c) => {
|
|
25562
25565
|
const filter = await resolveListProjectIds(c, listScope(c, workflowListScope(accessContext(c))), c.req.query("projectId"));
|
|
25563
25566
|
if (filter === "empty") return c.json(require_dist.WorkflowSummaryListResponseSchema.parse([]));
|
|
25564
25567
|
const rows = await (0, _keystrokehq_database.listActiveWorkflows)(filter);
|
|
@@ -25567,7 +25570,7 @@ const handler$62 = async (c) => {
|
|
|
25567
25570
|
};
|
|
25568
25571
|
//#endregion
|
|
25569
25572
|
//#region src/routes/account/workflows/[workflowId]/GET.ts
|
|
25570
|
-
const handler$
|
|
25573
|
+
const handler$69 = async (c) => {
|
|
25571
25574
|
const workflowId = c.req.param("workflowId") ?? "";
|
|
25572
25575
|
const row = workflowId ? await (0, _keystrokehq_database.selectActiveWorkflowById)(workflowId) : void 0;
|
|
25573
25576
|
if (!row || !await canAccessProjectId(c, row.projectId, canAccessWorkflow)) return c.json(require_dist.WorkflowSummaryDetailResponseSchema.parse(null));
|
|
@@ -25581,16 +25584,985 @@ const handler$61 = async (c) => {
|
|
|
25581
25584
|
return c.json(require_dist.WorkflowSummaryDetailResponseSchema.parse(toWorkflowSummary(row, { lastRunAt: lastRunAtById.get(row.id) ?? null })));
|
|
25582
25585
|
};
|
|
25583
25586
|
//#endregion
|
|
25587
|
+
//#region src/routes/account/workflows/resolve.ts
|
|
25588
|
+
async function resolveWorkflow(c, workflowId) {
|
|
25589
|
+
const row = workflowId ? await (0, _keystrokehq_database.selectActiveWorkflowById)(workflowId) : void 0;
|
|
25590
|
+
if (!row || !await canAccessProjectId(c, row.projectId, canAccessWorkflow)) return null;
|
|
25591
|
+
return {
|
|
25592
|
+
row,
|
|
25593
|
+
projectId: row.projectId
|
|
25594
|
+
};
|
|
25595
|
+
}
|
|
25596
|
+
/** Active deploy route-manifest entry for a workflow slug (input schema, flow graph, …). */
|
|
25597
|
+
async function loadWorkflowManifestEntry(projectId, slug) {
|
|
25598
|
+
const manifestJson = await (0, _keystrokehq_platform_database.selectActiveArtifactManifestForProject)(projectId);
|
|
25599
|
+
if (!manifestJson) return null;
|
|
25600
|
+
return require_dist.parseStoredRouteManifest(manifestJson).entries.find((item) => item.kind === "workflow" && item.slug === slug) ?? null;
|
|
25601
|
+
}
|
|
25602
|
+
/** The full active-deploy route manifest for a project (canvas needs the whole entry set). */
|
|
25603
|
+
async function loadActiveManifest(projectId) {
|
|
25604
|
+
const manifestJson = await (0, _keystrokehq_platform_database.selectActiveArtifactManifestForProject)(projectId);
|
|
25605
|
+
if (!manifestJson) return null;
|
|
25606
|
+
return require_dist.parseStoredRouteManifest(manifestJson);
|
|
25607
|
+
}
|
|
25608
|
+
//#endregion
|
|
25609
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/build-canvas.ts
|
|
25610
|
+
function indexManifest(entries) {
|
|
25611
|
+
const actions = /* @__PURE__ */ new Map();
|
|
25612
|
+
const agents = /* @__PURE__ */ new Map();
|
|
25613
|
+
const workflows = /* @__PURE__ */ new Map();
|
|
25614
|
+
for (const entry of entries) if (entry.kind === "action") actions.set(entry.slug, entry);
|
|
25615
|
+
else if (entry.kind === "agent") agents.set(entry.slug, entry);
|
|
25616
|
+
else if (entry.kind === "workflow") workflows.set(entry.slug, entry);
|
|
25617
|
+
return {
|
|
25618
|
+
actions,
|
|
25619
|
+
agents,
|
|
25620
|
+
workflows
|
|
25621
|
+
};
|
|
25622
|
+
}
|
|
25623
|
+
function fieldsFromSchema(schema) {
|
|
25624
|
+
return require_dist.jsonSchemaToWorkflowInputSchema(schema ?? {}).fields;
|
|
25625
|
+
}
|
|
25626
|
+
/** A read-only inspector row showing a captured llm option as a literal value. */
|
|
25627
|
+
function llmOptionRow(key, label, value) {
|
|
25628
|
+
return {
|
|
25629
|
+
key,
|
|
25630
|
+
label,
|
|
25631
|
+
type: "string",
|
|
25632
|
+
required: false,
|
|
25633
|
+
binding: { tokens: [{
|
|
25634
|
+
kind: "text",
|
|
25635
|
+
text: value
|
|
25636
|
+
}] }
|
|
25637
|
+
};
|
|
25638
|
+
}
|
|
25639
|
+
/**
|
|
25640
|
+
* Fallback for manifests built before llm option bindings were captured: surface the
|
|
25641
|
+
* literal-only `llmOptions`. New deploys carry `data.inputBindings` on llm nodes and
|
|
25642
|
+
* use {@link llmOptionRowsFromBindings} instead.
|
|
25643
|
+
*/
|
|
25644
|
+
function llmOptionInputs(options) {
|
|
25645
|
+
if (!options) return [];
|
|
25646
|
+
const rows = [];
|
|
25647
|
+
if (options.model) rows.push(llmOptionRow("model", "Model", options.model));
|
|
25648
|
+
if (options.thinkingLevel) rows.push(llmOptionRow("thinkingLevel", "Thinking", options.thinkingLevel));
|
|
25649
|
+
if (typeof options.maxTokens === "number") rows.push(llmOptionRow("maxTokens", "Max tokens", String(options.maxTokens)));
|
|
25650
|
+
if (typeof options.temperature === "number") rows.push(llmOptionRow("temperature", "Temperature", String(options.temperature)));
|
|
25651
|
+
if (options.hasSystemPrompt) rows.push(llmOptionRow("system", "System prompt", "Configured"));
|
|
25652
|
+
if (options.hasOutputSchema) rows.push(llmOptionRow("outputSchema", "Output", "Structured"));
|
|
25653
|
+
return rows;
|
|
25654
|
+
}
|
|
25655
|
+
/** Display labels + render order for known `promptLlm` options. */
|
|
25656
|
+
const LLM_OPTION_LABELS = {
|
|
25657
|
+
model: "Model",
|
|
25658
|
+
system: "System prompt",
|
|
25659
|
+
outputSchema: "Output",
|
|
25660
|
+
maxTokens: "Max tokens",
|
|
25661
|
+
temperature: "Temperature",
|
|
25662
|
+
thinkingLevel: "Thinking"
|
|
25663
|
+
};
|
|
25664
|
+
const LLM_OPTION_ORDER = Object.keys(LLM_OPTION_LABELS);
|
|
25665
|
+
/**
|
|
25666
|
+
* Render the producer-captured llm option bindings as visible inspector rows so
|
|
25667
|
+
* model/system/output appear with the same variable/call/reference chips as action
|
|
25668
|
+
* inputs (e.g. `model: CLASSIFY_MODEL` → a variable chip resolved to its const value).
|
|
25669
|
+
*/
|
|
25670
|
+
function llmOptionRowsFromBindings(rawBindings, labelByNodeId, constants) {
|
|
25671
|
+
const rows = [];
|
|
25672
|
+
const known = new Set(LLM_OPTION_ORDER);
|
|
25673
|
+
for (const key of LLM_OPTION_ORDER) {
|
|
25674
|
+
const raw = rawBindings[key];
|
|
25675
|
+
if (!raw) continue;
|
|
25676
|
+
rows.push({
|
|
25677
|
+
key,
|
|
25678
|
+
label: LLM_OPTION_LABELS[key] ?? key,
|
|
25679
|
+
type: "string",
|
|
25680
|
+
required: false,
|
|
25681
|
+
binding: resolveBinding(raw, labelByNodeId, constants)
|
|
25682
|
+
});
|
|
25683
|
+
}
|
|
25684
|
+
for (const [key, raw] of Object.entries(rawBindings)) {
|
|
25685
|
+
if (known.has(key)) continue;
|
|
25686
|
+
rows.push({
|
|
25687
|
+
key,
|
|
25688
|
+
label: key,
|
|
25689
|
+
type: "string",
|
|
25690
|
+
required: false,
|
|
25691
|
+
additional: true,
|
|
25692
|
+
binding: resolveBinding(raw, labelByNodeId, constants)
|
|
25693
|
+
});
|
|
25694
|
+
}
|
|
25695
|
+
return rows;
|
|
25696
|
+
}
|
|
25697
|
+
/** The concrete value a binding resolves to, if it's a single literal/known-const token. */
|
|
25698
|
+
function resolvedScalar(raw, constants) {
|
|
25699
|
+
if (!raw || raw.tokens.length !== 1) return;
|
|
25700
|
+
const token = raw.tokens[0];
|
|
25701
|
+
if (token.kind === "text") return token.text;
|
|
25702
|
+
if (token.kind === "variable") {
|
|
25703
|
+
const value = constants?.[token.text];
|
|
25704
|
+
return value !== void 0 ? String(value) : void 0;
|
|
25705
|
+
}
|
|
25706
|
+
}
|
|
25707
|
+
/** Resolve a raw producer binding into the inspector binding, filling source labels + const values. */
|
|
25708
|
+
function resolveBinding(raw, labelByNodeId, constants) {
|
|
25709
|
+
return {
|
|
25710
|
+
tokens: raw.tokens.map((token) => {
|
|
25711
|
+
if (token.kind === "text") return {
|
|
25712
|
+
kind: "text",
|
|
25713
|
+
text: token.text
|
|
25714
|
+
};
|
|
25715
|
+
if (token.kind === "call") return {
|
|
25716
|
+
kind: "call",
|
|
25717
|
+
name: token.name
|
|
25718
|
+
};
|
|
25719
|
+
if (token.kind === "variable") {
|
|
25720
|
+
const value = constants?.[token.text];
|
|
25721
|
+
return {
|
|
25722
|
+
kind: "variable",
|
|
25723
|
+
text: token.text,
|
|
25724
|
+
...value !== void 0 ? { resolvedValue: String(value) } : {}
|
|
25725
|
+
};
|
|
25726
|
+
}
|
|
25727
|
+
const sourceLabel = token.sourceNodeId ? labelByNodeId.get(token.sourceNodeId) ?? token.sourceNodeId : "";
|
|
25728
|
+
return {
|
|
25729
|
+
kind: "reference",
|
|
25730
|
+
...token.sourceNodeId ? { sourceNodeId: token.sourceNodeId } : {},
|
|
25731
|
+
sourceLabel,
|
|
25732
|
+
...token.field ? { field: token.field } : {}
|
|
25733
|
+
};
|
|
25734
|
+
}),
|
|
25735
|
+
...raw.multiline ? { multiline: true } : {}
|
|
25736
|
+
};
|
|
25737
|
+
}
|
|
25738
|
+
/** Attach call-site value bindings to a step's inspector inputs (returns a new inputs list). */
|
|
25739
|
+
function inputsWithBindings(inputs, rawBindings, labelByNodeId, constants) {
|
|
25740
|
+
const matched = /* @__PURE__ */ new Set();
|
|
25741
|
+
const result = inputs.map((field) => {
|
|
25742
|
+
const raw = rawBindings[field.key];
|
|
25743
|
+
if (!raw) return field;
|
|
25744
|
+
matched.add(field.key);
|
|
25745
|
+
return {
|
|
25746
|
+
...field,
|
|
25747
|
+
binding: resolveBinding(raw, labelByNodeId, constants)
|
|
25748
|
+
};
|
|
25749
|
+
});
|
|
25750
|
+
for (const [key, raw] of Object.entries(rawBindings)) {
|
|
25751
|
+
if (matched.has(key)) continue;
|
|
25752
|
+
result.push({
|
|
25753
|
+
key,
|
|
25754
|
+
label: key,
|
|
25755
|
+
type: "string",
|
|
25756
|
+
required: false,
|
|
25757
|
+
additional: true,
|
|
25758
|
+
binding: resolveBinding(raw, labelByNodeId, constants)
|
|
25759
|
+
});
|
|
25760
|
+
}
|
|
25761
|
+
return result;
|
|
25762
|
+
}
|
|
25763
|
+
/**
|
|
25764
|
+
* Authored metadata for a single `step` node, resolved from its deploy-time `data.slug`
|
|
25765
|
+
* + `data.callKind` against the manifest. v1 omits call-site input bindings (the producer
|
|
25766
|
+
* does not capture argument expressions yet). Returns null for steps the inspector can
|
|
25767
|
+
* describe from the graph alone (wait/hook) or that can't be resolved.
|
|
25768
|
+
*/
|
|
25769
|
+
function stepMeta(node, index) {
|
|
25770
|
+
const slug = node.data.slug;
|
|
25771
|
+
const callKind = node.data.callKind;
|
|
25772
|
+
const appSlug = node.data.appSlug;
|
|
25773
|
+
if (callKind === "agent") {
|
|
25774
|
+
const agent = slug ? index.agents.get(slug) : void 0;
|
|
25775
|
+
return {
|
|
25776
|
+
kind: "agent",
|
|
25777
|
+
slug: slug ?? node.data.label,
|
|
25778
|
+
name: agent?.name ?? (node.data.label || "Agent"),
|
|
25779
|
+
description: agent?.description ?? "",
|
|
25780
|
+
...appSlug ? { appSlug } : {},
|
|
25781
|
+
inputs: [],
|
|
25782
|
+
outputs: [],
|
|
25783
|
+
...agent?.appSlugs.length ? { requiredApps: agent.appSlugs } : {},
|
|
25784
|
+
...agent?.model ? { model: agent.model } : {},
|
|
25785
|
+
...agent ? { toolCount: agent.toolCount } : {}
|
|
25786
|
+
};
|
|
25787
|
+
}
|
|
25788
|
+
if (callKind === "llm") return {
|
|
25789
|
+
kind: "llm",
|
|
25790
|
+
slug: slug ?? "llm",
|
|
25791
|
+
name: node.data.label || "LLM prompt",
|
|
25792
|
+
...node.data.llmOptions?.model ? { model: node.data.llmOptions.model } : {},
|
|
25793
|
+
inputs: node.data.inputBindings ? [] : llmOptionInputs(node.data.llmOptions),
|
|
25794
|
+
outputs: []
|
|
25795
|
+
};
|
|
25796
|
+
if (callKind === "workflow-step") {
|
|
25797
|
+
const action = slug ? index.actions.get(slug) : void 0;
|
|
25798
|
+
if (action) return {
|
|
25799
|
+
kind: "action",
|
|
25800
|
+
slug: action.slug,
|
|
25801
|
+
name: action.name,
|
|
25802
|
+
description: action.description,
|
|
25803
|
+
...appSlug ? {
|
|
25804
|
+
appSlug,
|
|
25805
|
+
requiredApps: [appSlug]
|
|
25806
|
+
} : {},
|
|
25807
|
+
inputs: fieldsFromSchema(action.inputSchema),
|
|
25808
|
+
outputs: fieldsFromSchema(action.outputSchema)
|
|
25809
|
+
};
|
|
25810
|
+
const childWorkflow = slug ? index.workflows.get(slug) : void 0;
|
|
25811
|
+
if (childWorkflow) return {
|
|
25812
|
+
kind: "workflow",
|
|
25813
|
+
slug: childWorkflow.slug,
|
|
25814
|
+
name: childWorkflow.name,
|
|
25815
|
+
description: childWorkflow.description,
|
|
25816
|
+
inputs: fieldsFromSchema(childWorkflow.requestSchema),
|
|
25817
|
+
outputs: fieldsFromSchema(childWorkflow.responseSchema)
|
|
25818
|
+
};
|
|
25819
|
+
return {
|
|
25820
|
+
kind: "action",
|
|
25821
|
+
slug: slug ?? node.data.label,
|
|
25822
|
+
name: node.data.label || slug || "Action",
|
|
25823
|
+
...appSlug ? {
|
|
25824
|
+
appSlug,
|
|
25825
|
+
requiredApps: [appSlug]
|
|
25826
|
+
} : {},
|
|
25827
|
+
inputs: [],
|
|
25828
|
+
outputs: []
|
|
25829
|
+
};
|
|
25830
|
+
}
|
|
25831
|
+
return null;
|
|
25832
|
+
}
|
|
25833
|
+
/**
|
|
25834
|
+
* Assemble the read-only `WorkflowCanvas` deterministic part: the deploy-time AST skeleton
|
|
25835
|
+
* with manifest trigger-source node(s) prepended and the authored-metadata join keyed by
|
|
25836
|
+
* node id. Pure (no I/O) so it is unit-testable; the route gathers the manifest + workspace
|
|
25837
|
+
* triggers and the LLM annotation layer separately.
|
|
25838
|
+
*/
|
|
25839
|
+
function buildWorkflowCanvas(input) {
|
|
25840
|
+
const { workflowSlug, workflowEntry, entries, triggers } = input;
|
|
25841
|
+
const flowGraph = workflowEntry.flowGraph ?? {
|
|
25842
|
+
nodes: [],
|
|
25843
|
+
edges: []
|
|
25844
|
+
};
|
|
25845
|
+
const constants = flowGraph.constants;
|
|
25846
|
+
const index = indexManifest(entries);
|
|
25847
|
+
const nodeMetadata = {};
|
|
25848
|
+
const attached = triggers.filter((trigger) => trigger.assignments.some((assignment) => assignment.kind === "workflow" && assignment.slug === workflowSlug));
|
|
25849
|
+
const triggerNodes = [];
|
|
25850
|
+
const triggerEdges = [];
|
|
25851
|
+
const workflowInputFields = fieldsFromSchema(workflowEntry.requestSchema);
|
|
25852
|
+
if (attached.length === 0) {
|
|
25853
|
+
const id = "trigger-manual";
|
|
25854
|
+
triggerNodes.push({
|
|
25855
|
+
id,
|
|
25856
|
+
nodeType: "trigger-source",
|
|
25857
|
+
data: {
|
|
25858
|
+
label: "Manual / API",
|
|
25859
|
+
triggerType: "manual"
|
|
25860
|
+
}
|
|
25861
|
+
});
|
|
25862
|
+
triggerEdges.push({
|
|
25863
|
+
id: "edge-trigger-manual",
|
|
25864
|
+
source: id,
|
|
25865
|
+
target: "entry"
|
|
25866
|
+
});
|
|
25867
|
+
nodeMetadata[id] = {
|
|
25868
|
+
kind: "trigger",
|
|
25869
|
+
slug: "manual",
|
|
25870
|
+
name: "Manual / API",
|
|
25871
|
+
inputs: [],
|
|
25872
|
+
outputs: workflowInputFields
|
|
25873
|
+
};
|
|
25874
|
+
} else attached.forEach((trigger, i) => {
|
|
25875
|
+
const id = `trigger-${trigger.slug}`;
|
|
25876
|
+
triggerNodes.push({
|
|
25877
|
+
id,
|
|
25878
|
+
nodeType: "trigger-source",
|
|
25879
|
+
data: {
|
|
25880
|
+
label: trigger.name,
|
|
25881
|
+
triggerType: trigger.type
|
|
25882
|
+
}
|
|
25883
|
+
});
|
|
25884
|
+
triggerEdges.push({
|
|
25885
|
+
id: `edge-trigger-${i}`,
|
|
25886
|
+
source: id,
|
|
25887
|
+
target: "entry"
|
|
25888
|
+
});
|
|
25889
|
+
nodeMetadata[id] = {
|
|
25890
|
+
kind: "trigger",
|
|
25891
|
+
slug: trigger.slug,
|
|
25892
|
+
name: trigger.name,
|
|
25893
|
+
description: trigger.description,
|
|
25894
|
+
inputs: [],
|
|
25895
|
+
outputs: []
|
|
25896
|
+
};
|
|
25897
|
+
});
|
|
25898
|
+
const codeBlocks = [];
|
|
25899
|
+
for (const node of flowGraph.nodes) {
|
|
25900
|
+
if (node.nodeType === "entry") {
|
|
25901
|
+
nodeMetadata[node.id] = {
|
|
25902
|
+
kind: "boundary",
|
|
25903
|
+
slug: "entry",
|
|
25904
|
+
name: "Start",
|
|
25905
|
+
inputs: workflowInputFields,
|
|
25906
|
+
outputs: workflowInputFields
|
|
25907
|
+
};
|
|
25908
|
+
continue;
|
|
25909
|
+
}
|
|
25910
|
+
if (node.nodeType === "exit") {
|
|
25911
|
+
const outputFields = fieldsFromSchema(workflowEntry.responseSchema);
|
|
25912
|
+
nodeMetadata[node.id] = {
|
|
25913
|
+
kind: "boundary",
|
|
25914
|
+
slug: "exit",
|
|
25915
|
+
name: "Output",
|
|
25916
|
+
inputs: outputFields,
|
|
25917
|
+
outputs: outputFields
|
|
25918
|
+
};
|
|
25919
|
+
continue;
|
|
25920
|
+
}
|
|
25921
|
+
if (node.nodeType === "code-block") {
|
|
25922
|
+
codeBlocks.push({
|
|
25923
|
+
nodeId: node.id,
|
|
25924
|
+
source: node.data.label
|
|
25925
|
+
});
|
|
25926
|
+
continue;
|
|
25927
|
+
}
|
|
25928
|
+
if (node.nodeType === "step") {
|
|
25929
|
+
const meta = stepMeta(node, index);
|
|
25930
|
+
if (meta) nodeMetadata[node.id] = meta;
|
|
25931
|
+
}
|
|
25932
|
+
}
|
|
25933
|
+
const labelByNodeId = /* @__PURE__ */ new Map();
|
|
25934
|
+
for (const [id, meta] of Object.entries(nodeMetadata)) labelByNodeId.set(id, meta.name);
|
|
25935
|
+
for (const node of flowGraph.nodes) if (!labelByNodeId.has(node.id)) labelByNodeId.set(node.id, node.data.label);
|
|
25936
|
+
for (const node of flowGraph.nodes) {
|
|
25937
|
+
const rawBindings = node.data.inputBindings;
|
|
25938
|
+
const meta = nodeMetadata[node.id];
|
|
25939
|
+
if (node.nodeType !== "step" || !rawBindings || !meta) continue;
|
|
25940
|
+
if (node.data.callKind === "llm") {
|
|
25941
|
+
meta.inputs = llmOptionRowsFromBindings(rawBindings, labelByNodeId, constants);
|
|
25942
|
+
if (!meta.model) {
|
|
25943
|
+
const resolvedModel = resolvedScalar(rawBindings.model, constants);
|
|
25944
|
+
if (resolvedModel) meta.model = resolvedModel;
|
|
25945
|
+
}
|
|
25946
|
+
} else meta.inputs = inputsWithBindings(meta.inputs, rawBindings, labelByNodeId, constants);
|
|
25947
|
+
}
|
|
25948
|
+
return {
|
|
25949
|
+
graph: {
|
|
25950
|
+
nodes: [...triggerNodes, ...flowGraph.nodes],
|
|
25951
|
+
edges: [...triggerEdges, ...flowGraph.edges]
|
|
25952
|
+
},
|
|
25953
|
+
nodeMetadata,
|
|
25954
|
+
codeBlocks
|
|
25955
|
+
};
|
|
25956
|
+
}
|
|
25957
|
+
//#endregion
|
|
25958
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/GET.ts
|
|
25959
|
+
/** Bumped when the annotation prompt/model changes, so cached annotations invalidate. */
|
|
25960
|
+
const ANNOTATIONS_GENERATOR_VERSION = "wf-canvas-annotations-v1";
|
|
25961
|
+
const handler$68 = async (c) => {
|
|
25962
|
+
const { organizationId } = c.get("organization");
|
|
25963
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
25964
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
25965
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
25966
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
25967
|
+
const { row, projectId } = resolved;
|
|
25968
|
+
const manifest = await loadActiveManifest(projectId);
|
|
25969
|
+
const workflowEntry = manifest?.entries.find((entry) => entry.kind === "workflow" && entry.slug === row.slug);
|
|
25970
|
+
if (!workflowEntry || workflowEntry.kind !== "workflow" || !workflowEntry.flowGraph) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Canvas not available" }), 404);
|
|
25971
|
+
const triggers = await (0, _keystrokehq_database.listWorkspaceTriggers)([projectId]);
|
|
25972
|
+
const { graph, nodeMetadata, codeBlocks } = buildWorkflowCanvas({
|
|
25973
|
+
workflowSlug: row.slug,
|
|
25974
|
+
workflowEntry,
|
|
25975
|
+
entries: manifest?.entries ?? [],
|
|
25976
|
+
triggers
|
|
25977
|
+
});
|
|
25978
|
+
const model = require_dist.DEFAULT_WORKFLOW_CANVAS_MODEL;
|
|
25979
|
+
const graphHash = (0, node_crypto.createHash)("sha256").update(JSON.stringify(workflowEntry.flowGraph)).digest("hex");
|
|
25980
|
+
const hash = (0, node_crypto.createHash)("sha256").update(JSON.stringify({
|
|
25981
|
+
source: workflowEntry.flowGraphSourceHash ?? "",
|
|
25982
|
+
graph: graphHash,
|
|
25983
|
+
model,
|
|
25984
|
+
version: ANNOTATIONS_GENERATOR_VERSION
|
|
25985
|
+
})).digest("hex");
|
|
25986
|
+
if (codeBlocks.length === 0) return c.json(require_dist.WorkflowCanvasSchema.parse({
|
|
25987
|
+
graph,
|
|
25988
|
+
nodeMetadata,
|
|
25989
|
+
annotations: {},
|
|
25990
|
+
status: "ready",
|
|
25991
|
+
hash,
|
|
25992
|
+
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
25993
|
+
model
|
|
25994
|
+
}));
|
|
25995
|
+
const cache = await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.selectWorkflowCanvasAnnotations)(workflowId));
|
|
25996
|
+
const cached = cache?.annotations ?? {};
|
|
25997
|
+
if (cache && cache.hash === hash) {
|
|
25998
|
+
if (cache.status === "ready" || cache.status === "failed") return c.json(require_dist.WorkflowCanvasSchema.parse({
|
|
25999
|
+
graph,
|
|
26000
|
+
nodeMetadata,
|
|
26001
|
+
annotations: cached,
|
|
26002
|
+
status: "ready",
|
|
26003
|
+
hash,
|
|
26004
|
+
generatedAt: cache.generatedAt ? cache.generatedAt.toISOString() : (/* @__PURE__ */ new Date()).toISOString(),
|
|
26005
|
+
model: cache.model ?? model
|
|
26006
|
+
}));
|
|
26007
|
+
if (cache.status === "generating") return c.json(require_dist.WorkflowCanvasSchema.parse({
|
|
26008
|
+
graph,
|
|
26009
|
+
nodeMetadata,
|
|
26010
|
+
annotations: cached,
|
|
26011
|
+
status: "generating",
|
|
26012
|
+
hash,
|
|
26013
|
+
generatedAt: null,
|
|
26014
|
+
model: cache.model ?? model
|
|
26015
|
+
}));
|
|
26016
|
+
}
|
|
26017
|
+
const organization = await (0, _keystrokehq_platform_database.selectOrganizationById)(organizationId);
|
|
26018
|
+
if (!organization) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
26019
|
+
await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.setWorkflowCanvasAnnotationsGenerating)(workflowId, hash));
|
|
26020
|
+
try {
|
|
26021
|
+
await (await (0, _keystrokehq_http.getProjectScheduler)(organization, projectId)).enqueue({
|
|
26022
|
+
kind: "workflow-canvas-annotations",
|
|
26023
|
+
targetId: workflowId,
|
|
26024
|
+
runId: crypto.randomUUID(),
|
|
26025
|
+
trigger: "api",
|
|
26026
|
+
projectId,
|
|
26027
|
+
dedupeKey: `workflow-canvas:${workflowId}:${hash}`,
|
|
26028
|
+
payload: {
|
|
26029
|
+
workflowId,
|
|
26030
|
+
projectId,
|
|
26031
|
+
hash,
|
|
26032
|
+
model,
|
|
26033
|
+
input: {
|
|
26034
|
+
workflowName: row.name.trim(),
|
|
26035
|
+
workflowDescription: row.description.trim(),
|
|
26036
|
+
codeBlocks
|
|
26037
|
+
}
|
|
26038
|
+
}
|
|
26039
|
+
});
|
|
26040
|
+
} catch {
|
|
26041
|
+
await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.updateWorkflowCanvasAnnotations)(workflowId, { status: "failed" }));
|
|
26042
|
+
return c.json(require_dist.WorkflowCanvasSchema.parse({
|
|
26043
|
+
graph,
|
|
26044
|
+
nodeMetadata,
|
|
26045
|
+
annotations: {},
|
|
26046
|
+
status: "ready",
|
|
26047
|
+
hash,
|
|
26048
|
+
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
26049
|
+
model
|
|
26050
|
+
}));
|
|
26051
|
+
}
|
|
26052
|
+
return c.json(require_dist.WorkflowCanvasSchema.parse({
|
|
26053
|
+
graph,
|
|
26054
|
+
nodeMetadata,
|
|
26055
|
+
annotations: {},
|
|
26056
|
+
status: "generating",
|
|
26057
|
+
hash,
|
|
26058
|
+
generatedAt: null,
|
|
26059
|
+
model
|
|
26060
|
+
}));
|
|
26061
|
+
};
|
|
26062
|
+
//#endregion
|
|
26063
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/build-credential-requirements.ts
|
|
26064
|
+
/**
|
|
26065
|
+
* Collect each step node's credential requirements by joining its `data.slug` to
|
|
26066
|
+
* the manifest action (`requirements`) or agent (`toolRequirements`, flattened
|
|
26067
|
+
* and de-duped by key). Pure: the route resolves each requirement live. Nodes
|
|
26068
|
+
* with no requirement are omitted.
|
|
26069
|
+
*/
|
|
26070
|
+
function collectStepCredentialRequirements(flowGraph, entries) {
|
|
26071
|
+
const actions = /* @__PURE__ */ new Map();
|
|
26072
|
+
const agents = /* @__PURE__ */ new Map();
|
|
26073
|
+
for (const entry of entries) if (entry.kind === "action") actions.set(entry.slug, entry);
|
|
26074
|
+
else if (entry.kind === "agent") agents.set(entry.slug, entry);
|
|
26075
|
+
const result = [];
|
|
26076
|
+
for (const node of flowGraph.nodes) {
|
|
26077
|
+
if (node.nodeType !== "step" || !node.data.slug) continue;
|
|
26078
|
+
let requirements;
|
|
26079
|
+
if (node.data.callKind === "agent") {
|
|
26080
|
+
const agent = agents.get(node.data.slug);
|
|
26081
|
+
requirements = agent?.toolRequirements ? dedupeByKey(Object.values(agent.toolRequirements).flat()) : void 0;
|
|
26082
|
+
} else requirements = actions.get(node.data.slug)?.requirements;
|
|
26083
|
+
if (requirements && requirements.length > 0) result.push({
|
|
26084
|
+
nodeId: node.id,
|
|
26085
|
+
requirements
|
|
26086
|
+
});
|
|
26087
|
+
}
|
|
26088
|
+
return result;
|
|
26089
|
+
}
|
|
26090
|
+
function dedupeByKey(requirements) {
|
|
26091
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
26092
|
+
for (const requirement of requirements) if (!byKey.has(requirement.key)) byKey.set(requirement.key, requirement);
|
|
26093
|
+
return [...byKey.values()];
|
|
26094
|
+
}
|
|
26095
|
+
//#endregion
|
|
26096
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/credentials/GET.ts
|
|
26097
|
+
function toResolvedCredential(row) {
|
|
26098
|
+
return {
|
|
26099
|
+
id: row.id,
|
|
26100
|
+
name: row.name ?? row.label ?? row.appSlug,
|
|
26101
|
+
scope: row.scopeType,
|
|
26102
|
+
appSlug: row.appSlug,
|
|
26103
|
+
isDefault: Boolean(row.isDefault),
|
|
26104
|
+
...row.scopeType === "project" && row.scopeId ? { projectId: row.scopeId } : {}
|
|
26105
|
+
};
|
|
26106
|
+
}
|
|
26107
|
+
function toBinding(key, description) {
|
|
26108
|
+
const base = {
|
|
26109
|
+
credentialKey: key,
|
|
26110
|
+
label: key,
|
|
26111
|
+
appSlug: key
|
|
26112
|
+
};
|
|
26113
|
+
if (description.policy === "unresolved") return {
|
|
26114
|
+
...base,
|
|
26115
|
+
policy: "unresolved",
|
|
26116
|
+
reason: description.reason,
|
|
26117
|
+
...description.pinnedScope ? { pinnedScope: description.pinnedScope } : {}
|
|
26118
|
+
};
|
|
26119
|
+
if (description.policy === "scope-pinned") return {
|
|
26120
|
+
...base,
|
|
26121
|
+
policy: "scope-pinned",
|
|
26122
|
+
pinnedScope: description.pinnedScope,
|
|
26123
|
+
instance: toResolvedCredential(description.row)
|
|
26124
|
+
};
|
|
26125
|
+
return {
|
|
26126
|
+
...base,
|
|
26127
|
+
policy: description.policy,
|
|
26128
|
+
instance: toResolvedCredential(description.row)
|
|
26129
|
+
};
|
|
26130
|
+
}
|
|
26131
|
+
/**
|
|
26132
|
+
* Live credential overlay: for each step node, resolve which credential instance
|
|
26133
|
+
* each of its requirements currently binds to (read-only, no decryption). Not
|
|
26134
|
+
* content-hash cached — credential state changes without a redeploy.
|
|
26135
|
+
*/
|
|
26136
|
+
const handler$67 = async (c) => {
|
|
26137
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26138
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26139
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26140
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26141
|
+
const { row, projectId } = resolved;
|
|
26142
|
+
const manifest = await loadActiveManifest(projectId);
|
|
26143
|
+
const workflowEntry = manifest?.entries.find((entry) => entry.kind === "workflow" && entry.slug === row.slug);
|
|
26144
|
+
if (!workflowEntry || workflowEntry.kind !== "workflow" || !workflowEntry.flowGraph) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Canvas not available" }), 404);
|
|
26145
|
+
const nodeRequirements = collectStepCredentialRequirements(workflowEntry.flowGraph, manifest?.entries ?? []);
|
|
26146
|
+
const userId = c.get("user").id;
|
|
26147
|
+
const bindings = await (0, _keystrokehq_database.runWithProjectScope)(projectId, async () => {
|
|
26148
|
+
const context = await require_dist.withCredentialAssignments({
|
|
26149
|
+
orgId: (0, _keystrokehq_database.getServerTenantScopeId)(),
|
|
26150
|
+
projectId: (0, _keystrokehq_database.getProjectScopeId)(),
|
|
26151
|
+
userId,
|
|
26152
|
+
selection: {}
|
|
26153
|
+
}, {
|
|
26154
|
+
targetType: "workflow",
|
|
26155
|
+
targetKey: row.slug
|
|
26156
|
+
});
|
|
26157
|
+
const result = {};
|
|
26158
|
+
for (const { nodeId, requirements } of nodeRequirements) {
|
|
26159
|
+
const consumerId = `step:${nodeId}`;
|
|
26160
|
+
const nodeBindings = [];
|
|
26161
|
+
for (const requirement of requirements) {
|
|
26162
|
+
const description = await require_dist.describeCredentialBinding({
|
|
26163
|
+
key: requirement.key,
|
|
26164
|
+
...requirement.scope ? { scope: requirement.scope } : {},
|
|
26165
|
+
consumerId,
|
|
26166
|
+
context
|
|
26167
|
+
});
|
|
26168
|
+
nodeBindings.push(toBinding(requirement.key, description));
|
|
26169
|
+
}
|
|
26170
|
+
if (nodeBindings.length > 0) result[nodeId] = nodeBindings;
|
|
26171
|
+
}
|
|
26172
|
+
return result;
|
|
26173
|
+
});
|
|
26174
|
+
return c.json(require_dist.WorkflowCanvasCredentialBindingsSchema.parse(bindings));
|
|
26175
|
+
};
|
|
26176
|
+
//#endregion
|
|
26177
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/build-run-overlay.ts
|
|
26178
|
+
const STEP_PREFIX = "step:";
|
|
26179
|
+
/**
|
|
26180
|
+
* `step:<callSiteId>#<occurrence>` → `<callSiteId>` (the canvas node id). The
|
|
26181
|
+
* build-injected call-site id IS the node id, so stripping the `step:` prefix and
|
|
26182
|
+
* the `#<occurrence>` suffix lands a run event on its graph node 1:1.
|
|
26183
|
+
*/
|
|
26184
|
+
function nodeIdFromCorrelation(correlationId) {
|
|
26185
|
+
if (!correlationId.startsWith(STEP_PREFIX)) return null;
|
|
26186
|
+
const rest = correlationId.slice(5);
|
|
26187
|
+
const hash = rest.lastIndexOf("#");
|
|
26188
|
+
return hash === -1 ? rest : rest.slice(0, hash);
|
|
26189
|
+
}
|
|
26190
|
+
function loopTotal(counts) {
|
|
26191
|
+
return counts.reduce((max, n) => n > max ? n : max, 0);
|
|
26192
|
+
}
|
|
26193
|
+
/**
|
|
26194
|
+
* Project a workflow run's durable event log onto the canvas skeleton: a per-node
|
|
26195
|
+
* `WorkflowCanvasNodeRunState` keyed by the SAME node ids as the graph. Pure (no
|
|
26196
|
+
* I/O) so it is unit-testable; the route supplies the graph, events, and status.
|
|
26197
|
+
*
|
|
26198
|
+
* Overlay policy (v1 — step-exact, structure-conservative):
|
|
26199
|
+
* - **Steps** (incl. hook/sleep): exact from replay events.
|
|
26200
|
+
* - **Decision / merge / loop-start / trigger-source**: neutral — no run state.
|
|
26201
|
+
* - **Exit nodes**: succeeded only when the graph has a single Output terminal
|
|
26202
|
+
* and the run succeeded (high confidence). Multiple outputs stay neutral until
|
|
26203
|
+
* path telemetry lands — we do not infer branch-taken paths heuristically.
|
|
26204
|
+
*
|
|
26205
|
+
* Step rules:
|
|
26206
|
+
* - `step_completed` → that node `succeeded`; repeated completions (loop body)
|
|
26207
|
+
* fold onto the one node with an `iteration` counter.
|
|
26208
|
+
* - a step that only `step_failed`/`step_retrying` (never completed) on a
|
|
26209
|
+
* non-succeeded run → `failed`.
|
|
26210
|
+
* - same-file `code-block` nodes light from their `containedCallSiteIds`.
|
|
26211
|
+
* - on a succeeded run, never-executed step/code-block/loop nodes → `skipped`
|
|
26212
|
+
* (a not-taken branch). On failed/canceled/running runs, unreached nodes are
|
|
26213
|
+
* left neutral (we can't yet distinguish not-taken from not-yet-reached).
|
|
26214
|
+
*/
|
|
26215
|
+
function buildRunOverlay(input) {
|
|
26216
|
+
const { graph, events, runStatus } = input;
|
|
26217
|
+
const succeeded = runStatus === "succeeded";
|
|
26218
|
+
const completions = /* @__PURE__ */ new Map();
|
|
26219
|
+
const retried = /* @__PURE__ */ new Set();
|
|
26220
|
+
const waiting = /* @__PURE__ */ new Set();
|
|
26221
|
+
for (const event of events) {
|
|
26222
|
+
if (!event.correlationId) continue;
|
|
26223
|
+
const nodeId = nodeIdFromCorrelation(event.correlationId);
|
|
26224
|
+
if (!nodeId) continue;
|
|
26225
|
+
if (event.type === "step_completed" || event.type === "hook_resumed" || event.type === "sleep_completed") completions.set(nodeId, (completions.get(nodeId) ?? 0) + 1);
|
|
26226
|
+
else if (event.type === "step_failed" || event.type === "step_retrying") retried.add(nodeId);
|
|
26227
|
+
else if (event.type === "hook_created" || event.type === "sleep_scheduled") waiting.add(nodeId);
|
|
26228
|
+
}
|
|
26229
|
+
const isFailed = (nodeId) => !succeeded && retried.has(nodeId) && !completions.has(nodeId);
|
|
26230
|
+
const states = {};
|
|
26231
|
+
const childrenByParent = /* @__PURE__ */ new Map();
|
|
26232
|
+
for (const node of graph.nodes) if (node.parentId) {
|
|
26233
|
+
const bucket = childrenByParent.get(node.parentId) ?? [];
|
|
26234
|
+
bucket.push(node.id);
|
|
26235
|
+
childrenByParent.set(node.parentId, bucket);
|
|
26236
|
+
}
|
|
26237
|
+
for (const node of graph.nodes) {
|
|
26238
|
+
if (node.nodeType === "entry") {
|
|
26239
|
+
states[node.id] = { status: "succeeded" };
|
|
26240
|
+
continue;
|
|
26241
|
+
}
|
|
26242
|
+
if (node.nodeType === "step") {
|
|
26243
|
+
const count = completions.get(node.id) ?? 0;
|
|
26244
|
+
if (count > 0) states[node.id] = count > 1 ? {
|
|
26245
|
+
status: "succeeded",
|
|
26246
|
+
iteration: {
|
|
26247
|
+
index: count - 1,
|
|
26248
|
+
total: count
|
|
26249
|
+
}
|
|
26250
|
+
} : { status: "succeeded" };
|
|
26251
|
+
else if (isFailed(node.id)) states[node.id] = { status: "failed" };
|
|
26252
|
+
else if (waiting.has(node.id)) states[node.id] = { status: "running" };
|
|
26253
|
+
else if (succeeded) states[node.id] = { status: "skipped" };
|
|
26254
|
+
continue;
|
|
26255
|
+
}
|
|
26256
|
+
if (node.nodeType === "code-block") {
|
|
26257
|
+
const contained = node.data.containedCallSiteIds ?? [];
|
|
26258
|
+
const ran = contained.some((id) => completions.has(id));
|
|
26259
|
+
if (contained.some((id) => isFailed(id))) states[node.id] = { status: "failed" };
|
|
26260
|
+
else if (ran) states[node.id] = { status: "succeeded" };
|
|
26261
|
+
else if (succeeded) states[node.id] = { status: "skipped" };
|
|
26262
|
+
continue;
|
|
26263
|
+
}
|
|
26264
|
+
if (node.nodeType === "loop" || node.nodeType === "parallel") {
|
|
26265
|
+
const children = childrenByParent.get(node.id) ?? [];
|
|
26266
|
+
const total = loopTotal(children.map((id) => completions.get(id) ?? 0));
|
|
26267
|
+
if (children.some((id) => isFailed(id))) states[node.id] = { status: "failed" };
|
|
26268
|
+
else if (total > 0) states[node.id] = node.nodeType === "loop" && total > 1 ? {
|
|
26269
|
+
status: "succeeded",
|
|
26270
|
+
iteration: {
|
|
26271
|
+
index: total - 1,
|
|
26272
|
+
total
|
|
26273
|
+
}
|
|
26274
|
+
} : { status: "succeeded" };
|
|
26275
|
+
else if (succeeded) states[node.id] = { status: "skipped" };
|
|
26276
|
+
continue;
|
|
26277
|
+
}
|
|
26278
|
+
}
|
|
26279
|
+
const exits = graph.nodes.filter((node) => node.nodeType === "exit");
|
|
26280
|
+
if (succeeded && exits.length === 1) states[exits[0].id] = { status: "succeeded" };
|
|
26281
|
+
return states;
|
|
26282
|
+
}
|
|
26283
|
+
//#endregion
|
|
26284
|
+
//#region src/routes/account/workflows/[workflowId]/canvas/runs/[runId]/GET.ts
|
|
26285
|
+
function toCanvasRunStatus(status) {
|
|
26286
|
+
if (status === "completed") return "succeeded";
|
|
26287
|
+
if (status === "failed") return "failed";
|
|
26288
|
+
if (status === "canceled") return "canceled";
|
|
26289
|
+
return "running";
|
|
26290
|
+
}
|
|
26291
|
+
const handler$66 = async (c) => {
|
|
26292
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26293
|
+
const runId = c.req.param("runId") ?? "";
|
|
26294
|
+
if (!workflowId.trim() || !runId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow or run id" }), 400);
|
|
26295
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26296
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26297
|
+
const { row, projectId } = resolved;
|
|
26298
|
+
const run = await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.selectWorkflowRunForWorkflow)(row.slug, runId));
|
|
26299
|
+
if (!run) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Run not found" }), 404);
|
|
26300
|
+
const manifest = await loadActiveManifest(projectId);
|
|
26301
|
+
const workflowEntry = manifest?.entries.find((entry) => entry.kind === "workflow" && entry.slug === row.slug);
|
|
26302
|
+
if (!workflowEntry || workflowEntry.kind !== "workflow" || !workflowEntry.flowGraph) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Canvas not available" }), 404);
|
|
26303
|
+
const triggers = await (0, _keystrokehq_database.listWorkspaceTriggers)([projectId]);
|
|
26304
|
+
const { graph } = buildWorkflowCanvas({
|
|
26305
|
+
workflowSlug: row.slug,
|
|
26306
|
+
workflowEntry,
|
|
26307
|
+
entries: manifest?.entries ?? [],
|
|
26308
|
+
triggers
|
|
26309
|
+
});
|
|
26310
|
+
const events = await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.listReplayEvents)(runId));
|
|
26311
|
+
const runStatus = toCanvasRunStatus(run.status);
|
|
26312
|
+
const nodeStates = buildRunOverlay({
|
|
26313
|
+
graph,
|
|
26314
|
+
events,
|
|
26315
|
+
runStatus
|
|
26316
|
+
});
|
|
26317
|
+
return c.json(require_dist.WorkflowCanvasRunSchema.parse({
|
|
26318
|
+
runId,
|
|
26319
|
+
status: runStatus,
|
|
26320
|
+
startedAt: (run.startedAt ?? run.triggeredAt).toISOString(),
|
|
26321
|
+
finishedAt: run.finishedAt ? run.finishedAt.toISOString() : null,
|
|
26322
|
+
nodeStates
|
|
26323
|
+
}));
|
|
26324
|
+
};
|
|
26325
|
+
//#endregion
|
|
26326
|
+
//#region src/routes/account/workflows/[workflowId]/overview/GET.ts
|
|
26327
|
+
/** Bumped when the overview prompt/model changes, so cached overviews invalidate. */
|
|
26328
|
+
const OVERVIEW_GENERATOR_VERSION = "wf-overview-v1";
|
|
26329
|
+
/**
|
|
26330
|
+
* Best-effort read of the workflow's source from the active deploy's source snapshot, resolving
|
|
26331
|
+
* path → hash via the manifest so only files that belong to the deploy are served. Returns null
|
|
26332
|
+
* for dist-only deploys / missing source so the overview still generates from the structured graph.
|
|
26333
|
+
*/
|
|
26334
|
+
async function loadWorkflowSource(organization, projectId, sourcePath) {
|
|
26335
|
+
try {
|
|
26336
|
+
const artifact = await (0, _keystrokehq_platform_database.selectActiveProjectArtifactForProject)(projectId);
|
|
26337
|
+
if (!artifact?.sourceManifestJson) return null;
|
|
26338
|
+
const file = require_dist.StoredProjectSourceManifestSchema.parse(artifact.sourceManifestJson).files.find((entry) => entry.path === sourcePath);
|
|
26339
|
+
if (!file) return null;
|
|
26340
|
+
const bytes = await (0, _keystrokehq_platform_database.createOrgStorageClient)(organization).getObject(require_dist.projectSourceBlobKey(projectId, file.hash));
|
|
26341
|
+
return new TextDecoder().decode(bytes);
|
|
26342
|
+
} catch {
|
|
26343
|
+
return null;
|
|
26344
|
+
}
|
|
26345
|
+
}
|
|
26346
|
+
const handler$65 = async (c) => {
|
|
26347
|
+
const { organizationId } = c.get("organization");
|
|
26348
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26349
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26350
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26351
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26352
|
+
const { row, projectId } = resolved;
|
|
26353
|
+
const manifest = await loadActiveManifest(projectId);
|
|
26354
|
+
const workflowEntry = manifest?.entries.find((entry) => entry.kind === "workflow" && entry.slug === row.slug);
|
|
26355
|
+
if (!workflowEntry || workflowEntry.kind !== "workflow" || !workflowEntry.flowGraph) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Overview not available" }), 404);
|
|
26356
|
+
const triggers = await (0, _keystrokehq_database.listWorkspaceTriggers)([projectId]);
|
|
26357
|
+
const { graph, nodeMetadata } = buildWorkflowCanvas({
|
|
26358
|
+
workflowSlug: row.slug,
|
|
26359
|
+
workflowEntry,
|
|
26360
|
+
entries: manifest?.entries ?? [],
|
|
26361
|
+
triggers
|
|
26362
|
+
});
|
|
26363
|
+
const triggerLabels = graph.nodes.filter((node) => node.nodeType === "trigger-source").map((node) => node.data.label);
|
|
26364
|
+
const nodes = graph.nodes.map((node) => {
|
|
26365
|
+
const meta = nodeMetadata[node.id];
|
|
26366
|
+
const inputs = meta?.inputs.map((field) => field.key) ?? [];
|
|
26367
|
+
const outputs = meta?.outputs.map((field) => field.key) ?? [];
|
|
26368
|
+
return {
|
|
26369
|
+
nodeId: node.id,
|
|
26370
|
+
label: meta?.name ?? node.data.label,
|
|
26371
|
+
kind: meta?.kind ?? node.nodeType,
|
|
26372
|
+
...meta?.description ? { description: meta.description } : {},
|
|
26373
|
+
...meta?.appSlug ? { appSlug: meta.appSlug } : {},
|
|
26374
|
+
...inputs.length > 0 ? { inputs } : {},
|
|
26375
|
+
...outputs.length > 0 ? { outputs } : {},
|
|
26376
|
+
...meta?.model ? { model: meta.model } : {},
|
|
26377
|
+
...meta?.toolCount !== void 0 ? { toolCount: meta.toolCount } : {}
|
|
26378
|
+
};
|
|
26379
|
+
});
|
|
26380
|
+
const model = require_dist.DEFAULT_WORKFLOW_OVERVIEW_MODEL;
|
|
26381
|
+
const graphHash = (0, node_crypto.createHash)("sha256").update(JSON.stringify(workflowEntry.flowGraph)).digest("hex");
|
|
26382
|
+
const hash = (0, node_crypto.createHash)("sha256").update(JSON.stringify({
|
|
26383
|
+
source: workflowEntry.flowGraphSourceHash ?? "",
|
|
26384
|
+
graph: graphHash,
|
|
26385
|
+
triggers: triggerLabels,
|
|
26386
|
+
model,
|
|
26387
|
+
version: OVERVIEW_GENERATOR_VERSION
|
|
26388
|
+
})).digest("hex");
|
|
26389
|
+
const cache = await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.selectWorkflowOverview)(workflowId));
|
|
26390
|
+
const cachedPhases = cache?.phases ?? [];
|
|
26391
|
+
if (cache && cache.hash === hash) {
|
|
26392
|
+
if (cache.status === "ready" || cache.status === "failed") return c.json(require_dist.WorkspaceWorkflowOverviewSchema.parse({
|
|
26393
|
+
status: "ready",
|
|
26394
|
+
summary: cache.summary ?? "",
|
|
26395
|
+
phases: cachedPhases,
|
|
26396
|
+
hash,
|
|
26397
|
+
generatedAt: cache.generatedAt ? cache.generatedAt.toISOString() : (/* @__PURE__ */ new Date()).toISOString(),
|
|
26398
|
+
model: cache.model ?? model
|
|
26399
|
+
}));
|
|
26400
|
+
if (cache.status === "generating") return c.json(require_dist.WorkspaceWorkflowOverviewSchema.parse({
|
|
26401
|
+
status: "generating",
|
|
26402
|
+
summary: cache.summary ?? "",
|
|
26403
|
+
phases: [],
|
|
26404
|
+
hash,
|
|
26405
|
+
generatedAt: null,
|
|
26406
|
+
model: cache.model ?? model
|
|
26407
|
+
}));
|
|
26408
|
+
}
|
|
26409
|
+
const organization = await (0, _keystrokehq_platform_database.selectOrganizationById)(organizationId);
|
|
26410
|
+
if (!organization) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
26411
|
+
await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.setWorkflowOverviewGenerating)(workflowId, hash));
|
|
26412
|
+
const source = await loadWorkflowSource(organization, projectId, workflowEntry.moduleFile);
|
|
26413
|
+
try {
|
|
26414
|
+
await (await (0, _keystrokehq_http.getProjectScheduler)(organization, projectId)).enqueue({
|
|
26415
|
+
kind: "workflow-overview",
|
|
26416
|
+
targetId: workflowId,
|
|
26417
|
+
runId: crypto.randomUUID(),
|
|
26418
|
+
trigger: "api",
|
|
26419
|
+
projectId,
|
|
26420
|
+
dedupeKey: `workflow-overview:${workflowId}:${hash}`,
|
|
26421
|
+
payload: {
|
|
26422
|
+
workflowId,
|
|
26423
|
+
projectId,
|
|
26424
|
+
hash,
|
|
26425
|
+
model,
|
|
26426
|
+
input: {
|
|
26427
|
+
workflowName: row.name.trim(),
|
|
26428
|
+
workflowDescription: row.description.trim(),
|
|
26429
|
+
triggers: triggerLabels,
|
|
26430
|
+
nodes,
|
|
26431
|
+
source
|
|
26432
|
+
}
|
|
26433
|
+
}
|
|
26434
|
+
});
|
|
26435
|
+
} catch {
|
|
26436
|
+
await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.updateWorkflowOverview)(workflowId, { status: "failed" }));
|
|
26437
|
+
}
|
|
26438
|
+
return c.json(require_dist.WorkspaceWorkflowOverviewSchema.parse({
|
|
26439
|
+
status: "generating",
|
|
26440
|
+
summary: "",
|
|
26441
|
+
phases: [],
|
|
26442
|
+
hash,
|
|
26443
|
+
generatedAt: null,
|
|
26444
|
+
model
|
|
26445
|
+
}));
|
|
26446
|
+
};
|
|
26447
|
+
//#endregion
|
|
26448
|
+
//#region src/routes/account/workflows/[workflowId]/run-inputs/GET.ts
|
|
26449
|
+
const handler$64 = async (c) => {
|
|
26450
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26451
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26452
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26453
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26454
|
+
const { row, projectId } = resolved;
|
|
26455
|
+
const schema = require_dist.jsonSchemaToWorkflowInputSchema((await loadWorkflowManifestEntry(projectId, row.slug))?.requestSchema ?? {});
|
|
26456
|
+
const values = await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.selectWorkflowRunInputValues)(workflowId));
|
|
26457
|
+
return c.json(require_dist.WorkflowRunInputsSchema.parse({
|
|
26458
|
+
schema,
|
|
26459
|
+
values
|
|
26460
|
+
}));
|
|
26461
|
+
};
|
|
26462
|
+
//#endregion
|
|
26463
|
+
//#region src/routes/account/workflows/[workflowId]/run-inputs/PUT.ts
|
|
26464
|
+
const handler$63 = async (c) => {
|
|
26465
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26466
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26467
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26468
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26469
|
+
let body;
|
|
26470
|
+
try {
|
|
26471
|
+
body = require_dist.WorkflowRunInputsPutBodySchema.parse(await c.req.json());
|
|
26472
|
+
} catch {
|
|
26473
|
+
return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid request body" }), 400);
|
|
26474
|
+
}
|
|
26475
|
+
const { row, projectId } = resolved;
|
|
26476
|
+
const schema = require_dist.jsonSchemaToWorkflowInputSchema((await loadWorkflowManifestEntry(projectId, row.slug))?.requestSchema ?? {});
|
|
26477
|
+
const validation = require_dist.validateWorkflowRunInputValues(schema, body);
|
|
26478
|
+
if (!validation.ok) return c.json(require_dist.ErrorResponseSchema.parse({ error: validation.error }), 400);
|
|
26479
|
+
await (0, _keystrokehq_database.runWithProjectScope)(projectId, () => (0, _keystrokehq_database.updateWorkflowRunInputValues)(workflowId, body));
|
|
26480
|
+
return c.json(require_dist.WorkflowRunInputsSchema.parse({
|
|
26481
|
+
schema,
|
|
26482
|
+
values: body
|
|
26483
|
+
}));
|
|
26484
|
+
};
|
|
26485
|
+
//#endregion
|
|
26486
|
+
//#region src/routes/account/workflows/[workflowId]/run/POST.ts
|
|
26487
|
+
function parseRunInput(requestSchema, input) {
|
|
26488
|
+
if (typeof zod.z.fromJSONSchema === "function") return zod.z.fromJSONSchema(requestSchema).parse(input ?? {});
|
|
26489
|
+
return zod.z.record(zod.z.string(), zod.z.unknown()).parse(input ?? {});
|
|
26490
|
+
}
|
|
26491
|
+
/**
|
|
26492
|
+
* Manually start a workflow run from the dashboard. Validates the input against
|
|
26493
|
+
* the active deploy's request schema, creates a pending run, and enqueues it on
|
|
26494
|
+
* the project's queue (drained by the project runtime worker). Returns the run id.
|
|
26495
|
+
*/
|
|
26496
|
+
const handler$62 = async (c) => {
|
|
26497
|
+
const { organizationId } = c.get("organization");
|
|
26498
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26499
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26500
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26501
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26502
|
+
const { row, projectId } = resolved;
|
|
26503
|
+
const workflowEntry = (await loadActiveManifest(projectId))?.entries.find((entry) => entry.kind === "workflow" && entry.slug === row.slug);
|
|
26504
|
+
if (!workflowEntry || workflowEntry.kind !== "workflow") return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not deployed" }), 404);
|
|
26505
|
+
let body = {};
|
|
26506
|
+
if ((c.req.header("content-type") ?? "").includes("application/json")) try {
|
|
26507
|
+
body = await c.req.json();
|
|
26508
|
+
} catch {
|
|
26509
|
+
return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid JSON body" }), 400);
|
|
26510
|
+
}
|
|
26511
|
+
const organization = await (0, _keystrokehq_platform_database.selectOrganizationById)(organizationId);
|
|
26512
|
+
if (!organization) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Organization not found" }), 404);
|
|
26513
|
+
const userId = c.get("user").id;
|
|
26514
|
+
try {
|
|
26515
|
+
const runId = await (0, _keystrokehq_database.runWithProjectScope)(projectId, async () => {
|
|
26516
|
+
const scheduler = await (0, _keystrokehq_http.getProjectScheduler)(organization, projectId);
|
|
26517
|
+
return (0, _keystrokehq_runtime.enqueueWorkflowRunByKey)({
|
|
26518
|
+
workflowKey: row.slug,
|
|
26519
|
+
input: body,
|
|
26520
|
+
jobQueue: scheduler,
|
|
26521
|
+
parseInput: (value) => parseRunInput(workflowEntry.requestSchema, value),
|
|
26522
|
+
ranByUserId: userId
|
|
26523
|
+
});
|
|
26524
|
+
});
|
|
26525
|
+
return c.json({ runId }, 202);
|
|
26526
|
+
} catch (error) {
|
|
26527
|
+
if (error instanceof zod.ZodError) return c.json(require_dist.validationErrorResponse(error, "Invalid workflow input"), 400);
|
|
26528
|
+
throw error;
|
|
26529
|
+
}
|
|
26530
|
+
};
|
|
26531
|
+
//#endregion
|
|
26532
|
+
//#region src/routes/account/workflows/[workflowId]/runs/GET.ts
|
|
26533
|
+
const handler$61 = async (c) => {
|
|
26534
|
+
const workflowId = c.req.param("workflowId") ?? "";
|
|
26535
|
+
if (!workflowId.trim()) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Invalid workflow id" }), 400);
|
|
26536
|
+
const resolved = await resolveWorkflow(c, workflowId);
|
|
26537
|
+
if (!resolved) return c.json(require_dist.ErrorResponseSchema.parse({ error: "Workflow not found" }), 404);
|
|
26538
|
+
const { row, projectId } = resolved;
|
|
26539
|
+
const scope = listScope(c, projectListScope(accessContext(c)));
|
|
26540
|
+
if (await resolveListProjectIds(c, scope, projectId) === "empty") return c.json(require_dist.HistoryRunListResponseSchema.parse([]));
|
|
26541
|
+
const runs = await (0, _keystrokehq_database.listHistoryRuns)({
|
|
26542
|
+
kind: "workflow",
|
|
26543
|
+
projectIds: [projectId],
|
|
26544
|
+
workflow: {
|
|
26545
|
+
projectId,
|
|
26546
|
+
slug: row.slug
|
|
26547
|
+
}
|
|
26548
|
+
});
|
|
26549
|
+
const { organizationId } = c.get("organization");
|
|
26550
|
+
const projects = await (0, _keystrokehq_platform_database.selectProjectsByOrganizationId)(organizationId, { grantedProjectIds: await grantedProjectIds(c, scope) });
|
|
26551
|
+
const projectNameById = new Map(projects.map((project) => [project.id, project.name]));
|
|
26552
|
+
return c.json(require_dist.HistoryRunListResponseSchema.parse(await enrichHistoryRuns(runs, projectNameById)));
|
|
26553
|
+
};
|
|
26554
|
+
//#endregion
|
|
25584
26555
|
//#region src/routes/account/workflows/runs/[runId]/cancel/POST.ts
|
|
25585
26556
|
const handler$60 = (c) => cancelHistoryRun(c, "workflow", _keystrokehq_database.cancelWorkflowRun);
|
|
25586
26557
|
//#endregion
|
|
25587
26558
|
//#region src/routes/account/resources/skills.ts
|
|
25588
26559
|
function toSkillSummary(row) {
|
|
26560
|
+
const name = row.name?.trim() || titleCaseKey(row.slug);
|
|
25589
26561
|
return require_dist.SkillSummarySchema.parse({
|
|
25590
26562
|
id: row.id,
|
|
25591
26563
|
slug: row.slug,
|
|
25592
|
-
name
|
|
25593
|
-
description: row.description
|
|
26564
|
+
name,
|
|
26565
|
+
description: row.description?.trim() || name,
|
|
25594
26566
|
projectId: row.projectId,
|
|
25595
26567
|
updatedAt: row.updatedAt.toISOString(),
|
|
25596
26568
|
sourcePath: row.moduleFile
|
|
@@ -27408,22 +28380,22 @@ function mountAccountRoutes(options) {
|
|
|
27408
28380
|
const requireProjectManageMembers = authorize(projectActions.manageMembers);
|
|
27409
28381
|
const requireInvitableProjectRole = authorizePayload(require_dist.InviteProjectMembersRequestSchema, ({ c, ctx, body }) => canInviteToProject(ctx, { invitePermission: getProjectInvitePermission(c) }, body.role));
|
|
27410
28382
|
const requireOrgParam = requireOrganizationParam();
|
|
27411
|
-
account.get("/organizations", handler$
|
|
27412
|
-
account.get("/organizations/slug-available", handler$
|
|
28383
|
+
account.get("/organizations", handler$86);
|
|
28384
|
+
account.get("/organizations/slug-available", handler$85);
|
|
27413
28385
|
account.post("/organizations", createOrganizationHandler(options));
|
|
27414
|
-
account.get("/organizations/:organizationId", requireOrgParam, handler$
|
|
27415
|
-
account.patch("/organizations/:organizationId", requireOrgParam, requireOrgUpdate, handler$
|
|
27416
|
-
account.get("/organizations/:organizationId/branding", requireOrgParam, handler$
|
|
27417
|
-
account.patch("/organizations/:organizationId/branding", requireOrgParam, requireOrgUpdate, handler$
|
|
27418
|
-
account.post("/organizations/:organizationId/branding/logo/presign", requireOrgParam, requireOrgUpdate, handler$
|
|
28386
|
+
account.get("/organizations/:organizationId", requireOrgParam, handler$84);
|
|
28387
|
+
account.patch("/organizations/:organizationId", requireOrgParam, requireOrgUpdate, handler$83);
|
|
28388
|
+
account.get("/organizations/:organizationId/branding", requireOrgParam, handler$82);
|
|
28389
|
+
account.patch("/organizations/:organizationId/branding", requireOrgParam, requireOrgUpdate, handler$81);
|
|
28390
|
+
account.post("/organizations/:organizationId/branding/logo/presign", requireOrgParam, requireOrgUpdate, handler$80);
|
|
27419
28391
|
account.get("/invitations", handler$17);
|
|
27420
28392
|
account.post("/invitations/:invitationId/accept", handler$16);
|
|
27421
28393
|
account.post("/invitations/:invitationId/decline", handler$15);
|
|
27422
|
-
account.get("/users/me/avatar", handler$
|
|
27423
|
-
account.post("/users/me/avatar/presign", handler$
|
|
27424
|
-
account.patch("/users/me/avatar", handler$
|
|
27425
|
-
account.get("/users/me/preferences", handler$
|
|
27426
|
-
account.patch("/users/me/preferences", handler$
|
|
28394
|
+
account.get("/users/me/avatar", handler$91);
|
|
28395
|
+
account.post("/users/me/avatar/presign", handler$90);
|
|
28396
|
+
account.patch("/users/me/avatar", handler$89);
|
|
28397
|
+
account.get("/users/me/preferences", handler$88);
|
|
28398
|
+
account.patch("/users/me/preferences", handler$87);
|
|
27427
28399
|
const withOrgDb = withOrganizationProjectDatabase();
|
|
27428
28400
|
orgScoped.get("/apps", handler$14);
|
|
27429
28401
|
orgScoped.get("/apps/slug-available", handler$7);
|
|
@@ -27441,14 +28413,22 @@ function mountAccountRoutes(options) {
|
|
|
27441
28413
|
orgScoped.get("/api-keys", handler$5);
|
|
27442
28414
|
orgScoped.post("/api-keys", requireApiKeyCreate, handler$4);
|
|
27443
28415
|
orgScoped.delete("/api-keys/:apiKeyId", handler$3);
|
|
27444
|
-
orgScoped.get("/agents", withOrgDb, handler$
|
|
27445
|
-
orgScoped.get("/agents/:agentId", withOrgDb, handler$
|
|
27446
|
-
orgScoped.get("/agents/:agentId/memory/files", withOrgDb, handler$
|
|
27447
|
-
orgScoped.get("/agents/:agentId/memory/files/content", withOrgDb, handler$
|
|
27448
|
-
orgScoped.get("/agents/:agentId/workspace/files", withOrgDb, handler$
|
|
27449
|
-
orgScoped.get("/agents/:agentId/workspace/files/content", withOrgDb, handler$
|
|
27450
|
-
orgScoped.get("/workflows", withOrgDb, handler$
|
|
27451
|
-
orgScoped.get("/workflows/:workflowId", withOrgDb, handler$
|
|
28416
|
+
orgScoped.get("/agents", withOrgDb, handler$77);
|
|
28417
|
+
orgScoped.get("/agents/:agentId", withOrgDb, handler$76);
|
|
28418
|
+
orgScoped.get("/agents/:agentId/memory/files", withOrgDb, handler$75);
|
|
28419
|
+
orgScoped.get("/agents/:agentId/memory/files/content", withOrgDb, handler$74);
|
|
28420
|
+
orgScoped.get("/agents/:agentId/workspace/files", withOrgDb, handler$73);
|
|
28421
|
+
orgScoped.get("/agents/:agentId/workspace/files/content", withOrgDb, handler$72);
|
|
28422
|
+
orgScoped.get("/workflows", withOrgDb, handler$70);
|
|
28423
|
+
orgScoped.get("/workflows/:workflowId", withOrgDb, handler$69);
|
|
28424
|
+
orgScoped.get("/workflows/:workflowId/canvas", withOrgDb, handler$68);
|
|
28425
|
+
orgScoped.get("/workflows/:workflowId/canvas/credentials", withOrgDb, handler$67);
|
|
28426
|
+
orgScoped.get("/workflows/:workflowId/canvas/runs/:runId", withOrgDb, handler$66);
|
|
28427
|
+
orgScoped.get("/workflows/:workflowId/overview", withOrgDb, handler$65);
|
|
28428
|
+
orgScoped.get("/workflows/:workflowId/runs", withOrgDb, handler$61);
|
|
28429
|
+
orgScoped.get("/workflows/:workflowId/run-inputs", withOrgDb, handler$64);
|
|
28430
|
+
orgScoped.put("/workflows/:workflowId/run-inputs", withOrgDb, handler$63);
|
|
28431
|
+
orgScoped.post("/workflows/:workflowId/run", withOrgDb, handler$62);
|
|
27452
28432
|
orgScoped.get("/skills", withOrgDb, handler$59);
|
|
27453
28433
|
orgScoped.get("/skills/:skillId", withOrgDb, handler$58);
|
|
27454
28434
|
orgScoped.get("/triggers", withOrgDb, handler$57);
|
|
@@ -27458,10 +28438,10 @@ function mountAccountRoutes(options) {
|
|
|
27458
28438
|
orgScoped.get("/triggers/:triggerId/overview", withOrgDb, handler$53);
|
|
27459
28439
|
orgScoped.patch("/triggers/:triggerId/attachments/:attachmentId", withOrgDb, handler$52);
|
|
27460
28440
|
orgScoped.get("/recents", withOrgDb, handler$51);
|
|
27461
|
-
orgScoped.get("/history", withOrgDb, handler$
|
|
27462
|
-
orgScoped.get("/history/:runId", withOrgDb, handler$
|
|
28441
|
+
orgScoped.get("/history", withOrgDb, handler$79);
|
|
28442
|
+
orgScoped.get("/history/:runId", withOrgDb, handler$78);
|
|
27463
28443
|
orgScoped.post("/workflows/runs/:runId/cancel", withOrgDb, handler$60);
|
|
27464
|
-
orgScoped.post("/agents/sessions/:sessionId/cancel", withOrgDb, handler$
|
|
28444
|
+
orgScoped.post("/agents/sessions/:sessionId/cancel", withOrgDb, handler$71);
|
|
27465
28445
|
orgScoped.get("/credentials", withOrgDb, handler$25);
|
|
27466
28446
|
orgScoped.post("/credentials", withOrgDb, handler$24);
|
|
27467
28447
|
orgScoped.get("/credentials/:credentialId", withOrgDb, (c, next) => c.req.param("credentialId") === "instances" ? next() : handler$23(c, next));
|
|
@@ -28016,4 +28996,4 @@ Object.defineProperty(exports, "x$1", {
|
|
|
28016
28996
|
}
|
|
28017
28997
|
});
|
|
28018
28998
|
|
|
28019
|
-
//# sourceMappingURL=start-
|
|
28999
|
+
//# sourceMappingURL=start-B-r5AcHg.cjs.map
|