@uipath/flow-tool 1.205.0-preview.276 → 1.206.0-preview.279
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/README.md +14 -12
- package/dist/THIRD-PARTY-NOTICES.md +77 -49
- package/dist/applicationinsights-web-8m26566f.js +17209 -0
- package/dist/authoring-x84r2a2j.js +23 -0
- package/dist/binding-service-s0wvr2xm.js +114 -0
- package/dist/{browser-strategy-6atc7v8s.js → browser-strategy-gnftxwsf.js} +5 -6
- package/dist/connector-library-1yw5r47w.js +99 -0
- package/dist/{connector-service-m08dysc2.js → connector-service-r86mtxwn.js} +270 -275
- package/dist/{conversion-FQTRFHRX-e5wr281j.js → conversion-7O2PDOQB-3wwppx87.js} +477 -472
- package/dist/{de-FGHEJRCI-PK6WALXW-0dnvnmke.js → de-2BEKRUMY-MD7L477H-rj1rmtav.js} +425 -37
- package/dist/{de-WLW6KWOJ-2qnsqdtw.js → de-2BEKRUMY-x4dx0nn9.js} +190 -10
- package/dist/{de-VMMG2MN7-2ecwpg1b.js → de-3CU65EDB-r7r10am9.js} +82 -7
- package/dist/{de-UZI7FJDO-awjpqfz0.js → de-AI7ML6JM-km47f8k4.js} +20 -5
- package/dist/{de-B3EKCNFC-zdwybhh7.js → de-VQWT6L5Y-mch4qwyv.js} +38 -5
- package/dist/{de-XNTCMP5Z-xfkfqg20.js → de-XNTCMP5Z-nd4scb43.js} +1 -4
- package/dist/debug-conversation-trigger-3wzy90kj.js +23 -0
- package/dist/debug-http-client-zydr7tna.js +31 -0
- package/dist/debug-service-hdktqeek.js +60 -0
- package/dist/edge-service-zck3s9ss.js +267 -0
- package/dist/{elk.bundled-vpsbxz0p.js → elk.bundled-phy0zc81.js} +6860 -6860
- package/dist/{embedded-file-reader-r66242ey.js → embedded-file-reader-0228j82a.js} +1 -4
- package/dist/en-LAVDF7IQ-ba7wzsxp.js +254 -0
- package/dist/en-LQHKFSEY-zf6a2myg.js +24 -0
- package/dist/en-U2NSIIZN-whenw6wh.js +58 -0
- package/dist/en-WPCQ4JKF-t3x07ggr.js +148 -0
- package/dist/en-X6T4SP2Y-FPGCJIFV-qdfapfzs.js +2756 -0
- package/dist/en-X6T4SP2Y-xe57av1w.js +2752 -0
- package/dist/{es-5THCNRFN-tqwyrdgy.js → es-7ZTQTGKN-11sj0yjx.js} +190 -10
- package/dist/{es-KR3ZSNMP-QLWVVWKJ-5egs0gj9.js → es-7ZTQTGKN-TXQBFYRA-bzh1e1gq.js} +422 -34
- package/dist/{es-EKHIPSW6-ya88nvm0.js → es-EKHIPSW6-asfceac2.js} +1 -4
- package/dist/{es-KEBF3AIM-g5rszh8f.js → es-EP563JWQ-1agj5n4e.js} +38 -5
- package/dist/{es-WY6FZ3HO-zksnn6dp.js → es-KHVY67FO-natcvmmm.js} +82 -7
- package/dist/{es-MX-5RELIXKI-jtjbcxbb.js → es-MX-7KJZPEQN-1fq0a9jr.js} +20 -5
- package/dist/{es-MX-ZP2LJ3V7-k4brnfa9.js → es-MX-F7ZEHSNE-gxpm47vv.js} +82 -7
- package/dist/{es-MX-XXZJGC4R-W6EEIHXR-c2m4yjpj.js → es-MX-IHGRIEWH-23X37OPS-7cqdzpcy.js} +425 -37
- package/dist/{es-MX-TWZBRAXK-gqd9swzw.js → es-MX-IHGRIEWH-g63p0gb4.js} +191 -11
- package/dist/{es-MX-OR6G2SFR-7yykk5ma.js → es-MX-OR6G2SFR-02t13sen.js} +1 -4
- package/dist/{es-MX-EL3CDS3F-sh84yvjr.js → es-MX-S2RFDGDE-x9r0tv30.js} +38 -5
- package/dist/{es-4UBUTCQA-t7hsackg.js → es-SPNKTD5Y-vw5cbgv5.js} +20 -5
- package/dist/filter-engine-dh9s90gb.js +10 -0
- package/dist/first-party-service-ahcc6xc6.js +8 -0
- package/dist/flow-api-d4dvmadm.js +38 -0
- package/dist/{flow-debug-service-gc2ky1ve.js → flow-debug-service-hy21ddd9.js} +151 -195
- package/dist/flow-eval-node-target-tdrwqca7.js +29 -0
- package/dist/flow-eval-run-api-w4j8ra60.js +9 -0
- package/dist/{flow-eval-run-service-2cbr0jtw.js → flow-eval-run-service-5en4ahyn.js} +125 -149
- package/dist/{flow-eval-service-24jbkhhz.js → flow-eval-service-2j28ect1.js} +57 -81
- package/dist/{flow-init-sdk-source-xvdvkq7d.js → flow-init-sdk-source-xnr4bg25.js} +8 -11
- package/dist/flow-init-service-bj3ev9bz.js +26 -0
- package/dist/flow-io-9q6xk473.js +24 -0
- package/dist/{flow-migrate-service-t3pnd2r3.js → flow-migrate-service-dkx85jj5.js} +33 -54
- package/dist/{flow-pack-service-b910q207.js → flow-pack-service-58m51sp8.js} +79 -103
- package/dist/flow-validate-service-9a3zate4.js +46 -0
- package/dist/{fr-DPD4GHX3-exeypjwk.js → fr-7LK3QUWT-a94yejcs.js} +38 -5
- package/dist/{fr-Y6NPVODW-AS7T42TR-v4qe2tha.js → fr-7ZDL4MVO-CXMRZDOF-qjkg6y2r.js} +425 -37
- package/dist/{fr-CERONSRC-edpxhbmb.js → fr-7ZDL4MVO-pd27vwh6.js} +191 -11
- package/dist/{fr-VBM5WRC2-707ha692.js → fr-AXJGUT53-hdg3pmd4.js} +20 -5
- package/dist/{fr-PRMYCRDC-0bk078by.js → fr-I42FODC5-p80x5v4b.js} +83 -8
- package/dist/{fr-IHD66TVT-vfvmefbx.js → fr-IHD66TVT-eq8h0d6c.js} +1 -4
- package/dist/{governance-fetcher-ffvbtwbd.js → governance-fetcher-h8hpcwyh.js} +17 -21
- package/dist/{headless-4x4v3sy6.js → headless-41t9wwb7.js} +2395 -43269
- package/dist/{hitl-service-3m4ce3mt.js → hitl-service-hccqhm63.js} +22 -42
- package/dist/index-4e3w8x62.js +31 -0
- package/dist/{index-fyc0k5dd.js → index-5pzp2qeb.js} +5350 -3271
- package/dist/index-5xh0cjag.js +82 -0
- package/dist/index-7fet3f0s.js +10 -0
- package/dist/index-d4bdedx3.js +32 -0
- package/dist/index-f5kq7265.js +24 -0
- package/dist/index-g2p2ww34.js +39 -0
- package/dist/index-ng011fzs.js +974 -0
- package/dist/{index-h8cph72k.js → index-nzr4mx5p.js} +2 -22
- package/dist/{index-1b2je9n2.js → index-px95xmkg.js} +290 -268
- package/dist/index-tdwpejt6.js +22 -0
- package/dist/index-z2qk2qn6.js +24 -0
- package/dist/index.js +19 -28
- package/dist/index.umd.min-ttg1qc0x.js +7814 -0
- package/dist/init.js +22 -43
- package/dist/inline-entity-resolver-0neh2b43.js +25 -0
- package/dist/input-reader-zqaep7k7.js +11 -0
- package/dist/{ja-43QL7CGO-c3q8gre9.js → ja-C7GZV6YP-hvtbngr5.js} +20 -5
- package/dist/{ja-HFEQKCZF-hb2f25p8.js → ja-GI3OUHPZ-28fy60r0.js} +83 -8
- package/dist/{ja-JE5ZL7EY-hacj2m31.js → ja-JE5ZL7EY-607k4c7p.js} +1 -4
- package/dist/{ja-Q5PXKJ2V-BR5GRIDQ-fgqqpryf.js → ja-LGAM5HKR-NTPKIZEM-nv67917s.js} +422 -34
- package/dist/{ja-U2MCNHGT-gz0ap1jk.js → ja-LGAM5HKR-sgrtjqjh.js} +190 -10
- package/dist/ja-WY2W6733-ayr36h1f.js +71 -0
- package/dist/{jmespath-e4a59c8w.js → jmespath-wwym30dp.js} +1 -1
- package/dist/{js-yaml-87cdx6bm.js → js-yaml-a2bk27p6.js} +1 -3
- package/dist/known-types-v9sxcq1c.js +13 -0
- package/dist/{ko-AYBDSRZG-G43C3XUW-kng13fsg.js → ko-7B4SUZB7-2SLI636D-grbtfrcv.js} +424 -36
- package/dist/{ko-XAUYQWDR-zp81gjp4.js → ko-7B4SUZB7-c8wr20sc.js} +190 -10
- package/dist/{ko-DJJRKCG5-5h3k9csc.js → ko-DJJRKCG5-4fekzjn4.js} +1 -4
- package/dist/{ko-LA5OSS5P-mq5h8sbk.js → ko-H2RGQWKJ-9696w762.js} +38 -5
- package/dist/{ko-TLL6Z6CD-wrt3n8a9.js → ko-Q24HSSL4-5vn55pte.js} +20 -5
- package/dist/{ko-B4SEC7QX-thq2wt6a.js → ko-RYKAL74T-10m4z8vw.js} +83 -8
- package/dist/localization-skqjy9nr.js +45 -0
- package/dist/maestro-automate-entry-d1v5q5mv.js +14 -0
- package/dist/{node-xqc0h091.js → node-0jy3qx5b.js} +69 -638
- package/dist/node-service-2nxpk751.js +64 -0
- package/dist/{node-strategy-1dmmhvf3.js → node-strategy-wrjxmbzt.js} +9 -12
- package/dist/node-sync-service-68vq10je.js +56 -0
- package/dist/packager-tool-14rdgz3c.js +55 -0
- package/dist/packager-tool-1rhch6b5.js +496 -0
- package/dist/packager-tool-21t17xzz.js +5073 -0
- package/dist/{packager-tool-pvhx9e12.js → packager-tool-2b0tn4p4.js} +58 -176
- package/dist/{packager-tool-f9jxca9z.js → packager-tool-368bft50.js} +11 -11
- package/dist/{packager-tool-a5afh1dc.js → packager-tool-4fv0sq2h.js} +61 -67
- package/dist/packager-tool-4g87fbz6.js +273 -0
- package/dist/packager-tool-4zt1s51a.js +53 -0
- package/dist/{packager-tool-frjt46rb.js → packager-tool-508ka40b.js} +23 -23
- package/dist/{packager-tool-gbv6f0ac.js → packager-tool-5104bnpv.js} +22 -21
- package/dist/packager-tool-5dgpfh5e.js +1274 -0
- package/dist/packager-tool-5ve5ms3b.js +2393 -0
- package/dist/{packager-tool-dxgrhfq5.js → packager-tool-64r7e4ek.js} +8 -8
- package/dist/{packager-tool-h6pf3qxq.js → packager-tool-65yf8zqb.js} +180 -1237
- package/dist/{packager-tool-1yh8g550.js → packager-tool-6an893wm.js} +12 -3
- package/dist/{packager-tool-htrt75v4.js → packager-tool-6jpvvxyb.js} +27 -22
- package/dist/packager-tool-6vhefpmq.js +461 -0
- package/dist/{packager-tool-1nfbzy0h.js → packager-tool-72xwbsmw.js} +441 -556
- package/dist/packager-tool-7atc775f.js +30 -0
- package/dist/packager-tool-7mxn3e7j.js +27 -0
- package/dist/{packager-tool-wvmtp8zt.js → packager-tool-7qtnffkc.js} +8 -7
- package/dist/{packager-tool-ymma2s85.js → packager-tool-8ba22j6n.js} +9 -6
- package/dist/{packager-tool-apawc11t.js → packager-tool-8ed52y5r.js} +1584 -1261
- package/dist/{packager-tool-v11fm907.js → packager-tool-8n4bdvke.js} +13 -13
- package/dist/{packager-tool-p8gab24q.js → packager-tool-8qypzm9v.js} +424 -404
- package/dist/packager-tool-9217bxm2.js +6 -0
- package/dist/{packager-tool-zfrp8ecz.js → packager-tool-951nhh3e.js} +82 -82
- package/dist/{packager-tool-ap0zt7de.js → packager-tool-99d2kj94.js} +8 -11
- package/dist/{packager-tool-z21c6mbp.js → packager-tool-a1h0q79w.js} +48 -48
- package/dist/{packager-tool-xk78j7dz.js → packager-tool-ac6rvny7.js} +52 -57
- package/dist/{packager-tool-1d64q5s5.js → packager-tool-b2pkwwj1.js} +1273 -1300
- package/dist/{packager-tool-yetpbbey.js → packager-tool-bbkkxbyq.js} +9 -8
- package/dist/{packager-tool-409n51pv.js → packager-tool-d07g2kpn.js} +7 -7
- package/dist/{packager-tool-8zzmg2f3.js → packager-tool-dx6sjbkd.js} +19 -19
- package/dist/{packager-tool-8g5931fz.js → packager-tool-em4ppegs.js} +36 -43
- package/dist/{packager-tool-zgsvggdr.js → packager-tool-f7rk9xhv.js} +4 -4
- package/dist/{packager-tool-jrnjzs5t.js → packager-tool-fzgfb0jt.js} +32175 -36281
- package/dist/{packager-tool-9rmaeaww.js → packager-tool-gdpw0daf.js} +25211 -11966
- package/dist/packager-tool-hk0fnvz5.js +14 -0
- package/dist/{packager-tool-dbsdy4xx.js → packager-tool-jd3v0bh1.js} +4 -4
- package/dist/{packager-tool-tqjfdpda.js → packager-tool-jmrhzfyj.js} +106 -80
- package/dist/{packager-tool-2px5qqm4.js → packager-tool-kz3t4raw.js} +490 -246
- package/dist/{packager-tool-7bam8cjq.js → packager-tool-mdf7bws6.js} +53255 -27261
- package/dist/{packager-tool-gdtpsdn7.js → packager-tool-mm1x18d6.js} +223 -28
- package/dist/{packager-tool-nkrmjr3a.js → packager-tool-mphfxa9g.js} +125 -125
- package/dist/{packager-tool-kn86394c.js → packager-tool-p123mtfx.js} +66 -692
- package/dist/{packager-tool-t7ahhaer.js → packager-tool-pxq0bwp0.js} +208 -138
- package/dist/{packager-tool-j95w4fj3.js → packager-tool-q0f1dvtd.js} +11 -11
- package/dist/{packager-tool-8qp60s20.js → packager-tool-q2f18crb.js} +3 -3
- package/dist/packager-tool-q2kwk5bf.js +57 -0
- package/dist/{packager-tool-09rvpfjd.js → packager-tool-rxqxza90.js} +192 -183
- package/dist/{packager-tool-3m4ve01f.js → packager-tool-ryds9860.js} +33 -36
- package/dist/{packager-tool-ykbahxma.js → packager-tool-t17t9svg.js} +6 -6
- package/dist/{packager-tool-myhbp761.js → packager-tool-vgrswa8p.js} +53 -8
- package/dist/{packager-tool-7hw344bt.js → packager-tool-xb16e3tz.js} +5 -5
- package/dist/{packager-tool-1frs4sr4.js → packager-tool-yewnsyag.js} +37 -5
- package/dist/packager-tool-zdqbp34f.js +14 -0
- package/dist/{packager-tool-pacrqxv2.js → packager-tool-ze3fnf3s.js} +52 -34
- package/dist/packager-tool.js +12 -32
- package/dist/prepare-uip-ad7mfs8t.js +92 -0
- package/dist/{pt-3KUMINBZ-d0fexmny.js → pt-2RGHDOG4-gwe2ptvg.js} +38 -5
- package/dist/{pt-BR-3LGIH33I-tqbrd89y.js → pt-BR-3LGIH33I-hdf332je.js} +1 -4
- package/dist/{pt-BR-USP2T7GD-pedn77m1.js → pt-BR-BIUJXIPU-2sqzhr8y.js} +20 -5
- package/dist/{pt-BR-6VFBW5QT-hsck9gjj.js → pt-BR-IL3KLBID-m1mvqqzb.js} +83 -8
- package/dist/{pt-BR-WNNZTIMN-6fent688.js → pt-BR-JWHVZE6H-gvkknv49.js} +38 -5
- package/dist/{pt-BR-TKHNHMET-4Z5H4N5G-pzw3328h.js → pt-BR-PHLFHMXZ-JFPKUXIZ-gyb27t6e.js} +425 -37
- package/dist/{pt-BR-GNQNAAZ2-xadharv4.js → pt-BR-PHLFHMXZ-n6de4s7z.js} +191 -11
- package/dist/{pt-RMIAKZB4-t80exmp7.js → pt-MHX6JGAX-xfgvdqwg.js} +20 -5
- package/dist/{pt-ROXU257Y-OWZOS54V-ywap2t39.js → pt-N7ZTJT4W-GVODJMRX-p5b51p0b.js} +424 -36
- package/dist/{pt-TO2DARY2-ftcce1bv.js → pt-N7ZTJT4W-d6c67xcn.js} +190 -10
- package/dist/{pt-PFZXVOQH-qshq0b2m.js → pt-PFZXVOQH-xvcm5b61.js} +1 -4
- package/dist/{pt-WOTPKWPZ-1rxcy8hs.js → pt-VLA5IOHO-8t4pze0h.js} +83 -8
- package/dist/{ro-GHOBYW2S-4zevc9dy.js → ro-3RKJNGJZ-xqj14e3d.js} +20 -5
- package/dist/{ro-KMDT7LYJ-yhpnsdvw.js → ro-53TS7SWG-hnjx1c7b.js} +38 -5
- package/dist/{ro-AN5G62WQ-kcj00jwq.js → ro-AN5G62WQ-fzsv2ymm.js} +1 -4
- package/dist/{ro-AVAWPKOO-6WCG756B-v7pjv1hc.js → ro-FLNXVYJI-ZN43XZKK-2tajkc94.js} +422 -34
- package/dist/{ro-WUYJV6OW-a8d9qy1n.js → ro-FLNXVYJI-ytrwabg2.js} +190 -10
- package/dist/{ro-PB44YXML-zmhhwp5h.js → ro-IRNFX376-mh84zk3n.js} +82 -7
- package/dist/{ru-GSCT4ARZ-FTVCGQTL-gee86v14.js → ru-GSCT4ARZ-FTVCGQTL-v3d4ag31.js} +2 -4
- package/dist/ru-GSCT4ARZ-c2cfq4h1.js +7 -0
- package/dist/{ru-T73OPRTC-4knxw497.js → ru-T73OPRTC-50m7tty9.js} +1 -4
- package/dist/{ru-WBLQ5B2U-wemdzdqd.js → ru-WBLQ5B2U-5qpt0mvh.js} +1 -4
- package/dist/{ru-WBLQ5B2U-8r3c7v6d.js → ru-WBLQ5B2U-bf20yr5y.js} +1 -4
- package/dist/{ru-WBLQ5B2U-kdey8qa4.js → ru-WBLQ5B2U-w2wmp3xb.js} +1 -4
- package/dist/{serialization-BXU6AKAN-vdqyr29x.js → serialization-Z3UYT6BW-y9gb55mp.js} +1638 -761
- package/dist/services/extract-schema/default-schema-document.d.ts +31 -0
- package/dist/services/node-service.d.ts +6 -3
- package/dist/services/node-validators/file-node-connection-validator.d.ts +2 -0
- package/dist/services/node-validators/index.d.ts +1 -0
- package/dist/services/orchestrator-connection-field.d.ts +24 -0
- package/dist/services/packaging-utils.d.ts +2 -2
- package/dist/services/vars-reference-rule.d.ts +4 -3
- package/dist/solution-auth-j8x84n5z.js +11 -0
- package/dist/solution-discovery-vn4q32bf.js +38 -0
- package/dist/{tidy-service-hz61ypyj.js → tidy-service-m33hhtc7.js} +37 -55
- package/dist/tool.js +18 -27
- package/dist/{tr-JMIP7ZSL-G3QYPVT2-gswngwcr.js → tr-7AIZZWZ6-ESAESUPL-77g9b7jb.js} +422 -34
- package/dist/{tr-M3F5A6AU-bb0tg39m.js → tr-7AIZZWZ6-pdzp9n0p.js} +190 -10
- package/dist/{tr-SEC6RGZ4-0ttavjya.js → tr-EJKY7DVQ-rkctqva4.js} +83 -8
- package/dist/{tr-KHOCWWLF-8apf5y44.js → tr-KHOCWWLF-m9t24j5y.js} +1 -4
- package/dist/{tr-SC55DYHY-e4zgcd4t.js → tr-PIQY7JIT-2mkwk0kq.js} +38 -5
- package/dist/{tr-GDTLECMM-kngksm3r.js → tr-PQLUUHPC-qsb7btxn.js} +20 -5
- package/dist/utils/container-ports.d.ts +22 -0
- package/dist/utils/handle-expansion.d.ts +57 -3
- package/dist/utils/workflow-file-format.d.ts +14 -0
- package/dist/validation.js +44 -68
- package/dist/{variable-service-9ex4a93n.js → variable-service-ea1erf93.js} +28 -49
- package/dist/{wait-for-flow-job-b0vj8828.js → wait-for-flow-job-a4xtda36.js} +29 -36
- package/dist/{zh-CN-MX7VIOF2-xznrtchf.js → zh-CN-4FH7E7UL-84y6j2ea.js} +82 -7
- package/dist/{zh-CN-4NI2EGMV-8g027vv3.js → zh-CN-4NI2EGMV-dt0wg0wh.js} +1 -4
- package/dist/{zh-CN-IFFXSEJS-MZQ4HU3Z-ge1ynmtz.js → zh-CN-CN2ARPFS-NIQTWDK2-b5c91fwn.js} +422 -34
- package/dist/{zh-CN-C5G4PC7C-ds9gkptg.js → zh-CN-CN2ARPFS-e0p2qrxf.js} +190 -10
- package/dist/{en-BPJVY3U7-xkpj5xc5.js → zh-CN-NIEVKROA-q4tbbwqz.js} +26 -7
- package/dist/{zh-CN-I5D7WHBD-ge92tbx9.js → zh-CN-OHNTHZRI-b0hjkfqn.js} +20 -5
- package/dist/{zh-TW-53SU6EH4-33x57egq.js → zh-TW-53SU6EH4-w0wz3nwg.js} +1 -4
- package/dist/{zh-TW-5SJ3GZT2-bsg054mw.js → zh-TW-5WQA6QTM-hns69sd4.js} +83 -8
- package/dist/{zh-TW-IYBNYAMG-J7FWTQTK-sx8d4ymg.js → zh-TW-7RUFEVFK-VKVRSVTP-jq2pcmar.js} +421 -33
- package/dist/{zh-TW-62HZIG6O-787kdwex.js → zh-TW-7RUFEVFK-qd7myw31.js} +190 -10
- package/dist/{zh-TW-2AVLM723-288pkc1z.js → zh-TW-E4D3Y6ZR-tn3bmzz5.js} +20 -5
- package/dist/{zh-TW-TN3MPNXL-jcgg2hcs.js → zh-TW-MSQM7YTT-m7r7nwnj.js} +38 -5
- package/package.json +2 -2
- package/dist/authoring-e1k40hyw.js +0 -24
- package/dist/binding-service-0qffbxg7.js +0 -157
- package/dist/de-FGHEJRCI-gn4cf5gh.js +0 -2697
- package/dist/de-MUJPA4EB-209jpeqe.js +0 -173
- package/dist/de-UZI7FJDO-mwvc4cxe.js +0 -200
- package/dist/debug-conversation-trigger-2crr9w4n.js +0 -30
- package/dist/debug-http-client-yqjzsnhw.js +0 -32
- package/dist/debug-service-nra3n02y.js +0 -61
- package/dist/edge-service-y44f2rgd.js +0 -170
- package/dist/en-E454CJNK-ytfw06kj.js +0 -98
- package/dist/en-EJCBA3LK-0wb3b1xy.js +0 -146
- package/dist/en-EJCBA3LK-dtpdghgj.js +0 -146
- package/dist/en-GN2ZGWUE-03z2df4k.js +0 -136
- package/dist/en-LQHKFSEY-vvbe8ve9.js +0 -26
- package/dist/en-M7GQYBV2-5nfmpnfz.js +0 -2018
- package/dist/en-TBNO2WUV-77KTKLDE-4ktf0pqw.js +0 -1942
- package/dist/en-TBNO2WUV-9nan43e5.js +0 -1936
- package/dist/es-4UBUTCQA-m1ytpyx2.js +0 -200
- package/dist/es-7SE7HX2X-qda7whn6.js +0 -173
- package/dist/es-KR3ZSNMP-0cszm2n3.js +0 -2697
- package/dist/es-MX-2MYFZU7X-6v0q5rbn.js +0 -173
- package/dist/es-MX-5RELIXKI-9jhqtddc.js +0 -200
- package/dist/es-MX-XXZJGC4R-b4fbwe9d.js +0 -2697
- package/dist/filter-engine-7ep90g7f.js +0 -11
- package/dist/first-party-service-srxaftkn.js +0 -27
- package/dist/flow-api-sat010z1.js +0 -42
- package/dist/flow-eval-node-target-cwxb4kfe.js +0 -52
- package/dist/flow-eval-run-api-xdygjzfv.js +0 -13
- package/dist/flow-init-service-k7k5vx2z.js +0 -47
- package/dist/flow-io-2qdyj5e0.js +0 -44
- package/dist/flow-validate-service-x2mbk3et.js +0 -70
- package/dist/fr-MDFKNZ4C-qmypp92m.js +0 -173
- package/dist/fr-VBM5WRC2-63z7w4mh.js +0 -200
- package/dist/fr-Y6NPVODW-q5ef3htr.js +0 -2697
- package/dist/index-cg9qhfb1.js +0 -635
- package/dist/index-d090f35d.js +0 -66
- package/dist/index-gxcjq6ns.js +0 -110
- package/dist/index-kmp9fmhb.js +0 -25
- package/dist/index-nsn889vf.js +0 -27
- package/dist/index-sqhbn7ew.js +0 -157
- package/dist/index-wycgq0ff.js +0 -3178
- package/dist/index-y1ym28vg.js +0 -667
- package/dist/index.umd.min-fqefd9kn.js +0 -7814
- package/dist/inline-entity-resolver-c854cqma.js +0 -45
- package/dist/input-reader-n7kzdrev.js +0 -12
- package/dist/ja-43QL7CGO-h6qfxfay.js +0 -200
- package/dist/ja-MDG4BKZQ-gayaca2c.js +0 -38
- package/dist/ja-Q5PXKJ2V-tzf2rvz2.js +0 -2697
- package/dist/ja-UTQEAP34-hvyf683h.js +0 -173
- package/dist/known-types-r51zxb9g.js +0 -19
- package/dist/ko-AXCHW2OK-pkwdcbmx.js +0 -173
- package/dist/ko-AYBDSRZG-am0h0m2r.js +0 -2697
- package/dist/ko-TLL6Z6CD-ag6gjynr.js +0 -200
- package/dist/localization-d6gjmrsw.js +0 -47
- package/dist/maestro-automate-entry-6f9act3w.js +0 -22
- package/dist/node-service-d4xpqs0z.js +0 -92
- package/dist/node-sync-service-76b9e4r5.js +0 -61
- package/dist/packager-tool-0gctz400.js +0 -17
- package/dist/packager-tool-4mna26cc.js +0 -133
- package/dist/packager-tool-4x7tzvv0.js +0 -1176
- package/dist/packager-tool-53w8skv5.js +0 -262
- package/dist/packager-tool-6ejqwbw9.js +0 -26
- package/dist/packager-tool-6z1hsm2h.js +0 -143
- package/dist/packager-tool-7ja1b5hh.js +0 -8809
- package/dist/packager-tool-9era57c0.js +0 -28
- package/dist/packager-tool-9jxzgsxc.js +0 -14
- package/dist/packager-tool-c23zrhj8.js +0 -11
- package/dist/packager-tool-d6qf5qmb.js +0 -49
- package/dist/packager-tool-e3yks66r.js +0 -95
- package/dist/packager-tool-e5hj89zm.js +0 -6
- package/dist/packager-tool-e87tzg4y.js +0 -1937
- package/dist/packager-tool-eypvc2kv.js +0 -23
- package/dist/packager-tool-gbgfwx8f.js +0 -2
- package/dist/packager-tool-hk1gxnth.js +0 -11
- package/dist/packager-tool-hxyjn885.js +0 -24
- package/dist/packager-tool-j78fwwhq.js +0 -16
- package/dist/packager-tool-jgfzfqjm.js +0 -53
- package/dist/packager-tool-jysvpt8p.js +0 -11
- package/dist/packager-tool-m3wkcxf5.js +0 -11
- package/dist/packager-tool-mcaf4ewf.js +0 -46
- package/dist/packager-tool-mgcz986r.js +0 -143
- package/dist/packager-tool-p79yh9ww.js +0 -97
- package/dist/packager-tool-paq9c70w.js +0 -1332
- package/dist/packager-tool-pcvhcn2k.js +0 -2019
- package/dist/packager-tool-qkn0c042.js +0 -1922
- package/dist/packager-tool-qszay16r.js +0 -180
- package/dist/packager-tool-red2crtp.js +0 -5367
- package/dist/packager-tool-rs6jm14d.js +0 -23
- package/dist/packager-tool-s7wb0s9n.js +0 -6297
- package/dist/packager-tool-sc961w0q.js +0 -16
- package/dist/packager-tool-skcjythd.js +0 -22085
- package/dist/packager-tool-t07ev0jj.js +0 -1083
- package/dist/packager-tool-xj0agqpk.js +0 -11
- package/dist/packager-tool-z83pga0z.js +0 -1942
- package/dist/pt-3DIO5QWG-hb763vct.js +0 -173
- package/dist/pt-BR-TKHNHMET-dn6zxk1d.js +0 -2697
- package/dist/pt-BR-USP2T7GD-rppy42ym.js +0 -200
- package/dist/pt-BR-Y6K6XHXK-37a932vp.js +0 -173
- package/dist/pt-RMIAKZB4-67enhx3m.js +0 -200
- package/dist/pt-ROXU257Y-yd80gx6s.js +0 -2697
- package/dist/ro-AVAWPKOO-42m6am1w.js +0 -2697
- package/dist/ro-BWR3ONRR-jmap5ajd.js +0 -173
- package/dist/ro-GHOBYW2S-mhnqsgaa.js +0 -200
- package/dist/ru-GSCT4ARZ-1sa9wbr8.js +0 -10
- package/dist/ru-GSCT4ARZ-jrxwev63.js +0 -10
- package/dist/ru-WBLQ5B2U-dpqvtfwr.js +0 -10
- package/dist/ru-WBLQ5B2U-s4em88p0.js +0 -10
- package/dist/shared-utils-tqnx96mg.js +0 -21
- package/dist/solution-auth-8qz5pw7z.js +0 -14
- package/dist/solution-discovery-6t0z143v.js +0 -44
- package/dist/tr-5IIHSFW5-stsb3dar.js +0 -173
- package/dist/tr-GDTLECMM-k5fhmq13.js +0 -200
- package/dist/tr-JMIP7ZSL-fb67ft9w.js +0 -2696
- package/dist/zh-CN-I5D7WHBD-sr5h0a98.js +0 -200
- package/dist/zh-CN-IFFXSEJS-tke4mzty.js +0 -2697
- package/dist/zh-CN-OUMLDKDS-q3a1rr5c.js +0 -38
- package/dist/zh-CN-R2KU4U5L-q4yhc33t.js +0 -173
- package/dist/zh-TW-2AVLM723-xsmap3gk.js +0 -200
- package/dist/zh-TW-GNKMELBF-r4ay2475.js +0 -173
- package/dist/zh-TW-IYBNYAMG-wcan0qpb.js +0 -2697
- /package/dist/{packager-tool-yc4kw997.js → packager-tool-1qg04b7q.js} +0 -0
- /package/dist/{packager-tool-cqtsj6yh.js → packager-tool-2sazb7th.js} +0 -0
- /package/dist/{packager-tool-s9ff3kk4.js → packager-tool-887wr6jm.js} +0 -0
- /package/dist/{packager-tool-aw9v0raw.js → packager-tool-8c7nddd1.js} +0 -0
- /package/dist/{packager-tool-9cq9atem.js → packager-tool-a9xgmn1q.js} +0 -0
- /package/dist/{packager-tool-4kr6g0zw.js → packager-tool-cvh1a0nm.js} +0 -0
- /package/dist/{packager-tool-27avrkyk.js → packager-tool-k3egwd1m.js} +0 -0
- /package/dist/{packager-tool-qa9gftnj.js → packager-tool-mxgybnmt.js} +0 -0
- /package/dist/{packager-tool-10vc8pq4.js → packager-tool-wr7gn964.js} +0 -0
|
@@ -1,18 +1,42 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
pendingSecondsFor,
|
|
5
|
-
pendingStallInstructions
|
|
6
|
-
} from "./packager-tool-aw9v0raw.js";
|
|
7
|
-
import {
|
|
8
|
-
package_default
|
|
9
|
-
} from "./packager-tool-wvmtp8zt.js";
|
|
2
|
+
getFileSystem
|
|
3
|
+
} from "./packager-tool-vgrswa8p.js";
|
|
10
4
|
import {
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
CommandDimensions,
|
|
6
|
+
ShipDimensions,
|
|
7
|
+
catchError2
|
|
8
|
+
} from "./packager-tool-pxq0bwp0.js";
|
|
13
9
|
import {
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
carriedErrorCode,
|
|
11
|
+
extractErrorDetails,
|
|
12
|
+
extractErrorMessage,
|
|
13
|
+
extractErrorMessageSync,
|
|
14
|
+
appendOption,
|
|
15
|
+
ATTACHMENT_INSTRUCTIONS,
|
|
16
|
+
ATTACHMENT_UPLOAD_INSTRUCTIONS,
|
|
17
|
+
parseAttachmentSpec,
|
|
18
|
+
resolveAttachmentInputs,
|
|
19
|
+
instructionsFor,
|
|
20
|
+
RESULTS,
|
|
21
|
+
classifiedFailure,
|
|
22
|
+
authContextFailure,
|
|
23
|
+
summarizePlatformBody,
|
|
24
|
+
Option,
|
|
25
|
+
logger,
|
|
26
|
+
Pagination,
|
|
27
|
+
apiPagination,
|
|
28
|
+
OutputFormatter,
|
|
29
|
+
processContext,
|
|
30
|
+
createHiddenDeprecatedTenantOption,
|
|
31
|
+
parseLimit,
|
|
32
|
+
parseOffset,
|
|
33
|
+
parseBoundedInt,
|
|
34
|
+
registerPackageMetadataOptions,
|
|
35
|
+
mapPackageMetadataOptions,
|
|
36
|
+
ScreenLogger,
|
|
37
|
+
splitPackagedName,
|
|
38
|
+
trackShipSucceeded
|
|
39
|
+
} from "./packager-tool-8ed52y5r.js";
|
|
16
40
|
import {
|
|
17
41
|
registerRegistryCommand,
|
|
18
42
|
registerSharedDebugInstanceCommands,
|
|
@@ -20,56 +44,42 @@ import {
|
|
|
20
44
|
registerSharedInstanceCommands,
|
|
21
45
|
registerSharedProcessCommands,
|
|
22
46
|
registerSharedProcessesCommands
|
|
23
|
-
} from "./packager-tool-
|
|
47
|
+
} from "./packager-tool-b2pkwwj1.js";
|
|
24
48
|
import {
|
|
25
49
|
evaluatorTypeAliases,
|
|
50
|
+
resolveLoginConfig,
|
|
26
51
|
formatDuration,
|
|
27
|
-
formatEvalSetRunRow,
|
|
28
52
|
formatEvaluatorScores,
|
|
53
|
+
remoteRunScore,
|
|
29
54
|
formatRemoteEvalRunRow,
|
|
30
55
|
isFailedRemoteRun,
|
|
31
56
|
isTerminalRemoteStatus,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
57
|
+
formatEvalSetRunRow
|
|
58
|
+
} from "./packager-tool-ac6rvny7.js";
|
|
59
|
+
import {
|
|
60
|
+
pendingSecondsFor,
|
|
61
|
+
pendingStallInstructions,
|
|
62
|
+
DEFAULT_TIMEOUT_MS,
|
|
63
|
+
DEFAULT_INTERVAL_MS
|
|
64
|
+
} from "./packager-tool-8c7nddd1.js";
|
|
35
65
|
import {
|
|
36
|
-
|
|
37
|
-
} from "./packager-tool-
|
|
66
|
+
VALID_RESOURCE_TYPES
|
|
67
|
+
} from "./packager-tool-k3egwd1m.js";
|
|
38
68
|
import {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
CommandDimensions,
|
|
42
|
-
OutputFormatter,
|
|
43
|
-
Pagination,
|
|
44
|
-
RESULTS,
|
|
45
|
-
ScreenLogger,
|
|
46
|
-
ShipDimensions,
|
|
47
|
-
appendOption,
|
|
48
|
-
createHiddenDeprecatedTenantOption,
|
|
49
|
-
extractErrorMessage,
|
|
50
|
-
extractErrorMessageSync,
|
|
51
|
-
instructionsFor,
|
|
52
|
-
logger,
|
|
53
|
-
mapPackageMetadataOptions,
|
|
54
|
-
parseAttachmentSpec,
|
|
55
|
-
parseLimit,
|
|
56
|
-
parseOffset,
|
|
57
|
-
processContext,
|
|
58
|
-
registerPackageMetadataOptions,
|
|
59
|
-
resolveAttachmentInputs,
|
|
60
|
-
splitPackagedName,
|
|
61
|
-
summarizePlatformBody,
|
|
62
|
-
trackShipSucceeded
|
|
63
|
-
} from "./packager-tool-apawc11t.js";
|
|
69
|
+
package_default
|
|
70
|
+
} from "./packager-tool-7qtnffkc.js";
|
|
64
71
|
import {
|
|
65
|
-
|
|
66
|
-
} from "./packager-tool-
|
|
72
|
+
UnknownEntryPointError
|
|
73
|
+
} from "./packager-tool-cvh1a0nm.js";
|
|
67
74
|
import {
|
|
68
|
-
|
|
69
|
-
} from "./packager-tool-
|
|
75
|
+
setAgentProjectMetadataReader2
|
|
76
|
+
} from "./packager-tool-q2f18crb.js";
|
|
70
77
|
import {
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
formatTraceLine,
|
|
79
|
+
backendFailure,
|
|
80
|
+
genericObjectDiscoveryCommands,
|
|
81
|
+
addJobTracesOptions
|
|
82
|
+
} from "./packager-tool-4zt1s51a.js";
|
|
73
83
|
|
|
74
84
|
// src/utils/row-window.ts
|
|
75
85
|
function addRowWindowOptions(command) {
|
|
@@ -91,17 +101,6 @@ function rowWindow(rows, options) {
|
|
|
91
101
|
})
|
|
92
102
|
};
|
|
93
103
|
}
|
|
94
|
-
function apiPagination(returned, options) {
|
|
95
|
-
const { limit, offset } = options;
|
|
96
|
-
if (limit === undefined && offset === 0) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
return new Pagination({
|
|
100
|
-
returned,
|
|
101
|
-
limit: limit ?? Math.max(returned, 1),
|
|
102
|
-
offset
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
104
|
|
|
106
105
|
// src/commands/binding.ts
|
|
107
106
|
var BINDING_LIST_EXAMPLES = [
|
|
@@ -163,8 +162,8 @@ var BINDING_DELETE_EXAMPLES = [
|
|
|
163
162
|
var registerBindingCommand = (program) => {
|
|
164
163
|
const binding = program.command("bindings").alias("binding").description("Manage bindings in a Flow file");
|
|
165
164
|
addRowWindowOptions(binding.command("list")).description("List all bindings in a Flow file").argument("<file>", "Path to the .flow file").examples(BINDING_LIST_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
166
|
-
const { listBindingsInFlow } = await import("./binding-service-
|
|
167
|
-
const [error, result] = await
|
|
165
|
+
const { listBindingsInFlow } = await import("./binding-service-s0wvr2xm.js");
|
|
166
|
+
const [error, result] = await catchError2(listBindingsInFlow(file));
|
|
168
167
|
if (error) {
|
|
169
168
|
OutputFormatter.error({
|
|
170
169
|
Result: RESULTS.Failure,
|
|
@@ -187,8 +186,8 @@ var registerBindingCommand = (program) => {
|
|
|
187
186
|
});
|
|
188
187
|
binding.command("create").alias("add").description(`Add a binding to a Flow file.
|
|
189
188
|
` + `Valid resource types: ${VALID_RESOURCE_TYPES.join(", ")}`).argument("<file>", "Path to the .flow file").argument("<name>", "Binding display name").argument("<resource>", "Resource type").argument("<default-value>", "Default value for the binding").option("--resource-key <key>", "Resource catalog identifier").option("--property-attribute <attr>", "Target node property (e.g., name, folderPath, connection)").option("--resource-sub-type <type>", "Resource sub-classification (e.g., Agent, Process)").examples(BINDING_ADD_EXAMPLES).trackedAction(processContext, async (file, name, resource, defaultValue, options) => {
|
|
190
|
-
const { addBindingToFlow } = await import("./binding-service-
|
|
191
|
-
const [error, result] = await
|
|
189
|
+
const { addBindingToFlow } = await import("./binding-service-s0wvr2xm.js");
|
|
190
|
+
const [error, result] = await catchError2(addBindingToFlow(file, name, resource, defaultValue, {
|
|
192
191
|
resourceKey: options.resourceKey,
|
|
193
192
|
propertyAttribute: options.propertyAttribute,
|
|
194
193
|
resourceSubType: options.resourceSubType
|
|
@@ -211,8 +210,8 @@ var registerBindingCommand = (program) => {
|
|
|
211
210
|
});
|
|
212
211
|
});
|
|
213
212
|
binding.command("delete").alias("remove").description("Remove all bindings with a given resource key from a Flow file").argument("<file>", "Path to the .flow file").argument("<resource-key>", "Resource key of the bindings to remove").examples(BINDING_DELETE_EXAMPLES).trackedAction(processContext, async (file, resourceKey) => {
|
|
214
|
-
const { deleteBindingFromFlow } = await import("./binding-service-
|
|
215
|
-
const [error, result] = await
|
|
213
|
+
const { deleteBindingFromFlow } = await import("./binding-service-s0wvr2xm.js");
|
|
214
|
+
const [error, result] = await catchError2(deleteBindingFromFlow(file, resourceKey));
|
|
216
215
|
if (error) {
|
|
217
216
|
OutputFormatter.error({
|
|
218
217
|
Result: RESULTS.Failure,
|
|
@@ -267,7 +266,7 @@ function buildDebugSummary(result) {
|
|
|
267
266
|
var FULL_DEBUG_OUTPUT_DIR = ".flow-debug";
|
|
268
267
|
var FULL_DEBUG_OUTPUT_GITIGNORE = "# Written by `uip maestro flow debug --summary`: local debug records with tenant data.\n*\n";
|
|
269
268
|
async function writeFullDebugOutput(fs, projectPath, envelope) {
|
|
270
|
-
const { findNearestParentUipxFile } = await import("./index-
|
|
269
|
+
const { findNearestParentUipxFile } = await import("./index-g2p2ww34.js");
|
|
271
270
|
const projectDir = fs.path.resolve(projectPath);
|
|
272
271
|
const discovery = await findNearestParentUipxFile(fs, projectDir);
|
|
273
272
|
const solutionDir = discovery.status === "found" ? fs.path.dirname(discovery.solutionFile) : fs.path.resolve(projectDir, "..");
|
|
@@ -321,11 +320,14 @@ function buildHttpFailureOutput(err) {
|
|
|
321
320
|
return output;
|
|
322
321
|
}
|
|
323
322
|
function pickRetryHint(err) {
|
|
323
|
+
if (isRetriedPoll403(err))
|
|
324
|
+
return "RetryAfter30Seconds";
|
|
324
325
|
if (err.httpStatus < 500 || err.httpStatus >= 600) {
|
|
325
326
|
return;
|
|
326
327
|
}
|
|
327
328
|
return (err.attempts ?? 1) > 1 ? "RetryWillNotFix" : "RetryAfter30Seconds";
|
|
328
329
|
}
|
|
330
|
+
var isRetriedPoll403 = (err) => err.httpStatus === 403 && err.stage === "poll-instance-status" && (err.attempts ?? 1) > 1;
|
|
329
331
|
function pickInstructions(err) {
|
|
330
332
|
const isOpaque5xx = err.httpStatus >= 500 && err.httpStatus < 600 && (err.parsedErrorCode === undefined || err.parsedErrorCode === "0");
|
|
331
333
|
if (isOpaque5xx) {
|
|
@@ -338,6 +340,10 @@ function pickInstructions(err) {
|
|
|
338
340
|
}
|
|
339
341
|
return `The backend returned an unstructured ${err.httpStatus} during '${stage}'.${traceHint} ` + `This is often transient — wait ~30s and retry once. If it fails again, capture the traceId ` + `and ${err.method} ${err.endpoint} and escalate to the owning service team.`;
|
|
340
342
|
}
|
|
343
|
+
if (isRetriedPoll403(err)) {
|
|
344
|
+
const traceIds = err.traceIds?.length ? ` traceIds: ${err.traceIds.join(", ")}.` : "";
|
|
345
|
+
return `${err.method} ${err.endpoint} returned 403 on all ${err.attempts} attempts during ` + `'poll-instance-status', after the run had started. PIMS answers 403 here when its ` + `authorization check times out, so this is usually not your login. Re-run 'debug' ` + `in ~30s. If it fails the same way again, run 'uip login' and verify the active ` + `tenant has access.${traceIds}`;
|
|
346
|
+
}
|
|
341
347
|
if (err.httpStatus === 401 || err.httpStatus === 403) {
|
|
342
348
|
return `Authentication/authorization rejected by ${err.method} ${err.endpoint}. ` + `Run 'uip login' and verify the active tenant has access.`;
|
|
343
349
|
}
|
|
@@ -348,8 +354,8 @@ function pickInstructions(err) {
|
|
|
348
354
|
const bodySuffix = body ? ` Platform response: "${body}".` : "";
|
|
349
355
|
return `${err.method} ${err.endpoint} returned 404 during '${err.stage ?? "request"}', ` + `but the response was not a structured Orchestrator error — the request likely ` + `did not reach the tenant. This usually means the organization or tenant in your ` + `login session is wrong or was renamed. Run 'uip login tenant list' to see the ` + `current tenant names, re-select with 'uip login tenant set <name>' (or re-run ` + `'uip login'), then retry. Do not create a new workspace or retry as-is — the ` + `resource likely exists under the current tenant name.${bodySuffix}`;
|
|
350
356
|
}
|
|
351
|
-
const
|
|
352
|
-
return `${err.method} ${err.endpoint} returned 404 during '${err.stage ?? "request"}'. ` + `The target resource may not exist — verify upstream IDs (solutionId, instanceId) ` + `and re-run.${
|
|
357
|
+
const detail = err.parsedErrorMessage ? ` Backend reported: "${err.parsedErrorMessage}".` : "";
|
|
358
|
+
return `${err.method} ${err.endpoint} returned 404 during '${err.stage ?? "request"}'. ` + `The target resource may not exist — verify upstream IDs (solutionId, instanceId) ` + `and re-run.${detail}`;
|
|
353
359
|
}
|
|
354
360
|
const detail = err.parsedErrorMessage ? ` Backend reported: "${err.parsedErrorMessage}".` : "";
|
|
355
361
|
return `${err.method} ${err.endpoint} failed with HTTP ${err.httpStatus} during ` + `'${err.stage ?? "request"}'.${detail} Inspect the response body for details ` + `and retry once before reporting.`;
|
|
@@ -365,7 +371,7 @@ function buildIncidentInstructions(incidents, instanceId) {
|
|
|
365
371
|
const lines = summarizeIncidents(incidents);
|
|
366
372
|
const first = incidents[0];
|
|
367
373
|
const traceHint = first?.traceId ? ` traceId=${first.traceId}.` : "";
|
|
368
|
-
const detailHint = `Run 'uip maestro flow debug-
|
|
374
|
+
const detailHint = `Run 'uip maestro flow debug-instances incidents ${instanceId}' for ` + `the full backend payload (incidentId, errorDetails, AI summary).`;
|
|
369
375
|
return `Incident(s):
|
|
370
376
|
- ${lines.join(`
|
|
371
377
|
- `)}
|
|
@@ -374,14 +380,14 @@ ${detailHint}${traceHint}`;
|
|
|
374
380
|
function variablesRetryCommand(instanceId, error) {
|
|
375
381
|
const ids = error.expectedGlobals?.length ? error.expectedGlobals : error.missingGlobals;
|
|
376
382
|
const expect = ids?.length ? ` --expected-outputs ${ids.join(" ")}` : "";
|
|
377
|
-
return `'uip maestro flow debug-
|
|
383
|
+
return `'uip maestro flow debug-instances variables ${instanceId}${expect}'`;
|
|
378
384
|
}
|
|
379
385
|
var CONVERSATIONAL_DEBUG_WARNING = "This flow, which starts on a conversation trigger, can only be debugged from a chat UI. " + `Debug it using the chat panel from either:
|
|
380
386
|
` + " 1. Studio Web — open the debug URL printed once the solution uploads " + `(also 'Data.studioWebUrl' in the result).
|
|
381
387
|
` + " 2. UiPath Maestro VS Code extension — open the flow and hit Debug.";
|
|
382
388
|
async function readProjectFlowNodes(projectPath) {
|
|
383
|
-
const [error, nodes] = await
|
|
384
|
-
const { readFlowWorkflow, resolveProjectFlowFile } = await import("./flow-io-
|
|
389
|
+
const [error, nodes] = await catchError2((async () => {
|
|
390
|
+
const { readFlowWorkflow, resolveProjectFlowFile } = await import("./flow-io-9q6xk473.js");
|
|
385
391
|
const flowFilePath = await resolveProjectFlowFile(projectPath);
|
|
386
392
|
const { workflow } = await readFlowWorkflow(flowFilePath);
|
|
387
393
|
return workflow.nodes ?? [];
|
|
@@ -469,7 +475,7 @@ var FOLDER_RESOLUTION_INSTRUCTIONS = "Provide a valid --folder-key (UUID) or --f
|
|
|
469
475
|
var FOLDER_RESOLUTION_NETWORK_INSTRUCTIONS = "The folder lookup itself failed (network / Orchestrator API). Re-authenticate with 'uip login', verify connectivity, and retry.";
|
|
470
476
|
var DEBUG_FAILURE_INSTRUCTIONS = "Check that the flow project is valid, the selected folder is accessible, and Studio Web debug is available, then retry.";
|
|
471
477
|
async function openInBrowserOrWarn(url) {
|
|
472
|
-
const [openError] = await
|
|
478
|
+
const [openError] = await catchError2(async () => {
|
|
473
479
|
await getFileSystem().utils.open(url);
|
|
474
480
|
});
|
|
475
481
|
if (openError) {
|
|
@@ -512,12 +518,12 @@ function parsePositiveIntegerOption(value, optionName) {
|
|
|
512
518
|
}
|
|
513
519
|
function registerDebugCommand(program) {
|
|
514
520
|
program.command("debug").description("Debug a flow project by uploading to Studio Web and running a debug session").argument("<project-path>", "Path to the flow project directory (must contain project.uiproj)").option("--folder-id <id>", "Orchestrator folder ID (OrganizationUnitId) as a positive integer. Mutually exclusive with --folder-key/--folder-path. Auto-detected if none are provided.").option("--folder-key <key>", "Orchestrator folder key (UUID). The CLI resolves it to the folder ID. Mutually exclusive with --folder-id/--folder-path.").option("--folder-path <path>", "Orchestrator folder path (e.g. 'Shared/Sub'). The CLI resolves it to the folder ID. Mutually exclusive with --folder-id/--folder-key.").option("--poll-interval <ms>", "Polling interval in milliseconds", "2000").option("--timeout <seconds>", "Maximum seconds to wait for debug completion").option("-i, --inputs <json>", "Input parameters as JSON string or @file.json").option("--entry-point <id>", "Entry point node id — a trigger node id from the .flow file. Defaults to the trigger marked isDefaultEntryPoint, else the first trigger").option("--attachment <name=path>", "Upload a file as a file-typed workflow input variable (repeatable). " + "Example: --attachment file1=./resume.pdf", appendOption, []).option("--summary", "Return only the run's status, its failed elements and the flow's declared outputs, " + "instead of every node's raw output. The full result, tenant data included, is written to " + "<solution>/.flow-debug/<project>.json (<project> relative to the solution; the folder's own " + ".gitignore ignores it; never packed or uploaded) and named in Data.fullOutputPath.").option("--open-in-browser", "Open the Studio Web URL in the browser once it is known.").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(FLOW_DEBUG_EXAMPLES).trackedAction(processContext, async (projectPath, options) => {
|
|
515
|
-
const {
|
|
521
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
516
522
|
const nodes = await readProjectFlowNodes(projectPath);
|
|
517
523
|
let isConversational = false;
|
|
518
524
|
if (nodes !== undefined) {
|
|
519
|
-
const { startsOnConversationTrigger } = await import("./debug-conversation-trigger-
|
|
520
|
-
const [entryPointError, conversational] =
|
|
525
|
+
const { startsOnConversationTrigger } = await import("./debug-conversation-trigger-3wzy90kj.js");
|
|
526
|
+
const [entryPointError, conversational] = catchError2(() => startsOnConversationTrigger({ nodes }, options.entryPoint));
|
|
521
527
|
if (entryPointError instanceof UnknownEntryPointError) {
|
|
522
528
|
OutputFormatter.error({
|
|
523
529
|
Result: RESULTS.ValidationError,
|
|
@@ -540,82 +546,26 @@ function registerDebugCommand(program) {
|
|
|
540
546
|
}
|
|
541
547
|
}
|
|
542
548
|
let urlReported = false;
|
|
543
|
-
const [
|
|
544
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
549
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
550
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
551
|
+
requireOrganizationId: true,
|
|
552
|
+
requireOrganizationName: true,
|
|
553
|
+
requireTenantId: true,
|
|
554
|
+
requireTenantName: true
|
|
545
555
|
}));
|
|
546
|
-
if (
|
|
547
|
-
OutputFormatter.error(
|
|
548
|
-
Result: RESULTS.Failure,
|
|
549
|
-
Message: loginError.message,
|
|
550
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
551
|
-
});
|
|
556
|
+
if (authError) {
|
|
557
|
+
OutputFormatter.error(await authContextFailure(authError, LOGIN_INSTRUCTIONS));
|
|
552
558
|
processContext.exit(1);
|
|
553
559
|
return;
|
|
554
560
|
}
|
|
555
561
|
const {
|
|
556
|
-
loginStatus,
|
|
557
562
|
baseUrl,
|
|
558
563
|
accessToken,
|
|
559
564
|
organizationId,
|
|
560
565
|
tenantId,
|
|
561
566
|
tenantName,
|
|
562
|
-
organizationUnitId,
|
|
563
567
|
organizationName
|
|
564
|
-
} =
|
|
565
|
-
if (loginStatus !== "Logged in" || !baseUrl) {
|
|
566
|
-
OutputFormatter.error({
|
|
567
|
-
Result: RESULTS.Failure,
|
|
568
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
569
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
570
|
-
});
|
|
571
|
-
processContext.exit(1);
|
|
572
|
-
return;
|
|
573
|
-
}
|
|
574
|
-
if (!organizationId) {
|
|
575
|
-
OutputFormatter.error({
|
|
576
|
-
Result: RESULTS.Failure,
|
|
577
|
-
Message: "Organization ID not available from login.",
|
|
578
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
579
|
-
});
|
|
580
|
-
processContext.exit(1);
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
if (!tenantId) {
|
|
584
|
-
OutputFormatter.error({
|
|
585
|
-
Result: RESULTS.Failure,
|
|
586
|
-
Message: "Tenant ID not available from login.",
|
|
587
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
588
|
-
});
|
|
589
|
-
processContext.exit(1);
|
|
590
|
-
return;
|
|
591
|
-
}
|
|
592
|
-
if (!tenantName) {
|
|
593
|
-
OutputFormatter.error({
|
|
594
|
-
Result: RESULTS.Failure,
|
|
595
|
-
Message: "Tenant name not available from login.",
|
|
596
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
597
|
-
});
|
|
598
|
-
processContext.exit(1);
|
|
599
|
-
return;
|
|
600
|
-
}
|
|
601
|
-
if (!accessToken) {
|
|
602
|
-
OutputFormatter.error({
|
|
603
|
-
Result: RESULTS.Failure,
|
|
604
|
-
Message: "Access token not available from login.",
|
|
605
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
606
|
-
});
|
|
607
|
-
processContext.exit(1);
|
|
608
|
-
return;
|
|
609
|
-
}
|
|
610
|
-
if (!organizationName) {
|
|
611
|
-
OutputFormatter.error({
|
|
612
|
-
Result: RESULTS.Failure,
|
|
613
|
-
Message: "Organization name not available from login. Required for Studio Web debug.",
|
|
614
|
-
Instructions: LOGIN_INSTRUCTIONS
|
|
615
|
-
});
|
|
616
|
-
processContext.exit(1);
|
|
617
|
-
return;
|
|
618
|
-
}
|
|
568
|
+
} = auth;
|
|
619
569
|
const folderTargetingFlags = [
|
|
620
570
|
options.folderId !== undefined ? "--folder-id" : undefined,
|
|
621
571
|
options.folderKey !== undefined ? "--folder-key" : undefined,
|
|
@@ -644,8 +594,8 @@ function registerDebugCommand(program) {
|
|
|
644
594
|
}
|
|
645
595
|
userProvidedFolderId = parsed.value;
|
|
646
596
|
} else if (options.folderKey !== undefined || options.folderPath !== undefined) {
|
|
647
|
-
const { resolveFolder } = await import("./index-
|
|
648
|
-
const [folderError, folder] = await
|
|
597
|
+
const { resolveFolder } = await import("./index-4e3w8x62.js");
|
|
598
|
+
const [folderError, folder] = await catchError2(resolveFolder({
|
|
649
599
|
folderKey: options.folderKey,
|
|
650
600
|
folderPath: options.folderPath
|
|
651
601
|
}, { loginValidity: options.loginValidity }));
|
|
@@ -669,7 +619,7 @@ function registerDebugCommand(program) {
|
|
|
669
619
|
tenantId,
|
|
670
620
|
tenantName,
|
|
671
621
|
authToken: accessToken,
|
|
672
|
-
organizationUnitId: userProvidedFolderId
|
|
622
|
+
organizationUnitId: userProvidedFolderId,
|
|
673
623
|
organizationName,
|
|
674
624
|
userProvidedFolderId
|
|
675
625
|
};
|
|
@@ -678,23 +628,23 @@ function registerDebugCommand(program) {
|
|
|
678
628
|
logger.info(` Tenant: ${tenantName} (${tenantId})`);
|
|
679
629
|
logger.info(` Base URL: ${baseUrl}`);
|
|
680
630
|
const {
|
|
681
|
-
|
|
631
|
+
FlowDebugMissingResourcesError,
|
|
682
632
|
FlowDebugService,
|
|
683
633
|
InboundVoiceDebugError,
|
|
684
634
|
MissingSolutionWrapperError,
|
|
685
635
|
UnregisteredProjectError
|
|
686
|
-
} = await import("./flow-debug-service-
|
|
687
|
-
const { UnboundInlineEntityError } = await import("./inline-entity-resolver-
|
|
688
|
-
const { MaestroHttpError } = await import("./debug-http-client-
|
|
636
|
+
} = await import("./flow-debug-service-hy21ddd9.js");
|
|
637
|
+
const { UnboundInlineEntityError } = await import("./inline-entity-resolver-0neh2b43.js");
|
|
638
|
+
const { MaestroHttpError } = await import("./debug-http-client-zydr7tna.js");
|
|
689
639
|
const {
|
|
690
640
|
buildPollTimeoutFailureOutput,
|
|
691
641
|
DebugPollTimeoutError,
|
|
692
642
|
isSuccessfulDebugStatus
|
|
693
|
-
} = await import("./debug-service-
|
|
643
|
+
} = await import("./debug-service-hdktqeek.js");
|
|
694
644
|
const {
|
|
695
645
|
buildSolutionUploadFailureOutput,
|
|
696
646
|
isSolutionUploadHttpError
|
|
697
|
-
} = await import("./index-
|
|
647
|
+
} = await import("./index-g2p2ww34.js");
|
|
698
648
|
const service = new FlowDebugService;
|
|
699
649
|
const parsedPollInterval = parsePositiveNumberOption(options.pollInterval || "2000", "--poll-interval");
|
|
700
650
|
if (!parsedPollInterval.ok) {
|
|
@@ -723,8 +673,8 @@ function registerDebugCommand(program) {
|
|
|
723
673
|
}
|
|
724
674
|
let inputs;
|
|
725
675
|
if (options.inputs) {
|
|
726
|
-
const { parseFlowInputs } = await import("./flow-api-
|
|
727
|
-
const [parseError, parsed] = await
|
|
676
|
+
const { parseFlowInputs } = await import("./flow-api-d4dvmadm.js");
|
|
677
|
+
const [parseError, parsed] = await catchError2(parseFlowInputs(options.inputs));
|
|
728
678
|
if (parseError) {
|
|
729
679
|
OutputFormatter.error({
|
|
730
680
|
Result: RESULTS.Failure,
|
|
@@ -738,7 +688,7 @@ function registerDebugCommand(program) {
|
|
|
738
688
|
}
|
|
739
689
|
const attachmentSpecs = options.attachment ?? [];
|
|
740
690
|
if (attachmentSpecs.length > 0) {
|
|
741
|
-
const [parseError, specs] =
|
|
691
|
+
const [parseError, specs] = catchError2(() => attachmentSpecs.map(parseAttachmentSpec));
|
|
742
692
|
if (parseError) {
|
|
743
693
|
OutputFormatter.error({
|
|
744
694
|
Result: RESULTS.Failure,
|
|
@@ -748,8 +698,8 @@ function registerDebugCommand(program) {
|
|
|
748
698
|
processContext.exit(1);
|
|
749
699
|
return;
|
|
750
700
|
}
|
|
751
|
-
const { uploadJobAttachment } = await import("./index-
|
|
752
|
-
const [uploadError, resolved] = await
|
|
701
|
+
const { uploadJobAttachment } = await import("./index-4e3w8x62.js");
|
|
702
|
+
const [uploadError, resolved] = await catchError2(resolveAttachmentInputs(specs, (bytes, fileName) => uploadJobAttachment(bytes, fileName, {
|
|
753
703
|
tenant: tenantName
|
|
754
704
|
})));
|
|
755
705
|
if (uploadError) {
|
|
@@ -780,7 +730,7 @@ function registerDebugCommand(program) {
|
|
|
780
730
|
...isConversational ? { uploadOnly: true } : {}
|
|
781
731
|
};
|
|
782
732
|
logger.info(`Starting Studio Web debug session for: ${projectPath}`);
|
|
783
|
-
const [executeError, result] = await
|
|
733
|
+
const [executeError, result] = await catchError2(service.executeProjectViaStudioWeb(projectPath, studioWebConfig, {
|
|
784
734
|
onStatusChange: (st, executions) => {
|
|
785
735
|
const completed = executions.filter((e) => e.status === "Completed").length;
|
|
786
736
|
const total = executions.length;
|
|
@@ -790,8 +740,8 @@ function registerDebugCommand(program) {
|
|
|
790
740
|
logger.info(` ${icon} ${exec.elementId} [${exec.status}]`);
|
|
791
741
|
}
|
|
792
742
|
},
|
|
793
|
-
onIncident: (
|
|
794
|
-
logger.warn(`Incidents: ${JSON.stringify(
|
|
743
|
+
onIncident: (incidents) => {
|
|
744
|
+
logger.warn(`Incidents: ${JSON.stringify(incidents)}`);
|
|
795
745
|
},
|
|
796
746
|
onStudioWebUrl: (url) => {
|
|
797
747
|
if (options.openInBrowser !== true)
|
|
@@ -842,7 +792,7 @@ function registerDebugCommand(program) {
|
|
|
842
792
|
processContext.exit(3);
|
|
843
793
|
return;
|
|
844
794
|
}
|
|
845
|
-
if (executeError instanceof
|
|
795
|
+
if (executeError instanceof FlowDebugMissingResourcesError) {
|
|
846
796
|
OutputFormatter.error({
|
|
847
797
|
Result: RESULTS.Failure,
|
|
848
798
|
ErrorCode: "configuration_error",
|
|
@@ -851,14 +801,13 @@ function registerDebugCommand(program) {
|
|
|
851
801
|
Retry: "RetryWillNotFix",
|
|
852
802
|
Context: { stage: "prepare-debug-resources" },
|
|
853
803
|
Data: {
|
|
854
|
-
provisioningStatus: executeError.status,
|
|
855
804
|
missingResources: [
|
|
856
805
|
...executeError.missingResources
|
|
857
806
|
]
|
|
858
807
|
}
|
|
859
808
|
});
|
|
860
809
|
} else if (executeError instanceof DebugPollTimeoutError) {
|
|
861
|
-
OutputFormatter.error(buildPollTimeoutFailureOutput(executeError, "uip maestro flow debug-
|
|
810
|
+
OutputFormatter.error(buildPollTimeoutFailureOutput(executeError, "uip maestro flow debug-instances incidents"));
|
|
862
811
|
} else if (executeError instanceof MaestroHttpError) {
|
|
863
812
|
OutputFormatter.error(buildHttpFailureOutput(executeError));
|
|
864
813
|
} else if (isSolutionUploadHttpError(executeError)) {
|
|
@@ -908,19 +857,19 @@ function registerDebugCommand(program) {
|
|
|
908
857
|
};
|
|
909
858
|
let data = fullData;
|
|
910
859
|
if (options.summary) {
|
|
911
|
-
const
|
|
912
|
-
const [writeError, fullOutputPath] = await
|
|
860
|
+
const summary = buildDebugSummary(result);
|
|
861
|
+
const [writeError, fullOutputPath] = await catchError2(writeFullDebugOutput(getFileSystem(), projectPath, {
|
|
913
862
|
Result: success ? RESULTS.Success : RESULTS.Failure,
|
|
914
863
|
Code: "FlowDebug",
|
|
915
864
|
Data: fullData
|
|
916
865
|
}));
|
|
917
866
|
if (writeError) {
|
|
918
867
|
logger.warn(`Could not write the full debug output: ${writeError.message}`);
|
|
919
|
-
|
|
868
|
+
summary.fullOutputError = writeError.message;
|
|
920
869
|
} else {
|
|
921
|
-
|
|
870
|
+
summary.fullOutputPath = fullOutputPath;
|
|
922
871
|
}
|
|
923
|
-
data =
|
|
872
|
+
data = summary;
|
|
924
873
|
}
|
|
925
874
|
if (success) {
|
|
926
875
|
const instructions = result.variablesError ? `Debug completed with status: ${result.finalStatus}, but the output variables could not be read after ${result.variablesError.attempts} attempt(s): ${result.variablesError.message}. Data.${options.summary ? "outputs" : "variables"} is absent and Data.variablesError explains why — treat the outputs as UNKNOWN, not empty. ` + `Retry with ${variablesRetryCommand(result.instanceId, result.variablesError)}.` : `Debug completed with status: ${result.finalStatus}`;
|
|
@@ -936,7 +885,7 @@ function registerDebugCommand(program) {
|
|
|
936
885
|
const incidents = result.incidents ?? [];
|
|
937
886
|
const summary = summarizeIncidents(incidents);
|
|
938
887
|
const Message = incidents.length ? `Debug session ${result.finalStatus}. ${summary[0]}` : `Debug session ${result.finalStatus}. No incident details returned by PIMS.`;
|
|
939
|
-
const Instructions = incidents.length ? buildIncidentInstructions(incidents, result.instanceId) : `Run 'uip maestro flow debug-
|
|
888
|
+
const Instructions = incidents.length ? buildIncidentInstructions(incidents, result.instanceId) : `Run 'uip maestro flow debug-instances incidents ${result.instanceId}' to inspect the backend payload, then 'uip maestro flow incidents summary' to confirm whether the process recorded a tenant-level incident.`;
|
|
940
889
|
const Context = {};
|
|
941
890
|
if (incidents[0]?.errorCode) {
|
|
942
891
|
Context.errorCode = incidents[0].errorCode;
|
|
@@ -955,6 +904,10 @@ function registerDebugCommand(program) {
|
|
|
955
904
|
processContext.exit(1);
|
|
956
905
|
});
|
|
957
906
|
}
|
|
907
|
+
// ../maestro-sdk/src/shared-commands/process-list-window.ts
|
|
908
|
+
var MAX_PROCESS_PAGE_SIZE = 1000;
|
|
909
|
+
var createProcessLimitOption = () => new Option("-l, --limit <number>", `Number of items to return (1-${MAX_PROCESS_PAGE_SIZE})`).argParser((raw) => parseBoundedInt(raw, "--limit", { min: 1, max: MAX_PROCESS_PAGE_SIZE }));
|
|
910
|
+
var createProcessOffsetOption = () => new Option("--offset <number>", "Number of items to skip (0-1000000)").argParser(parseOffset).default(0);
|
|
958
911
|
// src/commands/debug-instances.ts
|
|
959
912
|
var registerDebugInstancesCommand = (program) => {
|
|
960
913
|
registerSharedDebugInstanceCommands(program, {
|
|
@@ -984,7 +937,7 @@ var EDGE_LIST_EXAMPLES = [
|
|
|
984
937
|
];
|
|
985
938
|
var EDGE_ADD_EXAMPLES = [
|
|
986
939
|
{
|
|
987
|
-
Description:
|
|
940
|
+
Description: `Add an edge between two nodes. Without --source-port / --target-port each end uses its default port: the one the node's definition marks as default, else "output" / "input", else the node's only flow port.`,
|
|
988
941
|
Command: "uip maestro flow edges create flow.json Node_1 Node_2",
|
|
989
942
|
Output: {
|
|
990
943
|
Code: "EdgeAddSuccess",
|
|
@@ -999,6 +952,38 @@ var EDGE_ADD_EXAMPLES = [
|
|
|
999
952
|
}
|
|
1000
953
|
}
|
|
1001
954
|
},
|
|
955
|
+
{
|
|
956
|
+
Description: 'A script node has no "output" port, so the edge leaves on its only flow port, "success" ("error" is never a default)',
|
|
957
|
+
Command: "uip maestro flow edges create flow.json script1 Node_2",
|
|
958
|
+
Output: {
|
|
959
|
+
Code: "EdgeAddSuccess",
|
|
960
|
+
Data: {
|
|
961
|
+
Edge: {
|
|
962
|
+
id: "script1-success-Node_2-input",
|
|
963
|
+
source: "script1",
|
|
964
|
+
target: "Node_2",
|
|
965
|
+
sourcePort: "success",
|
|
966
|
+
targetPort: "input"
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
},
|
|
971
|
+
{
|
|
972
|
+
Description: "A decision has two flow ports and no default, so name the branch with --source-port",
|
|
973
|
+
Command: "uip maestro flow edges create flow.json decision1 Node_2 --source-port true",
|
|
974
|
+
Output: {
|
|
975
|
+
Code: "EdgeAddSuccess",
|
|
976
|
+
Data: {
|
|
977
|
+
Edge: {
|
|
978
|
+
id: "decision1-true-Node_2-input",
|
|
979
|
+
source: "decision1",
|
|
980
|
+
target: "Node_2",
|
|
981
|
+
sourcePort: "true",
|
|
982
|
+
targetPort: "input"
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
},
|
|
1002
987
|
{
|
|
1003
988
|
Description: "Re-running with the same arguments is idempotent: returns the existing edge id with code EdgeAlreadyExists and a stderr warning.",
|
|
1004
989
|
Command: "uip maestro flow edges create flow.json Node_1 Node_2",
|
|
@@ -1052,9 +1037,9 @@ function getDeleteEdgeInstructions(file) {
|
|
|
1052
1037
|
return `Check that "${file}" exists and run 'uip maestro flow edges list ${file}' to find a valid edge ID, then retry.`;
|
|
1053
1038
|
}
|
|
1054
1039
|
async function runDeleteEdge(file, edgeId, code) {
|
|
1055
|
-
const { deleteEdgeFromFlow } = await import("./edge-service-
|
|
1040
|
+
const { deleteEdgeFromFlow } = await import("./edge-service-zck3s9ss.js");
|
|
1056
1041
|
const normalizedEdgeId = edgeId.trim();
|
|
1057
|
-
const [error, result] = await
|
|
1042
|
+
const [error, result] = await catchError2(deleteEdgeFromFlow(file, normalizedEdgeId));
|
|
1058
1043
|
if (error) {
|
|
1059
1044
|
OutputFormatter.error({
|
|
1060
1045
|
Result: RESULTS.Failure,
|
|
@@ -1075,8 +1060,8 @@ async function runDeleteEdge(file, edgeId, code) {
|
|
|
1075
1060
|
var registerEdgeCommand = (program) => {
|
|
1076
1061
|
const edge = program.command("edges").alias("edge").description("Manage edges in a Flow file");
|
|
1077
1062
|
addRowWindowOptions(edge.command("list")).description("List all edges in a Flow file").argument("<file>", "Path to the .flow file").examples(EDGE_LIST_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
1078
|
-
const { listEdgesInFlow } = await import("./edge-service-
|
|
1079
|
-
const [error, result] = await
|
|
1063
|
+
const { listEdgesInFlow } = await import("./edge-service-zck3s9ss.js");
|
|
1064
|
+
const [error, result] = await catchError2(listEdgesInFlow(file));
|
|
1080
1065
|
if (error) {
|
|
1081
1066
|
OutputFormatter.error({
|
|
1082
1067
|
Result: RESULTS.Failure,
|
|
@@ -1097,9 +1082,9 @@ var registerEdgeCommand = (program) => {
|
|
|
1097
1082
|
Pagination: window.pagination
|
|
1098
1083
|
});
|
|
1099
1084
|
});
|
|
1100
|
-
edge.command("create").alias("add").description("Add an edge between two nodes in a Flow file").argument("<file>", "Path to the .flow file").argument("<source-id>", "ID of the source node").argument("<target-id>", "ID of the target node").option("--source-port <port>",
|
|
1101
|
-
const { addEdgeToFlow } = await import("./edge-service-
|
|
1102
|
-
const [error, result] = await
|
|
1085
|
+
edge.command("create").alias("add").description("Add an edge between two nodes in a Flow file").argument("<file>", "Path to the .flow file").argument("<source-id>", "ID of the source node").argument("<target-id>", "ID of the target node").option("--source-port <port>", `Source port name (defaults to the port the node's definition marks as default, else "output", else the node's only flow port)`).option("--target-port <port>", `Target port name (defaults to the port the node's definition marks as default, else "input", else the node's only flow port)`).examples(EDGE_ADD_EXAMPLES).trackedAction(processContext, async (file, sourceId, targetId, options) => {
|
|
1086
|
+
const { addEdgeToFlow } = await import("./edge-service-zck3s9ss.js");
|
|
1087
|
+
const [error, result] = await catchError2(addEdgeToFlow(file, sourceId, targetId, {
|
|
1103
1088
|
sourcePort: options.sourcePort,
|
|
1104
1089
|
targetPort: options.targetPort
|
|
1105
1090
|
}));
|
|
@@ -1107,7 +1092,8 @@ var registerEdgeCommand = (program) => {
|
|
|
1107
1092
|
OutputFormatter.error({
|
|
1108
1093
|
Result: RESULTS.Failure,
|
|
1109
1094
|
Message: "Error adding edge",
|
|
1110
|
-
Instructions: error.message
|
|
1095
|
+
Instructions: error.message,
|
|
1096
|
+
ErrorCode: carriedErrorCode(error)
|
|
1111
1097
|
});
|
|
1112
1098
|
processContext.exit(1);
|
|
1113
1099
|
return;
|
|
@@ -1251,7 +1237,7 @@ async function resolveStudioWebConfig() {
|
|
|
1251
1237
|
async function pollRemoteEvalSetRun(service, config, workloadId, evalSetRunId, timeoutMs) {
|
|
1252
1238
|
const start = Date.now();
|
|
1253
1239
|
while (Date.now() - start < timeoutMs) {
|
|
1254
|
-
const [error, run] = await
|
|
1240
|
+
const [error, run] = await catchError2(service.getRemoteEvalSetRun(config, workloadId, evalSetRunId));
|
|
1255
1241
|
if (error) {
|
|
1256
1242
|
OutputFormatter.log({
|
|
1257
1243
|
Message: `Polling error: ${error.message}. Retrying...`
|
|
@@ -1338,9 +1324,9 @@ async function resolveRemoteTarget(service, options, config, requireSolutionId =
|
|
|
1338
1324
|
function registerEvalRunCommand(evalCmd) {
|
|
1339
1325
|
const runCmd = evalCmd.command("runs").alias("run").description("Run Flow evaluation sets in Studio Web");
|
|
1340
1326
|
addStartOptions(runCmd.command("start").description("Start a Studio Web evaluation run (Flow solution must be available in Studio Web)")).option("--wait", "Wait for the evaluation to complete and show results").option("--timeout <seconds>", "Timeout in seconds for --wait polling", (value) => Number.parseInt(value, 10)).examples(FLOW_EVAL_RUN_START_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
1341
|
-
const [error] = await
|
|
1327
|
+
const [error] = await catchError2((async () => {
|
|
1342
1328
|
const config = await resolveStudioWebConfig();
|
|
1343
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1329
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-5en4ahyn.js");
|
|
1344
1330
|
const service = new FlowEvalRunService;
|
|
1345
1331
|
const result = await service.startRemoteEvalRun(options.path, options.set, config, {
|
|
1346
1332
|
solutionId: options.solutionId,
|
|
@@ -1370,9 +1356,9 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1370
1356
|
}
|
|
1371
1357
|
});
|
|
1372
1358
|
addTargetOptions(runCmd.command("status").description("Check the status of a Studio Web Flow evaluation run").argument("<eval-set-run-id>", "Evaluation set run ID")).examples(FLOW_EVAL_RUN_STATUS_EXAMPLES).trackedAction(processContext, async (evalSetRunId, options) => {
|
|
1373
|
-
const [error] = await
|
|
1359
|
+
const [error] = await catchError2((async () => {
|
|
1374
1360
|
const config = await resolveStudioWebConfig();
|
|
1375
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1361
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-5en4ahyn.js");
|
|
1376
1362
|
const service = new FlowEvalRunService;
|
|
1377
1363
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1378
1364
|
const [run, evaluators] = await Promise.all([
|
|
@@ -1396,9 +1382,9 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1396
1382
|
}
|
|
1397
1383
|
});
|
|
1398
1384
|
addTargetOptions(runCmd.command("results").description("Get detailed results for a Studio Web Flow evaluation run").argument("<eval-set-run-id>", "Evaluation set run ID")).option("--only-failed", "Show only failed or errored data points").option("--verbose", "Include evaluator justifications in output").option("--export-format <json|csv>", "Export results to file (json or csv)").examples(FLOW_EVAL_RUN_RESULTS_EXAMPLES).trackedAction(processContext, async (evalSetRunId, options) => {
|
|
1399
|
-
const [error] = await
|
|
1385
|
+
const [error] = await catchError2((async () => {
|
|
1400
1386
|
const config = await resolveStudioWebConfig();
|
|
1401
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1387
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-5en4ahyn.js");
|
|
1402
1388
|
const service = new FlowEvalRunService;
|
|
1403
1389
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1404
1390
|
let evalRuns = await service.getRemoteEvalRuns(config, target.workloadId, evalSetRunId);
|
|
@@ -1430,9 +1416,9 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1430
1416
|
}
|
|
1431
1417
|
});
|
|
1432
1418
|
addTargetOptions(addRowWindowOptions(runCmd.command("list")).description("List Studio Web evaluation runs for a Flow eval set")).examples(FLOW_EVAL_RUN_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
1433
|
-
const [error] = await
|
|
1419
|
+
const [error] = await catchError2((async () => {
|
|
1434
1420
|
const config = await resolveStudioWebConfig();
|
|
1435
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1421
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-5en4ahyn.js");
|
|
1436
1422
|
const service = new FlowEvalRunService;
|
|
1437
1423
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1438
1424
|
const allRuns = await service.listRemoteEvalSetRuns(config, target.workloadId, target.evalSet.id);
|
|
@@ -1459,9 +1445,9 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1459
1445
|
}
|
|
1460
1446
|
});
|
|
1461
1447
|
addTargetOptions(runCmd.command("compare").description("Compare results of two Studio Web Flow evaluation runs").argument("<eval-set-run-id>", "First evaluation set run ID").requiredOption("--compare-to <id>", "Second evaluation set run ID to compare against")).examples(FLOW_EVAL_RUN_COMPARE_EXAMPLES).trackedAction(processContext, async (evalSetRunId, options) => {
|
|
1462
|
-
const [error] = await
|
|
1448
|
+
const [error] = await catchError2((async () => {
|
|
1463
1449
|
const config = await resolveStudioWebConfig();
|
|
1464
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1450
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-5en4ahyn.js");
|
|
1465
1451
|
const service = new FlowEvalRunService;
|
|
1466
1452
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1467
1453
|
const [runsA, runsB, runMetaA, runMetaB] = await Promise.all([
|
|
@@ -1593,8 +1579,8 @@ function registerEvalCommand(program) {
|
|
|
1593
1579
|
function registerEvaluatorCommands(evalCmd) {
|
|
1594
1580
|
const evaluator = evalCmd.command("evaluators").alias("evaluator").description("Manage Flow evaluators");
|
|
1595
1581
|
evaluator.command("create").alias("add").description("Add an evaluator to the flow project").argument("<name>", "Evaluator name").requiredOption("--type <type>", `Evaluator type: ${evaluatorTypeAliases().join(", ")}`).option("--description <text>", "Evaluator description").option("--target-key <key>", "Target output key", "*").option("--model <model>", "LLM model for LLM judge evaluators").option("--prompt <prompt>", "Custom LLM judge prompt").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (name, options) => {
|
|
1596
|
-
const [error] = await
|
|
1597
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1582
|
+
const [error] = await catchError2((async () => {
|
|
1583
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1598
1584
|
const service = new FlowEvalService;
|
|
1599
1585
|
const created = await service.addEvaluator(options.path, {
|
|
1600
1586
|
name,
|
|
@@ -1620,8 +1606,8 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1620
1606
|
}
|
|
1621
1607
|
});
|
|
1622
1608
|
addRowWindowOptions(evaluator.command("list")).description("List evaluators in a flow project").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1623
|
-
const [error] = await
|
|
1624
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1609
|
+
const [error] = await catchError2((async () => {
|
|
1610
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1625
1611
|
const service = new FlowEvalService;
|
|
1626
1612
|
const evaluators = await service.listEvaluators(options.path);
|
|
1627
1613
|
const window = rowWindow(evaluators, options);
|
|
@@ -1643,8 +1629,8 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1643
1629
|
}
|
|
1644
1630
|
});
|
|
1645
1631
|
evaluator.command("delete").alias("remove").description("Remove an evaluator from a flow project").argument("<id>", "Evaluator ID, name, or file base name").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (id, options) => {
|
|
1646
|
-
const [error] = await
|
|
1647
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1632
|
+
const [error] = await catchError2((async () => {
|
|
1633
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1648
1634
|
const service = new FlowEvalService;
|
|
1649
1635
|
const removed = await service.removeEvaluator(options.path, id);
|
|
1650
1636
|
if (!removed) {
|
|
@@ -1664,9 +1650,9 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1664
1650
|
function registerEvalSetCommands(evalCmd) {
|
|
1665
1651
|
const set = evalCmd.command("sets").alias("set").description("Manage evaluation sets");
|
|
1666
1652
|
set.command("create").alias("add").description("Create an evaluation set").argument("<name>", "Evaluation set name").option("--evaluators <refs>", "Comma-separated evaluator IDs or file base names (default: all)").option("--entry-point <id>", "Entry point node id — a trigger node id from the .flow file (not a BPMN path), stored as the eval set's selectedEntrypoint; defaults to the flow's trigger. An agent node id creates a node-scoped eval set (evaluates that node in isolation)").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (name, options) => {
|
|
1667
|
-
const [error] = await
|
|
1668
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1669
|
-
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-
|
|
1653
|
+
const [error] = await catchError2((async () => {
|
|
1654
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1655
|
+
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-tdrwqca7.js");
|
|
1670
1656
|
const service = new FlowEvalService;
|
|
1671
1657
|
const created = await service.addEvalSet(options.path, {
|
|
1672
1658
|
name,
|
|
@@ -1692,9 +1678,9 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1692
1678
|
}
|
|
1693
1679
|
});
|
|
1694
1680
|
addRowWindowOptions(set.command("list")).description("List evaluation sets").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1695
|
-
const [error] = await
|
|
1696
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1697
|
-
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-
|
|
1681
|
+
const [error] = await catchError2((async () => {
|
|
1682
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1683
|
+
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-tdrwqca7.js");
|
|
1698
1684
|
const service = new FlowEvalService;
|
|
1699
1685
|
const sets = await service.listEvalSets(options.path);
|
|
1700
1686
|
const window = rowWindow(sets, options);
|
|
@@ -1721,8 +1707,8 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1721
1707
|
}
|
|
1722
1708
|
});
|
|
1723
1709
|
set.command("delete").alias("remove").description("Remove an evaluation set").argument("<id>", "Evaluation set ID, name, or file base name").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (id, options) => {
|
|
1724
|
-
const [error] = await
|
|
1725
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1710
|
+
const [error] = await catchError2((async () => {
|
|
1711
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1726
1712
|
const service = new FlowEvalService;
|
|
1727
1713
|
const removed = await service.removeEvalSet(options.path, id);
|
|
1728
1714
|
if (!removed) {
|
|
@@ -1741,12 +1727,12 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1741
1727
|
}
|
|
1742
1728
|
function registerEvaluationCommands(evalCmd) {
|
|
1743
1729
|
evalCmd.command("create").alias("add").description("Add a data point to an evaluation set").argument("<name>", "Data point name").requiredOption("--set <name>", "Evaluation set name or ID").option("--inputs <json>", "Input values as a JSON object").option("--input-file <key=path>", "Attach a file as input <key>; repeatable", collectInputFile, []).option("--expected <json>", "Expected output as a JSON object").option("--criteria <json>", "Per-evaluator criteria JSON object keyed by evaluator id").option("--search-text <text>", "Search text for contains evaluators").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (name, options) => {
|
|
1744
|
-
const [error] = await
|
|
1730
|
+
const [error] = await catchError2((async () => {
|
|
1745
1731
|
const inputs = options.inputs === undefined ? {} : parseJsonObject(options.inputs, "--inputs");
|
|
1746
1732
|
const inputFiles = parseInputFiles(options.inputFile);
|
|
1747
1733
|
const expectedOutput = options.expected ? parseJsonObject(options.expected, "--expected") : undefined;
|
|
1748
1734
|
const criteria = options.criteria ? parseCriteriaOption(options.criteria) : undefined;
|
|
1749
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1735
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1750
1736
|
const service = new FlowEvalService;
|
|
1751
1737
|
const evaluation = await service.addEvaluation(options.path, options.set, {
|
|
1752
1738
|
name,
|
|
@@ -1772,8 +1758,8 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1772
1758
|
}
|
|
1773
1759
|
});
|
|
1774
1760
|
addRowWindowOptions(evalCmd.command("list")).description("List data points in an evaluation set").requiredOption("--set <name>", "Evaluation set name or ID").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1775
|
-
const [error] = await
|
|
1776
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1761
|
+
const [error] = await catchError2((async () => {
|
|
1762
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1777
1763
|
const service = new FlowEvalService;
|
|
1778
1764
|
const evaluations = await service.listEvaluations(options.path, options.set);
|
|
1779
1765
|
const window = rowWindow(evaluations, options);
|
|
@@ -1795,8 +1781,8 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1795
1781
|
}
|
|
1796
1782
|
});
|
|
1797
1783
|
evalCmd.command("delete").alias("remove").description("Remove a data point from an evaluation set").argument("<id>", "Data point ID or name").requiredOption("--set <name>", "Evaluation set name or ID").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (id, options) => {
|
|
1798
|
-
const [error] = await
|
|
1799
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1784
|
+
const [error] = await catchError2((async () => {
|
|
1785
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1800
1786
|
const service = new FlowEvalService;
|
|
1801
1787
|
const removed = await service.removeEvaluation(options.path, options.set, id);
|
|
1802
1788
|
if (!removed) {
|
|
@@ -1816,7 +1802,7 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1816
1802
|
function registerSimulationCommands(evalCmd) {
|
|
1817
1803
|
const simulation = evalCmd.command("simulations").alias("simulation").description("Manage simulations on eval data points");
|
|
1818
1804
|
simulation.command("create").alias("add").description("Add or update a simulation on a data point").argument("<component-id>", "Component ID to simulate").requiredOption("--set <name>", "Evaluation set name or ID").requiredOption("--data-point <id>", "Data point name or ID").requiredOption("--strategy <strategy>", "Simulation strategy: Static or Llm").option("--component-type <type>", "Component type (defaults to Node when --parent is used)").option("--component-description <text>", "Component description").option("--simulation-instructions <text>", "Simulation instructions (for Llm strategy)").option("--mock-value <json>", "Mock output value as JSON (for Static strategy)").option("--parent <component-id>", "Parent agent component ID. When set, the simulation is added as a child tool simulation on the parent agent node.").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (componentId, options) => {
|
|
1819
|
-
const [error] = await
|
|
1805
|
+
const [error] = await catchError2((async () => {
|
|
1820
1806
|
const strategy = options.strategy;
|
|
1821
1807
|
if (strategy !== "Static" && strategy !== "Llm") {
|
|
1822
1808
|
throw new Error(`--strategy must be Static or Llm (got "${strategy}")`);
|
|
@@ -1832,7 +1818,7 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1832
1818
|
throw new Error("--simulation-instructions is required for the Llm strategy");
|
|
1833
1819
|
}
|
|
1834
1820
|
const mockValue = options.mockValue !== undefined ? parseJsonValue(options.mockValue, "--mock-value") : undefined;
|
|
1835
|
-
const
|
|
1821
|
+
const simulation = {
|
|
1836
1822
|
componentId,
|
|
1837
1823
|
componentType,
|
|
1838
1824
|
componentDescription: options.componentDescription,
|
|
@@ -1840,10 +1826,10 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1840
1826
|
simulationInstruction: options.simulationInstructions,
|
|
1841
1827
|
mockValue
|
|
1842
1828
|
};
|
|
1843
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1829
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1844
1830
|
const service = new FlowEvalService;
|
|
1845
1831
|
if (options.parent !== undefined) {
|
|
1846
|
-
const { simulation: created, warning } = await service.addChildSimulation(options.path, options.set, options.dataPoint, options.parent,
|
|
1832
|
+
const { simulation: created, warning } = await service.addChildSimulation(options.path, options.set, options.dataPoint, options.parent, simulation);
|
|
1847
1833
|
const data = {
|
|
1848
1834
|
ComponentId: created.componentId,
|
|
1849
1835
|
ComponentType: created.componentType,
|
|
@@ -1862,7 +1848,7 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1862
1848
|
Data: data
|
|
1863
1849
|
});
|
|
1864
1850
|
} else {
|
|
1865
|
-
const created = await service.addSimulation(options.path, options.set, options.dataPoint,
|
|
1851
|
+
const created = await service.addSimulation(options.path, options.set, options.dataPoint, simulation);
|
|
1866
1852
|
OutputFormatter.success({
|
|
1867
1853
|
Result: RESULTS.Success,
|
|
1868
1854
|
Code: "FlowEvalSimulationAdd",
|
|
@@ -1881,8 +1867,8 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1881
1867
|
}
|
|
1882
1868
|
});
|
|
1883
1869
|
addRowWindowOptions(simulation.command("list")).description("List simulations on a data point").requiredOption("--set <name>", "Evaluation set name or ID").requiredOption("--data-point <id>", "Data point name or ID").option("--parent <component-id>", "Parent agent component ID. When set, lists child tool simulations on the parent agent node.").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1884
|
-
const [error] = await
|
|
1885
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1870
|
+
const [error] = await catchError2((async () => {
|
|
1871
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1886
1872
|
const service = new FlowEvalService;
|
|
1887
1873
|
const simulations = options.parent !== undefined ? await service.listChildSimulations(options.path, options.set, options.dataPoint, options.parent) : await service.listSimulations(options.path, options.set, options.dataPoint);
|
|
1888
1874
|
const window = rowWindow(simulations, options);
|
|
@@ -1905,8 +1891,8 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1905
1891
|
}
|
|
1906
1892
|
});
|
|
1907
1893
|
simulation.command("delete").alias("remove").description("Remove a simulation from a data point").argument("<component-id>", "Component ID to remove").requiredOption("--set <name>", "Evaluation set name or ID").requiredOption("--data-point <id>", "Data point name or ID").option("--parent <component-id>", "Parent agent component ID. When set, removes a child tool simulation from the parent agent node.").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (componentId, options) => {
|
|
1908
|
-
const [error] = await
|
|
1909
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1894
|
+
const [error] = await catchError2((async () => {
|
|
1895
|
+
const { FlowEvalService } = await import("./flow-eval-service-2j28ect1.js");
|
|
1910
1896
|
const service = new FlowEvalService;
|
|
1911
1897
|
const removed = options.parent !== undefined ? await service.removeChildSimulation(options.path, options.set, options.dataPoint, options.parent, componentId) : await service.removeSimulation(options.path, options.set, options.dataPoint, componentId);
|
|
1912
1898
|
if (!removed) {
|
|
@@ -1943,10 +1929,10 @@ function parsePosition(value) {
|
|
|
1943
1929
|
return { x, y };
|
|
1944
1930
|
}
|
|
1945
1931
|
function parsePositionOption(raw) {
|
|
1946
|
-
return
|
|
1932
|
+
return catchError2(() => parsePosition(raw));
|
|
1947
1933
|
}
|
|
1948
1934
|
function parseSchemaOption(raw) {
|
|
1949
|
-
const [parseErr, parsed] =
|
|
1935
|
+
const [parseErr, parsed] = catchError2(() => JSON.parse(raw));
|
|
1950
1936
|
if (parseErr)
|
|
1951
1937
|
return [parseErr, undefined];
|
|
1952
1938
|
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
@@ -2051,8 +2037,8 @@ var registerHitlCommand = (program) => {
|
|
|
2051
2037
|
}
|
|
2052
2038
|
schema = parsed;
|
|
2053
2039
|
}
|
|
2054
|
-
const { addHitlNode } = await import("./hitl-service-
|
|
2055
|
-
const [error, result] = await
|
|
2040
|
+
const { addHitlNode } = await import("./hitl-service-hccqhm63.js");
|
|
2041
|
+
const [error, result] = await catchError2(addHitlNode(file, {
|
|
2056
2042
|
schema,
|
|
2057
2043
|
priority: options.priority,
|
|
2058
2044
|
position,
|
|
@@ -2144,9 +2130,9 @@ Packing or uploading the solution will sync solution resources automatically.`
|
|
|
2144
2130
|
];
|
|
2145
2131
|
var registerInitCommand = (program) => {
|
|
2146
2132
|
program.command("init").description("Create a new Flow project with boilerplate files. If run outside an existing solution, a parent '<name>Solution' is scaffolded automatically and the flow project is created inside it. If run inside an existing solution, the project is added to that solution.").argument("<name>", "Flow project name").option("--force", "Force initialization even if target directory exists and is not empty").option("--skip-solution-registration", "Do not auto-register this project in the surrounding solution").option("--automate", "Create a Maestro Automate project. Same Flow project and the same commands — it only changes the runtime profile written into operate.json.").option("--sdk-source [file]", "Also write the builder-SDK source: decompile the new .flow into <project>/.flow-sdk/<name>.flow.ts, or into [file] (relative to the current directory), creating its folder. Same as running 'uip maestro flow decompile <name>.flow -o <file> --no-pipeline' after init. Requires @uipath/maestro-builder-sdk.").examples(FLOW_INIT_EXAMPLES).trackedAction(processContext, async (name, options) => {
|
|
2147
|
-
const { flowInitAsync, FlowInitSdkSourceError } = await import("./flow-init-service-
|
|
2148
|
-
const { RuntimeProfile } = await import("./maestro-automate-entry-
|
|
2149
|
-
const [error, result] = await
|
|
2133
|
+
const { flowInitAsync, FlowInitSdkSourceError } = await import("./flow-init-service-bj3ev9bz.js");
|
|
2134
|
+
const { RuntimeProfile } = await import("./maestro-automate-entry-d1v5q5mv.js");
|
|
2135
|
+
const [error, result] = await catchError2(flowInitAsync(name, {
|
|
2150
2136
|
force: options.force,
|
|
2151
2137
|
skipRegistration: options.skipSolutionRegistration === true,
|
|
2152
2138
|
profile: options.automate ? RuntimeProfile.Lite : RuntimeProfile.Standard,
|
|
@@ -2217,6 +2203,8 @@ var VALID_JOB_STATES = [
|
|
|
2217
2203
|
var DEFAULT_JOB_LIST_LIMIT = "50";
|
|
2218
2204
|
var DEFAULT_JOB_LIST_OFFSET = "0";
|
|
2219
2205
|
var DEFAULT_JOB_LIST_ORDER_BY = "Id desc";
|
|
2206
|
+
var FOLDER_KEY_ERRORS = new Set(["not_found", "invalid_argument"]);
|
|
2207
|
+
var FOLDER_KEY_INSTRUCTIONS = "Check the --folder-key (uip or folders list) and retry.";
|
|
2220
2208
|
var FLOW_JOB_LIST_EXAMPLES = [
|
|
2221
2209
|
{
|
|
2222
2210
|
Description: "List recent Flow jobs in a folder",
|
|
@@ -2303,28 +2291,7 @@ function formatFlowJob(job) {
|
|
|
2303
2291
|
function registerJobCommand(program) {
|
|
2304
2292
|
const jobCmd = program.command("jobs").alias("job").description("Manage Flow jobs");
|
|
2305
2293
|
jobCmd.command("list").description("List Flow jobs in a folder").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--folder-key <key>", "Folder key (GUID, defaults to authenticated folder)").option("--state <state>", `Filter by job state (${VALID_JOB_STATES.join(", ")})`).option("--process-name <name>", "Filter by Flow process name (contains match)").option("-l, --limit <number>", "Number of items to return", DEFAULT_JOB_LIST_LIMIT).option("--offset <number>", "Number of items to skip", DEFAULT_JOB_LIST_OFFSET).option("--sort-by <field>", "Sort results by field (e.g., 'Id desc')", DEFAULT_JOB_LIST_ORDER_BY).option("--all-fields", "Return all fields from the API response instead of a curated summary").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", (value) => Number.parseInt(value, 10), 10).examples(FLOW_JOB_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
2306
|
-
const {
|
|
2307
|
-
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
2308
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
2309
|
-
}));
|
|
2310
|
-
if (loginError) {
|
|
2311
|
-
OutputFormatter.error({
|
|
2312
|
-
Result: RESULTS.Failure,
|
|
2313
|
-
Message: loginError.message,
|
|
2314
|
-
Instructions: instructionsFor("auth", loginError)
|
|
2315
|
-
});
|
|
2316
|
-
processContext.exit(1);
|
|
2317
|
-
return;
|
|
2318
|
-
}
|
|
2319
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
2320
|
-
OutputFormatter.error({
|
|
2321
|
-
Result: RESULTS.Failure,
|
|
2322
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
2323
|
-
Instructions: instructionsFor("auth")
|
|
2324
|
-
});
|
|
2325
|
-
processContext.exit(1);
|
|
2326
|
-
return;
|
|
2327
|
-
}
|
|
2294
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
2328
2295
|
const normalizedOptions = {
|
|
2329
2296
|
tenant: normalizeOptionalOption(options.tenant),
|
|
2330
2297
|
folderKey: normalizeOptionalOption(options.folderKey),
|
|
@@ -2332,16 +2299,18 @@ function registerJobCommand(program) {
|
|
|
2332
2299
|
processName: normalizeOptionalOption(options.processName),
|
|
2333
2300
|
orderBy: normalizeOptionalOption(options.sortBy)
|
|
2334
2301
|
};
|
|
2335
|
-
const
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2302
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
2303
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
2304
|
+
tenant: normalizedOptions.tenant,
|
|
2305
|
+
requireOrganizationId: true,
|
|
2306
|
+
requireTenantName: true
|
|
2307
|
+
}));
|
|
2308
|
+
if (authError) {
|
|
2309
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
2342
2310
|
processContext.exit(1);
|
|
2343
2311
|
return;
|
|
2344
2312
|
}
|
|
2313
|
+
const { tenantName } = auth;
|
|
2345
2314
|
const state = normalizedOptions.state;
|
|
2346
2315
|
if (state && !VALID_JOB_STATES.includes(state)) {
|
|
2347
2316
|
OutputFormatter.error({
|
|
@@ -2370,14 +2339,14 @@ function registerJobCommand(program) {
|
|
|
2370
2339
|
processKey: "",
|
|
2371
2340
|
folderKey: normalizedOptions.folderKey ?? "",
|
|
2372
2341
|
inputs: {},
|
|
2373
|
-
authToken:
|
|
2374
|
-
organizationId:
|
|
2342
|
+
authToken: auth.accessToken,
|
|
2343
|
+
organizationId: auth.organizationId,
|
|
2375
2344
|
tenantName,
|
|
2376
|
-
tenantId:
|
|
2377
|
-
baseUrl:
|
|
2345
|
+
tenantId: auth.tenantId,
|
|
2346
|
+
baseUrl: auth.baseUrl
|
|
2378
2347
|
};
|
|
2379
|
-
const { listFlowJobs } = await import("./flow-api-
|
|
2380
|
-
const [listError, jobs] = await
|
|
2348
|
+
const { listFlowJobs } = await import("./flow-api-d4dvmadm.js");
|
|
2349
|
+
const [listError, jobs] = await catchError2(listFlowJobs(config, {
|
|
2381
2350
|
state,
|
|
2382
2351
|
processName: normalizedOptions.processName,
|
|
2383
2352
|
limit,
|
|
@@ -2406,48 +2375,30 @@ function registerJobCommand(program) {
|
|
|
2406
2375
|
}
|
|
2407
2376
|
});
|
|
2408
2377
|
});
|
|
2409
|
-
jobCmd.command("traces").description("Stream traces for a running job").argument("<job-key>", "Job key (GUID from run command)")
|
|
2410
|
-
|
|
2411
|
-
const
|
|
2412
|
-
|
|
2378
|
+
const tracesCmd = jobCmd.command("traces").description("Stream traces for a running job").argument("<job-key>", "Job key (GUID from run command)");
|
|
2379
|
+
addJobTracesOptions(tracesCmd).trackedAction(processContext, async (jobKey, options) => {
|
|
2380
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
2381
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
2382
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
2383
|
+
tenant: options.tenant,
|
|
2384
|
+
requireOrganizationId: true,
|
|
2385
|
+
requireTenantName: true
|
|
2413
2386
|
}));
|
|
2414
|
-
if (
|
|
2415
|
-
OutputFormatter.error(
|
|
2416
|
-
Result: RESULTS.Failure,
|
|
2417
|
-
Message: loginError.message,
|
|
2418
|
-
Instructions: instructionsFor("auth", loginError)
|
|
2419
|
-
});
|
|
2420
|
-
processContext.exit(1);
|
|
2421
|
-
return;
|
|
2422
|
-
}
|
|
2423
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
2424
|
-
OutputFormatter.error({
|
|
2425
|
-
Result: RESULTS.Failure,
|
|
2426
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
2427
|
-
Instructions: instructionsFor("auth")
|
|
2428
|
-
});
|
|
2429
|
-
processContext.exit(1);
|
|
2430
|
-
return;
|
|
2431
|
-
}
|
|
2432
|
-
const tenantName = options.tenant || loginStatus.tenantName;
|
|
2433
|
-
if (!tenantName || !loginStatus.organizationId) {
|
|
2434
|
-
OutputFormatter.error({
|
|
2435
|
-
Result: RESULTS.Failure,
|
|
2436
|
-
Message: "Missing tenant or organization info.",
|
|
2437
|
-
Instructions: instructionsFor("identity")
|
|
2438
|
-
});
|
|
2387
|
+
if (authError) {
|
|
2388
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
2439
2389
|
processContext.exit(1);
|
|
2440
2390
|
return;
|
|
2441
2391
|
}
|
|
2392
|
+
const { tenantName } = auth;
|
|
2442
2393
|
const config = {
|
|
2443
2394
|
processKey: "",
|
|
2444
|
-
folderKey: "",
|
|
2395
|
+
folderKey: options.folderKey ?? "",
|
|
2445
2396
|
inputs: {},
|
|
2446
|
-
authToken:
|
|
2447
|
-
organizationId:
|
|
2397
|
+
authToken: auth.accessToken,
|
|
2398
|
+
organizationId: auth.organizationId,
|
|
2448
2399
|
tenantName,
|
|
2449
|
-
tenantId:
|
|
2450
|
-
baseUrl:
|
|
2400
|
+
tenantId: auth.tenantId,
|
|
2401
|
+
baseUrl: auth.baseUrl,
|
|
2451
2402
|
tracesServiceName: options.tracesService
|
|
2452
2403
|
};
|
|
2453
2404
|
const pollIntervalMs = parseInt(options.pollInterval || "2000", 10);
|
|
@@ -2463,9 +2414,23 @@ function registerJobCommand(program) {
|
|
|
2463
2414
|
const pollSeconds = pollIntervalMs / 1000;
|
|
2464
2415
|
logger.info(`Streaming traces for job: ${jobKey}
|
|
2465
2416
|
Polling every ${pollSeconds}s...`);
|
|
2466
|
-
const {
|
|
2467
|
-
|
|
2468
|
-
|
|
2417
|
+
const { resolveFlowFolderId, streamJobTraces } = await import("./flow-api-d4dvmadm.js");
|
|
2418
|
+
let folderId;
|
|
2419
|
+
if (config.folderKey) {
|
|
2420
|
+
const [folderError, resolvedId] = await catchError2(resolveFlowFolderId(config));
|
|
2421
|
+
if (folderError) {
|
|
2422
|
+
const failure = await backendFailure(folderError, instructionsFor("backend", folderError));
|
|
2423
|
+
if (failure.ErrorCode !== undefined && FOLDER_KEY_ERRORS.has(failure.ErrorCode)) {
|
|
2424
|
+
failure.Instructions = FOLDER_KEY_INSTRUCTIONS;
|
|
2425
|
+
}
|
|
2426
|
+
OutputFormatter.error(failure);
|
|
2427
|
+
processContext.exit(1);
|
|
2428
|
+
return;
|
|
2429
|
+
}
|
|
2430
|
+
folderId = resolvedId;
|
|
2431
|
+
}
|
|
2432
|
+
const [tracesError, result] = await catchError2(streamJobTraces(config, jobKey, {
|
|
2433
|
+
folderId,
|
|
2469
2434
|
onTrace: (trace) => {
|
|
2470
2435
|
if (options.pretty) {
|
|
2471
2436
|
ScreenLogger.progress(formatTraceLine(trace));
|
|
@@ -2473,8 +2438,8 @@ function registerJobCommand(program) {
|
|
|
2473
2438
|
ScreenLogger.progress(JSON.stringify(trace));
|
|
2474
2439
|
}
|
|
2475
2440
|
},
|
|
2476
|
-
onComplete: (
|
|
2477
|
-
ScreenLogger.progress(`Job ${jobKey}: ${
|
|
2441
|
+
onComplete: (result) => {
|
|
2442
|
+
ScreenLogger.progress(`Job ${jobKey}: ${result.finalState} (${result.duration}ms)`);
|
|
2478
2443
|
},
|
|
2479
2444
|
onError: (error) => {
|
|
2480
2445
|
ScreenLogger.progress(`Error: ${error.message}`);
|
|
@@ -2502,50 +2467,31 @@ function registerJobCommand(program) {
|
|
|
2502
2467
|
processContext.exit(result.success ? 0 : 1);
|
|
2503
2468
|
});
|
|
2504
2469
|
jobCmd.command("status").description("Get detailed status of a Flow job").argument("<job-key>", "Job key (GUID from run command)").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--folder-key <key>", "Folder key (GUID from list command, defaults to authenticated folder)").option("--detailed", "Show full response with all fields").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(FLOW_JOB_STATUS_EXAMPLES).trackedAction(processContext, async (jobKey, options) => {
|
|
2505
|
-
const {
|
|
2506
|
-
const [
|
|
2507
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
2470
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
2471
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
2472
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
2473
|
+
tenant: options.tenant,
|
|
2474
|
+
requireOrganizationId: true,
|
|
2475
|
+
requireTenantName: true
|
|
2508
2476
|
}));
|
|
2509
|
-
if (
|
|
2510
|
-
OutputFormatter.error(
|
|
2511
|
-
Result: RESULTS.Failure,
|
|
2512
|
-
Message: loginError.message,
|
|
2513
|
-
Instructions: instructionsFor("auth", loginError)
|
|
2514
|
-
});
|
|
2515
|
-
processContext.exit(1);
|
|
2516
|
-
return;
|
|
2517
|
-
}
|
|
2518
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
2519
|
-
OutputFormatter.error({
|
|
2520
|
-
Result: RESULTS.Failure,
|
|
2521
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
2522
|
-
Instructions: instructionsFor("auth")
|
|
2523
|
-
});
|
|
2524
|
-
processContext.exit(1);
|
|
2525
|
-
return;
|
|
2526
|
-
}
|
|
2527
|
-
const tenantName = options.tenant || loginStatus.tenantName;
|
|
2528
|
-
if (!tenantName || !loginStatus.organizationId) {
|
|
2529
|
-
OutputFormatter.error({
|
|
2530
|
-
Result: RESULTS.Failure,
|
|
2531
|
-
Message: "Missing tenant or organization info.",
|
|
2532
|
-
Instructions: instructionsFor("identity")
|
|
2533
|
-
});
|
|
2477
|
+
if (authError) {
|
|
2478
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
2534
2479
|
processContext.exit(1);
|
|
2535
2480
|
return;
|
|
2536
2481
|
}
|
|
2482
|
+
const { tenantName } = auth;
|
|
2537
2483
|
const config = {
|
|
2538
2484
|
processKey: "",
|
|
2539
2485
|
folderKey: options.folderKey ?? "",
|
|
2540
2486
|
inputs: {},
|
|
2541
|
-
authToken:
|
|
2542
|
-
organizationId:
|
|
2487
|
+
authToken: auth.accessToken,
|
|
2488
|
+
organizationId: auth.organizationId,
|
|
2543
2489
|
tenantName,
|
|
2544
|
-
tenantId:
|
|
2545
|
-
baseUrl:
|
|
2490
|
+
tenantId: auth.tenantId,
|
|
2491
|
+
baseUrl: auth.baseUrl
|
|
2546
2492
|
};
|
|
2547
|
-
const { getJobStatusDetailed } = await import("./flow-api-
|
|
2548
|
-
const [statusError, status] = await
|
|
2493
|
+
const { getJobStatusDetailed } = await import("./flow-api-d4dvmadm.js");
|
|
2494
|
+
const [statusError, status] = await catchError2(getJobStatusDetailed(config, jobKey));
|
|
2549
2495
|
if (statusError) {
|
|
2550
2496
|
OutputFormatter.error({
|
|
2551
2497
|
Result: RESULTS.Failure,
|
|
@@ -2628,8 +2574,8 @@ var FLOW_MIGRATE_EXAMPLES = [
|
|
|
2628
2574
|
];
|
|
2629
2575
|
var registerMigrateCommand = (program) => {
|
|
2630
2576
|
program.command("migrate").description("Migrate a .flow file to the current workflow and node schema versions").argument("<file>", "Path to the .flow file").option("--dry-run", "Show what would change without writing the file").option("--no-include-optional", "Skip optional node migrations (e.g. typeVersion normalization). Default: optional migrations are applied.").examples(FLOW_MIGRATE_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
2631
|
-
const { migrateFlow } = await import("./flow-migrate-service-
|
|
2632
|
-
const [error, result] = await
|
|
2577
|
+
const { migrateFlow } = await import("./flow-migrate-service-dkx85jj5.js");
|
|
2578
|
+
const [error, result] = await catchError2(migrateFlow(file, {
|
|
2633
2579
|
dryRun: options.dryRun,
|
|
2634
2580
|
includeOptional: options.includeOptional
|
|
2635
2581
|
}));
|
|
@@ -2794,9 +2740,9 @@ function getDeleteNodeInstructions(file) {
|
|
|
2794
2740
|
return `Check that "${file}" exists and run 'uip maestro flow nodes list ${file}' to find a valid node ID, then retry.`;
|
|
2795
2741
|
}
|
|
2796
2742
|
async function runDeleteNode(file, nodeId, code) {
|
|
2797
|
-
const { deleteNodeFromFlow } = await import("./node-service-
|
|
2743
|
+
const { deleteNodeFromFlow } = await import("./node-service-2nxpk751.js");
|
|
2798
2744
|
const normalizedNodeId = nodeId.trim();
|
|
2799
|
-
const [error, result] = await
|
|
2745
|
+
const [error, result] = await catchError2(deleteNodeFromFlow(file, normalizedNodeId));
|
|
2800
2746
|
if (error) {
|
|
2801
2747
|
OutputFormatter.error({
|
|
2802
2748
|
Result: RESULTS.Failure,
|
|
@@ -2823,6 +2769,7 @@ var registerNodeCommand = (program) => {
|
|
|
2823
2769
|
const node = program.command("nodes").alias("node").description("Manage nodes in a Flow file");
|
|
2824
2770
|
node.command("create").alias("add").description(`Add a node to a Flow file.
|
|
2825
2771
|
` + "For connector nodes (type uipath.connector), do NOT pass --input here — " + `run 'nodes configure' afterwards to supply connection and endpoint details.
|
|
2772
|
+
Read file / Create file (core.action.file.*) also need 'nodes configure' to bind their Orchestrator connection; a connectionId passed in --input alone is not bound.
|
|
2826
2773
|
Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIssue --label 'Create Jira Issue'`).argument("<file>", "Path to the .flow file").argument("<node-type>", "Node type identifier (e.g. core.trigger.manual)").option("-i, --input <json>", `JSON object of input values to set on the node (e.g. '{"script": "..."}')`).option("--position <x,y>", "Node position in the canvas (e.g. 250,150)").option("--label <label>", "Display label for the node").option("--source <uuid>", "Source UUID for nodes whose manifest declares a source dependency. Use the agent's ProjectId (inline agent nodes) or the resource id from the parent inline agent's resources[] (agent-tool resource nodes). Populates inputs.source.").option("--parent <node-id>", "Id of the existing node that should contain this node. Set when authoring a loop body whose containment cannot be " + "inferred from edges alone — typically the id of a " + "core.logic.loop node.").option("--metadata <file>", "Non-catalog activity only: the generated activity metadata (<Name>.json from 'uip is activities metadata generate'). The node definition is built from it instead of the registry; the node type must be uipath.connector.custom.<connector-key>.<slug>. Requires --scripts.").option("--scripts <dir>", "Non-catalog activity only: directory holding <scriptRef>.js for the action and every lookup the metadata references; the sources are embedded in the node. Requires --metadata.").examples(NODE_ADD_EXAMPLES).trackedAction(processContext, async (file, nodeType, options) => {
|
|
2827
2774
|
if (options.metadata === undefined !== (options.scripts === undefined)) {
|
|
2828
2775
|
OutputFormatter.error({
|
|
@@ -2839,7 +2786,7 @@ Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIss
|
|
|
2839
2786
|
} : undefined;
|
|
2840
2787
|
let inputs;
|
|
2841
2788
|
if (options.input !== undefined) {
|
|
2842
|
-
const [parseError, parsed] =
|
|
2789
|
+
const [parseError, parsed] = catchError2(() => JSON.parse(options.input));
|
|
2843
2790
|
if (parseError) {
|
|
2844
2791
|
OutputFormatter.error({
|
|
2845
2792
|
Result: RESULTS.Failure,
|
|
@@ -2862,7 +2809,7 @@ Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIss
|
|
|
2862
2809
|
}
|
|
2863
2810
|
let position;
|
|
2864
2811
|
if (options.position !== undefined) {
|
|
2865
|
-
const [posError, parsed] =
|
|
2812
|
+
const [posError, parsed] = catchError2(() => parsePosition2(options.position));
|
|
2866
2813
|
if (posError) {
|
|
2867
2814
|
OutputFormatter.error({
|
|
2868
2815
|
Result: RESULTS.Failure,
|
|
@@ -2880,8 +2827,8 @@ Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIss
|
|
|
2880
2827
|
NodeTypeNotEnabledError,
|
|
2881
2828
|
NodeTypeNotFoundError,
|
|
2882
2829
|
SourceRequiredError
|
|
2883
|
-
} = await import("./node-service-
|
|
2884
|
-
const [error, result] = await
|
|
2830
|
+
} = await import("./node-service-2nxpk751.js");
|
|
2831
|
+
const [error, result] = await catchError2(addNodeToFlow(file, nodeType, {
|
|
2885
2832
|
position,
|
|
2886
2833
|
label: options.label,
|
|
2887
2834
|
inputs,
|
|
@@ -2899,11 +2846,7 @@ Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIss
|
|
|
2899
2846
|
processContext.exit(1);
|
|
2900
2847
|
return;
|
|
2901
2848
|
}
|
|
2902
|
-
OutputFormatter.error(
|
|
2903
|
-
Result: RESULTS.Failure,
|
|
2904
|
-
Message: "Error adding node",
|
|
2905
|
-
Instructions: error.message
|
|
2906
|
-
});
|
|
2849
|
+
OutputFormatter.error(await classifiedFailure("Error adding node", error));
|
|
2907
2850
|
processContext.exit(1);
|
|
2908
2851
|
return;
|
|
2909
2852
|
}
|
|
@@ -2924,7 +2867,7 @@ Example: uip maestro flow nodes create flow.flow uipath.connector.jira.createIss
|
|
|
2924
2867
|
}
|
|
2925
2868
|
});
|
|
2926
2869
|
});
|
|
2927
|
-
node.command("configure").description(`Configure a connector
|
|
2870
|
+
node.command("configure").description(`Configure a connector, managed HTTP or file node with connection and method details.
|
|
2928
2871
|
` + `Run this after 'nodes create' — populates inputs.detail and creates workflow bindings.
|
|
2929
2872
|
` + `Use 'nodes list' to find the node ID.
|
|
2930
2873
|
|
|
@@ -2932,9 +2875,8 @@ CONNECTOR ACTIVITIES (type uipath.connector.*, NOT *.trigger.*)
|
|
|
2932
2875
|
Required: connectionId, folderKey, method, endpoint.
|
|
2933
2876
|
Generic activities (manifest activityType='Generic', e.g. *.insert-record,
|
|
2934
2877
|
*.list-records) also require objectName. Discover with:
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
Curated activities: get method/endpoint from connectorMethodInfo in 'registry get'.
|
|
2878
|
+
` + genericObjectDiscoveryCommands("<connector-key>", "<uuid>", "<op>").map((command) => ` ${command}
|
|
2879
|
+
`).join("") + ` Curated activities: get method/endpoint from connectorMethodInfo in 'registry get'.
|
|
2938
2880
|
Optional: bodyParameters, queryParameters, pathParameters, filter,
|
|
2939
2881
|
customFieldsRequestDetails ({ objectActionName, parameterValues: [[k,v],...] });
|
|
2940
2882
|
Examples:
|
|
@@ -2970,6 +2912,13 @@ CONNECTOR WAIT-FOR EVENTS (type uipath.connector.event.*)
|
|
|
2970
2912
|
Example:
|
|
2971
2913
|
--detail '{"connectionId":"<uuid>","folderKey":"<uuid>","eventMode":"polling","queryParameters":{"repo":"cli"}}'
|
|
2972
2914
|
|
|
2915
|
+
FILE NODES (type core.action.file.read, core.action.file.create)
|
|
2916
|
+
Bind the Orchestrator connection the node reaches job attachments through.
|
|
2917
|
+
Required: connectionId (a uipath-uipath-orchestrator connection UUID).
|
|
2918
|
+
Optional: folderKey (defaults to the connection's folder).
|
|
2919
|
+
Example:
|
|
2920
|
+
--detail '{"connectionId":"<uuid>"}'
|
|
2921
|
+
|
|
2973
2922
|
MANAGED HTTP NODES (type core.action.http.v2)
|
|
2974
2923
|
` + ` Two authentication modes — set via the 'authentication' key:
|
|
2975
2924
|
|
|
@@ -2997,7 +2946,7 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
2997
2946
|
processContext.exit(1);
|
|
2998
2947
|
return;
|
|
2999
2948
|
}
|
|
3000
|
-
const [parseError, parsed] =
|
|
2949
|
+
const [parseError, parsed] = catchError2(() => JSON.parse(options.detail));
|
|
3001
2950
|
if (parseError) {
|
|
3002
2951
|
OutputFormatter.error({
|
|
3003
2952
|
Result: RESULTS.Failure,
|
|
@@ -3007,14 +2956,32 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
3007
2956
|
processContext.exit(1);
|
|
3008
2957
|
return;
|
|
3009
2958
|
}
|
|
3010
|
-
const
|
|
3011
|
-
|
|
2959
|
+
const [
|
|
2960
|
+
{ configureConnectorNode, InvalidDetailError },
|
|
2961
|
+
{ ConnectionConnectorMismatchError }
|
|
2962
|
+
] = await Promise.all([
|
|
2963
|
+
import("./connector-service-r86mtxwn.js"),
|
|
2964
|
+
import("./index-5xh0cjag.js")
|
|
2965
|
+
]);
|
|
2966
|
+
const [error, result] = await catchError2(configureConnectorNode(file, nodeId, parsed));
|
|
3012
2967
|
if (error) {
|
|
3013
|
-
const
|
|
2968
|
+
const callerError = error instanceof ConnectionConnectorMismatchError || error instanceof InvalidDetailError;
|
|
2969
|
+
let message = "Error configuring node";
|
|
2970
|
+
let instructions = error.message;
|
|
2971
|
+
if (error instanceof ConnectionConnectorMismatchError) {
|
|
2972
|
+
message = error.message;
|
|
2973
|
+
instructions = error.instructions;
|
|
2974
|
+
} else if (callerError) {
|
|
2975
|
+
message = "Invalid --detail";
|
|
2976
|
+
}
|
|
3014
2977
|
OutputFormatter.error({
|
|
3015
2978
|
Result: RESULTS.Failure,
|
|
3016
2979
|
Message: message,
|
|
3017
|
-
Instructions:
|
|
2980
|
+
Instructions: instructions,
|
|
2981
|
+
...callerError && {
|
|
2982
|
+
ErrorCode: "invalid_argument",
|
|
2983
|
+
Retry: "RetryWillNotFix"
|
|
2984
|
+
}
|
|
3018
2985
|
});
|
|
3019
2986
|
processContext.exit(1);
|
|
3020
2987
|
return;
|
|
@@ -3033,8 +3000,8 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
3033
3000
|
});
|
|
3034
3001
|
});
|
|
3035
3002
|
addRowWindowOptions(node.command("list")).description("List all nodes in a Flow file").argument("<file>", "Path to the .flow file").examples(NODE_LIST_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
3036
|
-
const { listNodesInFlow } = await import("./node-service-
|
|
3037
|
-
const [error, result] = await
|
|
3003
|
+
const { listNodesInFlow } = await import("./node-service-2nxpk751.js");
|
|
3004
|
+
const [error, result] = await catchError2(listNodesInFlow(file));
|
|
3038
3005
|
if (error) {
|
|
3039
3006
|
OutputFormatter.error({
|
|
3040
3007
|
Result: RESULTS.Failure,
|
|
@@ -3080,7 +3047,7 @@ var FLOW_PACK_EXAMPLES = [
|
|
|
3080
3047
|
var registerPackCommand = (program) => {
|
|
3081
3048
|
const command = program.command("pack").description("Pack a Flow project into a .nupkg file").argument("<project-path>", "Path to the Flow project directory").argument("<output-path>", "Output directory where the .nupkg will be saved").option("-n, --name <name>", "Package name (default: project folder name)").option("-v, --version <version>", "Package version (default: 1.0.0)", "1.0.0");
|
|
3082
3049
|
registerPackageMetadataOptions(command).examples(FLOW_PACK_EXAMPLES).trackedAction(processContext, async (projectPath, outputPath, options) => {
|
|
3083
|
-
const { FlowPackService } = await import("./flow-pack-service-
|
|
3050
|
+
const { FlowPackService } = await import("./flow-pack-service-58m51sp8.js");
|
|
3084
3051
|
const service = new FlowPackService;
|
|
3085
3052
|
const exitCode = await service.execute(projectPath, {
|
|
3086
3053
|
output: outputPath,
|
|
@@ -3189,7 +3156,7 @@ async function resolveRelease(config, processKey) {
|
|
|
3189
3156
|
const key = separator === -1 ? processKey : processKey.slice(0, separator);
|
|
3190
3157
|
const version = separator === -1 ? undefined : processKey.slice(separator + 1);
|
|
3191
3158
|
const byReleaseKey = config.releaseKey !== undefined;
|
|
3192
|
-
const { escapeODataStringLiteral: esc, listFlowProcesses } = await import("./flow-api-
|
|
3159
|
+
const { escapeODataStringLiteral: esc, listFlowProcesses } = await import("./flow-api-d4dvmadm.js");
|
|
3193
3160
|
const processes = await listFlowProcesses(config, byReleaseKey ? `Key eq '${esc(config.releaseKey)}'` : `ProcessKey eq '${esc(key)}'`);
|
|
3194
3161
|
const matches = processes.filter((candidate) => Boolean(candidate.key) && (byReleaseKey ? candidate.key === config.releaseKey : candidate.processKey === key && (version === undefined || candidate.processVersion === version)));
|
|
3195
3162
|
const [release, ...extra] = matches;
|
|
@@ -3202,9 +3169,9 @@ async function resolveRelease(config, processKey) {
|
|
|
3202
3169
|
return release;
|
|
3203
3170
|
}
|
|
3204
3171
|
async function resolveFolderForList(options) {
|
|
3205
|
-
const { resolveFolder } = await import("./index-
|
|
3172
|
+
const { resolveFolder } = await import("./index-4e3w8x62.js");
|
|
3206
3173
|
if (options.folderKey && options.folderPath) {
|
|
3207
|
-
const [pathError, pathFolder] = await
|
|
3174
|
+
const [pathError, pathFolder] = await catchError2(resolveFolder({ folderPath: options.folderPath }, {
|
|
3208
3175
|
tenant: options.tenant,
|
|
3209
3176
|
loginValidity: options.loginValidity
|
|
3210
3177
|
}));
|
|
@@ -3217,7 +3184,7 @@ async function resolveFolderForList(options) {
|
|
|
3217
3184
|
return options.folderKey;
|
|
3218
3185
|
}
|
|
3219
3186
|
if (options.folderPath) {
|
|
3220
|
-
const [resolveError, resolved] = await
|
|
3187
|
+
const [resolveError, resolved] = await catchError2(resolveFolder({ folderPath: options.folderPath }, {
|
|
3221
3188
|
tenant: options.tenant,
|
|
3222
3189
|
loginValidity: options.loginValidity
|
|
3223
3190
|
}));
|
|
@@ -3234,8 +3201,8 @@ async function resolveFolderForList(options) {
|
|
|
3234
3201
|
function registerProcessCommand(program) {
|
|
3235
3202
|
const processCmd = program.command("process").description("Manage Flow processes");
|
|
3236
3203
|
registerSharedProcessCommands(processCmd, { toolLabel: "Flow" });
|
|
3237
|
-
|
|
3238
|
-
const {
|
|
3204
|
+
processCmd.command("list").description("List available Flow projects. The releaseActive and releaseLatest fields reflect Orchestrator release-level state (whether the release is marked active or the highest version on the manifest) and do not indicate whether the process is deployed or runnable.").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).addOption(createProcessLimitOption()).addOption(createProcessOffsetOption()).option("--filter <odata>", "Additional OData filter").option("-f, --folder-key <key>", "Folder key (GUID)").option("--folder-path <path>", "Folder path (e.g. 'Shared/Invoices'). Alternative to --folder-key.").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(FLOW_PROCESS_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
3205
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
3239
3206
|
if (options.folderKey === undefined && options.folderPath === undefined) {
|
|
3240
3207
|
OutputFormatter.error({
|
|
3241
3208
|
Result: RESULTS.ValidationError,
|
|
@@ -3245,47 +3212,19 @@ function registerProcessCommand(program) {
|
|
|
3245
3212
|
processContext.exit(3);
|
|
3246
3213
|
return;
|
|
3247
3214
|
}
|
|
3248
|
-
const [
|
|
3249
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
3215
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
3216
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
3217
|
+
tenant: options.tenant,
|
|
3218
|
+
requireOrganizationId: true,
|
|
3219
|
+
requireTenantName: true
|
|
3250
3220
|
}));
|
|
3251
|
-
if (
|
|
3252
|
-
OutputFormatter.error(
|
|
3253
|
-
Result: RESULTS.Failure,
|
|
3254
|
-
Message: loginError.message,
|
|
3255
|
-
Instructions: instructionsFor("auth")
|
|
3256
|
-
});
|
|
3221
|
+
if (authError) {
|
|
3222
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
3257
3223
|
processContext.exit(1);
|
|
3258
3224
|
return;
|
|
3259
3225
|
}
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
Result: RESULTS.Failure,
|
|
3263
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
3264
|
-
Instructions: instructionsFor("auth")
|
|
3265
|
-
});
|
|
3266
|
-
processContext.exit(1);
|
|
3267
|
-
return;
|
|
3268
|
-
}
|
|
3269
|
-
const tenantName = options.tenant || loginStatus.tenantName;
|
|
3270
|
-
if (!tenantName) {
|
|
3271
|
-
OutputFormatter.error({
|
|
3272
|
-
Result: RESULTS.Failure,
|
|
3273
|
-
Message: "Tenant not provided and not available from login. Run 'uip login' or 'uip login tenant set <tenant>'.",
|
|
3274
|
-
Instructions: instructionsFor("identity")
|
|
3275
|
-
});
|
|
3276
|
-
processContext.exit(1);
|
|
3277
|
-
return;
|
|
3278
|
-
}
|
|
3279
|
-
if (!loginStatus.organizationId) {
|
|
3280
|
-
OutputFormatter.error({
|
|
3281
|
-
Result: RESULTS.Failure,
|
|
3282
|
-
Message: "Organization ID not available from login.",
|
|
3283
|
-
Instructions: instructionsFor("identity")
|
|
3284
|
-
});
|
|
3285
|
-
processContext.exit(1);
|
|
3286
|
-
return;
|
|
3287
|
-
}
|
|
3288
|
-
const [resolveError, resolvedFolderKey] = await catchError(resolveFolderForList(options));
|
|
3226
|
+
const { tenantName } = auth;
|
|
3227
|
+
const [resolveError, resolvedFolderKey] = await catchError2(resolveFolderForList(options));
|
|
3289
3228
|
if (resolveError) {
|
|
3290
3229
|
OutputFormatter.error({
|
|
3291
3230
|
Result: RESULTS.ValidationError,
|
|
@@ -3299,13 +3238,13 @@ function registerProcessCommand(program) {
|
|
|
3299
3238
|
processKey: "",
|
|
3300
3239
|
folderKey: resolvedFolderKey,
|
|
3301
3240
|
inputs: {},
|
|
3302
|
-
authToken:
|
|
3303
|
-
organizationId:
|
|
3241
|
+
authToken: auth.accessToken,
|
|
3242
|
+
organizationId: auth.organizationId,
|
|
3304
3243
|
tenantName,
|
|
3305
|
-
baseUrl:
|
|
3244
|
+
baseUrl: auth.baseUrl
|
|
3306
3245
|
};
|
|
3307
|
-
const { listFlowProcesses } = await import("./flow-api-
|
|
3308
|
-
const [listError, processes] = await
|
|
3246
|
+
const { listFlowProcesses } = await import("./flow-api-d4dvmadm.js");
|
|
3247
|
+
const [listError, processes] = await catchError2(listFlowProcesses(config, options.filter, {
|
|
3309
3248
|
limit: options.limit,
|
|
3310
3249
|
offset: options.offset
|
|
3311
3250
|
}));
|
|
@@ -3334,59 +3273,31 @@ function registerProcessCommand(program) {
|
|
|
3334
3273
|
});
|
|
3335
3274
|
});
|
|
3336
3275
|
processCmd.command("get").description("Get Flow project schema and details").argument("<process-key>", "Process key (e.g., MyFlow.flow.Flow:1.0.0)").argument("<feed-id>", "Feed ID (from 'flow project list')").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).requiredOption("-f, --folder-key <key>", "Folder key (GUID)").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(FLOW_PROCESS_GET_EXAMPLES).trackedAction(processContext, async (processKey, feedId, options) => {
|
|
3337
|
-
const {
|
|
3338
|
-
const [
|
|
3339
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
3276
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
3277
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
3278
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
3279
|
+
tenant: options.tenant,
|
|
3280
|
+
requireOrganizationId: true,
|
|
3281
|
+
requireTenantName: true
|
|
3340
3282
|
}));
|
|
3341
|
-
if (
|
|
3342
|
-
OutputFormatter.error(
|
|
3343
|
-
Result: RESULTS.Failure,
|
|
3344
|
-
Message: loginError.message,
|
|
3345
|
-
Instructions: instructionsFor("auth")
|
|
3346
|
-
});
|
|
3347
|
-
processContext.exit(1);
|
|
3348
|
-
return;
|
|
3349
|
-
}
|
|
3350
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
3351
|
-
OutputFormatter.error({
|
|
3352
|
-
Result: RESULTS.Failure,
|
|
3353
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
3354
|
-
Instructions: instructionsFor("auth")
|
|
3355
|
-
});
|
|
3356
|
-
processContext.exit(1);
|
|
3357
|
-
return;
|
|
3358
|
-
}
|
|
3359
|
-
const tenantName = options.tenant || loginStatus.tenantName;
|
|
3360
|
-
if (!tenantName) {
|
|
3361
|
-
OutputFormatter.error({
|
|
3362
|
-
Result: RESULTS.Failure,
|
|
3363
|
-
Message: "Tenant not provided and not available from login. Run 'uip login' or 'uip login tenant set <tenant>'.",
|
|
3364
|
-
Instructions: instructionsFor("identity")
|
|
3365
|
-
});
|
|
3366
|
-
processContext.exit(1);
|
|
3367
|
-
return;
|
|
3368
|
-
}
|
|
3369
|
-
if (!loginStatus.organizationId) {
|
|
3370
|
-
OutputFormatter.error({
|
|
3371
|
-
Result: RESULTS.Failure,
|
|
3372
|
-
Message: "Organization ID not available from login.",
|
|
3373
|
-
Instructions: instructionsFor("identity")
|
|
3374
|
-
});
|
|
3283
|
+
if (authError) {
|
|
3284
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
3375
3285
|
processContext.exit(1);
|
|
3376
3286
|
return;
|
|
3377
3287
|
}
|
|
3288
|
+
const { tenantName } = auth;
|
|
3378
3289
|
const config = {
|
|
3379
3290
|
processKey,
|
|
3380
3291
|
folderKey: options.folderKey,
|
|
3381
3292
|
inputs: {},
|
|
3382
|
-
authToken:
|
|
3383
|
-
organizationId:
|
|
3293
|
+
authToken: auth.accessToken,
|
|
3294
|
+
organizationId: auth.organizationId,
|
|
3384
3295
|
tenantName,
|
|
3385
|
-
baseUrl:
|
|
3296
|
+
baseUrl: auth.baseUrl,
|
|
3386
3297
|
feedId
|
|
3387
3298
|
};
|
|
3388
|
-
const { getFlowEntryPoints } = await import("./flow-api-
|
|
3389
|
-
const [entryPointsError, entryPoints] = await
|
|
3299
|
+
const { getFlowEntryPoints } = await import("./flow-api-d4dvmadm.js");
|
|
3300
|
+
const [entryPointsError, entryPoints] = await catchError2(getFlowEntryPoints(config));
|
|
3390
3301
|
if (entryPointsError) {
|
|
3391
3302
|
OutputFormatter.error({
|
|
3392
3303
|
Result: RESULTS.Failure,
|
|
@@ -3406,8 +3317,8 @@ function registerProcessCommand(program) {
|
|
|
3406
3317
|
return;
|
|
3407
3318
|
}
|
|
3408
3319
|
const formattedData = entryPoints.map((ep) => {
|
|
3409
|
-
const [, inputSchema] =
|
|
3410
|
-
const [, outputSchema] =
|
|
3320
|
+
const [, inputSchema] = catchError2(() => JSON.parse(ep.InputArguments));
|
|
3321
|
+
const [, outputSchema] = catchError2(() => JSON.parse(ep.OutputArguments));
|
|
3411
3322
|
return {
|
|
3412
3323
|
Path: ep.Path,
|
|
3413
3324
|
DisplayName: ep.DisplayName,
|
|
@@ -3424,56 +3335,28 @@ function registerProcessCommand(program) {
|
|
|
3424
3335
|
});
|
|
3425
3336
|
});
|
|
3426
3337
|
processCmd.command("run").description("Run a Flow project with inputs").argument("<process-key>", "Process key (e.g., MyFlow.flow.Flow:1.0.0)").argument("<folder-key>", "Folder key (GUID)").option("-i, --inputs <json>", "Input parameters as JSON string or @file.json").option("--attachment <name=path>", "Upload a local file as a file-typed workflow input variable (repeatable). Example: --attachment file1=./resume.pdf", appendOption, []).addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--release-key <key>", "Release key (GUID, from list command)").option("--feed-id <id>", "Feed ID for package lookup (optional)").option("--robot-ids <ids>", "Comma-separated robot IDs (optional)").option("--entry-point <id>", "Entry point node id — a trigger node id from the .flow file. Defaults to the release's default entry point").option("--validate", "Validate inputs against project schema (basic: required fields + primitive types)").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).option("--wait", "Block until the job reaches a terminal state (Successful, Faulted, Stopped)").option("--timeout <seconds>", "Maximum seconds to wait (0 = no timeout). Requires --wait.", String(DEFAULT_TIMEOUT_MS / 1000)).option("--poll-interval <seconds>", "Seconds between status checks. Requires --wait.", String(DEFAULT_INTERVAL_MS / 1000)).examples(FLOW_PROCESS_RUN_EXAMPLES).trackedAction(processContext, async (processKey, folderKey, options) => {
|
|
3427
|
-
const {
|
|
3338
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
3428
3339
|
const {
|
|
3429
3340
|
parseFlowInputs,
|
|
3430
3341
|
resolveEntryPoint,
|
|
3431
3342
|
startFlowProjectJob,
|
|
3432
3343
|
validateFlowInputs
|
|
3433
|
-
} = await import("./flow-api-
|
|
3434
|
-
const [
|
|
3435
|
-
ensureTokenValidityMinutes: options.loginValidity
|
|
3344
|
+
} = await import("./flow-api-d4dvmadm.js");
|
|
3345
|
+
const [authError, auth] = await catchError2(getAuthContext({
|
|
3346
|
+
ensureTokenValidityMinutes: options.loginValidity,
|
|
3347
|
+
tenant: options.tenant,
|
|
3348
|
+
requireOrganizationId: true,
|
|
3349
|
+
requireTenantName: true
|
|
3436
3350
|
}));
|
|
3437
|
-
if (
|
|
3438
|
-
OutputFormatter.error(
|
|
3439
|
-
Result: RESULTS.Failure,
|
|
3440
|
-
Message: loginError.message,
|
|
3441
|
-
Instructions: instructionsFor("auth")
|
|
3442
|
-
});
|
|
3443
|
-
processContext.exit(1);
|
|
3444
|
-
return;
|
|
3445
|
-
}
|
|
3446
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
3447
|
-
OutputFormatter.error({
|
|
3448
|
-
Result: RESULTS.Failure,
|
|
3449
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
3450
|
-
Instructions: instructionsFor("auth")
|
|
3451
|
-
});
|
|
3452
|
-
processContext.exit(1);
|
|
3453
|
-
return;
|
|
3454
|
-
}
|
|
3455
|
-
const tenantName = options.tenant || loginStatus.tenantName;
|
|
3456
|
-
if (!tenantName) {
|
|
3457
|
-
OutputFormatter.error({
|
|
3458
|
-
Result: RESULTS.Failure,
|
|
3459
|
-
Message: "Tenant not provided and not available from login. Run 'uip login' or 'uip login tenant set <tenant>'.",
|
|
3460
|
-
Instructions: instructionsFor("identity")
|
|
3461
|
-
});
|
|
3462
|
-
processContext.exit(1);
|
|
3463
|
-
return;
|
|
3464
|
-
}
|
|
3465
|
-
if (!loginStatus.organizationId) {
|
|
3466
|
-
OutputFormatter.error({
|
|
3467
|
-
Result: RESULTS.Failure,
|
|
3468
|
-
Message: "Organization ID not available from login.",
|
|
3469
|
-
Instructions: instructionsFor("identity")
|
|
3470
|
-
});
|
|
3351
|
+
if (authError) {
|
|
3352
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
3471
3353
|
processContext.exit(1);
|
|
3472
3354
|
return;
|
|
3473
3355
|
}
|
|
3356
|
+
const { tenantName } = auth;
|
|
3474
3357
|
let inputs = {};
|
|
3475
3358
|
if (options.inputs) {
|
|
3476
|
-
const [parseError, parsed] = await
|
|
3359
|
+
const [parseError, parsed] = await catchError2(parseFlowInputs(options.inputs));
|
|
3477
3360
|
if (parseError) {
|
|
3478
3361
|
OutputFormatter.error({
|
|
3479
3362
|
Result: RESULTS.Failure,
|
|
@@ -3485,8 +3368,8 @@ function registerProcessCommand(program) {
|
|
|
3485
3368
|
}
|
|
3486
3369
|
inputs = parsed;
|
|
3487
3370
|
} else {
|
|
3488
|
-
const { readStdin } = await import("./input-reader-
|
|
3489
|
-
const [stdinError, stdinData] = await
|
|
3371
|
+
const { readStdin } = await import("./input-reader-zqaep7k7.js");
|
|
3372
|
+
const [stdinError, stdinData] = await catchError2(readStdin());
|
|
3490
3373
|
if (stdinError) {
|
|
3491
3374
|
OutputFormatter.error({
|
|
3492
3375
|
Result: RESULTS.Failure,
|
|
@@ -3497,7 +3380,7 @@ function registerProcessCommand(program) {
|
|
|
3497
3380
|
return;
|
|
3498
3381
|
}
|
|
3499
3382
|
if (stdinData) {
|
|
3500
|
-
const [parseError, parsed] = await
|
|
3383
|
+
const [parseError, parsed] = await catchError2(parseFlowInputs(stdinData));
|
|
3501
3384
|
if (parseError) {
|
|
3502
3385
|
OutputFormatter.error({
|
|
3503
3386
|
Result: RESULTS.Failure,
|
|
@@ -3514,17 +3397,17 @@ function registerProcessCommand(program) {
|
|
|
3514
3397
|
processKey,
|
|
3515
3398
|
folderKey,
|
|
3516
3399
|
inputs,
|
|
3517
|
-
authToken:
|
|
3518
|
-
organizationId:
|
|
3400
|
+
authToken: auth.accessToken,
|
|
3401
|
+
organizationId: auth.organizationId,
|
|
3519
3402
|
tenantName,
|
|
3520
|
-
tenantId:
|
|
3521
|
-
baseUrl:
|
|
3403
|
+
tenantId: auth.tenantId,
|
|
3404
|
+
baseUrl: auth.baseUrl,
|
|
3522
3405
|
releaseKey: options.releaseKey,
|
|
3523
3406
|
feedId: options.feedId
|
|
3524
3407
|
};
|
|
3525
3408
|
let mainEntryPointId;
|
|
3526
3409
|
const fillRelease = async () => {
|
|
3527
|
-
const [resolveError, release] = await
|
|
3410
|
+
const [resolveError, release] = await catchError2(resolveRelease(config, processKey));
|
|
3528
3411
|
if (resolveError) {
|
|
3529
3412
|
OutputFormatter.error({
|
|
3530
3413
|
Result: RESULTS.Failure,
|
|
@@ -3550,7 +3433,7 @@ function registerProcessCommand(program) {
|
|
|
3550
3433
|
}
|
|
3551
3434
|
let entryPoint;
|
|
3552
3435
|
if (options.entryPoint !== undefined) {
|
|
3553
|
-
const [entryPointError, resolved] = await
|
|
3436
|
+
const [entryPointError, resolved] = await catchError2(resolveEntryPoint(config, options.entryPoint));
|
|
3554
3437
|
if (entryPointError instanceof UnknownEntryPointError) {
|
|
3555
3438
|
OutputFormatter.error({
|
|
3556
3439
|
Result: RESULTS.ValidationError,
|
|
@@ -3574,7 +3457,7 @@ function registerProcessCommand(program) {
|
|
|
3574
3457
|
}
|
|
3575
3458
|
const attachmentSpecs = options.attachment ?? [];
|
|
3576
3459
|
if (attachmentSpecs.length > 0) {
|
|
3577
|
-
const [parseError, specs] =
|
|
3460
|
+
const [parseError, specs] = catchError2(() => attachmentSpecs.map(parseAttachmentSpec));
|
|
3578
3461
|
if (parseError) {
|
|
3579
3462
|
OutputFormatter.error({
|
|
3580
3463
|
Result: RESULTS.Failure,
|
|
@@ -3584,8 +3467,8 @@ function registerProcessCommand(program) {
|
|
|
3584
3467
|
processContext.exit(1);
|
|
3585
3468
|
return;
|
|
3586
3469
|
}
|
|
3587
|
-
const { uploadJobAttachment } = await import("./index-
|
|
3588
|
-
const [uploadError, resolved] = await
|
|
3470
|
+
const { uploadJobAttachment } = await import("./index-4e3w8x62.js");
|
|
3471
|
+
const [uploadError, resolved] = await catchError2(resolveAttachmentInputs(specs, (bytes, fileName) => uploadJobAttachment(bytes, fileName, {
|
|
3589
3472
|
tenant: tenantName
|
|
3590
3473
|
})));
|
|
3591
3474
|
if (uploadError) {
|
|
@@ -3618,7 +3501,7 @@ function registerProcessCommand(program) {
|
|
|
3618
3501
|
}
|
|
3619
3502
|
}
|
|
3620
3503
|
if (options.validate) {
|
|
3621
|
-
const [valError, validation] = await
|
|
3504
|
+
const [valError, validation] = await catchError2(validateFlowInputs(config, inputs, entryPoint, mainEntryPointId));
|
|
3622
3505
|
if (valError) {
|
|
3623
3506
|
const code = flowProcessRunErrorCode(valError);
|
|
3624
3507
|
OutputFormatter.error({
|
|
@@ -3674,7 +3557,7 @@ ${errorList}`,
|
|
|
3674
3557
|
if (config.releaseKey === undefined && !await fillRelease()) {
|
|
3675
3558
|
return;
|
|
3676
3559
|
}
|
|
3677
|
-
const [jobError, job] = await
|
|
3560
|
+
const [jobError, job] = await catchError2(startFlowProjectJob(config));
|
|
3678
3561
|
if (jobError) {
|
|
3679
3562
|
const code = flowProcessRunErrorCode(jobError);
|
|
3680
3563
|
OutputFormatter.error({
|
|
@@ -3710,7 +3593,7 @@ ${errorList}`,
|
|
|
3710
3593
|
processContext.exit(1);
|
|
3711
3594
|
return;
|
|
3712
3595
|
}
|
|
3713
|
-
const { handleFlowJobWait } = await import("./wait-for-flow-job-
|
|
3596
|
+
const { handleFlowJobWait } = await import("./wait-for-flow-job-a4xtda36.js");
|
|
3714
3597
|
await handleFlowJobWait(job.key, {
|
|
3715
3598
|
config,
|
|
3716
3599
|
timeoutMs,
|
|
@@ -3752,33 +3635,20 @@ function getDefaultOutputPath(fs = getFileSystem()) {
|
|
|
3752
3635
|
}
|
|
3753
3636
|
var registerPublishCommand = (program) => {
|
|
3754
3637
|
program.command("publish").description("Pack a Flow project and upload the resulting .nupkg to Orchestrator packages").argument("<project-path>", "Path to the Flow project directory").argument("[output-path]", "Output directory where the generated .nupkg will be saved").option("-n, --name <name>", "Package name (default: project folder name)").option("-v, --version <version>", "Package version (default: 1.0.0)", "1.0.0").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--feed-id <feedId>", "Feed ID (optional, defaults to tenant feed). Mutually exclusive with --folder-key/--folder-path.").option("--folder-key <key>", "Folder key (GUID) of an Orchestrator folder hierarchy feed. The CLI resolves the folder's feed ID automatically. Mutually exclusive with --feed-id and --folder-path.").option("--folder-path <path>", "Folder path (e.g. 'Shared/Sub') of an Orchestrator folder hierarchy feed. The CLI resolves the folder's feed ID automatically. Mutually exclusive with --feed-id and --folder-key.").examples(FLOW_PUBLISH_EXAMPLES).trackedAction(processContext, async (projectPath, outputPath, options) => {
|
|
3755
|
-
const {
|
|
3638
|
+
const { getAuthContext } = await import("./index-f5kq7265.js");
|
|
3756
3639
|
const {
|
|
3757
3640
|
createApiClient,
|
|
3758
3641
|
PackageFeedsApi,
|
|
3759
3642
|
ProcessesApi,
|
|
3760
3643
|
resolveFolder
|
|
3761
|
-
} = await import("./index-
|
|
3644
|
+
} = await import("./index-4e3w8x62.js");
|
|
3762
3645
|
const fs = getFileSystem();
|
|
3763
3646
|
const shouldCleanupOutput = outputPath === undefined;
|
|
3764
3647
|
const packageOutputPath = outputPath ?? getDefaultOutputPath(fs);
|
|
3765
3648
|
try {
|
|
3766
|
-
const [
|
|
3767
|
-
if (
|
|
3768
|
-
OutputFormatter.error(
|
|
3769
|
-
Result: RESULTS.Failure,
|
|
3770
|
-
Message: loginError.message,
|
|
3771
|
-
Instructions: instructionsFor("auth", loginError)
|
|
3772
|
-
});
|
|
3773
|
-
processContext.exit(1);
|
|
3774
|
-
return;
|
|
3775
|
-
}
|
|
3776
|
-
if (loginStatus.loginStatus !== "Logged in" || !loginStatus.baseUrl) {
|
|
3777
|
-
OutputFormatter.error({
|
|
3778
|
-
Result: RESULTS.Failure,
|
|
3779
|
-
Message: "Not logged in. Run 'uip login' first.",
|
|
3780
|
-
Instructions: instructionsFor("auth")
|
|
3781
|
-
});
|
|
3649
|
+
const [authError] = await catchError2(getAuthContext());
|
|
3650
|
+
if (authError) {
|
|
3651
|
+
OutputFormatter.error(await authContextFailure(authError));
|
|
3782
3652
|
processContext.exit(1);
|
|
3783
3653
|
return;
|
|
3784
3654
|
}
|
|
@@ -3803,7 +3673,7 @@ var registerPublishCommand = (program) => {
|
|
|
3803
3673
|
}
|
|
3804
3674
|
let resolvedFeedId = options.feedId;
|
|
3805
3675
|
if (folderTargetingSpecified) {
|
|
3806
|
-
const [folderError, folder] = await
|
|
3676
|
+
const [folderError, folder] = await catchError2(resolveFolder({
|
|
3807
3677
|
folderKey: options.folderKey,
|
|
3808
3678
|
folderPath: options.folderPath
|
|
3809
3679
|
}, { tenant: options.tenant }));
|
|
@@ -3817,7 +3687,7 @@ var registerPublishCommand = (program) => {
|
|
|
3817
3687
|
processContext.exit(3);
|
|
3818
3688
|
return;
|
|
3819
3689
|
}
|
|
3820
|
-
const [feedsApiError, feedsApi] = await
|
|
3690
|
+
const [feedsApiError, feedsApi] = await catchError2(createApiClient(PackageFeedsApi, {
|
|
3821
3691
|
tenant: options.tenant
|
|
3822
3692
|
}));
|
|
3823
3693
|
if (feedsApiError) {
|
|
@@ -3829,7 +3699,7 @@ var registerPublishCommand = (program) => {
|
|
|
3829
3699
|
processContext.exit(1);
|
|
3830
3700
|
return;
|
|
3831
3701
|
}
|
|
3832
|
-
const [feedLookupError, folderFeedId] = await
|
|
3702
|
+
const [feedLookupError, folderFeedId] = await catchError2(feedsApi.packageFeedsGetFolderFeed({
|
|
3833
3703
|
folderId: folder.id
|
|
3834
3704
|
}));
|
|
3835
3705
|
if (feedLookupError || !folderFeedId) {
|
|
@@ -3844,9 +3714,9 @@ var registerPublishCommand = (program) => {
|
|
|
3844
3714
|
}
|
|
3845
3715
|
resolvedFeedId = folderFeedId;
|
|
3846
3716
|
}
|
|
3847
|
-
const { FlowPackService } = await import("./flow-pack-service-
|
|
3717
|
+
const { FlowPackService } = await import("./flow-pack-service-58m51sp8.js");
|
|
3848
3718
|
const service = new FlowPackService;
|
|
3849
|
-
const [packError, packResult] = await
|
|
3719
|
+
const [packError, packResult] = await catchError2(service.executeAsync(projectPath, {
|
|
3850
3720
|
output: packageOutputPath,
|
|
3851
3721
|
name: options.name,
|
|
3852
3722
|
version: options.version
|
|
@@ -3869,7 +3739,7 @@ var registerPublishCommand = (program) => {
|
|
|
3869
3739
|
processContext.exit(1);
|
|
3870
3740
|
return;
|
|
3871
3741
|
}
|
|
3872
|
-
const [apiError, api] = await
|
|
3742
|
+
const [apiError, api] = await catchError2(createApiClient(ProcessesApi, {
|
|
3873
3743
|
tenant: options.tenant
|
|
3874
3744
|
}));
|
|
3875
3745
|
if (apiError) {
|
|
@@ -3881,12 +3751,27 @@ var registerPublishCommand = (program) => {
|
|
|
3881
3751
|
processContext.exit(1);
|
|
3882
3752
|
return;
|
|
3883
3753
|
}
|
|
3884
|
-
const [readError, fileBuffer] = await
|
|
3754
|
+
const [readError, fileBuffer] = await catchError2(fs.readFile(packResult.outputPath));
|
|
3755
|
+
const readInstructions = `Verify the generated package exists at '${packResult.outputPath}' and that the current user can read it.`;
|
|
3885
3756
|
if (readError) {
|
|
3757
|
+
const details = await extractErrorDetails(readError);
|
|
3886
3758
|
OutputFormatter.error({
|
|
3887
3759
|
Result: RESULTS.Failure,
|
|
3760
|
+
ErrorCode: details.errorCode,
|
|
3888
3761
|
Message: `Flow publish failed: ${readError.message}`,
|
|
3889
|
-
Instructions:
|
|
3762
|
+
Instructions: readInstructions,
|
|
3763
|
+
Retry: details.retry
|
|
3764
|
+
});
|
|
3765
|
+
processContext.exit(1);
|
|
3766
|
+
return;
|
|
3767
|
+
}
|
|
3768
|
+
if (fileBuffer === null) {
|
|
3769
|
+
OutputFormatter.error({
|
|
3770
|
+
Result: RESULTS.Failure,
|
|
3771
|
+
ErrorCode: "not_found",
|
|
3772
|
+
Message: `Flow publish failed: no package found at '${packResult.outputPath}'.`,
|
|
3773
|
+
Instructions: readInstructions,
|
|
3774
|
+
Retry: "RetryWillNotFix"
|
|
3890
3775
|
});
|
|
3891
3776
|
processContext.exit(1);
|
|
3892
3777
|
return;
|
|
@@ -3895,7 +3780,7 @@ var registerPublishCommand = (program) => {
|
|
|
3895
3780
|
const file = new File([fileBuffer], fileName, {
|
|
3896
3781
|
type: "application/octet-stream"
|
|
3897
3782
|
});
|
|
3898
|
-
const [uploadError, uploadResult] = await
|
|
3783
|
+
const [uploadError, uploadResult] = await catchError2(api.processesUploadPackage({
|
|
3899
3784
|
file,
|
|
3900
3785
|
feedId: resolvedFeedId
|
|
3901
3786
|
}));
|
|
@@ -3931,7 +3816,7 @@ var registerPublishCommand = (program) => {
|
|
|
3931
3816
|
});
|
|
3932
3817
|
} finally {
|
|
3933
3818
|
if (shouldCleanupOutput) {
|
|
3934
|
-
await
|
|
3819
|
+
await catchError2(fs.rm(packageOutputPath));
|
|
3935
3820
|
}
|
|
3936
3821
|
}
|
|
3937
3822
|
});
|
|
@@ -3945,8 +3830,8 @@ var registerRegistryCommand2 = (program) => {
|
|
|
3945
3830
|
// src/commands/tidy.ts
|
|
3946
3831
|
var registerTidyCommand = (program) => {
|
|
3947
3832
|
program.command("format").description("Format a .flow file by auto-laying out nodes to prevent overlaps and arrange in a clean flow").argument("<file>", "Path to the .flow file").trackedAction(processContext, async (file) => {
|
|
3948
|
-
const { tidyFlow } = await import("./tidy-service-
|
|
3949
|
-
const [error, result] = await
|
|
3833
|
+
const { tidyFlow } = await import("./tidy-service-m33hhtc7.js");
|
|
3834
|
+
const [error, result] = await catchError2(tidyFlow(file));
|
|
3950
3835
|
if (error) {
|
|
3951
3836
|
OutputFormatter.error({
|
|
3952
3837
|
Result: RESULTS.Failure,
|
|
@@ -4058,8 +3943,8 @@ var registerValidateCommand = (program) => {
|
|
|
4058
3943
|
let governanceEnforcements;
|
|
4059
3944
|
let availableModelNames;
|
|
4060
3945
|
if (options.governance) {
|
|
4061
|
-
const { fetchGovernanceData } = await import("./governance-fetcher-
|
|
4062
|
-
const [error, data] = await
|
|
3946
|
+
const { fetchGovernanceData } = await import("./governance-fetcher-h8hpcwyh.js");
|
|
3947
|
+
const [error, data] = await catchError2(fetchGovernanceData());
|
|
4063
3948
|
if (error) {
|
|
4064
3949
|
OutputFormatter.error({
|
|
4065
3950
|
Result: RESULTS.Failure,
|
|
@@ -4072,7 +3957,7 @@ var registerValidateCommand = (program) => {
|
|
|
4072
3957
|
governanceEnforcements = data.enforcements;
|
|
4073
3958
|
availableModelNames = data.modelNames;
|
|
4074
3959
|
}
|
|
4075
|
-
const { FlowValidateService } = await import("./flow-validate-service-
|
|
3960
|
+
const { FlowValidateService } = await import("./flow-validate-service-9a3zate4.js");
|
|
4076
3961
|
const service = new FlowValidateService({
|
|
4077
3962
|
governanceEnforcements,
|
|
4078
3963
|
availableModelNames,
|
|
@@ -4178,7 +4063,7 @@ function parseDefaultValue(value, type) {
|
|
|
4178
4063
|
}
|
|
4179
4064
|
case "object":
|
|
4180
4065
|
case "array": {
|
|
4181
|
-
const [parseErr, parsedValue] =
|
|
4066
|
+
const [parseErr, parsedValue] = catchError2(() => JSON.parse(value));
|
|
4182
4067
|
if (parseErr) {
|
|
4183
4068
|
return {
|
|
4184
4069
|
error: `Invalid default value for type '${type}': must be valid JSON`
|
|
@@ -4203,7 +4088,7 @@ function parseDefaultValue(value, type) {
|
|
|
4203
4088
|
var registerVariableCommand = (program) => {
|
|
4204
4089
|
const variable = program.command("variables").alias("variable").description("Manage variables in a Flow file");
|
|
4205
4090
|
variable.command("create").alias("add").description("Add a variable to a Flow file").argument("<file>", "Path to the .flow file").argument("<variable-id>", "Variable identifier (e.g. myInputVar)").requiredOption("-d, --direction <direction>", `Variable direction (${VALID_DIRECTIONS.join(", ")})`).option("-t, --type <type>", `Data type (${VALID_TYPES.join(", ")})`, "string").option("--default-value <value>", "Default value (parsed based on --type)").option("--description <text>", "Human-readable description").option("--schema <json>", "JSON schema for object/array types").option("--sub-type <subType>", "Sub-type for complex types").option("--trigger-node-id <nodeId>", "Trigger node an input variable belongs to (defaults to the flow's only trigger node; required when the flow has several)").examples(VARIABLE_ADD_EXAMPLES).trackedAction(processContext, async (file, variableId, options) => {
|
|
4206
|
-
const { validateIdentifier } = await import("./index-
|
|
4091
|
+
const { validateIdentifier } = await import("./index-d4bdedx3.js");
|
|
4207
4092
|
const identifierError = validateIdentifier(variableId, []);
|
|
4208
4093
|
if (identifierError) {
|
|
4209
4094
|
OutputFormatter.error({
|
|
@@ -4248,7 +4133,7 @@ var registerVariableCommand = (program) => {
|
|
|
4248
4133
|
}
|
|
4249
4134
|
let schema;
|
|
4250
4135
|
if (options.schema !== undefined) {
|
|
4251
|
-
const [parseError, parsed] =
|
|
4136
|
+
const [parseError, parsed] = catchError2(() => JSON.parse(options.schema));
|
|
4252
4137
|
if (parseError) {
|
|
4253
4138
|
OutputFormatter.error({
|
|
4254
4139
|
Result: RESULTS.Failure,
|
|
@@ -4269,8 +4154,8 @@ var registerVariableCommand = (program) => {
|
|
|
4269
4154
|
}
|
|
4270
4155
|
schema = parsed;
|
|
4271
4156
|
}
|
|
4272
|
-
const { addVariableToFlow } = await import("./variable-service-
|
|
4273
|
-
const [error,
|
|
4157
|
+
const { addVariableToFlow } = await import("./variable-service-ea1erf93.js");
|
|
4158
|
+
const [error, variable] = await catchError2(addVariableToFlow(file, {
|
|
4274
4159
|
id: variableId,
|
|
4275
4160
|
direction: options.direction,
|
|
4276
4161
|
type: options.type,
|
|
@@ -4293,12 +4178,12 @@ var registerVariableCommand = (program) => {
|
|
|
4293
4178
|
Result: RESULTS.Success,
|
|
4294
4179
|
Code: "VariableAddSuccess",
|
|
4295
4180
|
Data: {
|
|
4296
|
-
Variable:
|
|
4181
|
+
Variable: variable
|
|
4297
4182
|
}
|
|
4298
4183
|
});
|
|
4299
4184
|
});
|
|
4300
4185
|
variable.command("delete").alias("remove").description("Remove a variable from a Flow file").argument("<file>", "Path to the .flow file").argument("<variable-id>", "Variable identifier to remove").examples(VARIABLE_DELETE_EXAMPLES).trackedAction(processContext, async (file, variableId) => {
|
|
4301
|
-
const { validateIdentifier } = await import("./index-
|
|
4186
|
+
const { validateIdentifier } = await import("./index-d4bdedx3.js");
|
|
4302
4187
|
const identifierError = validateIdentifier(variableId, []);
|
|
4303
4188
|
if (identifierError) {
|
|
4304
4189
|
OutputFormatter.error({
|
|
@@ -4309,8 +4194,8 @@ var registerVariableCommand = (program) => {
|
|
|
4309
4194
|
processContext.exit(1);
|
|
4310
4195
|
return;
|
|
4311
4196
|
}
|
|
4312
|
-
const { deleteVariableFromFlow } = await import("./variable-service-
|
|
4313
|
-
const [error, deletedVariable] = await
|
|
4197
|
+
const { deleteVariableFromFlow } = await import("./variable-service-ea1erf93.js");
|
|
4198
|
+
const [error, deletedVariable] = await catchError2(deleteVariableFromFlow(file, variableId));
|
|
4314
4199
|
if (error) {
|
|
4315
4200
|
OutputFormatter.error({
|
|
4316
4201
|
Result: RESULTS.Failure,
|
|
@@ -4329,8 +4214,8 @@ var registerVariableCommand = (program) => {
|
|
|
4329
4214
|
});
|
|
4330
4215
|
});
|
|
4331
4216
|
addRowWindowOptions(variable.command("list")).description("List all variables in a Flow file").argument("<file>", "Path to the .flow file").examples(VARIABLE_LIST_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
4332
|
-
const { listVariablesInFlow } = await import("./variable-service-
|
|
4333
|
-
const [error, result] = await
|
|
4217
|
+
const { listVariablesInFlow } = await import("./variable-service-ea1erf93.js");
|
|
4218
|
+
const [error, result] = await catchError2(listVariablesInFlow(file));
|
|
4334
4219
|
if (error) {
|
|
4335
4220
|
OutputFormatter.error({
|
|
4336
4221
|
Result: RESULTS.Failure,
|
|
@@ -4356,12 +4241,12 @@ var registerVariableCommand = (program) => {
|
|
|
4356
4241
|
// src/services/project-metadata-reader.ts
|
|
4357
4242
|
async function readAgentProjectMetadata(projectDir) {
|
|
4358
4243
|
const fs = getFileSystem();
|
|
4359
|
-
const [readError, content] = await
|
|
4244
|
+
const [readError, content] = await catchError2(fs.readFile(fs.path.join(projectDir, "agent.json"), "utf-8"));
|
|
4360
4245
|
if (readError || typeof content !== "string") {
|
|
4361
4246
|
logger.debug(`No readable agent.json in ${projectDir}; the node will describe an autonomous agent.`);
|
|
4362
4247
|
return {};
|
|
4363
4248
|
}
|
|
4364
|
-
const [parseError, parsed] =
|
|
4249
|
+
const [parseError, parsed] = catchError2(() => JSON.parse(content));
|
|
4365
4250
|
if (parseError) {
|
|
4366
4251
|
logger.debug(`Unparseable agent.json in ${projectDir}: ${parseError.message}. The node will describe an autonomous agent.`);
|
|
4367
4252
|
return {};
|
|
@@ -4380,15 +4265,15 @@ async function readAgentProjectMetadata(projectDir) {
|
|
|
4380
4265
|
var agentProjectMetadataReader = (projectDir, projectType) => projectType === "Agent" ? readAgentProjectMetadata(projectDir) : Promise.resolve({});
|
|
4381
4266
|
|
|
4382
4267
|
// src/tool.ts
|
|
4383
|
-
var
|
|
4268
|
+
var metadata2 = {
|
|
4384
4269
|
name: "flow-tool",
|
|
4385
4270
|
version: package_default.version,
|
|
4386
4271
|
description: "Create, debug, and run UiPath Flow projects and jobs.",
|
|
4387
4272
|
commandPrefix: "flow"
|
|
4388
4273
|
};
|
|
4389
|
-
var
|
|
4390
|
-
|
|
4391
|
-
const { registerFlowAuthoringCommands } = await import("./authoring-
|
|
4274
|
+
var registerCommands2 = async (program) => {
|
|
4275
|
+
setAgentProjectMetadataReader2(agentProjectMetadataReader);
|
|
4276
|
+
const { registerFlowAuthoringCommands } = await import("./authoring-x84r2a2j.js");
|
|
4392
4277
|
registerFlowAuthoringCommands(program);
|
|
4393
4278
|
registerInitCommand(program);
|
|
4394
4279
|
registerPackCommand(program);
|
|
@@ -4412,6 +4297,6 @@ var registerCommands = async (program) => {
|
|
|
4412
4297
|
registerVariableCommand(program);
|
|
4413
4298
|
};
|
|
4414
4299
|
|
|
4415
|
-
export {
|
|
4300
|
+
export { metadata2, registerCommands2 };
|
|
4416
4301
|
|
|
4417
|
-
//# debugId=
|
|
4302
|
+
//# debugId=7295FBFAF8DE3F1964756E2164756E21
|