@uipath/maestro-tool 1.204.0 → 1.205.0-preview.258
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 +3 -3
- package/dist/{DmnFactory-VWZOSZHH-ggnfcqpa.js → DmnFactory-L7MABUC6-qkvfv1cw.js} +143 -98
- package/dist/{KieDmnMarshaller-6TTUU5B4-6apscj68.js → KieDmnMarshaller-LGE63WDG-cybersk4.js} +3 -3
- package/dist/THIRD-PARTY-NOTICES.md +47 -23
- package/dist/{authoring-ed7fgg74.js → authoring-5xyc2bbq.js} +8 -6
- package/dist/{authoring-1qn6m2g3.js → authoring-ehed6df3.js} +8 -6
- package/dist/{authoring-ex7mq672.js → authoring-rw21p50g.js} +8 -6
- package/dist/{binding-service-dj04a6e6.js → binding-service-b2v8y2sb.js} +44 -35
- package/dist/{bpmn-action-type-validator-cja8vct2.js → bpmn-action-type-validator-xg4ncg63.js} +2 -2
- package/dist/{bpmn-binding-resolver-3v5223kx.js → bpmn-binding-resolver-wz7xk54x.js} +9 -7
- package/dist/{bpmn-branch-a25m8bc2.js → bpmn-branch-ywmc5egw.js} +48 -47
- package/dist/{bpmn-format-service-64fsaq4j.js → bpmn-format-service-aq8ekvy2.js} +7 -5
- package/dist/{bpmn-refresh-service-ytf3ngzm.js → bpmn-refresh-service-gy1ekx3m.js} +10 -8
- package/dist/{bpmn-update-metadata-service-jpz5mfk4.js → bpmn-update-metadata-service-rnf421er.js} +7 -5
- package/dist/bpmn-validate-service-7e3q83nh.js +16 -0
- package/dist/{business-rule-export-j6xxtp5s.js → business-rule-export-xa719ws5.js} +2 -2
- package/dist/canvas-notes-xc2ejzqj.js +23 -0
- package/dist/{case-api-bxcxbgm9.js → case-api-v64traxv.js} +9 -7
- package/dist/case-bindings-service-hwz2h03e.js +434 -0
- package/dist/case-debug-solution-projects-xae2d4vj.js +34 -0
- package/dist/{case-debug-studio-web-service-kt5efenk.js → case-debug-studio-web-service-5h6djff3.js} +22 -14
- package/dist/{case-described-io-service-kn3rvy53.js → case-described-io-service-tap9pk70.js} +41 -11
- package/dist/case-event-trigger-bindings-z4q1kzgv.js +20 -0
- package/dist/{case-format-service-k8rcv0wp.js → case-format-service-q42ba5pn.js} +6 -4
- package/dist/{case-pack-service-92trp8xj.js → case-pack-service-0j9r3cd2.js} +9 -7
- package/dist/case-schema-version-zs5qsr1b.js +20 -0
- package/dist/{case-shape-reader-ftc4ve13.js → case-shape-reader-14qzcj4v.js} +1 -1
- package/dist/{case-splice-service-7n51cpx3.js → case-splice-service-bk6rvr75.js} +60 -11
- package/dist/{case-validate-service-c8jcvw85.js → case-validate-service-80p52d8r.js} +134 -46
- package/dist/{connector-enrichment-service-ba0vq2sk.js → connector-enrichment-service-9p98gfmc.js} +32 -28
- package/dist/{connector-lookup-service-mzfsqb21.js → connector-lookup-service-v39ab3qh.js} +10 -8
- package/dist/{connector-service-8yk65k3n.js → connector-service-yz5c6xag.js} +229 -52
- package/dist/connector-task-shape-dcb3v2r5.js +14 -0
- package/dist/{connector-task-spec-bn3qaa1w.js → connector-task-spec-pvzzenwg.js} +206 -49
- package/dist/de-UZI7FJDO-awjpqfz0.js +200 -0
- package/dist/{de-MUJPA4EB-dpg7t2rw.js → de-UZI7FJDO-mwvc4cxe.js} +29 -2
- package/dist/{de-FGHEJRCI-rv513mfh.js → de-WLW6KWOJ-2qnsqdtw.js} +238 -31
- package/dist/debug-conversation-trigger-f4a07w23.js +33 -0
- package/dist/{debug-http-client-73errmgs.js → debug-http-client-8t7t701c.js} +7 -5
- package/dist/{debug-service-8kjtrm88.js → debug-service-c7y7f216.js} +8 -6
- package/dist/{edge-service-7092t84f.js → edge-service-vnn1p29d.js} +18 -13
- package/dist/{embedded-file-reader-v8c2yj2a.js → embedded-file-reader-r66242ey.js} +2 -2
- package/dist/en-EJCBA3LK-0wb3b1xy.js +146 -0
- package/dist/{en-FBPVNKFN-dqt573xn.js → en-EJCBA3LK-dtpdghgj.js} +12 -4
- package/dist/{en-BWGKA5OE-1qkvb9rn.js → en-M7GQYBV2-5nfmpnfz.js} +88 -6
- package/dist/{enrichment-service-yjv2eb8h.js → enrichment-service-njfr2m2s.js} +52 -15
- package/dist/{es-7SE7HX2X-8yh1aj2y.js → es-4UBUTCQA-m1ytpyx2.js} +29 -2
- package/dist/es-4UBUTCQA-t7hsackg.js +200 -0
- package/dist/{es-KR3ZSNMP-84zphx0x.js → es-5THCNRFN-tqwyrdgy.js} +235 -28
- package/dist/{es-MX-2MYFZU7X-3rek4r73.js → es-MX-5RELIXKI-9jhqtddc.js} +29 -2
- package/dist/es-MX-5RELIXKI-jtjbcxbb.js +200 -0
- package/dist/{es-MX-XXZJGC4R-2mr8jtgm.js → es-MX-TWZBRAXK-gqd9swzw.js} +237 -30
- package/dist/filter-engine-7ep90g7f.js +11 -0
- package/dist/{flow-api-y70m8n82.js → flow-api-qj89cv18.js} +17 -10
- package/dist/{flow-debug-service-f59xnvdf.js → flow-debug-service-a7vd9eht.js} +109 -71
- package/dist/{flow-eval-node-target-v1gra12k.js → flow-eval-node-target-fv15zc9f.js} +19 -18
- package/dist/flow-eval-run-api-3xt5n21a.js +16 -0
- package/dist/{flow-eval-run-service-hmfbng78.js → flow-eval-run-service-keqkwjg1.js} +92 -99
- package/dist/{flow-eval-service-7tpvhn9b.js → flow-eval-service-5j1rwx32.js} +169 -416
- package/dist/{flow-init-sdk-source-3gxfr40c.js → flow-init-sdk-source-spm577pw.js} +8 -6
- package/dist/{flow-init-service-jawbgb3b.js → flow-init-service-pz2b02z9.js} +25 -20
- package/dist/{flow-io-2qapk1ge.js → flow-io-0yftj03d.js} +17 -12
- package/dist/{flow-migrate-service-3vyydvyp.js → flow-migrate-service-f0cavrsr.js} +18 -13
- package/dist/{flow-pack-service-ypbwn9p1.js → flow-pack-service-seegwatd.js} +59 -45
- package/dist/{flow-validate-service-6ra3j72r.js → flow-validate-service-hgswxecb.js} +198 -93
- package/dist/{fr-Y6NPVODW-8vr1ja4b.js → fr-CERONSRC-edpxhbmb.js} +237 -30
- package/dist/{fr-MDFKNZ4C-h4a122k9.js → fr-VBM5WRC2-63z7w4mh.js} +29 -2
- package/dist/fr-VBM5WRC2-707ha692.js +200 -0
- package/dist/{governance-fetcher-09dgr70s.js → governance-fetcher-w11mhrn6.js} +8 -6
- package/dist/{headless-7rs6g9wg.js → headless-z9enfh9f.js} +4 -4
- package/dist/hitPolicyResult-CGCR73CW-tvmbx1r7.js +66 -0
- package/dist/{hitl-service-pc3xwzxh.js → hitl-service-zsnxqkhb.js} +17 -12
- package/dist/{index-48tf2e7y.js → index-1a83vhkx.js} +59 -35
- package/dist/{index-jmy02p6v.js → index-3366ft04.js} +44 -6
- package/dist/{index-wmffgzmr.js → index-5dxh9z60.js} +21751 -11098
- package/dist/{index-vj0f8thg.js → index-91v7sjfs.js} +7 -5
- package/dist/{index-cpgb4hp8.js → index-d60j7q07.js} +8 -6
- package/dist/{index-vhm7bexy.js → index-da0zh33m.js} +8 -6
- package/dist/{index-1htnjt3c.js → index-ewv0axs9.js} +1087 -213
- package/dist/index-f3pbfe53.js +67 -0
- package/dist/{index-ng2f77my.js → index-fyc0k5dd.js} +985 -617
- package/dist/{index-n7n2d0tb.js → index-gjg7tpcx.js} +66 -2230
- package/dist/index-gmkec7es.js +29 -0
- package/dist/{index-3bv3wtc0.js → index-n37fqnh7.js} +6 -5
- package/dist/{index-hhsf00x8.js → index-ngs0a2he.js} +1 -1
- package/dist/index-s6q9xjhw.js +25 -0
- package/dist/{index-j2r3jb6c.js → index-xq6ajhgq.js} +2 -2
- package/dist/index.js +2 -2
- package/dist/init-entry-points-g4za9kc0.js +102 -0
- package/dist/inline-entity-resolver-nzfs8hb6.js +46 -0
- package/dist/input-reader-3250qtv2.js +15 -0
- package/dist/input-reader-3398edew.js +15 -0
- package/dist/{ja-UTQEAP34-8e0q6swp.js → ja-43QL7CGO-c3q8gre9.js} +29 -2
- package/dist/ja-43QL7CGO-h6qfxfay.js +200 -0
- package/dist/{ja-Q5PXKJ2V-p4msxzjd.js → ja-U2MCNHGT-gz0ap1jk.js} +235 -28
- package/dist/{known-types-3dm8xfd0.js → known-types-g1bvvvcw.js} +5 -5
- package/dist/ko-TLL6Z6CD-ag6gjynr.js +200 -0
- package/dist/{ko-AXCHW2OK-askct7f6.js → ko-TLL6Z6CD-wrt3n8a9.js} +29 -2
- package/dist/{ko-AYBDSRZG-41mdmsg1.js → ko-XAUYQWDR-zp81gjp4.js} +237 -30
- package/dist/localSolutionDiscovery-3fs774b8.js +17 -0
- package/dist/{maestro-automate-entry-4qg1z689.js → maestro-automate-entry-wycktqqt.js} +2 -2
- package/dist/{maestro-debug-service-c81w1wrx.js → maestro-debug-service-5edvsets.js} +17 -15
- package/dist/{maestro-pack-service-9qbtap5h.js → maestro-pack-service-hpvmq8f9.js} +9 -7
- package/dist/migration-diagnosis-5tftr979.js +99 -0
- package/dist/{node-epyxn4nd.js → node-5g80as4s.js} +29 -15
- package/dist/node-service-gsq162p5.js +101 -0
- package/dist/{node-strategy-5pz40tee.js → node-strategy-v442hwgd.js} +1 -1
- package/dist/node-sync-service-qxhh9e5m.js +65 -0
- package/dist/out-target-666eg2kf.js +115 -0
- package/dist/{packager-tool-yphr25e9.js → packager-tool-0jn0my4b.js} +4 -2
- package/dist/packager-tool-0z498fh0.js +331 -0
- package/dist/{packager-tool-j6q8v3kc.js → packager-tool-1q0ee9ht.js} +5 -4
- package/dist/packager-tool-20592jhn.js +74 -0
- package/dist/{packager-tool-zvpkw29f.js → packager-tool-212khq09.js} +538 -16
- package/dist/{packager-tool-7msx23gd.js → packager-tool-2qywkm61.js} +13 -2
- package/dist/{packager-tool-b4t0wt7a.js → packager-tool-3kx2vrwn.js} +12 -13
- package/dist/{packager-tool-a0f48rfb.js → packager-tool-42xfgd4y.js} +6 -24
- package/dist/{packager-tool-myvay41d.js → packager-tool-57bbfe26.js} +3 -3
- package/dist/{packager-tool-vte7g48a.js → packager-tool-5hnx28q0.js} +5 -3
- package/dist/{packager-tool-xd3rq6k0.js → packager-tool-629qqbfp.js} +2 -2
- package/dist/packager-tool-6g510cab.js +1178 -0
- package/dist/packager-tool-6sm17vbx.js +336 -0
- package/dist/{packager-tool-yy101ck2.js → packager-tool-6tthp3g5.js} +52 -32
- package/dist/{packager-tool-d88rqwk8.js → packager-tool-6z1hsm2h.js} +13 -5
- package/dist/packager-tool-7hw344bt.js +107 -0
- package/dist/{packager-tool-6xrzgn0z.js → packager-tool-7vh4gasn.js} +1 -1
- package/dist/packager-tool-7ym4rqd1.js +153 -0
- package/dist/packager-tool-8p3ymd4v.js +14 -0
- package/dist/{packager-tool-kme3q8xv.js → packager-tool-8tv6dvs5.js} +18 -8
- package/dist/{packager-tool-c94w8xmz.js → packager-tool-9c2hte0h.js} +16110 -13031
- package/dist/{packager-tool-npr79108.js → packager-tool-ajhgr4bs.js} +51 -8
- package/dist/{packager-tool-8pydv61j.js → packager-tool-ajth6af3.js} +588 -16
- package/dist/{packager-tool-nct4k0y8.js → packager-tool-arbc078z.js} +280 -416
- package/dist/{packager-tool-k0bc2f6w.js → packager-tool-b84rs07t.js} +137 -45
- package/dist/{packager-tool-4tf3tq1b.js → packager-tool-bd7t6p8y.js} +6 -4
- package/dist/{packager-tool-q02t6n13.js → packager-tool-bhhym40d.js} +26 -3
- package/dist/packager-tool-bttxjdhx.js +94 -0
- package/dist/packager-tool-c4n4m87w.js +52 -0
- package/dist/{packager-tool-8xyea2av.js → packager-tool-cc2q603y.js} +2 -3
- package/dist/{packager-tool-8yjmkys9.js → packager-tool-cza49qc1.js} +1681 -459
- package/dist/{packager-tool-5jb06280.js → packager-tool-d1kd88zq.js} +1 -1
- package/dist/{packager-tool-w3d2891y.js → packager-tool-dpp8z5q3.js} +8 -5
- package/dist/{packager-tool-wbtykfb2.js → packager-tool-dzd3y9p0.js} +2 -2
- package/dist/{packager-tool-rs4cgyy5.js → packager-tool-f6bh7bsm.js} +9 -10
- package/dist/{packager-tool-83hg21mr.js → packager-tool-f7zn3gsf.js} +6 -6
- package/dist/{packager-tool-mtpztxtc.js → packager-tool-fwfh4zz7.js} +2 -1
- package/dist/packager-tool-g2b0zqch.js +217 -0
- package/dist/{packager-tool-xdxr3ync.js → packager-tool-hdxtgckw.js} +11 -1
- package/dist/{packager-tool-gtzw8sw4.js → packager-tool-jexxh6qf.js} +51 -6
- package/dist/{packager-tool-zq25fdcg.js → packager-tool-jt51hwvr.js} +5 -5
- package/dist/packager-tool-k7n4sf7v.js +16 -0
- package/dist/{packager-tool-fgaphqq0.js → packager-tool-kd0whk4p.js} +1 -1
- package/dist/{packager-tool-3t417qyw.js → packager-tool-ktnfjmbs.js} +6 -6
- package/dist/packager-tool-kvp4ttef.js +307 -0
- package/dist/packager-tool-m1901c0c.js +1256 -0
- package/dist/packager-tool-mgcz986r.js +143 -0
- package/dist/{packager-tool-8xhjr5ya.js → packager-tool-mrskd7mn.js} +1 -1
- package/dist/{packager-tool-5s7249f4.js → packager-tool-ms1smy5t.js} +1 -1
- package/dist/{packager-tool-kveaemqp.js → packager-tool-msecps3h.js} +74 -47
- package/dist/packager-tool-n90231c7.js +2 -0
- package/dist/{packager-tool-ajjpgh1s.js → packager-tool-nkbz7fsb.js} +161 -83
- package/dist/packager-tool-nsh0qg9g.js +40 -0
- package/dist/{packager-tool-7q6z6npd.js → packager-tool-pcvhcn2k.js} +93 -11
- package/dist/packager-tool-qrs1525h.js +69 -0
- package/dist/packager-tool-qs3gymeb.js +92 -0
- package/dist/{packager-tool-wf95q0fn.js → packager-tool-r6a4pjjh.js} +32 -13
- package/dist/{packager-tool-2wbgdx7c.js → packager-tool-rcx6mwf1.js} +5 -5
- package/dist/{packager-tool-zbrda9sn.js → packager-tool-rk25wp3c.js} +1 -1
- package/dist/{packager-tool-nase5ajk.js → packager-tool-rp7pny4t.js} +19 -5
- package/dist/packager-tool-s695j0qj.js +2 -0
- package/dist/packager-tool-s7c0dg22.js +1117 -0
- package/dist/{case-bindings-service-hpz8w81a.js → packager-tool-s7frnjqb.js} +20 -233
- package/dist/{packager-tool-2k0hp4st.js → packager-tool-sb08yxk6.js} +2 -2
- package/dist/{packager-tool-b39nrh8y.js → packager-tool-sga4h8yj.js} +5 -6
- package/dist/packager-tool-sm8ertv4.js +9 -0
- package/dist/{packager-tool-ts5t1nmn.js → packager-tool-sxqtxw0e.js} +15 -10
- package/dist/packager-tool-t4zrz5gd.js +18 -0
- package/dist/{packager-tool-pp11j8zp.js → packager-tool-t79p62kr.js} +3 -2
- package/dist/{packager-tool-ps84n76y.js → packager-tool-tgh9btcq.js} +2 -2
- package/dist/{packager-tool-x2py933t.js → packager-tool-tzc6xsp3.js} +1802 -378
- package/dist/packager-tool-v5ft7109.js +35 -0
- package/dist/{packager-tool-rkv04anh.js → packager-tool-vv9cf7n5.js} +12 -56
- package/dist/{packager-tool-z1qbc0qf.js → packager-tool-wv85dhy2.js} +2 -8
- package/dist/{packager-tool-znhjsec2.js → packager-tool-wwbk750c.js} +10804 -25507
- package/dist/packager-tool-xj0agqpk.js +11 -0
- package/dist/{packager-tool-t2xr2f9r.js → packager-tool-xqghssg3.js} +1 -1
- package/dist/{packager-tool-ma2ra4pe.js → packager-tool-xr5pkebd.js} +6 -6
- package/dist/packager-tool-y4tyghzf.js +26 -0
- package/dist/{packager-tool-9bt3hs56.js → packager-tool-y57r93yz.js} +721 -90
- package/dist/packager-tool-ygdbhb2b.js +62 -0
- package/dist/{packager-tool-v99ygh9f.js → packager-tool-yn33pw57.js} +124 -58
- package/dist/packager-tool-yp84p93n.js +41 -0
- package/dist/{packager-tool-yv10w46z.js → packager-tool-zgm0r4yp.js} +57 -205
- package/dist/packager-tool.js +26 -17
- package/dist/{project-artifacts-ygsyzgbk.js → project-artifacts-tedh0mf8.js} +1 -1
- package/dist/{project-validator-ndx5f8vg.js → project-validator-njsprtzv.js} +5 -4
- package/dist/{pt-BR-TKHNHMET-sn91xyq0.js → pt-BR-GNQNAAZ2-xadharv4.js} +237 -30
- package/dist/{pt-BR-Y6K6XHXK-mp3hwhw1.js → pt-BR-USP2T7GD-pedn77m1.js} +29 -2
- package/dist/pt-BR-USP2T7GD-rppy42ym.js +200 -0
- package/dist/{pt-3DIO5QWG-59b3f4bc.js → pt-RMIAKZB4-67enhx3m.js} +29 -2
- package/dist/pt-RMIAKZB4-t80exmp7.js +200 -0
- package/dist/{pt-ROXU257Y-2f6bxev4.js → pt-TO2DARY2-ftcce1bv.js} +237 -30
- package/dist/{resolved-check-r83pjq9y.js → resolved-check-8a1cr6j2.js} +1 -1
- package/dist/{resourcesSyncService-9b5nzx36.js → resourcesSyncService-rcbw245w.js} +43 -180
- package/dist/ro-GHOBYW2S-4zevc9dy.js +200 -0
- package/dist/{ro-BWR3ONRR-vzx3hy8a.js → ro-GHOBYW2S-mhnqsgaa.js} +29 -2
- package/dist/{ro-AVAWPKOO-b89pw79r.js → ro-WUYJV6OW-a8d9qy1n.js} +235 -28
- package/dist/ru-WBLQ5B2U-dpqvtfwr.js +10 -0
- package/dist/{sdd-convert-service-am4cs6zq.js → sdd-convert-service-btj95r5z.js} +690 -447
- package/dist/{sdd-lookup-12hfwqjq.js → sdd-lookup-x3fh6svg.js} +6 -4
- package/dist/{sdd-resolve-service-e56wtgxt.js → sdd-resolve-service-pzsm3mkz.js} +37 -10
- package/dist/sdd-resolve-siblings-wzhvhar8.js +57 -0
- package/dist/{shared-utils-611ah3tq.js → shared-utils-w643sejd.js} +6 -4
- package/dist/{solution-auth-kddmbm0p.js → solution-auth-30yycqtv.js} +3 -3
- package/dist/solution-discovery-pavd4zeb.js +47 -0
- package/dist/{strict-case-rules-pn3ypd97.js → strict-case-rules-vnyr3b3k.js} +3 -2
- package/dist/{strict-entry-points-a2cya540.js → strict-entry-points-xrddz82q.js} +33 -1
- package/dist/{strict-sdd-audit-nc7dk2hy.js → strict-sdd-audit-8deegzad.js} +11 -7
- package/dist/task-type-declaration-re9ba03j.js +46 -0
- package/dist/{tidy-service-thmayk2h.js → tidy-service-mepxtxqm.js} +144 -39
- package/dist/{tool-z7q74wa4.js → tool-13vrxcqw.js} +313 -123
- package/dist/{tool-rmcqxt09.js → tool-x8dmgc2y.js} +476 -339
- package/dist/tool.js +2 -2
- package/dist/{tr-5IIHSFW5-hw4cewew.js → tr-GDTLECMM-k5fhmq13.js} +29 -2
- package/dist/tr-GDTLECMM-kngksm3r.js +200 -0
- package/dist/{tr-JMIP7ZSL-c39b6pe4.js → tr-M3F5A6AU-bb0tg39m.js} +235 -28
- package/dist/{trigger-enrichment-service-fw97esz9.js → trigger-enrichment-service-pc8ecypw.js} +34 -30
- package/dist/trigger-entry-point-id-819hnfnn.js +15 -0
- package/dist/{variable-service-3gywh851.js → variable-service-8v0b9d66.js} +17 -12
- package/dist/{wait-for-flow-job-wdcjjk6p.js → wait-for-flow-job-5rjxh65w.js} +14 -11
- package/dist/{zh-CN-IFFXSEJS-9wm9gmrv.js → zh-CN-C5G4PC7C-ds9gkptg.js} +235 -28
- package/dist/zh-CN-I5D7WHBD-ge92tbx9.js +200 -0
- package/dist/{zh-CN-R2KU4U5L-tc1hat59.js → zh-CN-I5D7WHBD-sr5h0a98.js} +29 -2
- package/dist/{zh-TW-GNKMELBF-j674515r.js → zh-TW-2AVLM723-288pkc1z.js} +29 -2
- package/dist/zh-TW-2AVLM723-xsmap3gk.js +200 -0
- package/dist/{zh-TW-IYBNYAMG-8727c7v2.js → zh-TW-62HZIG6O-787kdwex.js} +234 -27
- package/package.json +2 -2
- package/dist/bpmn-validate-service-tanm0n47.js +0 -14
- package/dist/debug-conversation-trigger-zbxp49z7.js +0 -46
- package/dist/flow-eval-run-api-zg951w2f.js +0 -15
- package/dist/hitPolicyResult-4WDHTX4A-zpjwpxn1.js +0 -69
- package/dist/index-03h6hq69.js +0 -200
- package/dist/input-reader-sce4dejb.js +0 -13
- package/dist/input-reader-tf6xyfvt.js +0 -13
- package/dist/migration-diagnosis-fzj426fa.js +0 -71
- package/dist/node-service-3j6w3z2k.js +0 -89
- package/dist/node-sync-service-q7dsv2p0.js +0 -43
- package/dist/out-target-498z06v5.js +0 -72
- package/dist/packager-tool-0g6ktcsq.js +0 -32
- package/dist/packager-tool-3mvr6njb.js +0 -305
- package/dist/packager-tool-521x949f.js +0 -32
- package/dist/packager-tool-64zypey6.js +0 -521
- package/dist/packager-tool-7t0xj5pz.js +0 -64
- package/dist/packager-tool-j836z6mq.js +0 -208
- package/dist/packager-tool-p7eactax.js +0 -267
- package/dist/packager-tool-xjtv580j.js +0 -13
- package/dist/packager-tool-zm7thgdg.js +0 -456
- /package/dist/{localization-p76prk3f.js → localization-d151bzb1.js} +0 -0
|
@@ -3,45 +3,57 @@ import {
|
|
|
3
3
|
DEFAULT_TIMEOUT_MS,
|
|
4
4
|
pendingSecondsFor,
|
|
5
5
|
pendingStallInstructions
|
|
6
|
-
} from "./packager-tool-
|
|
6
|
+
} from "./packager-tool-dzd3y9p0.js";
|
|
7
|
+
import {
|
|
8
|
+
package_default
|
|
9
|
+
} from "./packager-tool-bd7t6p8y.js";
|
|
10
|
+
import"./packager-tool-s695j0qj.js";
|
|
7
11
|
import"./packager-tool-8j9q1nd2.js";
|
|
8
12
|
import {
|
|
9
13
|
VALID_RESOURCE_TYPES
|
|
10
14
|
} from "./packager-tool-s95s0kvg.js";
|
|
11
|
-
import {
|
|
12
|
-
package_default
|
|
13
|
-
} from "./packager-tool-4tf3tq1b.js";
|
|
14
|
-
import {
|
|
15
|
-
evaluatorTypeAliases,
|
|
16
|
-
resolveLoginConfig
|
|
17
|
-
} from "./packager-tool-64zypey6.js";
|
|
18
|
-
import"./packager-tool-7msx23gd.js";
|
|
19
15
|
import {
|
|
20
16
|
registerRegistryCommand
|
|
21
|
-
} from "./packager-tool-
|
|
17
|
+
} from "./packager-tool-b84rs07t.js";
|
|
22
18
|
import {
|
|
23
19
|
registerSharedDebugInstanceCommands,
|
|
24
20
|
registerSharedIncidentCommands,
|
|
25
21
|
registerSharedInstanceCommands,
|
|
26
22
|
registerSharedProcessCommands,
|
|
27
23
|
registerSharedProcessesCommands
|
|
28
|
-
} from "./packager-tool-
|
|
29
|
-
import"./packager-tool-
|
|
30
|
-
import
|
|
24
|
+
} from "./packager-tool-212khq09.js";
|
|
25
|
+
import"./packager-tool-sb08yxk6.js";
|
|
26
|
+
import {
|
|
27
|
+
UnknownEntryPointError
|
|
28
|
+
} from "./packager-tool-k7n4sf7v.js";
|
|
29
|
+
import"./packager-tool-2qywkm61.js";
|
|
30
|
+
import {
|
|
31
|
+
evaluatorTypeAliases,
|
|
32
|
+
formatDuration,
|
|
33
|
+
formatEvalSetRunRow,
|
|
34
|
+
formatEvaluatorScores,
|
|
35
|
+
formatRemoteEvalRunRow,
|
|
36
|
+
isFailedRemoteRun,
|
|
37
|
+
isTerminalRemoteStatus,
|
|
38
|
+
remoteRunScore,
|
|
39
|
+
resolveLoginConfig
|
|
40
|
+
} from "./packager-tool-m1901c0c.js";
|
|
31
41
|
import {
|
|
32
42
|
setAgentProjectMetadataReader
|
|
33
43
|
} from "./packager-tool-8qp60s20.js";
|
|
34
|
-
import"./packager-tool-
|
|
44
|
+
import"./packager-tool-eypvc2kv.js";
|
|
45
|
+
import"./packager-tool-yn33pw57.js";
|
|
35
46
|
import"./packager-tool-0gctz400.js";
|
|
36
47
|
import"./packager-tool-qa9gftnj.js";
|
|
37
48
|
import"./packager-tool-yc4kw997.js";
|
|
38
|
-
import"./packager-tool-
|
|
39
|
-
import"./packager-tool-
|
|
49
|
+
import"./packager-tool-ajhgr4bs.js";
|
|
50
|
+
import"./packager-tool-mrskd7mn.js";
|
|
40
51
|
import {
|
|
41
52
|
ATTACHMENT_INSTRUCTIONS,
|
|
42
53
|
ATTACHMENT_UPLOAD_INSTRUCTIONS,
|
|
43
54
|
CommandDimensions,
|
|
44
55
|
OutputFormatter,
|
|
56
|
+
Pagination,
|
|
45
57
|
RESULTS,
|
|
46
58
|
ScreenLogger,
|
|
47
59
|
ShipDimensions,
|
|
@@ -53,29 +65,65 @@ import {
|
|
|
53
65
|
logger,
|
|
54
66
|
mapPackageMetadataOptions,
|
|
55
67
|
parseAttachmentSpec,
|
|
68
|
+
parseLimit,
|
|
69
|
+
parseOffset,
|
|
56
70
|
processContext,
|
|
57
71
|
registerPackageMetadataOptions,
|
|
58
72
|
resolveAttachmentInputs,
|
|
59
73
|
splitPackagedName,
|
|
60
74
|
summarizePlatformBody,
|
|
61
75
|
trackShipSucceeded
|
|
62
|
-
} from "./packager-tool-
|
|
76
|
+
} from "./packager-tool-zgm0r4yp.js";
|
|
77
|
+
import"./packager-tool-6sm17vbx.js";
|
|
63
78
|
import {
|
|
64
79
|
getFileSystem
|
|
65
|
-
} from "./packager-tool-
|
|
80
|
+
} from "./packager-tool-hdxtgckw.js";
|
|
66
81
|
import"./packager-tool-yvcrdbgp.js";
|
|
82
|
+
import"./packager-tool-sm8ertv4.js";
|
|
67
83
|
import {
|
|
68
84
|
catchError
|
|
69
|
-
} from "./packager-tool-
|
|
85
|
+
} from "./packager-tool-wv85dhy2.js";
|
|
70
86
|
import {
|
|
71
87
|
__require
|
|
72
88
|
} from "./packager-tool-1yh8g550.js";
|
|
73
89
|
|
|
90
|
+
// ../flow-tool/src/utils/row-window.ts
|
|
91
|
+
function addRowWindowOptions(command) {
|
|
92
|
+
return command.option("-l, --limit <number>", "Number of items to return (1-10000)", parseLimit).option("--offset <number>", "Number of items to skip (0-1000000)", parseOffset, 0);
|
|
93
|
+
}
|
|
94
|
+
function rowWindow(rows, options) {
|
|
95
|
+
const { limit, offset } = options;
|
|
96
|
+
if (limit === undefined && offset === 0) {
|
|
97
|
+
return { rows };
|
|
98
|
+
}
|
|
99
|
+
const window = rows.slice(offset, limit === undefined ? undefined : offset + limit);
|
|
100
|
+
return {
|
|
101
|
+
rows: window,
|
|
102
|
+
pagination: new Pagination({
|
|
103
|
+
returned: window.length,
|
|
104
|
+
limit: limit ?? Math.max(window.length, 1),
|
|
105
|
+
offset,
|
|
106
|
+
total: rows.length
|
|
107
|
+
})
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function apiPagination(returned, options) {
|
|
111
|
+
const { limit, offset } = options;
|
|
112
|
+
if (limit === undefined && offset === 0) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
return new Pagination({
|
|
116
|
+
returned,
|
|
117
|
+
limit: limit ?? Math.max(returned, 1),
|
|
118
|
+
offset
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
74
122
|
// ../flow-tool/src/commands/binding.ts
|
|
75
123
|
var BINDING_LIST_EXAMPLES = [
|
|
76
124
|
{
|
|
77
125
|
Description: "List all bindings in a flow file",
|
|
78
|
-
Command: "uip maestro flow
|
|
126
|
+
Command: "uip maestro flow bindings list flow.json",
|
|
79
127
|
Output: {
|
|
80
128
|
Code: "BindingListSuccess",
|
|
81
129
|
Data: {
|
|
@@ -95,7 +143,7 @@ var BINDING_LIST_EXAMPLES = [
|
|
|
95
143
|
var BINDING_ADD_EXAMPLES = [
|
|
96
144
|
{
|
|
97
145
|
Description: "Add a process binding to a flow",
|
|
98
|
-
Command: 'uip maestro flow
|
|
146
|
+
Command: 'uip maestro flow bindings create flow.json "Invoice" process "InvoiceProcess" --property-attribute name',
|
|
99
147
|
Output: {
|
|
100
148
|
Code: "BindingAddSuccess",
|
|
101
149
|
Data: {
|
|
@@ -113,7 +161,7 @@ var BINDING_ADD_EXAMPLES = [
|
|
|
113
161
|
var BINDING_DELETE_EXAMPLES = [
|
|
114
162
|
{
|
|
115
163
|
Description: "Remove all bindings by resource key",
|
|
116
|
-
Command: "uip maestro flow
|
|
164
|
+
Command: "uip maestro flow bindings delete flow.json a1b2c3d4-0000-0000-0000-000000000001",
|
|
117
165
|
Output: {
|
|
118
166
|
Code: "BindingRemoveSuccess",
|
|
119
167
|
Data: {
|
|
@@ -129,9 +177,9 @@ var BINDING_DELETE_EXAMPLES = [
|
|
|
129
177
|
}
|
|
130
178
|
];
|
|
131
179
|
var registerBindingCommand = (program) => {
|
|
132
|
-
const binding = program.command("binding").description("Manage bindings in a Flow file");
|
|
133
|
-
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) => {
|
|
134
|
-
const { listBindingsInFlow } = await import("./binding-service-
|
|
180
|
+
const binding = program.command("bindings").alias("binding").description("Manage bindings in a Flow file");
|
|
181
|
+
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) => {
|
|
182
|
+
const { listBindingsInFlow } = await import("./binding-service-b2v8y2sb.js");
|
|
135
183
|
const [error, result] = await catchError(listBindingsInFlow(file));
|
|
136
184
|
if (error) {
|
|
137
185
|
OutputFormatter.error({
|
|
@@ -142,18 +190,20 @@ var registerBindingCommand = (program) => {
|
|
|
142
190
|
processContext.exit(1);
|
|
143
191
|
return;
|
|
144
192
|
}
|
|
193
|
+
const window = rowWindow(result.bindings, options);
|
|
145
194
|
OutputFormatter.success({
|
|
146
195
|
Result: RESULTS.Success,
|
|
147
196
|
Code: "BindingListSuccess",
|
|
148
197
|
Data: {
|
|
149
|
-
Bindings:
|
|
150
|
-
Count:
|
|
151
|
-
}
|
|
198
|
+
Bindings: window.rows,
|
|
199
|
+
Count: window.rows.length
|
|
200
|
+
},
|
|
201
|
+
Pagination: window.pagination
|
|
152
202
|
});
|
|
153
203
|
});
|
|
154
|
-
binding.command("add").description(`Add a binding to a Flow file.
|
|
204
|
+
binding.command("create").alias("add").description(`Add a binding to a Flow file.
|
|
155
205
|
` + `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) => {
|
|
156
|
-
const { addBindingToFlow } = await import("./binding-service-
|
|
206
|
+
const { addBindingToFlow } = await import("./binding-service-b2v8y2sb.js");
|
|
157
207
|
const [error, result] = await catchError(addBindingToFlow(file, name, resource, defaultValue, {
|
|
158
208
|
resourceKey: options.resourceKey,
|
|
159
209
|
propertyAttribute: options.propertyAttribute,
|
|
@@ -176,8 +226,8 @@ var registerBindingCommand = (program) => {
|
|
|
176
226
|
}
|
|
177
227
|
});
|
|
178
228
|
});
|
|
179
|
-
binding.command("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) => {
|
|
180
|
-
const { deleteBindingFromFlow } = await import("./binding-service-
|
|
229
|
+
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) => {
|
|
230
|
+
const { deleteBindingFromFlow } = await import("./binding-service-b2v8y2sb.js");
|
|
181
231
|
const [error, result] = await catchError(deleteBindingFromFlow(file, resourceKey));
|
|
182
232
|
if (error) {
|
|
183
233
|
OutputFormatter.error({
|
|
@@ -199,6 +249,55 @@ var registerBindingCommand = (program) => {
|
|
|
199
249
|
});
|
|
200
250
|
};
|
|
201
251
|
|
|
252
|
+
// ../flow-tool/src/commands/debug-summary.ts
|
|
253
|
+
function buildDebugSummary(result) {
|
|
254
|
+
const summary = {
|
|
255
|
+
finalStatus: result.finalStatus,
|
|
256
|
+
instanceId: result.instanceId,
|
|
257
|
+
studioWebUrl: result.studioWebUrl,
|
|
258
|
+
solutionId: result.solutionId,
|
|
259
|
+
failed: (result.elementExecutions ?? []).filter((execution) => execution.status !== "Completed").map(({ elementId, status }) => ({ elementId, status }))
|
|
260
|
+
};
|
|
261
|
+
if (result.variables) {
|
|
262
|
+
const globals = result.variables.globals ?? {};
|
|
263
|
+
const outputs = {};
|
|
264
|
+
const missing = [];
|
|
265
|
+
for (const id of result.declaredOutputIds ?? []) {
|
|
266
|
+
if (Object.hasOwn(globals, id)) {
|
|
267
|
+
outputs[id] = globals[id];
|
|
268
|
+
} else {
|
|
269
|
+
missing.push(id);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
summary.outputs = outputs;
|
|
273
|
+
if (missing.length > 0)
|
|
274
|
+
summary.missingOutputs = missing;
|
|
275
|
+
}
|
|
276
|
+
if (result.variablesError)
|
|
277
|
+
summary.variablesError = result.variablesError;
|
|
278
|
+
if (result.incidents && result.incidents.length > 0) {
|
|
279
|
+
summary.incidents = result.incidents;
|
|
280
|
+
}
|
|
281
|
+
return summary;
|
|
282
|
+
}
|
|
283
|
+
var FULL_DEBUG_OUTPUT_DIR = ".flow-debug";
|
|
284
|
+
var FULL_DEBUG_OUTPUT_GITIGNORE = "# Written by `uip maestro flow debug --summary`: local debug records with tenant data.\n*\n";
|
|
285
|
+
async function writeFullDebugOutput(fs, projectPath, envelope) {
|
|
286
|
+
const { findNearestParentUipxFile } = await import("./index-d60j7q07.js");
|
|
287
|
+
const projectDir = fs.path.resolve(projectPath);
|
|
288
|
+
const discovery = await findNearestParentUipxFile(fs, projectDir);
|
|
289
|
+
const solutionDir = discovery.status === "found" ? fs.path.dirname(discovery.solutionFile) : fs.path.resolve(projectDir, "..");
|
|
290
|
+
const dir = fs.path.join(solutionDir, FULL_DEBUG_OUTPUT_DIR);
|
|
291
|
+
const relative = fs.path.relative(solutionDir, projectDir);
|
|
292
|
+
const key = relative && !relative.startsWith("..") && !fs.path.isAbsolute(relative) ? relative : fs.path.basename(projectDir);
|
|
293
|
+
const file = fs.path.join(dir, `${key}.json`);
|
|
294
|
+
await fs.mkdir(fs.path.dirname(file));
|
|
295
|
+
await fs.writeFile(fs.path.join(dir, ".gitignore"), FULL_DEBUG_OUTPUT_GITIGNORE);
|
|
296
|
+
await fs.writeFile(file, `${JSON.stringify(envelope, null, 2)}
|
|
297
|
+
`);
|
|
298
|
+
return file;
|
|
299
|
+
}
|
|
300
|
+
|
|
202
301
|
// ../flow-tool/src/commands/debug.ts
|
|
203
302
|
function buildHttpFailureOutput(err) {
|
|
204
303
|
const stageLabel = err.stage ?? "request";
|
|
@@ -288,22 +387,26 @@ function buildIncidentInstructions(incidents, instanceId) {
|
|
|
288
387
|
- `)}
|
|
289
388
|
${detailHint}${traceHint}`;
|
|
290
389
|
}
|
|
390
|
+
function variablesRetryCommand(instanceId, error) {
|
|
391
|
+
const ids = error.expectedGlobals?.length ? error.expectedGlobals : error.missingGlobals;
|
|
392
|
+
const expect = ids?.length ? ` --expected-outputs ${ids.join(" ")}` : "";
|
|
393
|
+
return `'uip maestro flow debug-instance variables ${instanceId}${expect}'`;
|
|
394
|
+
}
|
|
291
395
|
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:
|
|
292
396
|
` + " 1. Studio Web — open the debug URL printed once the solution uploads " + `(also 'Data.studioWebUrl' in the result).
|
|
293
397
|
` + " 2. UiPath Maestro VS Code extension — open the flow and hit Debug.";
|
|
294
|
-
async function
|
|
295
|
-
const [error,
|
|
296
|
-
const { readFlowWorkflow, resolveProjectFlowFile } = await import("./flow-io-
|
|
297
|
-
const { startsOnConversationTrigger } = await import("./debug-conversation-trigger-zbxp49z7.js");
|
|
398
|
+
async function readProjectFlowNodes(projectPath) {
|
|
399
|
+
const [error, nodes] = await catchError((async () => {
|
|
400
|
+
const { readFlowWorkflow, resolveProjectFlowFile } = await import("./flow-io-0yftj03d.js");
|
|
298
401
|
const flowFilePath = await resolveProjectFlowFile(projectPath);
|
|
299
402
|
const { workflow } = await readFlowWorkflow(flowFilePath);
|
|
300
|
-
return
|
|
403
|
+
return workflow.nodes ?? [];
|
|
301
404
|
})());
|
|
302
405
|
if (error) {
|
|
303
|
-
logger.info(`Skipped the
|
|
304
|
-
return
|
|
406
|
+
logger.info(`Skipped the debug pre-flight scan: ${error.message}`);
|
|
407
|
+
return;
|
|
305
408
|
}
|
|
306
|
-
return
|
|
409
|
+
return nodes;
|
|
307
410
|
}
|
|
308
411
|
var FLOW_DEBUG_EXAMPLES = [
|
|
309
412
|
{
|
|
@@ -324,6 +427,21 @@ var FLOW_DEBUG_EXAMPLES = [
|
|
|
324
427
|
}
|
|
325
428
|
}
|
|
326
429
|
},
|
|
430
|
+
{
|
|
431
|
+
Description: "Read only the verdict: status, the elements that did not complete, and the flow's declared outputs — not every node's raw output (HTTP bodies and headers included)",
|
|
432
|
+
Command: "uip maestro flow debug ./my-flow-project --summary",
|
|
433
|
+
Output: {
|
|
434
|
+
Code: "FlowDebug",
|
|
435
|
+
Data: {
|
|
436
|
+
finalStatus: "Completed",
|
|
437
|
+
instanceId: "c3d4e5f6-0000-0000-0000-000000000001",
|
|
438
|
+
studioWebUrl: "https://cloud.uipath.com/org/tenant/studio_/debug/e5f6a7b8",
|
|
439
|
+
solutionId: "e5f6a7b8-0000-0000-0000-000000000001",
|
|
440
|
+
failed: [],
|
|
441
|
+
outputs: { weatherVerdict: "warm office today" }
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
},
|
|
327
445
|
{
|
|
328
446
|
Description: "Conversational flow (core.trigger.conversation) — uploaded to Studio Web and handed off, since only a chat UI can drive it. No debug session is started",
|
|
329
447
|
Command: "uip maestro flow debug ./my-chat-flow --open-in-browser",
|
|
@@ -409,9 +527,24 @@ function parsePositiveIntegerOption(value, optionName) {
|
|
|
409
527
|
return { ok: true, value: parsed };
|
|
410
528
|
}
|
|
411
529
|
function registerDebugCommand(program) {
|
|
412
|
-
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("--attachment <name=path>", "Upload a file as a file-typed workflow input variable (repeatable). " + "Example: --attachment file1=./resume.pdf", appendOption, []).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) => {
|
|
413
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
414
|
-
const
|
|
530
|
+
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) => {
|
|
531
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
532
|
+
const nodes = await readProjectFlowNodes(projectPath);
|
|
533
|
+
let isConversational = false;
|
|
534
|
+
if (nodes !== undefined) {
|
|
535
|
+
const { startsOnConversationTrigger } = await import("./debug-conversation-trigger-f4a07w23.js");
|
|
536
|
+
const [entryPointError, conversational] = catchError(() => startsOnConversationTrigger({ nodes }, options.entryPoint));
|
|
537
|
+
if (entryPointError instanceof UnknownEntryPointError) {
|
|
538
|
+
OutputFormatter.error({
|
|
539
|
+
Result: RESULTS.ValidationError,
|
|
540
|
+
Message: entryPointError.message,
|
|
541
|
+
Instructions: entryPointError.instructions
|
|
542
|
+
});
|
|
543
|
+
processContext.exit(3);
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
isConversational = conversational === true;
|
|
547
|
+
}
|
|
415
548
|
if (isConversational) {
|
|
416
549
|
OutputFormatter.log({
|
|
417
550
|
Warning: CONVERSATIONAL_DEBUG_WARNING
|
|
@@ -527,7 +660,7 @@ function registerDebugCommand(program) {
|
|
|
527
660
|
}
|
|
528
661
|
userProvidedFolderId = parsed.value;
|
|
529
662
|
} else if (options.folderKey !== undefined || options.folderPath !== undefined) {
|
|
530
|
-
const { resolveFolder } = await import("./index-
|
|
663
|
+
const { resolveFolder } = await import("./index-gjg7tpcx.js");
|
|
531
664
|
const [folderError, folder] = await catchError(resolveFolder({
|
|
532
665
|
folderKey: options.folderKey,
|
|
533
666
|
folderPath: options.folderPath
|
|
@@ -566,17 +699,18 @@ function registerDebugCommand(program) {
|
|
|
566
699
|
InboundVoiceDebugError,
|
|
567
700
|
MissingSolutionWrapperError,
|
|
568
701
|
UnregisteredProjectError
|
|
569
|
-
} = await import("./flow-debug-service-
|
|
570
|
-
const {
|
|
702
|
+
} = await import("./flow-debug-service-a7vd9eht.js");
|
|
703
|
+
const { UnboundInlineEntityError } = await import("./inline-entity-resolver-nzfs8hb6.js");
|
|
704
|
+
const { MaestroHttpError } = await import("./debug-http-client-8t7t701c.js");
|
|
571
705
|
const {
|
|
572
706
|
buildPollTimeoutFailureOutput,
|
|
573
707
|
DebugPollTimeoutError,
|
|
574
708
|
isSuccessfulDebugStatus
|
|
575
|
-
} = await import("./debug-service-
|
|
709
|
+
} = await import("./debug-service-c7y7f216.js");
|
|
576
710
|
const {
|
|
577
711
|
buildSolutionUploadFailureOutput,
|
|
578
712
|
isSolutionUploadHttpError
|
|
579
|
-
} = await import("./index-
|
|
713
|
+
} = await import("./index-d60j7q07.js");
|
|
580
714
|
const service = new FlowDebugService;
|
|
581
715
|
const parsedPollInterval = parsePositiveNumberOption(options.pollInterval || "2000", "--poll-interval");
|
|
582
716
|
if (!parsedPollInterval.ok) {
|
|
@@ -605,7 +739,7 @@ function registerDebugCommand(program) {
|
|
|
605
739
|
}
|
|
606
740
|
let inputs;
|
|
607
741
|
if (options.inputs) {
|
|
608
|
-
const { parseFlowInputs } = await import("./flow-api-
|
|
742
|
+
const { parseFlowInputs } = await import("./flow-api-qj89cv18.js");
|
|
609
743
|
const [parseError, parsed] = await catchError(parseFlowInputs(options.inputs));
|
|
610
744
|
if (parseError) {
|
|
611
745
|
OutputFormatter.error({
|
|
@@ -630,7 +764,7 @@ function registerDebugCommand(program) {
|
|
|
630
764
|
processContext.exit(1);
|
|
631
765
|
return;
|
|
632
766
|
}
|
|
633
|
-
const { uploadJobAttachment } = await import("./index-
|
|
767
|
+
const { uploadJobAttachment } = await import("./index-gjg7tpcx.js");
|
|
634
768
|
const [uploadError, resolved] = await catchError(resolveAttachmentInputs(specs, (bytes, fileName) => uploadJobAttachment(bytes, fileName, {
|
|
635
769
|
tenant: tenantName
|
|
636
770
|
})));
|
|
@@ -657,6 +791,7 @@ function registerDebugCommand(program) {
|
|
|
657
791
|
}
|
|
658
792
|
const debugOptions = {
|
|
659
793
|
inputs,
|
|
794
|
+
...options.entryPoint === undefined ? {} : { entryPoint: options.entryPoint },
|
|
660
795
|
...maxPolls === undefined ? {} : { maxPolls },
|
|
661
796
|
...isConversational ? { uploadOnly: true } : {}
|
|
662
797
|
};
|
|
@@ -696,7 +831,7 @@ function registerDebugCommand(program) {
|
|
|
696
831
|
processContext.exit(3);
|
|
697
832
|
return;
|
|
698
833
|
}
|
|
699
|
-
if (executeError instanceof InboundVoiceDebugError) {
|
|
834
|
+
if (executeError instanceof InboundVoiceDebugError || executeError instanceof UnknownEntryPointError) {
|
|
700
835
|
OutputFormatter.error({
|
|
701
836
|
Result: RESULTS.ValidationError,
|
|
702
837
|
Message: executeError.message,
|
|
@@ -714,6 +849,15 @@ function registerDebugCommand(program) {
|
|
|
714
849
|
processContext.exit(3);
|
|
715
850
|
return;
|
|
716
851
|
}
|
|
852
|
+
if (executeError instanceof UnboundInlineEntityError) {
|
|
853
|
+
OutputFormatter.error({
|
|
854
|
+
Result: RESULTS.ValidationError,
|
|
855
|
+
Message: executeError.message,
|
|
856
|
+
Instructions: executeError.instructions
|
|
857
|
+
});
|
|
858
|
+
processContext.exit(3);
|
|
859
|
+
return;
|
|
860
|
+
}
|
|
717
861
|
if (executeError instanceof DebugProvisioningMissingResourcesError) {
|
|
718
862
|
OutputFormatter.error({
|
|
719
863
|
Result: RESULTS.Failure,
|
|
@@ -763,21 +907,39 @@ function registerDebugCommand(program) {
|
|
|
763
907
|
return;
|
|
764
908
|
}
|
|
765
909
|
const success = isSuccessfulDebugStatus(result.finalStatus);
|
|
766
|
-
const
|
|
910
|
+
const fullData = {
|
|
767
911
|
jobKey: result.jobKey,
|
|
768
912
|
instanceId: result.instanceId,
|
|
769
913
|
runId: result.runId,
|
|
770
914
|
folderKey: result.folderKey,
|
|
771
915
|
finalStatus: result.finalStatus,
|
|
916
|
+
entryPoint: result.entryPoint,
|
|
772
917
|
solutionId: result.solutionId,
|
|
773
918
|
studioWebUrl: result.studioWebUrl,
|
|
774
919
|
elementExecutions: result.elementExecutions,
|
|
775
920
|
variables: result.variables,
|
|
776
921
|
variablesError: result.variablesError,
|
|
922
|
+
variablesFetch: result.variablesFetch,
|
|
777
923
|
incidents: result.incidents
|
|
778
924
|
};
|
|
925
|
+
let data = fullData;
|
|
926
|
+
if (options.summary) {
|
|
927
|
+
const summary2 = buildDebugSummary(result);
|
|
928
|
+
const [writeError, fullOutputPath] = await catchError(writeFullDebugOutput(getFileSystem(), projectPath, {
|
|
929
|
+
Result: success ? RESULTS.Success : RESULTS.Failure,
|
|
930
|
+
Code: "FlowDebug",
|
|
931
|
+
Data: fullData
|
|
932
|
+
}));
|
|
933
|
+
if (writeError) {
|
|
934
|
+
logger.warn(`Could not write the full debug output: ${writeError.message}`);
|
|
935
|
+
summary2.fullOutputError = writeError.message;
|
|
936
|
+
} else {
|
|
937
|
+
summary2.fullOutputPath = fullOutputPath;
|
|
938
|
+
}
|
|
939
|
+
data = summary2;
|
|
940
|
+
}
|
|
779
941
|
if (success) {
|
|
780
|
-
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}.
|
|
942
|
+
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}`;
|
|
781
943
|
OutputFormatter.success({
|
|
782
944
|
Result: RESULTS.Success,
|
|
783
945
|
Code: "FlowDebug",
|
|
@@ -821,7 +983,7 @@ var registerDebugInstancesCommand = (program) => {
|
|
|
821
983
|
var EDGE_LIST_EXAMPLES = [
|
|
822
984
|
{
|
|
823
985
|
Description: "List all edges in a flow file",
|
|
824
|
-
Command: "uip maestro flow
|
|
986
|
+
Command: "uip maestro flow edges list flow.json",
|
|
825
987
|
Output: {
|
|
826
988
|
Code: "EdgeListSuccess",
|
|
827
989
|
Data: {
|
|
@@ -840,7 +1002,7 @@ var EDGE_LIST_EXAMPLES = [
|
|
|
840
1002
|
var EDGE_ADD_EXAMPLES = [
|
|
841
1003
|
{
|
|
842
1004
|
Description: "Add an edge between two nodes in a flow",
|
|
843
|
-
Command: "uip maestro flow
|
|
1005
|
+
Command: "uip maestro flow edges create flow.json Node_1 Node_2",
|
|
844
1006
|
Output: {
|
|
845
1007
|
Code: "EdgeAddSuccess",
|
|
846
1008
|
Data: {
|
|
@@ -856,7 +1018,7 @@ var EDGE_ADD_EXAMPLES = [
|
|
|
856
1018
|
},
|
|
857
1019
|
{
|
|
858
1020
|
Description: "Re-running with the same arguments is idempotent: returns the existing edge id with code EdgeAlreadyExists and a stderr warning.",
|
|
859
|
-
Command: "uip maestro flow
|
|
1021
|
+
Command: "uip maestro flow edges create flow.json Node_1 Node_2",
|
|
860
1022
|
Output: {
|
|
861
1023
|
Code: "EdgeAlreadyExists",
|
|
862
1024
|
Data: {
|
|
@@ -874,7 +1036,7 @@ var EDGE_ADD_EXAMPLES = [
|
|
|
874
1036
|
var EDGE_DELETE_EXAMPLES = [
|
|
875
1037
|
{
|
|
876
1038
|
Description: "Delete an edge by ID",
|
|
877
|
-
Command: "uip maestro flow
|
|
1039
|
+
Command: "uip maestro flow edges delete flow.json edge_a1b2c3d4",
|
|
878
1040
|
Output: {
|
|
879
1041
|
Code: "EdgeDeleteSuccess",
|
|
880
1042
|
Data: {
|
|
@@ -890,7 +1052,7 @@ var EDGE_DELETE_EXAMPLES = [
|
|
|
890
1052
|
var EDGE_REMOVE_EXAMPLES = [
|
|
891
1053
|
{
|
|
892
1054
|
Description: "Remove an edge by ID",
|
|
893
|
-
Command: "uip maestro flow
|
|
1055
|
+
Command: "uip maestro flow edges remove flow.json edge_a1b2c3d4",
|
|
894
1056
|
Output: {
|
|
895
1057
|
Code: "EdgeRemoveSuccess",
|
|
896
1058
|
Data: {
|
|
@@ -904,10 +1066,10 @@ var EDGE_REMOVE_EXAMPLES = [
|
|
|
904
1066
|
}
|
|
905
1067
|
];
|
|
906
1068
|
function getDeleteEdgeInstructions(file) {
|
|
907
|
-
return `Check that "${file}" exists and run 'uip maestro flow
|
|
1069
|
+
return `Check that "${file}" exists and run 'uip maestro flow edges list ${file}' to find a valid edge ID, then retry.`;
|
|
908
1070
|
}
|
|
909
1071
|
async function runDeleteEdge(file, edgeId, code) {
|
|
910
|
-
const { deleteEdgeFromFlow } = await import("./edge-service-
|
|
1072
|
+
const { deleteEdgeFromFlow } = await import("./edge-service-vnn1p29d.js");
|
|
911
1073
|
const normalizedEdgeId = edgeId.trim();
|
|
912
1074
|
const [error, result] = await catchError(deleteEdgeFromFlow(file, normalizedEdgeId));
|
|
913
1075
|
if (error) {
|
|
@@ -928,9 +1090,9 @@ async function runDeleteEdge(file, edgeId, code) {
|
|
|
928
1090
|
});
|
|
929
1091
|
}
|
|
930
1092
|
var registerEdgeCommand = (program) => {
|
|
931
|
-
const edge = program.command("edge").description("Manage edges in a Flow file");
|
|
932
|
-
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) => {
|
|
933
|
-
const { listEdgesInFlow } = await import("./edge-service-
|
|
1093
|
+
const edge = program.command("edges").alias("edge").description("Manage edges in a Flow file");
|
|
1094
|
+
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) => {
|
|
1095
|
+
const { listEdgesInFlow } = await import("./edge-service-vnn1p29d.js");
|
|
934
1096
|
const [error, result] = await catchError(listEdgesInFlow(file));
|
|
935
1097
|
if (error) {
|
|
936
1098
|
OutputFormatter.error({
|
|
@@ -941,17 +1103,19 @@ var registerEdgeCommand = (program) => {
|
|
|
941
1103
|
processContext.exit(1);
|
|
942
1104
|
return;
|
|
943
1105
|
}
|
|
1106
|
+
const window = rowWindow(result.edges, options);
|
|
944
1107
|
OutputFormatter.success({
|
|
945
1108
|
Result: RESULTS.Success,
|
|
946
1109
|
Code: "EdgeListSuccess",
|
|
947
1110
|
Data: {
|
|
948
|
-
Edges:
|
|
949
|
-
Count:
|
|
950
|
-
}
|
|
1111
|
+
Edges: window.rows,
|
|
1112
|
+
Count: window.rows.length
|
|
1113
|
+
},
|
|
1114
|
+
Pagination: window.pagination
|
|
951
1115
|
});
|
|
952
1116
|
});
|
|
953
|
-
edge.command("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 "output")').option("--target-port <port>", 'Target port name (defaults to "input")').examples(EDGE_ADD_EXAMPLES).trackedAction(processContext, async (file, sourceId, targetId, options) => {
|
|
954
|
-
const { addEdgeToFlow } = await import("./edge-service-
|
|
1117
|
+
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 "output")').option("--target-port <port>", 'Target port name (defaults to "input")').examples(EDGE_ADD_EXAMPLES).trackedAction(processContext, async (file, sourceId, targetId, options) => {
|
|
1118
|
+
const { addEdgeToFlow } = await import("./edge-service-vnn1p29d.js");
|
|
955
1119
|
const [error, result] = await catchError(addEdgeToFlow(file, sourceId, targetId, {
|
|
956
1120
|
sourcePort: options.sourcePort,
|
|
957
1121
|
targetPort: options.targetPort
|
|
@@ -987,108 +1151,10 @@ var registerEdgeCommand = (program) => {
|
|
|
987
1151
|
});
|
|
988
1152
|
});
|
|
989
1153
|
edge.command("delete").description(`Delete an edge from a Flow file.
|
|
990
|
-
Use 'uip maestro flow
|
|
991
|
-
edge.command("remove").description(`Remove an edge from a Flow file.
|
|
992
|
-
Alias for '
|
|
1154
|
+
Use 'uip maestro flow edges list' to find the edge ID.`).argument("<file>", "Path to the .flow file").argument("<edge-id>", "ID of the edge to delete").examples(EDGE_DELETE_EXAMPLES).trackedAction(processContext, async (file, edgeId) => runDeleteEdge(file, edgeId, "EdgeDeleteSuccess"));
|
|
1155
|
+
edge.command("remove", { hidden: true }).description(`Remove an edge from a Flow file.
|
|
1156
|
+
Alias for 'edges delete'. Use 'uip maestro flow edges list' to find the edge ID.`).argument("<file>", "Path to the .flow file").argument("<edge-id>", "ID of the edge to remove").examples(EDGE_REMOVE_EXAMPLES).trackedAction(processContext, async (file, edgeId) => runDeleteEdge(file, edgeId, "EdgeRemoveSuccess"));
|
|
993
1157
|
};
|
|
994
|
-
|
|
995
|
-
// ../flow-tool/src/services/flow-eval-run-format.ts
|
|
996
|
-
function formatDuration(durationMs) {
|
|
997
|
-
if (durationMs === null || durationMs === undefined) {
|
|
998
|
-
return "-";
|
|
999
|
-
}
|
|
1000
|
-
return `${(durationMs / 1000).toFixed(1)}s`;
|
|
1001
|
-
}
|
|
1002
|
-
function formatEvaluatorScores(scores, evaluators) {
|
|
1003
|
-
if (!scores || scores.length === 0) {
|
|
1004
|
-
return "-";
|
|
1005
|
-
}
|
|
1006
|
-
return scores.map((score) => {
|
|
1007
|
-
const evaluator = evaluators.find((item) => item.id === score.evaluatorId);
|
|
1008
|
-
return `${evaluator?.name ?? score.evaluatorId}: ${score.value}`;
|
|
1009
|
-
}).join(", ");
|
|
1010
|
-
}
|
|
1011
|
-
function evaluatorSnapshotName(snapshot) {
|
|
1012
|
-
if (typeof snapshot === "object" && snapshot !== null && !Array.isArray(snapshot) && typeof snapshot.name === "string") {
|
|
1013
|
-
return snapshot.name;
|
|
1014
|
-
}
|
|
1015
|
-
return;
|
|
1016
|
-
}
|
|
1017
|
-
function remoteEvaluatorName(evaluatorId, evaluatorSnapshot, evaluators) {
|
|
1018
|
-
return evaluators.find((item) => item.id === evaluatorId)?.name ?? evaluatorSnapshotName(evaluatorSnapshot) ?? evaluatorId;
|
|
1019
|
-
}
|
|
1020
|
-
function remoteRunScore(run) {
|
|
1021
|
-
if (run.result?.scores && run.result.scores.length > 0) {
|
|
1022
|
-
const sum = run.result.scores.reduce((total, score) => total + score.value, 0);
|
|
1023
|
-
return Number((sum / run.result.scores.length).toFixed(4));
|
|
1024
|
-
}
|
|
1025
|
-
const value = run.result?.score?.value;
|
|
1026
|
-
return typeof value === "number" || typeof value === "boolean" ? value : "-";
|
|
1027
|
-
}
|
|
1028
|
-
function formatRemoteEvalRunRow(run, evaluators, verbose = false) {
|
|
1029
|
-
let evaluatorScores = "-";
|
|
1030
|
-
let justifications = "-";
|
|
1031
|
-
if (run.evaluatorRuns && run.evaluatorRuns.length > 0) {
|
|
1032
|
-
evaluatorScores = run.evaluatorRuns.map((evaluatorRun) => {
|
|
1033
|
-
const name = remoteEvaluatorName(evaluatorRun.evaluatorId, evaluatorRun.evaluatorSnapshot, evaluators);
|
|
1034
|
-
const score = evaluatorRun.result?.score;
|
|
1035
|
-
if (score?.type === "error") {
|
|
1036
|
-
return `${name}: Error`;
|
|
1037
|
-
}
|
|
1038
|
-
return `${name}: ${score?.value ?? "-"}`;
|
|
1039
|
-
}).join(", ");
|
|
1040
|
-
const justificationParts = run.evaluatorRuns.filter((evaluatorRun) => evaluatorRun.result?.score?.justification).map((evaluatorRun) => {
|
|
1041
|
-
const name = remoteEvaluatorName(evaluatorRun.evaluatorId, evaluatorRun.evaluatorSnapshot, evaluators);
|
|
1042
|
-
return `[${name}] ${evaluatorRun.result?.score?.justification}`;
|
|
1043
|
-
});
|
|
1044
|
-
if (justificationParts.length > 0) {
|
|
1045
|
-
justifications = justificationParts.join(" | ");
|
|
1046
|
-
}
|
|
1047
|
-
} else if (run.result?.scores && run.result.scores.length > 0) {
|
|
1048
|
-
evaluatorScores = formatEvaluatorScores(run.result.scores, evaluators);
|
|
1049
|
-
}
|
|
1050
|
-
const tokens = run.completionMetrics?.tokens;
|
|
1051
|
-
const duration = run.completionMetrics?.duration;
|
|
1052
|
-
const error = run.errorMessage ?? (typeof run.error === "string" ? run.error : run.error?.message) ?? "-";
|
|
1053
|
-
const row = {
|
|
1054
|
-
DataPoint: run.evalSnapshot?.name ?? run.id,
|
|
1055
|
-
Status: run.status,
|
|
1056
|
-
Score: remoteRunScore(run),
|
|
1057
|
-
EvaluatorScores: evaluatorScores,
|
|
1058
|
-
Tokens: typeof tokens === "number" && tokens > 0 ? tokens : "-",
|
|
1059
|
-
Duration: typeof duration === "number" ? formatDuration(duration) : "-",
|
|
1060
|
-
Error: error
|
|
1061
|
-
};
|
|
1062
|
-
if (verbose) {
|
|
1063
|
-
row.Justifications = justifications;
|
|
1064
|
-
}
|
|
1065
|
-
return row;
|
|
1066
|
-
}
|
|
1067
|
-
function isFailedRemoteRun(run) {
|
|
1068
|
-
const status = run.status.toLowerCase();
|
|
1069
|
-
if (status === "failed" || status === "workloadfailed" || run.errorMessage || run.error) {
|
|
1070
|
-
return true;
|
|
1071
|
-
}
|
|
1072
|
-
if (run.result?.score?.type === "error") {
|
|
1073
|
-
return true;
|
|
1074
|
-
}
|
|
1075
|
-
return run.evaluatorRuns?.some((evaluatorRun) => evaluatorRun.result?.score?.type === "error" || evaluatorRun.result?.score?.value === false) ?? false;
|
|
1076
|
-
}
|
|
1077
|
-
function isTerminalRemoteStatus(status) {
|
|
1078
|
-
return ["completed", "partiallycompleted", "failed"].includes(status.toLowerCase());
|
|
1079
|
-
}
|
|
1080
|
-
function formatEvalSetRunRow(run, evaluators) {
|
|
1081
|
-
return {
|
|
1082
|
-
EvalSetRunId: run.id,
|
|
1083
|
-
Status: run.status,
|
|
1084
|
-
Score: run.score ?? "-",
|
|
1085
|
-
DataPoints: run.numberOfEvalsExecuted ?? "-",
|
|
1086
|
-
Duration: formatDuration(run.durationMilliseconds),
|
|
1087
|
-
EvaluatorScores: formatEvaluatorScores(run.evaluatorScores, evaluators),
|
|
1088
|
-
CreatedAt: run.createdAt
|
|
1089
|
-
};
|
|
1090
|
-
}
|
|
1091
|
-
|
|
1092
1158
|
// ../flow-tool/src/commands/eval-run.ts
|
|
1093
1159
|
var FLOW_EVAL_PATH_OPTION_DESCRIPTION = "Path to a Flow project directory, or a solution directory with exactly one Flow project";
|
|
1094
1160
|
var POLL_INTERVAL_MS = 5000;
|
|
@@ -1096,7 +1162,7 @@ var POLL_TIMEOUT_MS = 600000;
|
|
|
1096
1162
|
var FLOW_EVAL_RUN_START_EXAMPLES = [
|
|
1097
1163
|
{
|
|
1098
1164
|
Description: "Start a Studio Web Flow evaluation run",
|
|
1099
|
-
Command: 'uip maestro flow eval
|
|
1165
|
+
Command: 'uip maestro flow eval runs start --set "Default Evaluation Set" --path ./my-solution/Flow',
|
|
1100
1166
|
Output: {
|
|
1101
1167
|
Code: "FlowEvalRunStarted",
|
|
1102
1168
|
Data: {
|
|
@@ -1111,7 +1177,7 @@ var FLOW_EVAL_RUN_START_EXAMPLES = [
|
|
|
1111
1177
|
var FLOW_EVAL_RUN_STATUS_EXAMPLES = [
|
|
1112
1178
|
{
|
|
1113
1179
|
Description: "Check the status of a Studio Web Flow evaluation run",
|
|
1114
|
-
Command: 'uip maestro flow eval
|
|
1180
|
+
Command: 'uip maestro flow eval runs status a1b2c3d4-0000-0000-0000-000000000101 --set "Default Evaluation Set" --path ./my-solution/Flow',
|
|
1115
1181
|
Output: {
|
|
1116
1182
|
Code: "FlowEvalRunStatus",
|
|
1117
1183
|
Data: {
|
|
@@ -1126,7 +1192,7 @@ var FLOW_EVAL_RUN_STATUS_EXAMPLES = [
|
|
|
1126
1192
|
var FLOW_EVAL_RUN_RESULTS_EXAMPLES = [
|
|
1127
1193
|
{
|
|
1128
1194
|
Description: "Show detailed per-data-point results for a Flow run",
|
|
1129
|
-
Command: 'uip maestro flow eval
|
|
1195
|
+
Command: 'uip maestro flow eval runs results a1b2c3d4-0000-0000-0000-000000000101 --set "Default Evaluation Set" --path ./my-solution/Flow',
|
|
1130
1196
|
Output: {
|
|
1131
1197
|
Code: "FlowEvalRunResults",
|
|
1132
1198
|
Data: [
|
|
@@ -1144,7 +1210,7 @@ var FLOW_EVAL_RUN_RESULTS_EXAMPLES = [
|
|
|
1144
1210
|
var FLOW_EVAL_RUN_LIST_EXAMPLES = [
|
|
1145
1211
|
{
|
|
1146
1212
|
Description: "List Studio Web evaluation runs for a Flow eval set",
|
|
1147
|
-
Command: 'uip maestro flow eval
|
|
1213
|
+
Command: 'uip maestro flow eval runs list --set "Default Evaluation Set" --path ./my-solution/Flow',
|
|
1148
1214
|
Output: {
|
|
1149
1215
|
Code: "FlowEvalRunList",
|
|
1150
1216
|
Data: [
|
|
@@ -1163,7 +1229,7 @@ var FLOW_EVAL_RUN_LIST_EXAMPLES = [
|
|
|
1163
1229
|
var FLOW_EVAL_RUN_COMPARE_EXAMPLES = [
|
|
1164
1230
|
{
|
|
1165
1231
|
Description: "Compare two Studio Web Flow evaluation runs",
|
|
1166
|
-
Command: 'uip maestro flow eval
|
|
1232
|
+
Command: 'uip maestro flow eval runs compare a1b2c3d4-0000-0000-0000-000000000101 --compare-to a1b2c3d4-0000-0000-0000-000000000102 --set "Default Evaluation Set" --path ./my-solution/Flow',
|
|
1167
1233
|
Output: {
|
|
1168
1234
|
Code: "FlowEvalRunComparison",
|
|
1169
1235
|
Data: {
|
|
@@ -1287,11 +1353,11 @@ async function resolveRemoteTarget(service, options, config, requireSolutionId =
|
|
|
1287
1353
|
}, requireSolutionId, config);
|
|
1288
1354
|
}
|
|
1289
1355
|
function registerEvalRunCommand(evalCmd) {
|
|
1290
|
-
const runCmd = evalCmd.command("run").description("Run Flow evaluation sets in Studio Web");
|
|
1356
|
+
const runCmd = evalCmd.command("runs").alias("run").description("Run Flow evaluation sets in Studio Web");
|
|
1291
1357
|
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) => {
|
|
1292
1358
|
const [error] = await catchError((async () => {
|
|
1293
1359
|
const config = await resolveStudioWebConfig();
|
|
1294
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1360
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-keqkwjg1.js");
|
|
1295
1361
|
const service = new FlowEvalRunService;
|
|
1296
1362
|
const result = await service.startRemoteEvalRun(options.path, options.set, config, {
|
|
1297
1363
|
solutionId: options.solutionId,
|
|
@@ -1310,7 +1376,7 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1310
1376
|
Evaluators: result.evaluators,
|
|
1311
1377
|
Status: result.status
|
|
1312
1378
|
},
|
|
1313
|
-
Instructions: options.wait ? "Waiting for completion..." : `Monitor with: uip maestro flow eval
|
|
1379
|
+
Instructions: options.wait ? "Waiting for completion..." : `Monitor with: uip maestro flow eval runs status ${result.evalSetRunId} --set "${options.set}" --path ${options.path}`
|
|
1314
1380
|
});
|
|
1315
1381
|
if (options.wait) {
|
|
1316
1382
|
await outputCompletedRemoteRun(service, config, options.path, result, options.timeout);
|
|
@@ -1320,10 +1386,10 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1320
1386
|
outputError("Failed to start flow evaluation run", error);
|
|
1321
1387
|
}
|
|
1322
1388
|
});
|
|
1323
|
-
addTargetOptions(runCmd.command("status").description("Check the status of a Studio Web Flow evaluation run").argument("<
|
|
1389
|
+
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) => {
|
|
1324
1390
|
const [error] = await catchError((async () => {
|
|
1325
1391
|
const config = await resolveStudioWebConfig();
|
|
1326
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1392
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-keqkwjg1.js");
|
|
1327
1393
|
const service = new FlowEvalRunService;
|
|
1328
1394
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1329
1395
|
const [run, evaluators] = await Promise.all([
|
|
@@ -1346,10 +1412,10 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1346
1412
|
outputError("Failed to get flow evaluation run status", error);
|
|
1347
1413
|
}
|
|
1348
1414
|
});
|
|
1349
|
-
addTargetOptions(runCmd.command("results").description("Get detailed results for a Studio Web Flow evaluation run").argument("<
|
|
1415
|
+
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) => {
|
|
1350
1416
|
const [error] = await catchError((async () => {
|
|
1351
1417
|
const config = await resolveStudioWebConfig();
|
|
1352
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1418
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-keqkwjg1.js");
|
|
1353
1419
|
const service = new FlowEvalRunService;
|
|
1354
1420
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1355
1421
|
let evalRuns = await service.getRemoteEvalRuns(config, target.workloadId, evalSetRunId);
|
|
@@ -1380,17 +1446,19 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1380
1446
|
outputError("Failed to get flow evaluation results", error);
|
|
1381
1447
|
}
|
|
1382
1448
|
});
|
|
1383
|
-
addTargetOptions(runCmd.command("list").description("List Studio Web evaluation runs for a Flow eval set")).examples(FLOW_EVAL_RUN_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
|
|
1449
|
+
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) => {
|
|
1384
1450
|
const [error] = await catchError((async () => {
|
|
1385
1451
|
const config = await resolveStudioWebConfig();
|
|
1386
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1452
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-keqkwjg1.js");
|
|
1387
1453
|
const service = new FlowEvalRunService;
|
|
1388
1454
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1389
|
-
const
|
|
1455
|
+
const allRuns = await service.listRemoteEvalSetRuns(config, target.workloadId, target.evalSet.id);
|
|
1456
|
+
const { rows: runs, pagination } = rowWindow(allRuns, options);
|
|
1390
1457
|
if (runs.length === 0) {
|
|
1391
1458
|
OutputFormatter.success({
|
|
1392
1459
|
Result: RESULTS.Success,
|
|
1393
1460
|
Code: "FlowEvalRunList",
|
|
1461
|
+
Pagination: pagination,
|
|
1394
1462
|
Data: []
|
|
1395
1463
|
});
|
|
1396
1464
|
return;
|
|
@@ -1399,6 +1467,7 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1399
1467
|
OutputFormatter.success({
|
|
1400
1468
|
Result: RESULTS.Success,
|
|
1401
1469
|
Code: "FlowEvalRunList",
|
|
1470
|
+
Pagination: pagination,
|
|
1402
1471
|
Data: runs.map((run) => formatEvalSetRunRow(run, evaluators))
|
|
1403
1472
|
});
|
|
1404
1473
|
})());
|
|
@@ -1406,10 +1475,10 @@ function registerEvalRunCommand(evalCmd) {
|
|
|
1406
1475
|
outputError("Failed to list flow evaluation runs", error);
|
|
1407
1476
|
}
|
|
1408
1477
|
});
|
|
1409
|
-
addTargetOptions(runCmd.command("compare").description("Compare results of two Studio Web Flow evaluation runs").argument("<
|
|
1478
|
+
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) => {
|
|
1410
1479
|
const [error] = await catchError((async () => {
|
|
1411
1480
|
const config = await resolveStudioWebConfig();
|
|
1412
|
-
const { FlowEvalRunService } = await import("./flow-eval-run-service-
|
|
1481
|
+
const { FlowEvalRunService } = await import("./flow-eval-run-service-keqkwjg1.js");
|
|
1413
1482
|
const service = new FlowEvalRunService;
|
|
1414
1483
|
const target = await resolveRemoteTarget(service, options, config);
|
|
1415
1484
|
const [runsA, runsB, runMetaA, runMetaB] = await Promise.all([
|
|
@@ -1539,10 +1608,10 @@ function registerEvalCommand(program) {
|
|
|
1539
1608
|
registerEvalRunCommand(evalCmd);
|
|
1540
1609
|
}
|
|
1541
1610
|
function registerEvaluatorCommands(evalCmd) {
|
|
1542
|
-
const evaluator = evalCmd.command("evaluator").description("Manage Flow evaluators");
|
|
1543
|
-
evaluator.command("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) => {
|
|
1611
|
+
const evaluator = evalCmd.command("evaluators").alias("evaluator").description("Manage Flow evaluators");
|
|
1612
|
+
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) => {
|
|
1544
1613
|
const [error] = await catchError((async () => {
|
|
1545
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1614
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1546
1615
|
const service = new FlowEvalService;
|
|
1547
1616
|
const created = await service.addEvaluator(options.path, {
|
|
1548
1617
|
name,
|
|
@@ -1567,15 +1636,17 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1567
1636
|
outputError2("Failed to add evaluator", error);
|
|
1568
1637
|
}
|
|
1569
1638
|
});
|
|
1570
|
-
evaluator.command("list").description("List evaluators in a flow project").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1639
|
+
addRowWindowOptions(evaluator.command("list")).description("List evaluators in a flow project").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1571
1640
|
const [error] = await catchError((async () => {
|
|
1572
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1641
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1573
1642
|
const service = new FlowEvalService;
|
|
1574
1643
|
const evaluators = await service.listEvaluators(options.path);
|
|
1644
|
+
const window = rowWindow(evaluators, options);
|
|
1575
1645
|
OutputFormatter.success({
|
|
1576
1646
|
Result: RESULTS.Success,
|
|
1577
1647
|
Code: "FlowEvalEvaluatorList",
|
|
1578
|
-
|
|
1648
|
+
Pagination: window.pagination,
|
|
1649
|
+
Data: window.rows.map((item) => ({
|
|
1579
1650
|
Name: item.name ?? String(item.evaluatorConfig.name ?? ""),
|
|
1580
1651
|
Id: item.id,
|
|
1581
1652
|
Type: item.evaluatorTypeId,
|
|
@@ -1588,9 +1659,9 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1588
1659
|
outputError2("Failed to list evaluators", error);
|
|
1589
1660
|
}
|
|
1590
1661
|
});
|
|
1591
|
-
evaluator.command("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) => {
|
|
1662
|
+
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) => {
|
|
1592
1663
|
const [error] = await catchError((async () => {
|
|
1593
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1664
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1594
1665
|
const service = new FlowEvalService;
|
|
1595
1666
|
const removed = await service.removeEvaluator(options.path, id);
|
|
1596
1667
|
if (!removed) {
|
|
@@ -1608,11 +1679,11 @@ function registerEvaluatorCommands(evalCmd) {
|
|
|
1608
1679
|
});
|
|
1609
1680
|
}
|
|
1610
1681
|
function registerEvalSetCommands(evalCmd) {
|
|
1611
|
-
const set = evalCmd.command("set").description("Manage evaluation sets");
|
|
1612
|
-
set.command("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) => {
|
|
1682
|
+
const set = evalCmd.command("sets").alias("set").description("Manage evaluation sets");
|
|
1683
|
+
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) => {
|
|
1613
1684
|
const [error] = await catchError((async () => {
|
|
1614
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1615
|
-
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-
|
|
1685
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1686
|
+
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-fv15zc9f.js");
|
|
1616
1687
|
const service = new FlowEvalService;
|
|
1617
1688
|
const created = await service.addEvalSet(options.path, {
|
|
1618
1689
|
name,
|
|
@@ -1637,16 +1708,18 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1637
1708
|
outputError2("Failed to create evaluation set", error);
|
|
1638
1709
|
}
|
|
1639
1710
|
});
|
|
1640
|
-
set.command("list").description("List evaluation sets").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1711
|
+
addRowWindowOptions(set.command("list")).description("List evaluation sets").option("--path <path>", FLOW_EVAL_PATH_OPTION_DESCRIPTION2, ".").trackedAction(processContext, async (options) => {
|
|
1641
1712
|
const [error] = await catchError((async () => {
|
|
1642
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1643
|
-
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-
|
|
1713
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1714
|
+
const { readEvalSetScope, readNodeTargetId } = await import("./flow-eval-node-target-fv15zc9f.js");
|
|
1644
1715
|
const service = new FlowEvalService;
|
|
1645
1716
|
const sets = await service.listEvalSets(options.path);
|
|
1717
|
+
const window = rowWindow(sets, options);
|
|
1646
1718
|
OutputFormatter.success({
|
|
1647
1719
|
Result: RESULTS.Success,
|
|
1648
1720
|
Code: "FlowEvalSetList",
|
|
1649
|
-
|
|
1721
|
+
Pagination: window.pagination,
|
|
1722
|
+
Data: window.rows.map((item) => {
|
|
1650
1723
|
const targetNode = readNodeTargetId(item);
|
|
1651
1724
|
return {
|
|
1652
1725
|
Name: item.name,
|
|
@@ -1664,9 +1737,9 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1664
1737
|
outputError2("Failed to list evaluation sets", error);
|
|
1665
1738
|
}
|
|
1666
1739
|
});
|
|
1667
|
-
set.command("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) => {
|
|
1740
|
+
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) => {
|
|
1668
1741
|
const [error] = await catchError((async () => {
|
|
1669
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1742
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1670
1743
|
const service = new FlowEvalService;
|
|
1671
1744
|
const removed = await service.removeEvalSet(options.path, id);
|
|
1672
1745
|
if (!removed) {
|
|
@@ -1684,13 +1757,13 @@ function registerEvalSetCommands(evalCmd) {
|
|
|
1684
1757
|
});
|
|
1685
1758
|
}
|
|
1686
1759
|
function registerEvaluationCommands(evalCmd) {
|
|
1687
|
-
evalCmd.command("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) => {
|
|
1760
|
+
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) => {
|
|
1688
1761
|
const [error] = await catchError((async () => {
|
|
1689
1762
|
const inputs = options.inputs === undefined ? {} : parseJsonObject(options.inputs, "--inputs");
|
|
1690
1763
|
const inputFiles = parseInputFiles(options.inputFile);
|
|
1691
1764
|
const expectedOutput = options.expected ? parseJsonObject(options.expected, "--expected") : undefined;
|
|
1692
1765
|
const criteria = options.criteria ? parseCriteriaOption(options.criteria) : undefined;
|
|
1693
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1766
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1694
1767
|
const service = new FlowEvalService;
|
|
1695
1768
|
const evaluation = await service.addEvaluation(options.path, options.set, {
|
|
1696
1769
|
name,
|
|
@@ -1715,15 +1788,17 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1715
1788
|
outputError2("Failed to add evaluation data point", error);
|
|
1716
1789
|
}
|
|
1717
1790
|
});
|
|
1718
|
-
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) => {
|
|
1791
|
+
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) => {
|
|
1719
1792
|
const [error] = await catchError((async () => {
|
|
1720
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1793
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1721
1794
|
const service = new FlowEvalService;
|
|
1722
1795
|
const evaluations = await service.listEvaluations(options.path, options.set);
|
|
1796
|
+
const window = rowWindow(evaluations, options);
|
|
1723
1797
|
OutputFormatter.success({
|
|
1724
1798
|
Result: RESULTS.Success,
|
|
1725
1799
|
Code: "FlowEvalList",
|
|
1726
|
-
|
|
1800
|
+
Pagination: window.pagination,
|
|
1801
|
+
Data: window.rows.map((item) => ({
|
|
1727
1802
|
Name: item.name,
|
|
1728
1803
|
Id: item.id,
|
|
1729
1804
|
Inputs: JSON.stringify(item.inputs),
|
|
@@ -1736,9 +1811,9 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1736
1811
|
outputError2("Failed to list evaluation data points", error);
|
|
1737
1812
|
}
|
|
1738
1813
|
});
|
|
1739
|
-
evalCmd.command("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) => {
|
|
1814
|
+
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) => {
|
|
1740
1815
|
const [error] = await catchError((async () => {
|
|
1741
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1816
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1742
1817
|
const service = new FlowEvalService;
|
|
1743
1818
|
const removed = await service.removeEvaluation(options.path, options.set, id);
|
|
1744
1819
|
if (!removed) {
|
|
@@ -1756,8 +1831,8 @@ function registerEvaluationCommands(evalCmd) {
|
|
|
1756
1831
|
});
|
|
1757
1832
|
}
|
|
1758
1833
|
function registerSimulationCommands(evalCmd) {
|
|
1759
|
-
const simulation = evalCmd.command("simulation").description("Manage simulations on eval data points");
|
|
1760
|
-
simulation.command("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) => {
|
|
1834
|
+
const simulation = evalCmd.command("simulations").alias("simulation").description("Manage simulations on eval data points");
|
|
1835
|
+
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) => {
|
|
1761
1836
|
const [error] = await catchError((async () => {
|
|
1762
1837
|
const strategy = options.strategy;
|
|
1763
1838
|
if (strategy !== "Static" && strategy !== "Llm") {
|
|
@@ -1782,7 +1857,7 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1782
1857
|
simulationInstruction: options.simulationInstructions,
|
|
1783
1858
|
mockValue
|
|
1784
1859
|
};
|
|
1785
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1860
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1786
1861
|
const service = new FlowEvalService;
|
|
1787
1862
|
if (options.parent !== undefined) {
|
|
1788
1863
|
const { simulation: created, warning } = await service.addChildSimulation(options.path, options.set, options.dataPoint, options.parent, simulation2);
|
|
@@ -1822,15 +1897,17 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1822
1897
|
outputError2("Failed to add simulation", error);
|
|
1823
1898
|
}
|
|
1824
1899
|
});
|
|
1825
|
-
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) => {
|
|
1900
|
+
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) => {
|
|
1826
1901
|
const [error] = await catchError((async () => {
|
|
1827
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1902
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1828
1903
|
const service = new FlowEvalService;
|
|
1829
1904
|
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);
|
|
1905
|
+
const window = rowWindow(simulations, options);
|
|
1830
1906
|
OutputFormatter.success({
|
|
1831
1907
|
Result: RESULTS.Success,
|
|
1832
1908
|
Code: options.parent !== undefined ? "FlowEvalChildSimulationList" : "FlowEvalSimulationList",
|
|
1833
|
-
|
|
1909
|
+
Pagination: window.pagination,
|
|
1910
|
+
Data: window.rows.map((s) => ({
|
|
1834
1911
|
ComponentId: s.componentId,
|
|
1835
1912
|
ComponentType: s.componentType,
|
|
1836
1913
|
ComponentDescription: s.componentDescription ?? "-",
|
|
@@ -1844,9 +1921,9 @@ function registerSimulationCommands(evalCmd) {
|
|
|
1844
1921
|
outputError2("Failed to list simulations", error);
|
|
1845
1922
|
}
|
|
1846
1923
|
});
|
|
1847
|
-
simulation.command("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) => {
|
|
1924
|
+
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) => {
|
|
1848
1925
|
const [error] = await catchError((async () => {
|
|
1849
|
-
const { FlowEvalService } = await import("./flow-eval-service-
|
|
1926
|
+
const { FlowEvalService } = await import("./flow-eval-service-5j1rwx32.js");
|
|
1850
1927
|
const service = new FlowEvalService;
|
|
1851
1928
|
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);
|
|
1852
1929
|
if (!removed) {
|
|
@@ -1913,7 +1990,7 @@ function parseSchemaOption(raw) {
|
|
|
1913
1990
|
var FLOW_HITL_ADD_EXAMPLES = [
|
|
1914
1991
|
{
|
|
1915
1992
|
Description: "Add a bare HITL node with no schema fields",
|
|
1916
|
-
Command: "uip maestro flow hitl
|
|
1993
|
+
Command: "uip maestro flow hitl create workflow.flow",
|
|
1917
1994
|
Output: {
|
|
1918
1995
|
Code: "HitlNodeAdded",
|
|
1919
1996
|
Data: {
|
|
@@ -1926,7 +2003,7 @@ var FLOW_HITL_ADD_EXAMPLES = [
|
|
|
1926
2003
|
},
|
|
1927
2004
|
{
|
|
1928
2005
|
Description: "Add a HITL node with label, priority, and group assignee",
|
|
1929
|
-
Command: 'uip maestro flow hitl
|
|
2006
|
+
Command: 'uip maestro flow hitl create workflow.flow --label "Invoice Review" --priority High --assignee finance-approvers',
|
|
1930
2007
|
Output: {
|
|
1931
2008
|
Code: "HitlNodeAdded",
|
|
1932
2009
|
Data: {
|
|
@@ -1939,7 +2016,7 @@ var FLOW_HITL_ADD_EXAMPLES = [
|
|
|
1939
2016
|
},
|
|
1940
2017
|
{
|
|
1941
2018
|
Description: "Add a HITL node with full schema (inputs, outputs, and outcomes)",
|
|
1942
|
-
Command: `uip maestro flow hitl
|
|
2019
|
+
Command: `uip maestro flow hitl create workflow.flow --label "Approval" --schema '{"inputs":[{"name":"invoiceId","binding":"fetchInvoice1.result.invoiceId"}],"outputs":[{"name":"decision","required":true}],"outcomes":[{"name":"Approve"},{"name":"Reject"}]}'`,
|
|
1943
2020
|
Output: {
|
|
1944
2021
|
Code: "HitlNodeAdded",
|
|
1945
2022
|
Data: {
|
|
@@ -1953,7 +2030,7 @@ var FLOW_HITL_ADD_EXAMPLES = [
|
|
|
1953
2030
|
];
|
|
1954
2031
|
var registerHitlCommand = (program) => {
|
|
1955
2032
|
const hitl = program.command("hitl").description("Add HITL (Human-in-the-Loop) nodes to a Flow file");
|
|
1956
|
-
hitl.command("add").description("Add a Human-in-the-Loop node to a .flow file. Pauses flow execution and waits for a human to complete a task in Action Center.").argument("<file>", "Path to the .flow file").option("--schema <json>", 'Task schema. inputs pre-fill from flow variables (add "binding":"varName"), outputs write back (add "variable":"varName"). ' + `e.g. '{"title":"Invoice Approval","inputs":[{"name":"invoiceId"}],"outputs":[{"name":"decision","variable":"approvalDecision","required":true}],"outcomes":[{"name":"Approve"},{"name":"Reject"}]}'`).option("--priority <level>", "Task priority: Low, Medium, High (default: Low)").option("--position <x,y>", "Canvas position for the node (e.g. 250,300)").option("--label <label>", "Display label for the node").option("--assignee <email-or-group>", "Assignment criteria: user email (e.g. reviewer@company.com) or group name (e.g. finance-approvers)").examples(FLOW_HITL_ADD_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
2033
|
+
hitl.command("create").alias("add").description("Add a Human-in-the-Loop node to a .flow file. Pauses flow execution and waits for a human to complete a task in Action Center.").argument("<file>", "Path to the .flow file").option("--schema <json>", 'Task schema. inputs pre-fill from flow variables (add "binding":"varName"), outputs write back (add "variable":"varName"). ' + `e.g. '{"title":"Invoice Approval","inputs":[{"name":"invoiceId"}],"outputs":[{"name":"decision","variable":"approvalDecision","required":true}],"outcomes":[{"name":"Approve"},{"name":"Reject"}]}'`).option("--priority <level>", "Task priority: Low, Medium, High (default: Low)").option("--position <x,y>", "Canvas position for the node (e.g. 250,300)").option("--label <label>", "Display label for the node").option("--assignee <email-or-group>", "Assignment criteria: user email (e.g. reviewer@company.com) or group name (e.g. finance-approvers)").examples(FLOW_HITL_ADD_EXAMPLES).trackedAction(processContext, async (file, options) => {
|
|
1957
2034
|
if (options.priority !== undefined && !VALID_PRIORITIES.includes(options.priority)) {
|
|
1958
2035
|
OutputFormatter.error({
|
|
1959
2036
|
Result: RESULTS.Failure,
|
|
@@ -1991,7 +2068,7 @@ var registerHitlCommand = (program) => {
|
|
|
1991
2068
|
}
|
|
1992
2069
|
schema = parsed;
|
|
1993
2070
|
}
|
|
1994
|
-
const { addHitlNode } = await import("./hitl-service-
|
|
2071
|
+
const { addHitlNode } = await import("./hitl-service-zsnxqkhb.js");
|
|
1995
2072
|
const [error, result] = await catchError(addHitlNode(file, {
|
|
1996
2073
|
schema,
|
|
1997
2074
|
priority: options.priority,
|
|
@@ -2084,8 +2161,8 @@ Packing or uploading the solution will sync solution resources automatically.`
|
|
|
2084
2161
|
];
|
|
2085
2162
|
var registerInitCommand = (program) => {
|
|
2086
2163
|
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) => {
|
|
2087
|
-
const { flowInitAsync, FlowInitSdkSourceError } = await import("./flow-init-service-
|
|
2088
|
-
const { RuntimeProfile } = await import("./maestro-automate-entry-
|
|
2164
|
+
const { flowInitAsync, FlowInitSdkSourceError } = await import("./flow-init-service-pz2b02z9.js");
|
|
2165
|
+
const { RuntimeProfile } = await import("./maestro-automate-entry-wycktqqt.js");
|
|
2089
2166
|
const [error, result] = await catchError(flowInitAsync(name, {
|
|
2090
2167
|
force: options.force,
|
|
2091
2168
|
skipRegistration: options.skipSolutionRegistration === true,
|
|
@@ -2160,7 +2237,7 @@ var DEFAULT_JOB_LIST_ORDER_BY = "Id desc";
|
|
|
2160
2237
|
var FLOW_JOB_LIST_EXAMPLES = [
|
|
2161
2238
|
{
|
|
2162
2239
|
Description: "List recent Flow jobs in a folder",
|
|
2163
|
-
Command: "uip maestro flow
|
|
2240
|
+
Command: "uip maestro flow jobs list --folder-key c3d4e5f6-0000-0000-0000-000000000001 --limit 2",
|
|
2164
2241
|
Output: {
|
|
2165
2242
|
Code: "FlowJobList",
|
|
2166
2243
|
Data: [
|
|
@@ -2179,7 +2256,7 @@ var FLOW_JOB_LIST_EXAMPLES = [
|
|
|
2179
2256
|
var FLOW_JOB_STATUS_EXAMPLES = [
|
|
2180
2257
|
{
|
|
2181
2258
|
Description: "Get detailed status of a flow job",
|
|
2182
|
-
Command: "uip maestro flow
|
|
2259
|
+
Command: "uip maestro flow jobs status b2c3d4e5-0000-0000-0000-000000000001",
|
|
2183
2260
|
Output: {
|
|
2184
2261
|
Code: "FlowJobStatus",
|
|
2185
2262
|
Data: {
|
|
@@ -2241,9 +2318,9 @@ function formatFlowJob(job) {
|
|
|
2241
2318
|
};
|
|
2242
2319
|
}
|
|
2243
2320
|
function registerJobCommand(program) {
|
|
2244
|
-
const jobCmd = program.command("job").description("Manage Flow jobs");
|
|
2321
|
+
const jobCmd = program.command("jobs").alias("job").description("Manage Flow jobs");
|
|
2245
2322
|
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) => {
|
|
2246
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
2323
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
2247
2324
|
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
2248
2325
|
ensureTokenValidityMinutes: options.loginValidity
|
|
2249
2326
|
}));
|
|
@@ -2316,7 +2393,7 @@ function registerJobCommand(program) {
|
|
|
2316
2393
|
tenantId: loginStatus.tenantId,
|
|
2317
2394
|
baseUrl: loginStatus.baseUrl
|
|
2318
2395
|
};
|
|
2319
|
-
const { listFlowJobs } = await import("./flow-api-
|
|
2396
|
+
const { listFlowJobs } = await import("./flow-api-qj89cv18.js");
|
|
2320
2397
|
const [listError, jobs] = await catchError(listFlowJobs(config, {
|
|
2321
2398
|
state,
|
|
2322
2399
|
processName: normalizedOptions.processName,
|
|
@@ -2347,7 +2424,7 @@ function registerJobCommand(program) {
|
|
|
2347
2424
|
});
|
|
2348
2425
|
});
|
|
2349
2426
|
jobCmd.command("traces").description("Stream traces for a running job").argument("<job-key>", "Job key (GUID from run command)").addOption(createHiddenDeprecatedTenantOption("-t, --tenant <tenant-name>")).option("--poll-interval <ms>", "Polling interval in milliseconds", "2000").option("--traces-service <name>", "Traces service name (default: llmopstenant_)", "llmopstenant_").option("--pretty", "Show traces in human-readable format instead of raw JSON").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).trackedAction(processContext, async (jobKey, options) => {
|
|
2350
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
2427
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
2351
2428
|
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
2352
2429
|
ensureTokenValidityMinutes: options.loginValidity
|
|
2353
2430
|
}));
|
|
@@ -2403,8 +2480,8 @@ function registerJobCommand(program) {
|
|
|
2403
2480
|
const pollSeconds = pollIntervalMs / 1000;
|
|
2404
2481
|
logger.info(`Streaming traces for job: ${jobKey}
|
|
2405
2482
|
Polling every ${pollSeconds}s...`);
|
|
2406
|
-
const { formatTraceLine } = await import("./shared-utils-
|
|
2407
|
-
const { streamJobTraces } = await import("./flow-api-
|
|
2483
|
+
const { formatTraceLine } = await import("./shared-utils-w643sejd.js");
|
|
2484
|
+
const { streamJobTraces } = await import("./flow-api-qj89cv18.js");
|
|
2408
2485
|
const [tracesError, result] = await catchError(streamJobTraces(config, jobKey, {
|
|
2409
2486
|
onTrace: (trace) => {
|
|
2410
2487
|
if (options.pretty) {
|
|
@@ -2442,7 +2519,7 @@ function registerJobCommand(program) {
|
|
|
2442
2519
|
processContext.exit(result.success ? 0 : 1);
|
|
2443
2520
|
});
|
|
2444
2521
|
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) => {
|
|
2445
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
2522
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
2446
2523
|
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
2447
2524
|
ensureTokenValidityMinutes: options.loginValidity
|
|
2448
2525
|
}));
|
|
@@ -2484,7 +2561,7 @@ function registerJobCommand(program) {
|
|
|
2484
2561
|
tenantId: loginStatus.tenantId,
|
|
2485
2562
|
baseUrl: loginStatus.baseUrl
|
|
2486
2563
|
};
|
|
2487
|
-
const { getJobStatusDetailed } = await import("./flow-api-
|
|
2564
|
+
const { getJobStatusDetailed } = await import("./flow-api-qj89cv18.js");
|
|
2488
2565
|
const [statusError, status] = await catchError(getJobStatusDetailed(config, jobKey));
|
|
2489
2566
|
if (statusError) {
|
|
2490
2567
|
OutputFormatter.error({
|
|
@@ -2568,7 +2645,7 @@ var FLOW_MIGRATE_EXAMPLES = [
|
|
|
2568
2645
|
];
|
|
2569
2646
|
var registerMigrateCommand = (program) => {
|
|
2570
2647
|
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) => {
|
|
2571
|
-
const { migrateFlow } = await import("./flow-migrate-service-
|
|
2648
|
+
const { migrateFlow } = await import("./flow-migrate-service-f0cavrsr.js");
|
|
2572
2649
|
const [error, result] = await catchError(migrateFlow(file, {
|
|
2573
2650
|
dryRun: options.dryRun,
|
|
2574
2651
|
includeOptional: options.includeOptional
|
|
@@ -2609,7 +2686,7 @@ var registerMigrateCommand = (program) => {
|
|
|
2609
2686
|
var NODE_ADD_EXAMPLES = [
|
|
2610
2687
|
{
|
|
2611
2688
|
Description: "Add a manual trigger node to a flow",
|
|
2612
|
-
Command: 'uip maestro flow
|
|
2689
|
+
Command: 'uip maestro flow nodes create flow.json core.trigger.manual --label "Start"',
|
|
2613
2690
|
Output: {
|
|
2614
2691
|
Code: "NodeAddSuccess",
|
|
2615
2692
|
Data: {
|
|
@@ -2627,7 +2704,7 @@ var NODE_ADD_EXAMPLES = [
|
|
|
2627
2704
|
var NODE_CONFIGURE_EXAMPLES = [
|
|
2628
2705
|
{
|
|
2629
2706
|
Description: "Configure a connector node with connection details",
|
|
2630
|
-
Command: `uip maestro flow
|
|
2707
|
+
Command: `uip maestro flow nodes configure flow.json node_a1b2c3d4 --detail '{"connectionId":"b2c3d4e5-0000-0000-0000-000000000001","folderKey":"c3d4e5f6-0000-0000-0000-000000000001","method":"POST","endpoint":"/issues"}'`,
|
|
2631
2708
|
Output: {
|
|
2632
2709
|
Code: "NodeConfigureSuccess",
|
|
2633
2710
|
Data: {
|
|
@@ -2639,7 +2716,7 @@ var NODE_CONFIGURE_EXAMPLES = [
|
|
|
2639
2716
|
},
|
|
2640
2717
|
{
|
|
2641
2718
|
Description: "Configure a generic connector activity (e.g. SFDC InsertRecord) — requires objectName",
|
|
2642
|
-
Command: `uip maestro flow
|
|
2719
|
+
Command: `uip maestro flow nodes configure flow.json node_a1b2c3d4 --detail '{"connectionId":"b2c3d4e5-0000-0000-0000-000000000001","folderKey":"c3d4e5f6-0000-0000-0000-000000000001","method":"POST","endpoint":"/Account","objectName":"Account","bodyParameters":{"Name":"Acme Corp"}}'`,
|
|
2643
2720
|
Output: {
|
|
2644
2721
|
Code: "NodeConfigureSuccess",
|
|
2645
2722
|
Data: {
|
|
@@ -2651,7 +2728,7 @@ var NODE_CONFIGURE_EXAMPLES = [
|
|
|
2651
2728
|
},
|
|
2652
2729
|
{
|
|
2653
2730
|
Description: "Configure a param bound to another node's output — must use $vars., not the bare node id",
|
|
2654
|
-
Command: `uip maestro flow
|
|
2731
|
+
Command: `uip maestro flow nodes configure flow.json node_a1b2c3d4 --detail '{"connectionId":"b2c3d4e5-0000-0000-0000-000000000001","folderKey":"c3d4e5f6-0000-0000-0000-000000000001","method":"POST","endpoint":"/Account","bodyParameters":{"recordId":"=js:$vars.createEntityRecord1.output.Id"}}'`,
|
|
2655
2732
|
Output: {
|
|
2656
2733
|
Code: "NodeConfigureSuccess",
|
|
2657
2734
|
Data: {
|
|
@@ -2665,7 +2742,7 @@ var NODE_CONFIGURE_EXAMPLES = [
|
|
|
2665
2742
|
var NODE_LIST_EXAMPLES = [
|
|
2666
2743
|
{
|
|
2667
2744
|
Description: "List all nodes in a flow file",
|
|
2668
|
-
Command: "uip maestro flow
|
|
2745
|
+
Command: "uip maestro flow nodes list flow.json",
|
|
2669
2746
|
Output: {
|
|
2670
2747
|
Code: "NodeListSuccess",
|
|
2671
2748
|
Data: {
|
|
@@ -2681,7 +2758,7 @@ var NODE_LIST_EXAMPLES = [
|
|
|
2681
2758
|
var NODE_DELETE_EXAMPLES = [
|
|
2682
2759
|
{
|
|
2683
2760
|
Description: "Delete a node and its connections from a flow",
|
|
2684
|
-
Command: "uip maestro flow
|
|
2761
|
+
Command: "uip maestro flow nodes delete flow.json node_a1b2c3d4",
|
|
2685
2762
|
Output: {
|
|
2686
2763
|
Code: "NodeDeleteSuccess",
|
|
2687
2764
|
Data: {
|
|
@@ -2701,7 +2778,7 @@ var NODE_DELETE_EXAMPLES = [
|
|
|
2701
2778
|
var NODE_REMOVE_EXAMPLES = [
|
|
2702
2779
|
{
|
|
2703
2780
|
Description: "Remove a node and its connections from a flow",
|
|
2704
|
-
Command: "uip maestro flow
|
|
2781
|
+
Command: "uip maestro flow nodes remove flow.json node_a1b2c3d4",
|
|
2705
2782
|
Output: {
|
|
2706
2783
|
Code: "NodeRemoveSuccess",
|
|
2707
2784
|
Data: {
|
|
@@ -2731,10 +2808,10 @@ function parsePosition2(value) {
|
|
|
2731
2808
|
return { x, y };
|
|
2732
2809
|
}
|
|
2733
2810
|
function getDeleteNodeInstructions(file) {
|
|
2734
|
-
return `Check that "${file}" exists and run 'uip maestro flow
|
|
2811
|
+
return `Check that "${file}" exists and run 'uip maestro flow nodes list ${file}' to find a valid node ID, then retry.`;
|
|
2735
2812
|
}
|
|
2736
2813
|
async function runDeleteNode(file, nodeId, code) {
|
|
2737
|
-
const { deleteNodeFromFlow } = await import("./node-service-
|
|
2814
|
+
const { deleteNodeFromFlow } = await import("./node-service-gsq162p5.js");
|
|
2738
2815
|
const normalizedNodeId = nodeId.trim();
|
|
2739
2816
|
const [error, result] = await catchError(deleteNodeFromFlow(file, normalizedNodeId));
|
|
2740
2817
|
if (error) {
|
|
@@ -2760,10 +2837,10 @@ async function runDeleteNode(file, nodeId, code) {
|
|
|
2760
2837
|
});
|
|
2761
2838
|
}
|
|
2762
2839
|
var registerNodeCommand = (program) => {
|
|
2763
|
-
const node = program.command("node").description("Manage nodes in a Flow file");
|
|
2764
|
-
node.command("add").description(`Add a node to a Flow file.
|
|
2765
|
-
` + "For connector nodes (type uipath.connector), do NOT pass --input here — " + `run '
|
|
2766
|
-
Example: uip maestro flow
|
|
2840
|
+
const node = program.command("nodes").alias("node").description("Manage nodes in a Flow file");
|
|
2841
|
+
node.command("create").alias("add").description(`Add a node to a Flow file.
|
|
2842
|
+
` + "For connector nodes (type uipath.connector), do NOT pass --input here — " + `run 'nodes configure' afterwards to supply connection and endpoint details.
|
|
2843
|
+
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) => {
|
|
2767
2844
|
if (options.metadata === undefined !== (options.scripts === undefined)) {
|
|
2768
2845
|
OutputFormatter.error({
|
|
2769
2846
|
Result: RESULTS.Failure,
|
|
@@ -2820,7 +2897,7 @@ Example: uip maestro flow node add flow.flow uipath.connector.jira.createIssue -
|
|
|
2820
2897
|
NodeTypeNotEnabledError,
|
|
2821
2898
|
NodeTypeNotFoundError,
|
|
2822
2899
|
SourceRequiredError
|
|
2823
|
-
} = await import("./node-service-
|
|
2900
|
+
} = await import("./node-service-gsq162p5.js");
|
|
2824
2901
|
const [error, result] = await catchError(addNodeToFlow(file, nodeType, {
|
|
2825
2902
|
position,
|
|
2826
2903
|
label: options.label,
|
|
@@ -2865,8 +2942,8 @@ Example: uip maestro flow node add flow.flow uipath.connector.jira.createIssue -
|
|
|
2865
2942
|
});
|
|
2866
2943
|
});
|
|
2867
2944
|
node.command("configure").description(`Configure a connector or managed HTTP node with connection and method details.
|
|
2868
|
-
` + `Run this after '
|
|
2869
|
-
` + `Use '
|
|
2945
|
+
` + `Run this after 'nodes create' — populates inputs.detail and creates workflow bindings.
|
|
2946
|
+
` + `Use 'nodes list' to find the node ID.
|
|
2870
2947
|
|
|
2871
2948
|
CONNECTOR ACTIVITIES (type uipath.connector.*, NOT *.trigger.*)
|
|
2872
2949
|
Required: connectionId, folderKey, method, endpoint.
|
|
@@ -2947,7 +3024,7 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
2947
3024
|
processContext.exit(1);
|
|
2948
3025
|
return;
|
|
2949
3026
|
}
|
|
2950
|
-
const { configureConnectorNode, InvalidDetailError } = await import("./connector-service-
|
|
3027
|
+
const { configureConnectorNode, InvalidDetailError } = await import("./connector-service-yz5c6xag.js");
|
|
2951
3028
|
const [error, result] = await catchError(configureConnectorNode(file, nodeId, parsed));
|
|
2952
3029
|
if (error) {
|
|
2953
3030
|
const message = error instanceof InvalidDetailError ? "Invalid --detail" : "Error configuring node";
|
|
@@ -2972,8 +3049,8 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
2972
3049
|
}
|
|
2973
3050
|
});
|
|
2974
3051
|
});
|
|
2975
|
-
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) => {
|
|
2976
|
-
const { listNodesInFlow } = await import("./node-service-
|
|
3052
|
+
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) => {
|
|
3053
|
+
const { listNodesInFlow } = await import("./node-service-gsq162p5.js");
|
|
2977
3054
|
const [error, result] = await catchError(listNodesInFlow(file));
|
|
2978
3055
|
if (error) {
|
|
2979
3056
|
OutputFormatter.error({
|
|
@@ -2984,21 +3061,23 @@ MANAGED HTTP NODES (type core.action.http.v2)
|
|
|
2984
3061
|
processContext.exit(1);
|
|
2985
3062
|
return;
|
|
2986
3063
|
}
|
|
3064
|
+
const window = rowWindow(result.nodes, options);
|
|
2987
3065
|
OutputFormatter.success({
|
|
2988
3066
|
Result: RESULTS.Success,
|
|
2989
3067
|
Code: "NodeListSuccess",
|
|
2990
3068
|
Data: {
|
|
2991
|
-
Nodes:
|
|
2992
|
-
Count:
|
|
2993
|
-
}
|
|
3069
|
+
Nodes: window.rows,
|
|
3070
|
+
Count: window.rows.length
|
|
3071
|
+
},
|
|
3072
|
+
Pagination: window.pagination
|
|
2994
3073
|
});
|
|
2995
3074
|
});
|
|
2996
3075
|
node.command("delete").description(`Delete a node from a Flow file.
|
|
2997
3076
|
Automatically removes connected edges, orphaned bindings, orphaned definitions, and node variables owned by the deleted node.
|
|
2998
|
-
Use '
|
|
2999
|
-
node.command("remove").description(`Remove a node from a Flow file.
|
|
3000
|
-
Alias for '
|
|
3001
|
-
Use '
|
|
3077
|
+
Use 'nodes list' to find the node ID.`).argument("<file>", "Path to the .flow file").argument("<node-id>", "ID of the node to delete").examples(NODE_DELETE_EXAMPLES).trackedAction(processContext, async (file, nodeId) => runDeleteNode(file, nodeId, "NodeDeleteSuccess"));
|
|
3078
|
+
node.command("remove", { hidden: true }).description(`Remove a node from a Flow file.
|
|
3079
|
+
Alias for 'nodes delete'. Automatically removes connected edges, orphaned bindings, orphaned definitions, and node variables owned by the removed node.
|
|
3080
|
+
Use 'nodes list' to find the node ID.`).argument("<file>", "Path to the .flow file").argument("<node-id>", "ID of the node to remove").examples(NODE_REMOVE_EXAMPLES).trackedAction(processContext, async (file, nodeId) => runDeleteNode(file, nodeId, "NodeRemoveSuccess"));
|
|
3002
3081
|
};
|
|
3003
3082
|
|
|
3004
3083
|
// ../flow-tool/src/commands/pack.ts
|
|
@@ -3018,7 +3097,7 @@ var FLOW_PACK_EXAMPLES = [
|
|
|
3018
3097
|
var registerPackCommand = (program) => {
|
|
3019
3098
|
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");
|
|
3020
3099
|
registerPackageMetadataOptions(command).examples(FLOW_PACK_EXAMPLES).trackedAction(processContext, async (projectPath, outputPath, options) => {
|
|
3021
|
-
const { FlowPackService } = await import("./flow-pack-service-
|
|
3100
|
+
const { FlowPackService } = await import("./flow-pack-service-seegwatd.js");
|
|
3022
3101
|
const service = new FlowPackService;
|
|
3023
3102
|
const exitCode = await service.execute(projectPath, {
|
|
3024
3103
|
output: outputPath,
|
|
@@ -3122,24 +3201,25 @@ var FLOW_PROCESS_RUN_EXAMPLES = [
|
|
|
3122
3201
|
function flowProcessRunErrorCode(error) {
|
|
3123
3202
|
return error.message.toLowerCase().includes("release key is required") ? "FlowReleaseKeyRequired" : undefined;
|
|
3124
3203
|
}
|
|
3125
|
-
async function
|
|
3204
|
+
async function resolveRelease(config, processKey) {
|
|
3126
3205
|
const separator = processKey.lastIndexOf(":");
|
|
3127
3206
|
const key = separator === -1 ? processKey : processKey.slice(0, separator);
|
|
3128
3207
|
const version = separator === -1 ? undefined : processKey.slice(separator + 1);
|
|
3129
|
-
const
|
|
3130
|
-
const
|
|
3131
|
-
const
|
|
3132
|
-
const
|
|
3133
|
-
|
|
3134
|
-
|
|
3208
|
+
const byReleaseKey = config.releaseKey !== undefined;
|
|
3209
|
+
const { escapeODataStringLiteral: esc, listFlowProcesses } = await import("./flow-api-qj89cv18.js");
|
|
3210
|
+
const processes = await listFlowProcesses(config, byReleaseKey ? `Key eq '${esc(config.releaseKey)}'` : `ProcessKey eq '${esc(key)}'`);
|
|
3211
|
+
const matches = processes.filter((candidate) => Boolean(candidate.key) && (byReleaseKey ? candidate.key === config.releaseKey : candidate.processKey === key && (version === undefined || candidate.processVersion === version)));
|
|
3212
|
+
const [release, ...extra] = matches;
|
|
3213
|
+
if (release === undefined) {
|
|
3214
|
+
throw new Error(byReleaseKey ? `No Flow release with key '${config.releaseKey}' in folder ${config.folderKey}.` : `No Flow release matches process key '${processKey}' in folder ${config.folderKey}.`);
|
|
3135
3215
|
}
|
|
3136
3216
|
if (extra.length > 0) {
|
|
3137
3217
|
throw new Error(`${matches.length} Flow releases match process key '${processKey}' in folder ${config.folderKey}: ${matches.map((match) => `${match.processVersion} (${match.key})`).join(", ")}.`);
|
|
3138
3218
|
}
|
|
3139
|
-
return
|
|
3219
|
+
return release;
|
|
3140
3220
|
}
|
|
3141
3221
|
async function resolveFolderForList(options) {
|
|
3142
|
-
const { resolveFolder } = await import("./index-
|
|
3222
|
+
const { resolveFolder } = await import("./index-gjg7tpcx.js");
|
|
3143
3223
|
if (options.folderKey && options.folderPath) {
|
|
3144
3224
|
const [pathError, pathFolder] = await catchError(resolveFolder({ folderPath: options.folderPath }, {
|
|
3145
3225
|
tenant: options.tenant,
|
|
@@ -3171,8 +3251,8 @@ async function resolveFolderForList(options) {
|
|
|
3171
3251
|
function registerProcessCommand(program) {
|
|
3172
3252
|
const processCmd = program.command("process").description("Manage Flow processes");
|
|
3173
3253
|
registerSharedProcessCommands(processCmd, { toolLabel: "Flow" });
|
|
3174
|
-
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>")).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) => {
|
|
3175
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
3254
|
+
addRowWindowOptions(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>")).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) => {
|
|
3255
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
3176
3256
|
if (options.folderKey === undefined && options.folderPath === undefined) {
|
|
3177
3257
|
OutputFormatter.error({
|
|
3178
3258
|
Result: RESULTS.ValidationError,
|
|
@@ -3241,8 +3321,11 @@ function registerProcessCommand(program) {
|
|
|
3241
3321
|
tenantName,
|
|
3242
3322
|
baseUrl: loginStatus.baseUrl
|
|
3243
3323
|
};
|
|
3244
|
-
const { listFlowProcesses } = await import("./flow-api-
|
|
3245
|
-
const [listError, processes] = await catchError(listFlowProcesses(config, options.filter
|
|
3324
|
+
const { listFlowProcesses } = await import("./flow-api-qj89cv18.js");
|
|
3325
|
+
const [listError, processes] = await catchError(listFlowProcesses(config, options.filter, {
|
|
3326
|
+
limit: options.limit,
|
|
3327
|
+
offset: options.offset
|
|
3328
|
+
}));
|
|
3246
3329
|
if (listError) {
|
|
3247
3330
|
OutputFormatter.error({
|
|
3248
3331
|
Result: RESULTS.Failure,
|
|
@@ -3263,11 +3346,12 @@ function registerProcessCommand(program) {
|
|
|
3263
3346
|
releaseLatest: p.isLatestVersion ? "Yes" : "No"
|
|
3264
3347
|
}));
|
|
3265
3348
|
OutputFormatter.emitList("FlowProjectList", formattedData, {
|
|
3266
|
-
emptyInstructions: "No Flow projects found. Check folder permissions or try a different folder."
|
|
3349
|
+
emptyInstructions: options.offset === 0 ? "No Flow projects found. Check folder permissions or try a different folder." : undefined,
|
|
3350
|
+
pagination: apiPagination(formattedData.length, options)
|
|
3267
3351
|
});
|
|
3268
3352
|
});
|
|
3269
3353
|
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) => {
|
|
3270
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
3354
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
3271
3355
|
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
3272
3356
|
ensureTokenValidityMinutes: options.loginValidity
|
|
3273
3357
|
}));
|
|
@@ -3318,7 +3402,7 @@ function registerProcessCommand(program) {
|
|
|
3318
3402
|
baseUrl: loginStatus.baseUrl,
|
|
3319
3403
|
feedId
|
|
3320
3404
|
};
|
|
3321
|
-
const { getFlowEntryPoints } = await import("./flow-api-
|
|
3405
|
+
const { getFlowEntryPoints } = await import("./flow-api-qj89cv18.js");
|
|
3322
3406
|
const [entryPointsError, entryPoints] = await catchError(getFlowEntryPoints(config));
|
|
3323
3407
|
if (entryPointsError) {
|
|
3324
3408
|
OutputFormatter.error({
|
|
@@ -3356,13 +3440,14 @@ function registerProcessCommand(program) {
|
|
|
3356
3440
|
Instructions: `Found ${entryPoints.length} entry point(s) for ${processKey}`
|
|
3357
3441
|
});
|
|
3358
3442
|
});
|
|
3359
|
-
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("--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) => {
|
|
3360
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
3443
|
+
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) => {
|
|
3444
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
3361
3445
|
const {
|
|
3362
3446
|
parseFlowInputs,
|
|
3447
|
+
resolveEntryPoint,
|
|
3363
3448
|
startFlowProjectJob,
|
|
3364
3449
|
validateFlowInputs
|
|
3365
|
-
} = await import("./flow-api-
|
|
3450
|
+
} = await import("./flow-api-qj89cv18.js");
|
|
3366
3451
|
const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
|
|
3367
3452
|
ensureTokenValidityMinutes: options.loginValidity
|
|
3368
3453
|
}));
|
|
@@ -3417,7 +3502,7 @@ function registerProcessCommand(program) {
|
|
|
3417
3502
|
}
|
|
3418
3503
|
inputs = parsed;
|
|
3419
3504
|
} else {
|
|
3420
|
-
const { readStdin } = await import("./input-reader-
|
|
3505
|
+
const { readStdin } = await import("./input-reader-3398edew.js");
|
|
3421
3506
|
const [stdinError, stdinData] = await catchError(readStdin());
|
|
3422
3507
|
if (stdinError) {
|
|
3423
3508
|
OutputFormatter.error({
|
|
@@ -3442,6 +3527,68 @@ function registerProcessCommand(program) {
|
|
|
3442
3527
|
inputs = parsed;
|
|
3443
3528
|
}
|
|
3444
3529
|
}
|
|
3530
|
+
const config = {
|
|
3531
|
+
processKey,
|
|
3532
|
+
folderKey,
|
|
3533
|
+
inputs,
|
|
3534
|
+
authToken: loginStatus.accessToken || "",
|
|
3535
|
+
organizationId: loginStatus.organizationId,
|
|
3536
|
+
tenantName,
|
|
3537
|
+
tenantId: loginStatus.tenantId,
|
|
3538
|
+
baseUrl: loginStatus.baseUrl,
|
|
3539
|
+
releaseKey: options.releaseKey,
|
|
3540
|
+
feedId: options.feedId
|
|
3541
|
+
};
|
|
3542
|
+
let mainEntryPointId;
|
|
3543
|
+
const fillRelease = async () => {
|
|
3544
|
+
const [resolveError, release] = await catchError(resolveRelease(config, processKey));
|
|
3545
|
+
if (resolveError) {
|
|
3546
|
+
OutputFormatter.error({
|
|
3547
|
+
Result: RESULTS.Failure,
|
|
3548
|
+
Code: "FlowReleaseKeyRequired",
|
|
3549
|
+
Message: resolveError.message,
|
|
3550
|
+
Instructions: `Run 'uip maestro flow process list --folder-key ${folderKey}' and pass the matching releaseKey as --release-key.`
|
|
3551
|
+
});
|
|
3552
|
+
processContext.exit(1);
|
|
3553
|
+
return false;
|
|
3554
|
+
}
|
|
3555
|
+
if (config.releaseKey === undefined) {
|
|
3556
|
+
logger.info(`Resolved --release-key ${release.key} for process ${processKey}.`);
|
|
3557
|
+
}
|
|
3558
|
+
config.releaseKey = release.key;
|
|
3559
|
+
config.feedId ??= release.feedId;
|
|
3560
|
+
mainEntryPointId = release.entryPointId;
|
|
3561
|
+
return true;
|
|
3562
|
+
};
|
|
3563
|
+
const needsFeed = config.feedId === undefined && (options.entryPoint !== undefined || options.validate);
|
|
3564
|
+
const needsMainEntryPoint = options.validate && options.entryPoint === undefined;
|
|
3565
|
+
if ((needsFeed || needsMainEntryPoint) && !await fillRelease()) {
|
|
3566
|
+
return;
|
|
3567
|
+
}
|
|
3568
|
+
let entryPoint;
|
|
3569
|
+
if (options.entryPoint !== undefined) {
|
|
3570
|
+
const [entryPointError, resolved] = await catchError(resolveEntryPoint(config, options.entryPoint));
|
|
3571
|
+
if (entryPointError instanceof UnknownEntryPointError) {
|
|
3572
|
+
OutputFormatter.error({
|
|
3573
|
+
Result: RESULTS.ValidationError,
|
|
3574
|
+
Message: entryPointError.message,
|
|
3575
|
+
Instructions: entryPointError.instructions
|
|
3576
|
+
});
|
|
3577
|
+
processContext.exit(3);
|
|
3578
|
+
return;
|
|
3579
|
+
}
|
|
3580
|
+
if (entryPointError) {
|
|
3581
|
+
OutputFormatter.error({
|
|
3582
|
+
Result: RESULTS.Failure,
|
|
3583
|
+
Message: entryPointError.message,
|
|
3584
|
+
Instructions: instructionsFor("backend", entryPointError)
|
|
3585
|
+
});
|
|
3586
|
+
processContext.exit(1);
|
|
3587
|
+
return;
|
|
3588
|
+
}
|
|
3589
|
+
entryPoint = resolved;
|
|
3590
|
+
config.entryPointPath = resolved.Path;
|
|
3591
|
+
}
|
|
3445
3592
|
const attachmentSpecs = options.attachment ?? [];
|
|
3446
3593
|
if (attachmentSpecs.length > 0) {
|
|
3447
3594
|
const [parseError, specs] = catchError(() => attachmentSpecs.map(parseAttachmentSpec));
|
|
@@ -3454,7 +3601,7 @@ function registerProcessCommand(program) {
|
|
|
3454
3601
|
processContext.exit(1);
|
|
3455
3602
|
return;
|
|
3456
3603
|
}
|
|
3457
|
-
const { uploadJobAttachment } = await import("./index-
|
|
3604
|
+
const { uploadJobAttachment } = await import("./index-gjg7tpcx.js");
|
|
3458
3605
|
const [uploadError, resolved] = await catchError(resolveAttachmentInputs(specs, (bytes, fileName) => uploadJobAttachment(bytes, fileName, {
|
|
3459
3606
|
tenant: tenantName
|
|
3460
3607
|
})));
|
|
@@ -3475,18 +3622,6 @@ function registerProcessCommand(program) {
|
|
|
3475
3622
|
logger.info(`Uploaded '${path}' as attachment ${reference.ID} (variable '${name}').`);
|
|
3476
3623
|
}
|
|
3477
3624
|
}
|
|
3478
|
-
const config = {
|
|
3479
|
-
processKey,
|
|
3480
|
-
folderKey,
|
|
3481
|
-
inputs,
|
|
3482
|
-
authToken: loginStatus.accessToken || "",
|
|
3483
|
-
organizationId: loginStatus.organizationId,
|
|
3484
|
-
tenantName,
|
|
3485
|
-
tenantId: loginStatus.tenantId,
|
|
3486
|
-
baseUrl: loginStatus.baseUrl,
|
|
3487
|
-
releaseKey: options.releaseKey,
|
|
3488
|
-
feedId: options.feedId
|
|
3489
|
-
};
|
|
3490
3625
|
if (options.robotIds) {
|
|
3491
3626
|
config.robotIds = options.robotIds.split(",").map((id) => parseInt(id.trim(), 10));
|
|
3492
3627
|
if (config.robotIds.some((id) => Number.isNaN(id))) {
|
|
@@ -3500,7 +3635,7 @@ function registerProcessCommand(program) {
|
|
|
3500
3635
|
}
|
|
3501
3636
|
}
|
|
3502
3637
|
if (options.validate) {
|
|
3503
|
-
const [valError, validation] = await catchError(validateFlowInputs(config, inputs));
|
|
3638
|
+
const [valError, validation] = await catchError(validateFlowInputs(config, inputs, entryPoint, mainEntryPointId));
|
|
3504
3639
|
if (valError) {
|
|
3505
3640
|
const code = flowProcessRunErrorCode(valError);
|
|
3506
3641
|
OutputFormatter.error({
|
|
@@ -3553,20 +3688,8 @@ ${errorList}`,
|
|
|
3553
3688
|
timeoutMs = timeoutS * 1000;
|
|
3554
3689
|
intervalMs = intervalS * 1000;
|
|
3555
3690
|
}
|
|
3556
|
-
if (config.releaseKey === undefined) {
|
|
3557
|
-
|
|
3558
|
-
if (resolveError) {
|
|
3559
|
-
OutputFormatter.error({
|
|
3560
|
-
Result: RESULTS.Failure,
|
|
3561
|
-
Code: "FlowReleaseKeyRequired",
|
|
3562
|
-
Message: resolveError.message,
|
|
3563
|
-
Instructions: `Run 'uip maestro flow process list --folder-key ${folderKey}' and pass the matching releaseKey as --release-key.`
|
|
3564
|
-
});
|
|
3565
|
-
processContext.exit(1);
|
|
3566
|
-
return;
|
|
3567
|
-
}
|
|
3568
|
-
config.releaseKey = resolvedReleaseKey;
|
|
3569
|
-
logger.info(`Resolved --release-key ${resolvedReleaseKey} for process ${processKey}.`);
|
|
3691
|
+
if (config.releaseKey === undefined && !await fillRelease()) {
|
|
3692
|
+
return;
|
|
3570
3693
|
}
|
|
3571
3694
|
const [jobError, job] = await catchError(startFlowProjectJob(config));
|
|
3572
3695
|
if (jobError) {
|
|
@@ -3589,7 +3712,7 @@ ${errorList}`,
|
|
|
3589
3712
|
traceId: job.traceId,
|
|
3590
3713
|
folderKey
|
|
3591
3714
|
},
|
|
3592
|
-
Instructions: `Watch traces: uip maestro flow
|
|
3715
|
+
Instructions: `Watch traces: uip maestro flow jobs traces ${job.key} --folder-key ${folderKey}`
|
|
3593
3716
|
});
|
|
3594
3717
|
if (!options.wait) {
|
|
3595
3718
|
processContext.exit(0);
|
|
@@ -3604,7 +3727,7 @@ ${errorList}`,
|
|
|
3604
3727
|
processContext.exit(1);
|
|
3605
3728
|
return;
|
|
3606
3729
|
}
|
|
3607
|
-
const { handleFlowJobWait } = await import("./wait-for-flow-job-
|
|
3730
|
+
const { handleFlowJobWait } = await import("./wait-for-flow-job-5rjxh65w.js");
|
|
3608
3731
|
await handleFlowJobWait(job.key, {
|
|
3609
3732
|
config,
|
|
3610
3733
|
timeoutMs,
|
|
@@ -3646,13 +3769,13 @@ function getDefaultOutputPath(fs = getFileSystem()) {
|
|
|
3646
3769
|
}
|
|
3647
3770
|
var registerPublishCommand = (program) => {
|
|
3648
3771
|
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) => {
|
|
3649
|
-
const { getLoginStatusAsync } = await import("./index-
|
|
3772
|
+
const { getLoginStatusAsync } = await import("./index-xq6ajhgq.js");
|
|
3650
3773
|
const {
|
|
3651
3774
|
createApiClient,
|
|
3652
3775
|
PackageFeedsApi,
|
|
3653
3776
|
ProcessesApi,
|
|
3654
3777
|
resolveFolder
|
|
3655
|
-
} = await import("./index-
|
|
3778
|
+
} = await import("./index-gjg7tpcx.js");
|
|
3656
3779
|
const fs = getFileSystem();
|
|
3657
3780
|
const shouldCleanupOutput = outputPath === undefined;
|
|
3658
3781
|
const packageOutputPath = outputPath ?? getDefaultOutputPath(fs);
|
|
@@ -3738,7 +3861,7 @@ var registerPublishCommand = (program) => {
|
|
|
3738
3861
|
}
|
|
3739
3862
|
resolvedFeedId = folderFeedId;
|
|
3740
3863
|
}
|
|
3741
|
-
const { FlowPackService } = await import("./flow-pack-service-
|
|
3864
|
+
const { FlowPackService } = await import("./flow-pack-service-seegwatd.js");
|
|
3742
3865
|
const service = new FlowPackService;
|
|
3743
3866
|
const [packError, packResult] = await catchError(service.executeAsync(projectPath, {
|
|
3744
3867
|
output: packageOutputPath,
|
|
@@ -3839,7 +3962,7 @@ var registerRegistryCommand2 = (program) => {
|
|
|
3839
3962
|
// ../flow-tool/src/commands/tidy.ts
|
|
3840
3963
|
var registerTidyCommand = (program) => {
|
|
3841
3964
|
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) => {
|
|
3842
|
-
const { tidyFlow } = await import("./tidy-service-
|
|
3965
|
+
const { tidyFlow } = await import("./tidy-service-mepxtxqm.js");
|
|
3843
3966
|
const [error, result] = await catchError(tidyFlow(file));
|
|
3844
3967
|
if (error) {
|
|
3845
3968
|
OutputFormatter.error({
|
|
@@ -3924,6 +4047,17 @@ var FLOW_VALIDATE_EXAMPLES = [
|
|
|
3924
4047
|
}
|
|
3925
4048
|
}
|
|
3926
4049
|
},
|
|
4050
|
+
{
|
|
4051
|
+
Description: "Validate against freshly fetched node manifests, bypassing the 30-minute manifest cache",
|
|
4052
|
+
Command: "uip maestro flow validate flow.json --force",
|
|
4053
|
+
Output: {
|
|
4054
|
+
Code: "FlowValidate",
|
|
4055
|
+
Data: {
|
|
4056
|
+
File: "flow.json",
|
|
4057
|
+
Status: "Valid"
|
|
4058
|
+
}
|
|
4059
|
+
}
|
|
4060
|
+
},
|
|
3927
4061
|
{
|
|
3928
4062
|
Description: "Fail validation on expression and script type errors (they are warnings by default)",
|
|
3929
4063
|
Command: "uip maestro flow validate flow.json --strict-expressions",
|
|
@@ -3937,11 +4071,11 @@ var FLOW_VALIDATE_EXAMPLES = [
|
|
|
3937
4071
|
}
|
|
3938
4072
|
];
|
|
3939
4073
|
var registerValidateCommand = (program) => {
|
|
3940
|
-
program.command("validate").description("Validate a .flow file (or a project directory containing one) against the Flow schema").argument("<
|
|
4074
|
+
program.command("validate").description("Validate a .flow file (or a project directory containing one) against the Flow schema").argument("<flow-file>", "Path to the .flow file (or a project directory containing one) to validate").option("--governance", "Validate agent nodes against organization governance policies (requires login)").option("--strict-bindings", "Fail validation when a Managed HTTP node (core.action.http.v2) carries a connector-shaped label but no Integration Service binding. Default: warn only.").option("--strict-expressions", "Fail validation when an expression or script body has a type error. The check always runs, using the shared Flow expression checker (the same engine the canvas runs); its findings are warnings by default. Default: warn only.").option("--force", "Refetch the current node manifests used by the stale-handle check instead of reading the cached copy (the cache `registry pull` writes, kept 30 minutes per tenant). The refetched manifests replace the cache, as `registry pull --force` does.").examples(FLOW_VALIDATE_EXAMPLES).trackedAction(processContext, async (flowFile, options) => {
|
|
3941
4075
|
let governanceEnforcements;
|
|
3942
4076
|
let availableModelNames;
|
|
3943
4077
|
if (options.governance) {
|
|
3944
|
-
const { fetchGovernanceData } = await import("./governance-fetcher-
|
|
4078
|
+
const { fetchGovernanceData } = await import("./governance-fetcher-w11mhrn6.js");
|
|
3945
4079
|
const [error, data] = await catchError(fetchGovernanceData());
|
|
3946
4080
|
if (error) {
|
|
3947
4081
|
OutputFormatter.error({
|
|
@@ -3955,11 +4089,12 @@ var registerValidateCommand = (program) => {
|
|
|
3955
4089
|
governanceEnforcements = data.enforcements;
|
|
3956
4090
|
availableModelNames = data.modelNames;
|
|
3957
4091
|
}
|
|
3958
|
-
const { FlowValidateService } = await import("./flow-validate-service-
|
|
4092
|
+
const { FlowValidateService } = await import("./flow-validate-service-hgswxecb.js");
|
|
3959
4093
|
const service = new FlowValidateService({
|
|
3960
4094
|
governanceEnforcements,
|
|
3961
4095
|
availableModelNames,
|
|
3962
4096
|
validateCurrentManifests: true,
|
|
4097
|
+
manifestCache: options.force !== true,
|
|
3963
4098
|
strictBindings: options.strictBindings === true,
|
|
3964
4099
|
strictExpressions: options.strictExpressions ?? STRICT_EXPRESSIONS_DEFAULT
|
|
3965
4100
|
});
|
|
@@ -3974,7 +4109,7 @@ var registerValidateCommand = (program) => {
|
|
|
3974
4109
|
var VARIABLE_ADD_EXAMPLES = [
|
|
3975
4110
|
{
|
|
3976
4111
|
Description: "Add a string input variable to a flow (auto-bound to the flow's trigger node, making it an entry-point input)",
|
|
3977
|
-
Command: "uip maestro flow
|
|
4112
|
+
Command: "uip maestro flow variables create flow.json myInput --direction in --type string",
|
|
3978
4113
|
Output: {
|
|
3979
4114
|
Code: "VariableAddSuccess",
|
|
3980
4115
|
Data: {
|
|
@@ -3989,7 +4124,7 @@ var VARIABLE_ADD_EXAMPLES = [
|
|
|
3989
4124
|
},
|
|
3990
4125
|
{
|
|
3991
4126
|
Description: "Bind an input to a specific trigger when the flow has several entry points",
|
|
3992
|
-
Command: "uip maestro flow
|
|
4127
|
+
Command: "uip maestro flow variables create flow.json myInput --direction in --type string --trigger-node-id timerTrigger1",
|
|
3993
4128
|
Output: {
|
|
3994
4129
|
Code: "VariableAddSuccess",
|
|
3995
4130
|
Data: {
|
|
@@ -4006,7 +4141,7 @@ var VARIABLE_ADD_EXAMPLES = [
|
|
|
4006
4141
|
var VARIABLE_DELETE_EXAMPLES = [
|
|
4007
4142
|
{
|
|
4008
4143
|
Description: "Remove a variable from a flow",
|
|
4009
|
-
Command: "uip maestro flow
|
|
4144
|
+
Command: "uip maestro flow variables delete flow.json myInput",
|
|
4010
4145
|
Output: {
|
|
4011
4146
|
Code: "VariableRemoveSuccess",
|
|
4012
4147
|
Data: {
|
|
@@ -4022,7 +4157,7 @@ var VARIABLE_DELETE_EXAMPLES = [
|
|
|
4022
4157
|
var VARIABLE_LIST_EXAMPLES = [
|
|
4023
4158
|
{
|
|
4024
4159
|
Description: "List all variables in a flow file",
|
|
4025
|
-
Command: "uip maestro flow
|
|
4160
|
+
Command: "uip maestro flow variables list flow.json",
|
|
4026
4161
|
Output: {
|
|
4027
4162
|
Code: "VariableListSuccess",
|
|
4028
4163
|
Data: {
|
|
@@ -4083,9 +4218,9 @@ function parseDefaultValue(value, type) {
|
|
|
4083
4218
|
}
|
|
4084
4219
|
}
|
|
4085
4220
|
var registerVariableCommand = (program) => {
|
|
4086
|
-
const variable = program.command("variable").description("Manage variables in a Flow file");
|
|
4087
|
-
variable.command("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) => {
|
|
4088
|
-
const { validateIdentifier } = await import("./index-
|
|
4221
|
+
const variable = program.command("variables").alias("variable").description("Manage variables in a Flow file");
|
|
4222
|
+
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) => {
|
|
4223
|
+
const { validateIdentifier } = await import("./index-91v7sjfs.js");
|
|
4089
4224
|
const identifierError = validateIdentifier(variableId, []);
|
|
4090
4225
|
if (identifierError) {
|
|
4091
4226
|
OutputFormatter.error({
|
|
@@ -4151,7 +4286,7 @@ var registerVariableCommand = (program) => {
|
|
|
4151
4286
|
}
|
|
4152
4287
|
schema = parsed;
|
|
4153
4288
|
}
|
|
4154
|
-
const { addVariableToFlow } = await import("./variable-service-
|
|
4289
|
+
const { addVariableToFlow } = await import("./variable-service-8v0b9d66.js");
|
|
4155
4290
|
const [error, variable2] = await catchError(addVariableToFlow(file, {
|
|
4156
4291
|
id: variableId,
|
|
4157
4292
|
direction: options.direction,
|
|
@@ -4179,8 +4314,8 @@ var registerVariableCommand = (program) => {
|
|
|
4179
4314
|
}
|
|
4180
4315
|
});
|
|
4181
4316
|
});
|
|
4182
|
-
variable.command("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) => {
|
|
4183
|
-
const { validateIdentifier } = await import("./index-
|
|
4317
|
+
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) => {
|
|
4318
|
+
const { validateIdentifier } = await import("./index-91v7sjfs.js");
|
|
4184
4319
|
const identifierError = validateIdentifier(variableId, []);
|
|
4185
4320
|
if (identifierError) {
|
|
4186
4321
|
OutputFormatter.error({
|
|
@@ -4191,7 +4326,7 @@ var registerVariableCommand = (program) => {
|
|
|
4191
4326
|
processContext.exit(1);
|
|
4192
4327
|
return;
|
|
4193
4328
|
}
|
|
4194
|
-
const { deleteVariableFromFlow } = await import("./variable-service-
|
|
4329
|
+
const { deleteVariableFromFlow } = await import("./variable-service-8v0b9d66.js");
|
|
4195
4330
|
const [error, deletedVariable] = await catchError(deleteVariableFromFlow(file, variableId));
|
|
4196
4331
|
if (error) {
|
|
4197
4332
|
OutputFormatter.error({
|
|
@@ -4210,8 +4345,8 @@ var registerVariableCommand = (program) => {
|
|
|
4210
4345
|
}
|
|
4211
4346
|
});
|
|
4212
4347
|
});
|
|
4213
|
-
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) => {
|
|
4214
|
-
const { listVariablesInFlow } = await import("./variable-service-
|
|
4348
|
+
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) => {
|
|
4349
|
+
const { listVariablesInFlow } = await import("./variable-service-8v0b9d66.js");
|
|
4215
4350
|
const [error, result] = await catchError(listVariablesInFlow(file));
|
|
4216
4351
|
if (error) {
|
|
4217
4352
|
OutputFormatter.error({
|
|
@@ -4222,13 +4357,15 @@ var registerVariableCommand = (program) => {
|
|
|
4222
4357
|
processContext.exit(1);
|
|
4223
4358
|
return;
|
|
4224
4359
|
}
|
|
4360
|
+
const window = rowWindow(result.variables, options);
|
|
4225
4361
|
OutputFormatter.success({
|
|
4226
4362
|
Result: RESULTS.Success,
|
|
4227
4363
|
Code: "VariableListSuccess",
|
|
4228
4364
|
Data: {
|
|
4229
|
-
Variables:
|
|
4230
|
-
Count:
|
|
4231
|
-
}
|
|
4365
|
+
Variables: window.rows,
|
|
4366
|
+
Count: window.rows.length
|
|
4367
|
+
},
|
|
4368
|
+
Pagination: window.pagination
|
|
4232
4369
|
});
|
|
4233
4370
|
});
|
|
4234
4371
|
};
|
|
@@ -4268,7 +4405,7 @@ var metadata = {
|
|
|
4268
4405
|
};
|
|
4269
4406
|
var registerCommands = async (program) => {
|
|
4270
4407
|
setAgentProjectMetadataReader(agentProjectMetadataReader);
|
|
4271
|
-
const { registerFlowAuthoringCommands } = await import("./authoring-
|
|
4408
|
+
const { registerFlowAuthoringCommands } = await import("./authoring-rw21p50g.js");
|
|
4272
4409
|
registerFlowAuthoringCommands(program);
|
|
4273
4410
|
registerInitCommand(program);
|
|
4274
4411
|
registerPackCommand(program);
|
|
@@ -4296,4 +4433,4 @@ export {
|
|
|
4296
4433
|
registerCommands
|
|
4297
4434
|
};
|
|
4298
4435
|
|
|
4299
|
-
//# debugId=
|
|
4436
|
+
//# debugId=E1F422919EE5663C64756E2164756E21
|