@uipath/flow-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 +9 -9
- package/dist/THIRD-PARTY-NOTICES.md +39 -15
- package/dist/{authoring-bppe07p0.js → authoring-e1k40hyw.js} +6 -5
- package/dist/{binding-service-xwgsn35p.js → binding-service-pdtxvvt8.js} +38 -30
- package/dist/{connector-service-r0w8ztas.js → connector-service-pm9hfmsv.js} +224 -47
- 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-xsm3ycqx.js +30 -0
- package/dist/{debug-http-client-p4kf38yt.js → debug-http-client-yqjzsnhw.js} +5 -4
- package/dist/{debug-service-893erynq.js → debug-service-nra3n02y.js} +6 -5
- package/dist/{edge-service-yzsfw4bs.js → edge-service-mddnjwb0.js} +16 -12
- 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/{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-kjvpsxhw.js → flow-api-sat010z1.js} +16 -10
- package/dist/{flow-debug-service-dd10rg08.js → flow-debug-service-dw0d9cv7.js} +96 -58
- package/dist/{flow-eval-node-target-2ekp77s6.js → flow-eval-node-target-wttmdm4v.js} +17 -17
- package/dist/flow-eval-run-api-xdygjzfv.js +13 -0
- package/dist/{flow-eval-run-service-twzbmeq6.js → flow-eval-run-service-g09w4m9m.js} +73 -80
- package/dist/{flow-eval-service-ckwx7d5z.js → flow-eval-service-jfkz0tae.js} +167 -415
- package/dist/{flow-init-sdk-source-z9qx1zkt.js → flow-init-sdk-source-xvdvkq7d.js} +6 -5
- package/dist/{flow-init-service-m6swzk43.js → flow-init-service-5v6zwhas.js} +19 -15
- package/dist/{flow-io-tnrc53z6.js → flow-io-64tmj8n7.js} +15 -11
- package/dist/{flow-migrate-service-625gppk0.js → flow-migrate-service-bjxs35ac.js} +16 -12
- package/dist/{flow-pack-service-qdpvrmme.js → flow-pack-service-s75qhtn5.js} +47 -38
- package/dist/flow-validate-service-rbvgesrb.js +70 -0
- 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-zq8zmfjb.js → governance-fetcher-tw83p74c.js} +7 -6
- package/dist/{hitl-service-r19zvqsz.js → hitl-service-hgg9tr5j.js} +15 -11
- package/dist/{index-b8n7hv68.js → index-09mfatmh.js} +6 -5
- package/dist/{index-aaq9rwfv.js → index-1b2je9n2.js} +1088 -233
- package/dist/index-d090f35d.js +66 -0
- package/dist/{index-yj4xk2aw.js → index-dgdnbb2g.js} +7 -5
- package/dist/{index-ng2f77my.js → index-fyc0k5dd.js} +985 -617
- package/dist/{index-vrhcbxnk.js → index-nsn889vf.js} +6 -5
- package/dist/{index-2s8rmmw6.js → index-sqhbn7ew.js} +4 -4
- package/dist/{index-tnz5ks4t.js → index-wycgq0ff.js} +65 -2230
- package/dist/index.js +17 -14
- package/dist/init.js +19 -15
- package/dist/inline-entity-resolver-2qqf1635.js +45 -0
- package/dist/input-reader-n7kzdrev.js +12 -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-q6fcyq2e.js → known-types-3025scz1.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/{maestro-automate-entry-qak46eg0.js → maestro-automate-entry-6f9act3w.js} +2 -2
- package/dist/{node-ccwecksf.js → node-1wzjq3jb.js} +29 -15
- package/dist/{node-service-w8gsy23p.js → node-service-0hxtt2x6.js} +41 -30
- package/dist/{node-strategy-fdnkvq4a.js → node-strategy-1dmmhvf3.js} +1 -1
- package/dist/node-sync-service-n7r4ma3a.js +61 -0
- package/dist/{packager-tool-s4etvs59.js → packager-tool-0j8v36qh.js} +1 -1
- package/dist/packager-tool-10vc8pq4.js +2 -0
- package/dist/{packager-tool-pw6j69m5.js → packager-tool-445qgxdk.js} +1802 -378
- package/dist/packager-tool-4kr6g0zw.js +16 -0
- package/dist/packager-tool-4x7tzvv0.js +1176 -0
- package/dist/{packager-tool-86rhxbf1.js → packager-tool-5regytfc.js} +6 -4
- package/dist/{packager-tool-d88rqwk8.js → packager-tool-6z1hsm2h.js} +13 -5
- package/dist/{packager-tool-jaa5gcbv.js → packager-tool-71gqkgg6.js} +6 -6
- package/dist/packager-tool-7hw344bt.js +107 -0
- package/dist/{packager-tool-m8xtf5ej.js → packager-tool-8g5931fz.js} +7 -4
- package/dist/{packager-tool-h9tzz0qd.js → packager-tool-961vsbsc.js} +15 -10
- package/dist/{packager-tool-zzc2yp2h.js → packager-tool-99gban46.js} +172 -71
- package/dist/packager-tool-9era57c0.js +28 -0
- package/dist/packager-tool-9jxzgsxc.js +14 -0
- package/dist/{packager-tool-zxp4hya4.js → packager-tool-a5afh1dc.js} +34 -13
- package/dist/{packager-tool-02f63a08.js → packager-tool-apawc11t.js} +88 -762
- package/dist/{packager-tool-tf3d2y8z.js → packager-tool-aw9v0raw.js} +2 -2
- package/dist/{packager-tool-6y0f9qg5.js → packager-tool-b3k0mkke.js} +463 -327
- package/dist/packager-tool-cqtsj6yh.js +2 -0
- package/dist/{packager-tool-5nqhxb9e.js → packager-tool-dwd6cc01.js} +16110 -13031
- package/dist/{packager-tool-t605qewm.js → packager-tool-dxgrhfq5.js} +2 -2
- package/dist/{packager-tool-awkq26v0.js → packager-tool-e7kvq8hf.js} +5 -3
- package/dist/packager-tool-fc1xdt3y.js +35 -0
- package/dist/{packager-tool-3dc9gz35.js → packager-tool-frjt46rb.js} +1 -1
- package/dist/{packager-tool-cn7e7cx2.js → packager-tool-gcap41av.js} +668 -57
- package/dist/packager-tool-hj5x3p8g.js +23 -0
- package/dist/{packager-tool-k91rd9nx.js → packager-tool-hvgn6t66.js} +6 -24
- package/dist/{packager-tool-w5a1hhyj.js → packager-tool-hxyjn885.js} +13 -2
- package/dist/{packager-tool-hhy1gr2k.js → packager-tool-jgfzfqjm.js} +1 -1
- package/dist/{packager-tool-6h69pd2a.js → packager-tool-kn86394c.js} +127 -61
- package/dist/packager-tool-mgcz986r.js +143 -0
- package/dist/{packager-tool-3h2ktz6q.js → packager-tool-myhbp761.js} +11 -1
- package/dist/{packager-tool-hp5vnk8p.js → packager-tool-ndev7vbj.js} +13 -13
- package/dist/{packager-tool-dynm8fz9.js → packager-tool-nj4vcnq9.js} +20 -8
- package/dist/{packager-tool-ayc9nhpa.js → packager-tool-nk16zaz3.js} +519 -437
- package/dist/{packager-tool-vzbttaje.js → packager-tool-nts5rrch.js} +5 -6
- package/dist/{packager-tool-vbfz8k7w.js → packager-tool-p8gab24q.js} +52 -32
- package/dist/{packager-tool-stq8800d.js → packager-tool-pacrqxv2.js} +17 -4
- package/dist/{packager-tool-7q6z6npd.js → packager-tool-pcvhcn2k.js} +93 -11
- package/dist/packager-tool-phw8ydjx.js +331 -0
- package/dist/packager-tool-qcqb9hf8.js +26 -0
- package/dist/{packager-tool-n89vrpex.js → packager-tool-skcjythd.js} +10907 -25608
- package/dist/{packager-tool-1ca047de.js → packager-tool-sqpesv2e.js} +12 -56
- package/dist/packager-tool-t7ahhaer.js +877 -0
- package/dist/{packager-tool-peawy22c.js → packager-tool-tqjfdpda.js} +53 -8
- package/dist/{packager-tool-y8egb0fa.js → packager-tool-wds3myef.js} +2573 -535
- package/dist/{packager-tool-5tjzg56t.js → packager-tool-wh660fny.js} +1 -1
- package/dist/{packager-tool-tyg399d6.js → packager-tool-wze74wyk.js} +74 -47
- package/dist/packager-tool-xj0agqpk.js +11 -0
- package/dist/packager-tool-xk78j7dz.js +1256 -0
- package/dist/{packager-tool-py93409h.js → packager-tool-ymma2s85.js} +2 -2
- package/dist/packager-tool-z0yxfhdj.js +40 -0
- package/dist/packager-tool.js +13 -10
- 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/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/services/connector-request-buckets.d.ts +1 -0
- package/dist/services/flow-eval-file-store.d.ts +1 -11
- package/dist/services/flow-eval-utils.d.ts +1 -32
- package/dist/services/flow-validate-service.d.ts +51 -0
- package/dist/services/inline-entity-resolver.d.ts +22 -0
- package/dist/services/node-service.d.ts +21 -1
- package/dist/services/packaging-utils.d.ts +15 -2
- package/dist/{shared-utils-pnbvyyb2.js → shared-utils-tqnx96mg.js} +4 -3
- package/dist/solution-auth-8qz5pw7z.js +14 -0
- package/dist/solution-discovery-vqravtkh.js +44 -0
- package/dist/{tidy-service-4fd4mjpb.js → tidy-service-fdctmeww.js} +143 -39
- package/dist/tool.js +17 -14
- 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/utils/flow-io.d.ts +2 -1
- package/dist/validation.js +39 -33
- package/dist/{variable-service-xgyaf3xy.js → variable-service-9xfk31pm.js} +16 -12
- package/dist/{wait-for-flow-job-d8m6mqb4.js → wait-for-flow-job-b0vj8828.js} +15 -12
- 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/debug-conversation-trigger-8fgas95p.js +0 -44
- package/dist/flow-eval-run-api-byx3cacw.js +0 -13
- package/dist/flow-validate-service-ss9nt15j.js +0 -64
- package/dist/input-reader-vhar4g0k.js +0 -11
- package/dist/node-sync-service-42dpmp60.js +0 -40
- package/dist/packager-tool-a5xfcqqr.js +0 -15
- package/dist/packager-tool-epkg5s7f.js +0 -454
- package/dist/packager-tool-pz5nqg0s.js +0 -64
- package/dist/packager-tool-t3ysatjd.js +0 -521
- package/dist/packager-tool-vd6jt4n8.js +0 -208
- package/dist/packager-tool-wv3qf487.js +0 -265
- package/dist/services/flow-debug-service.d.ts +0 -320
- package/dist/services/flow-eval-schema/deterministic-evaluators.d.ts +0 -110
- package/dist/services/flow-eval-schema/evaluator-fields.d.ts +0 -66
- package/dist/services/flow-eval-schema/helpers.d.ts +0 -9
- package/dist/services/flow-eval-schema/index.d.ts +0 -4
- package/dist/services/flow-eval-schema/llm-judge-evaluators.d.ts +0 -174
- package/dist/services/flow-eval-schema/prompts.d.ts +0 -2
- package/dist/services/flow-eval-schema/registry.d.ts +0 -375
- package/dist/services/flow-eval-schema/tool-call-evaluators.d.ts +0 -93
- package/dist/services/flow-eval-schema/types.d.ts +0 -95
- package/dist/services/flow-eval-types.d.ts +0 -6
- package/dist/utils/write-resolved-flow.d.ts +0 -7
- /package/dist/{headless-45dypanh.js → headless-fw8pwyzm.js} +0 -0
- /package/dist/{localization-xecwjpe2.js → localization-d6gjmrsw.js} +0 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkForwardMigration
|
|
3
|
+
} from "./packager-tool-0j8v36qh.js";
|
|
1
4
|
import {
|
|
2
5
|
connectorNodeValidator,
|
|
3
6
|
crossNodeBindingValidator,
|
|
@@ -5,10 +8,7 @@ import {
|
|
|
5
8
|
isConnectorWaitForEventType,
|
|
6
9
|
isEventDrivenConnectorType,
|
|
7
10
|
readEssentialConfiguration
|
|
8
|
-
} from "./packager-tool-
|
|
9
|
-
import {
|
|
10
|
-
checkForwardMigration
|
|
11
|
-
} from "./packager-tool-s4etvs59.js";
|
|
11
|
+
} from "./packager-tool-71gqkgg6.js";
|
|
12
12
|
import {
|
|
13
13
|
ERROR_SOURCE_PORT,
|
|
14
14
|
deriveHandleCustomizationSourceOverride,
|
|
@@ -25,49 +25,55 @@ import {
|
|
|
25
25
|
import {
|
|
26
26
|
UI_ONLY_NODE_TYPES
|
|
27
27
|
} from "./packager-tool-e5hj89zm.js";
|
|
28
|
-
import {
|
|
29
|
-
collectNodeBindingResourceKeys,
|
|
30
|
-
isProcessNode,
|
|
31
|
-
resolveProcessTarget
|
|
32
|
-
} from "./packager-tool-epkg5s7f.js";
|
|
33
28
|
import {
|
|
34
29
|
INLINE_ACTIVITY_SOURCE,
|
|
35
30
|
INLINE_ACTIVITY_TYPE_PREFIX,
|
|
31
|
+
collectNodeBindingResourceKeys,
|
|
36
32
|
collectScriptRefs,
|
|
37
33
|
getInlineActivityConfiguration,
|
|
34
|
+
isProcessNode,
|
|
38
35
|
loadRegistry,
|
|
39
|
-
parse
|
|
40
|
-
|
|
36
|
+
parse,
|
|
37
|
+
resolveProcessTarget
|
|
38
|
+
} from "./packager-tool-wds3myef.js";
|
|
41
39
|
import {
|
|
42
|
-
|
|
43
|
-
} from "./packager-tool-
|
|
40
|
+
loadCurrentTenantNodes
|
|
41
|
+
} from "./packager-tool-nk16zaz3.js";
|
|
42
|
+
import {
|
|
43
|
+
findProjectsWithoutProcessResource,
|
|
44
|
+
loadResourceKeyMap,
|
|
45
|
+
resourcesRefreshCommand
|
|
46
|
+
} from "./packager-tool-phw8ydjx.js";
|
|
47
|
+
import {
|
|
48
|
+
readSolutionInlineEntities
|
|
49
|
+
} from "./packager-tool-4x7tzvv0.js";
|
|
44
50
|
import {
|
|
45
51
|
findNodeDefinition
|
|
46
|
-
} from "./packager-tool-
|
|
52
|
+
} from "./packager-tool-hxyjn885.js";
|
|
47
53
|
import {
|
|
48
|
-
|
|
49
|
-
} from "./packager-tool-
|
|
54
|
+
isRecord
|
|
55
|
+
} from "./packager-tool-xk78j7dz.js";
|
|
50
56
|
import {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
} from "./packager-tool-m8xtf5ej.js";
|
|
57
|
+
resolveProjectFlowFile
|
|
58
|
+
} from "./packager-tool-nts5rrch.js";
|
|
54
59
|
import {
|
|
55
|
-
ManifestClient,
|
|
56
60
|
buildErrorHandle
|
|
57
|
-
} from "./packager-tool-
|
|
61
|
+
} from "./packager-tool-dwd6cc01.js";
|
|
58
62
|
import {
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
findNearestParentUipxFile,
|
|
64
|
+
readSolutionManifest
|
|
65
|
+
} from "./packager-tool-8g5931fz.js";
|
|
61
66
|
import {
|
|
62
67
|
canonicalAgentInputPath,
|
|
63
68
|
collectAgentInputLeaves,
|
|
64
69
|
createFlowRefResolver,
|
|
65
70
|
hydrateAgentNodeInputs,
|
|
71
|
+
inlineEntityBindingIssues,
|
|
66
72
|
inlineFlowRefs,
|
|
67
73
|
parseFlowSource,
|
|
68
74
|
resolveWorkflowRefs,
|
|
69
75
|
runDesignerRules
|
|
70
|
-
} from "./packager-tool-
|
|
76
|
+
} from "./packager-tool-445qgxdk.js";
|
|
71
77
|
import {
|
|
72
78
|
AGENT_NODE_TYPES,
|
|
73
79
|
DECISION_NODE_TYPE,
|
|
@@ -84,13 +90,16 @@ import {
|
|
|
84
90
|
import {
|
|
85
91
|
OutputFormatter,
|
|
86
92
|
RESULTS,
|
|
87
|
-
catchError,
|
|
88
93
|
extractErrorMessageSync,
|
|
89
|
-
logger
|
|
90
|
-
|
|
94
|
+
logger,
|
|
95
|
+
quoteForShell
|
|
96
|
+
} from "./packager-tool-apawc11t.js";
|
|
97
|
+
import {
|
|
98
|
+
catchError
|
|
99
|
+
} from "./packager-tool-t7ahhaer.js";
|
|
91
100
|
import {
|
|
92
101
|
getFileSystem
|
|
93
|
-
} from "./packager-tool-
|
|
102
|
+
} from "./packager-tool-myhbp761.js";
|
|
94
103
|
import {
|
|
95
104
|
__require
|
|
96
105
|
} from "./packager-tool-1yh8g550.js";
|
|
@@ -297,7 +306,7 @@ function buildDiagnosticMessage(label, classification, strict) {
|
|
|
297
306
|
const strictNote = strict ? " (--strict-bindings promoted this to an error.)" : " Pass `--strict-bindings` to fail validation on this.";
|
|
298
307
|
const connectorDetail = `{"authentication":"connector",` + `"targetConnector":"${classification.connectorKeyword}",` + `"connectionId":"<uuid>","folderKey":"<uuid>","method":"GET","url":"<path>"}`;
|
|
299
308
|
const manualDetail = `{"authentication":"manual","method":"GET","url":"https://…"}`;
|
|
300
|
-
return `Node "${label}" ${connectorHint} but uses the generic Managed HTTP type \`${MANAGED_HTTP_NODE_TYPE}\` ` + "with no connection binding. The runtime will issue a raw HTTP call to an undefined endpoint. " + `Either bind a real Integration Service connection with \`uip maestro flow
|
|
309
|
+
return `Node "${label}" ${connectorHint} but uses the generic Managed HTTP type \`${MANAGED_HTTP_NODE_TYPE}\` ` + "with no connection binding. The runtime will issue a raw HTTP call to an undefined endpoint. " + `Either bind a real Integration Service connection with \`uip maestro flow nodes configure <file> <node-id> --detail '${connectorDetail}'\`, ` + `or configure manual-mode HTTP with \`--detail '${manualDetail}'\`. ` + "If this node is intentionally a raw HTTP call, rename it so the label doesn't " + `imply a connector binding.${strictNote}`;
|
|
301
310
|
}
|
|
302
311
|
var MCP_CONNECTOR_KEY = "uipath-uipath-mcp";
|
|
303
312
|
function readDetail(node) {
|
|
@@ -397,7 +406,7 @@ async function ensureCatalogRegistered() {
|
|
|
397
406
|
if (catalogRegistered || !instance.isInitialized)
|
|
398
407
|
return;
|
|
399
408
|
try {
|
|
400
|
-
const { registerFlowExpressionModelI18n } = await import("./localization-
|
|
409
|
+
const { registerFlowExpressionModelI18n } = await import("./localization-d6gjmrsw.js");
|
|
401
410
|
registerFlowExpressionModelI18n(instance);
|
|
402
411
|
} catch (error) {
|
|
403
412
|
logger.warn(`Expression type checking localization unavailable, falling back to English: ${extractErrorMessageSync(error)}`);
|
|
@@ -406,7 +415,7 @@ async function ensureCatalogRegistered() {
|
|
|
406
415
|
}
|
|
407
416
|
var headlessModule;
|
|
408
417
|
function loadHeadless() {
|
|
409
|
-
headlessModule ??= import("./headless-
|
|
418
|
+
headlessModule ??= import("./headless-fw8pwyzm.js").then((mod) => {
|
|
410
419
|
logger.info(`Expression type checking: @uipath/flow-expression-model (TypeScript ${mod.HEADLESS_TYPESCRIPT_VERSION})`);
|
|
411
420
|
return mod;
|
|
412
421
|
}).catch((error) => {
|
|
@@ -467,7 +476,7 @@ var activityTypeIdValidator = {
|
|
|
467
476
|
{
|
|
468
477
|
path: `nodes[${node.id}].inputs.detail.uiPathActivityTypeId`,
|
|
469
478
|
severity: "error",
|
|
470
|
-
message: `${nodeKind} (\`${node.type}\`): \`inputs.detail.uiPathActivityTypeId\` is missing — Studio Web crashes when opening this flow. ` + `Fix: refresh the embedded definition without re-IDing the node — \`uip maestro flow registry get ${quotedType} --output json\`, replace the matching entry in \`definitions[]\` with the returned node object (preserve \`typeVersion\` exactly as returned), ` + `then \`uip maestro flow
|
|
479
|
+
message: `${nodeKind} (\`${node.type}\`): \`inputs.detail.uiPathActivityTypeId\` is missing — Studio Web crashes when opening this flow. ` + `Fix: refresh the embedded definition without re-IDing the node — \`uip maestro flow registry get ${quotedType} --output json\`, replace the matching entry in \`definitions[]\` with the returned node object (preserve \`typeVersion\` exactly as returned), ` + `then \`uip maestro flow nodes configure <file> ${quotedId} --detail <json>\` to re-populate \`inputs.detail.uiPathActivityTypeId\` from the fresh manifest.`
|
|
471
480
|
}
|
|
472
481
|
];
|
|
473
482
|
}
|
|
@@ -846,7 +855,7 @@ var inlineActivityValidator = {
|
|
|
846
855
|
const config = getInlineActivityConfiguration(node);
|
|
847
856
|
if (!config) {
|
|
848
857
|
return [
|
|
849
|
-
issue("inputs.inlineActivityConfiguration", `Non-catalog activity node (\`${node.type}\`) has no \`inputs.inlineActivityConfiguration\` — the runtime has no activity to run. ` + "Fix: remove the node and re-add it with `uip maestro flow
|
|
858
|
+
issue("inputs.inlineActivityConfiguration", `Non-catalog activity node (\`${node.type}\`) has no \`inputs.inlineActivityConfiguration\` — the runtime has no activity to run. ` + "Fix: remove the node and re-add it with `uip maestro flow nodes create <file> <type> --metadata <Name>.json --scripts <dir>`.")
|
|
850
859
|
];
|
|
851
860
|
}
|
|
852
861
|
if (!isInlineType) {
|
|
@@ -872,10 +881,10 @@ var inlineActivityValidator = {
|
|
|
872
881
|
if (context && typeof context === "object") {
|
|
873
882
|
const ac = context;
|
|
874
883
|
if (ac.source !== INLINE_ACTIVITY_SOURCE) {
|
|
875
|
-
issues.push(issue("inputs.detail.activityContext.source", `\`activityContext.source\` must be "${INLINE_ACTIVITY_SOURCE}" for a non-catalog activity (got ${JSON.stringify(ac.source)}). Re-run \`uip maestro flow
|
|
884
|
+
issues.push(issue("inputs.detail.activityContext.source", `\`activityContext.source\` must be "${INLINE_ACTIVITY_SOURCE}" for a non-catalog activity (got ${JSON.stringify(ac.source)}). Re-run \`uip maestro flow nodes configure\`.`));
|
|
876
885
|
}
|
|
877
886
|
if (scriptRef && ac.scriptRef !== scriptRef) {
|
|
878
|
-
issues.push(issue("inputs.detail.activityContext.scriptRef", `\`activityContext.scriptRef\` (${JSON.stringify(ac.scriptRef)}) does not match the embedded activity's \`scriptRef\` ("${scriptRef}"). Re-run \`uip maestro flow
|
|
887
|
+
issues.push(issue("inputs.detail.activityContext.scriptRef", `\`activityContext.scriptRef\` (${JSON.stringify(ac.scriptRef)}) does not match the embedded activity's \`scriptRef\` ("${scriptRef}"). Re-run \`uip maestro flow nodes configure\`.`));
|
|
879
888
|
}
|
|
880
889
|
}
|
|
881
890
|
return issues;
|
|
@@ -902,7 +911,12 @@ var FORBIDDEN_INPUT_FIELDS = [
|
|
|
902
911
|
"fileName",
|
|
903
912
|
"mimeType"
|
|
904
913
|
];
|
|
905
|
-
var
|
|
914
|
+
var FILE_REF_BODY_PATTERN = /^\$vars\.[A-Za-z_$]/;
|
|
915
|
+
function isFileRefExpression(fileRef) {
|
|
916
|
+
const body = getJsExpressionBody(fileRef);
|
|
917
|
+
return body !== undefined && FILE_REF_BODY_PATTERN.test(body);
|
|
918
|
+
}
|
|
919
|
+
var EXTRACT_V2_NODE_TYPE = "uipath.ixp.extract-document-builder";
|
|
906
920
|
var ixpNodeValidator = {
|
|
907
921
|
id: "ixp-node",
|
|
908
922
|
appliesTo: (node) => typeof node.type === "string" && node.type.startsWith("uipath.ixp."),
|
|
@@ -911,21 +925,23 @@ var ixpNodeValidator = {
|
|
|
911
925
|
const inputs = node.inputs ?? {};
|
|
912
926
|
const outputs = node.outputs ?? {};
|
|
913
927
|
const base = `nodes[${node.id}]`;
|
|
914
|
-
const model = inputs.model;
|
|
915
928
|
const isNonEmptyString2 = (v) => typeof v === "string" && v.length > 0;
|
|
916
|
-
if (
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
929
|
+
if (node.type !== EXTRACT_V2_NODE_TYPE) {
|
|
930
|
+
const model = inputs.model;
|
|
931
|
+
if (typeof model !== "object" || model === null || Array.isArray(model) || !isNonEmptyString2(model.modelName) || !isNonEmptyString2(model.folderKey)) {
|
|
932
|
+
issues.push({
|
|
933
|
+
path: `${base}.inputs.model`,
|
|
934
|
+
severity: "error",
|
|
935
|
+
message: "inputs.model must be an object with non-empty string " + "`modelName` and `folderKey`. Studio Web's property " + "panel destructures these and crashes when either is " + "missing or not a string."
|
|
936
|
+
});
|
|
937
|
+
}
|
|
922
938
|
}
|
|
923
939
|
const fileRef = inputs.fileRef;
|
|
924
|
-
if (
|
|
940
|
+
if (!isFileRefExpression(fileRef)) {
|
|
925
941
|
issues.push({
|
|
926
942
|
path: `${base}.inputs.fileRef`,
|
|
927
943
|
severity: "error",
|
|
928
|
-
message: "inputs.fileRef must be a
|
|
944
|
+
message: "inputs.fileRef must be a `$vars` reference, for " + "example to an upstream node output. Write it either " + "as the string `=js:$vars.<upstream>.output.<field>` " + 'or as `{ "type": "jsExpression", "expression": ' + '"$vars.<upstream>.output.<field>" }` (no `=js:` ' + "prefix inside a jsExpression). Any other value, " + "including a `literal` value, reaches the runtime as " + "a literal and the upstream output never resolves."
|
|
929
945
|
});
|
|
930
946
|
}
|
|
931
947
|
for (const port of ["output", "error"]) {
|
|
@@ -2071,6 +2087,7 @@ class FlowValidateService {
|
|
|
2071
2087
|
availableModelNames;
|
|
2072
2088
|
validateCurrentManifests;
|
|
2073
2089
|
currentManifestOverrides;
|
|
2090
|
+
manifestCache;
|
|
2074
2091
|
strictBindings;
|
|
2075
2092
|
strictExpressions;
|
|
2076
2093
|
connectorCatalogOverride;
|
|
@@ -2087,6 +2104,7 @@ class FlowValidateService {
|
|
|
2087
2104
|
this.availableModelNames = options.availableModelNames;
|
|
2088
2105
|
this.validateCurrentManifests = options.validateCurrentManifests === true || options.currentManifests !== undefined;
|
|
2089
2106
|
this.currentManifestOverrides = options.currentManifests;
|
|
2107
|
+
this.manifestCache = options.manifestCache !== false;
|
|
2090
2108
|
this.strictBindings = options.strictBindings === true;
|
|
2091
2109
|
this.strictExpressions = options.strictExpressions === true;
|
|
2092
2110
|
this.connectorCatalogOverride = options.connectorCatalog;
|
|
@@ -2140,27 +2158,13 @@ ${warnings.map((i) => ` - [${i.path}] ${i.message}`).join(`
|
|
|
2140
2158
|
if (manifests) {
|
|
2141
2159
|
return new Map(manifests.map((m) => [m.nodeType.toLowerCase(), m]));
|
|
2142
2160
|
}
|
|
2143
|
-
const [
|
|
2144
|
-
if (
|
|
2145
|
-
logger.warn(`Could not read login status for current manifest validation; using OOTB manifests: ${loginError.message}`);
|
|
2146
|
-
}
|
|
2147
|
-
const client = new ManifestClient({
|
|
2148
|
-
baseUrl: loginStatus?.baseUrl || "localhost"
|
|
2149
|
-
});
|
|
2150
|
-
const auth = loginStatus?.loginStatus === "Logged in" && loginStatus.accessToken && loginStatus.tenantId && loginStatus.organizationId ? {
|
|
2151
|
-
accessToken: loginStatus.accessToken,
|
|
2152
|
-
tenantId: loginStatus.tenantId,
|
|
2153
|
-
organizationId: loginStatus.organizationId
|
|
2154
|
-
} : undefined;
|
|
2155
|
-
const [error, manifest] = await catchError(client.getManifest({
|
|
2156
|
-
...auth && { auth },
|
|
2157
|
-
inlineAgentNodes: true
|
|
2158
|
-
}));
|
|
2159
|
-
if (error || !manifest?.nodes) {
|
|
2161
|
+
const [error, result] = await catchError(loadCurrentTenantNodes({ force: !this.manifestCache }));
|
|
2162
|
+
if (error || result.nodes.length === 0) {
|
|
2160
2163
|
logger.warn(`Could not load current OOTB node manifests; skipping stale-handle validation: ${error?.message ?? "manifest response did not include nodes"}`);
|
|
2161
2164
|
return new Map;
|
|
2162
2165
|
}
|
|
2163
|
-
|
|
2166
|
+
logger.debug(`Current node manifests: ${result.nodes.length} nodes (${result.fromCache ? "from cache" : `fetched, source=${result.source}`})`);
|
|
2167
|
+
return new Map(result.nodes.map((m) => [
|
|
2164
2168
|
m.nodeType.toLowerCase(),
|
|
2165
2169
|
m
|
|
2166
2170
|
]));
|
|
@@ -2201,6 +2205,7 @@ Validating: ${absolutePath}
|
|
|
2201
2205
|
issues.push(...await this.validateForwardMigration(content, absolutePath));
|
|
2202
2206
|
issues.push(...this.validateGraph(workflow, "", rawDefErrorHandling, currentManifests));
|
|
2203
2207
|
issues.push(...this.validateGlobalVariableUniqueness(workflow, ""));
|
|
2208
|
+
issues.push(...this.validateFileWideIdUniqueness(workflow));
|
|
2204
2209
|
issues.push(...this.validateGlobalTriggerBindings(workflow, ""));
|
|
2205
2210
|
issues.push(...this.validateTriggerScopedBareVarReads(workflow, ""));
|
|
2206
2211
|
issues.push(...this.validateUnboundInputGlobals(workflow, ""));
|
|
@@ -2212,7 +2217,8 @@ Validating: ${absolutePath}
|
|
|
2212
2217
|
issues.push(...this.validateAgentPromptInputRefs(workflow, hydrationDiagnoses, ""));
|
|
2213
2218
|
issues.push(...this.validateAgentInputScopeRefs(workflow, hydrationDiagnoses, ""));
|
|
2214
2219
|
issues.push(...this.validateVoiceAgentSettings(workflow, hydrationDiagnoses, ""));
|
|
2215
|
-
issues.push(...await this.
|
|
2220
|
+
issues.push(...await this.validateInlineEntityBindings(workflow, absolutePath));
|
|
2221
|
+
issues.push(...await this.validateSolutionRegistrationAndLayout(absolutePath, workflow));
|
|
2216
2222
|
issues.push(...await validateExpressions(workflow, "", this.strictExpressions));
|
|
2217
2223
|
const subflows = workflow.subflows ?? {};
|
|
2218
2224
|
for (const [subflowId, entry] of Object.entries(subflows)) {
|
|
@@ -2750,7 +2756,7 @@ Validating: ${absolutePath}
|
|
|
2750
2756
|
const sameTypeVersions = definedVersionsByType.get(node.type);
|
|
2751
2757
|
const hint = sameTypeVersions?.length ? `
|
|
2752
2758
|
Hint: \`definitions[]\` has \`${node.type}\` at version(s) ${sameTypeVersions.map((v) => `"${v}"`).join(", ")} but the node uses \`typeVersion: "${node.typeVersion}"\`. Align one side — \`typeVersion\` must match the definition's \`version\` exactly (e.g., \`"1.0"\` ≠ \`"1.0.0"\`).` : `
|
|
2753
|
-
Hint: run \`uip maestro flow registry get ${node.type} --output json\` and append the returned node object to \`definitions[]\` (depending on plugin version, the object is at \`Data.Node\` or the top level). Set \`typeVersion\` to the returned \`version\` exactly — registry may emit \`"1.0"\` while older flows used \`"1.0.0"\`. To scaffold a new node with its definition auto-injected, run \`uip maestro flow
|
|
2759
|
+
Hint: run \`uip maestro flow registry get ${node.type} --output json\` and append the returned node object to \`definitions[]\` (depending on plugin version, the object is at \`Data.Node\` or the top level). Set \`typeVersion\` to the returned \`version\` exactly — registry may emit \`"1.0"\` while older flows used \`"1.0.0"\`. To scaffold a new node with its definition auto-injected, run \`uip maestro flow nodes create <file> ${node.type}\` instead.`;
|
|
2754
2760
|
issues.push({
|
|
2755
2761
|
path: `nodes[${node.id}].type`,
|
|
2756
2762
|
message: `Node type "${key}" has no matching definition.${hint}`,
|
|
@@ -2790,6 +2796,49 @@ Validating: ${absolutePath}
|
|
|
2790
2796
|
}
|
|
2791
2797
|
return issues;
|
|
2792
2798
|
}
|
|
2799
|
+
validateFileWideIdUniqueness(workflow) {
|
|
2800
|
+
const scopes = [
|
|
2801
|
+
{
|
|
2802
|
+
label: "root",
|
|
2803
|
+
nodes: workflow.nodes ?? [],
|
|
2804
|
+
edges: workflow.edges ?? []
|
|
2805
|
+
}
|
|
2806
|
+
];
|
|
2807
|
+
const subflows = workflow.subflows ?? {};
|
|
2808
|
+
for (const [subflowId, entry] of Object.entries(subflows)) {
|
|
2809
|
+
scopes.push({
|
|
2810
|
+
label: `subflows[${subflowId}]`,
|
|
2811
|
+
nodes: entry?.nodes ?? [],
|
|
2812
|
+
edges: entry?.edges ?? []
|
|
2813
|
+
});
|
|
2814
|
+
}
|
|
2815
|
+
const placesById = new Map;
|
|
2816
|
+
for (const scope of scopes) {
|
|
2817
|
+
for (const kind of ["nodes", "edges"]) {
|
|
2818
|
+
const place = `${kind === "nodes" ? "node" : "edge"} in ${scope.label}`;
|
|
2819
|
+
for (const element of scope[kind]) {
|
|
2820
|
+
const id = element?.id;
|
|
2821
|
+
if (typeof id !== "string")
|
|
2822
|
+
continue;
|
|
2823
|
+
const places = placesById.get(id) ?? [];
|
|
2824
|
+
if (!places.includes(place))
|
|
2825
|
+
places.push(place);
|
|
2826
|
+
placesById.set(id, places);
|
|
2827
|
+
}
|
|
2828
|
+
}
|
|
2829
|
+
}
|
|
2830
|
+
const issues = [];
|
|
2831
|
+
for (const [id, places] of placesById) {
|
|
2832
|
+
if (places.length < 2)
|
|
2833
|
+
continue;
|
|
2834
|
+
issues.push({
|
|
2835
|
+
path: places.some((p) => p.startsWith("node")) ? "nodes" : "edges",
|
|
2836
|
+
message: `Duplicate ID across the file: "${id}" is used by ${places.join(", ")}. Node and edge IDs share one namespace across the root and all subflows; pack merges them into one BPMN document and drops or fails on a repeated ID.`,
|
|
2837
|
+
severity: "error"
|
|
2838
|
+
});
|
|
2839
|
+
}
|
|
2840
|
+
return issues;
|
|
2841
|
+
}
|
|
2793
2842
|
validateGlobalVariableUniqueness(flow, pathPrefix) {
|
|
2794
2843
|
const issues = [];
|
|
2795
2844
|
const globals = flow.variables?.globals ?? [];
|
|
@@ -2954,6 +3003,10 @@ Validating: ${absolutePath}
|
|
|
2954
3003
|
}
|
|
2955
3004
|
return issues;
|
|
2956
3005
|
}
|
|
3006
|
+
async validateInlineEntityBindings(workflow, absolutePath) {
|
|
3007
|
+
const inlineEntities = await readSolutionInlineEntities(this.fs, absolutePath);
|
|
3008
|
+
return inlineEntityBindingIssues(workflow, inlineEntities, absolutePath);
|
|
3009
|
+
}
|
|
2957
3010
|
validateResourceBindings(workflow) {
|
|
2958
3011
|
const issues = [];
|
|
2959
3012
|
const bindings = workflow.bindings ?? [];
|
|
@@ -3088,7 +3141,7 @@ Validating: ${absolutePath}
|
|
|
3088
3141
|
this.connectorCatalogCache ??= loadConnectorCatalog();
|
|
3089
3142
|
return this.connectorCatalogCache;
|
|
3090
3143
|
}
|
|
3091
|
-
async validateSolutionRegistrationAndLayout(absolutePath) {
|
|
3144
|
+
async validateSolutionRegistrationAndLayout(absolutePath, workflow) {
|
|
3092
3145
|
const issues = [];
|
|
3093
3146
|
const flowDir = this.fs.path.dirname(absolutePath);
|
|
3094
3147
|
const discovery = await findNearestParentUipxFile(this.fs, absolutePath);
|
|
@@ -3101,20 +3154,20 @@ Validating: ${absolutePath}
|
|
|
3101
3154
|
}
|
|
3102
3155
|
const solutionDir = this.fs.path.dirname(discovery.solutionFile);
|
|
3103
3156
|
const flowDirReal = await this.canonicalizePath(flowDir);
|
|
3104
|
-
let
|
|
3157
|
+
let currentProject;
|
|
3105
3158
|
for (const p of manifest.projects) {
|
|
3106
3159
|
const projectDir = this.fs.path.resolve(solutionDir, this.fs.path.dirname(p.ProjectRelativePath));
|
|
3107
3160
|
const projectDirReal = await this.canonicalizePath(projectDir);
|
|
3108
3161
|
if (projectDirReal === flowDirReal) {
|
|
3109
|
-
|
|
3162
|
+
currentProject = p;
|
|
3110
3163
|
break;
|
|
3111
3164
|
}
|
|
3112
3165
|
}
|
|
3113
|
-
if (!
|
|
3166
|
+
if (!currentProject) {
|
|
3114
3167
|
issues.push({
|
|
3115
3168
|
path: "(workflow)",
|
|
3116
3169
|
severity: "warning",
|
|
3117
|
-
message: `.flow file at ${absolutePath} is not registered as a project of solution ${discovery.solutionFile}.
|
|
3170
|
+
message: `.flow file at ${absolutePath} is not registered as a project of solution ${discovery.solutionFile}. So Studio Web and \`flow debug\` can discover it, run: uip solution projects add ${quoteForShell(flowDir)}`
|
|
3118
3171
|
});
|
|
3119
3172
|
}
|
|
3120
3173
|
const flowBase = this.fs.path.basename(absolutePath, ".flow");
|
|
@@ -3126,8 +3179,56 @@ Validating: ${absolutePath}
|
|
|
3126
3179
|
message: `.flow file at ${absolutePath} does not match canonical layout. Expected the .flow basename ("${flowBase}") to match its parent directory name ("${dirBase}"). The canonical layout is <solution>/<projectName>/<projectName>.flow.`
|
|
3127
3180
|
});
|
|
3128
3181
|
}
|
|
3182
|
+
issues.push(...await this.validateInSolutionProcessKeys(workflow, solutionDir, manifest.projects, currentProject?.Id));
|
|
3129
3183
|
return issues;
|
|
3130
3184
|
}
|
|
3185
|
+
async validateInSolutionProcessKeys(workflow, solutionDir, projects, currentProjectId) {
|
|
3186
|
+
const definitions = workflow.definitions;
|
|
3187
|
+
const nodes = [
|
|
3188
|
+
...workflow.nodes.map((n) => ({ ...n, scope: "" })),
|
|
3189
|
+
...Object.entries(workflow.subflows ?? {}).flatMap(([subflowId, sub]) => (sub.nodes ?? []).map((n) => ({
|
|
3190
|
+
...n,
|
|
3191
|
+
scope: `subflows[${subflowId}].`
|
|
3192
|
+
})))
|
|
3193
|
+
];
|
|
3194
|
+
const refs = nodes.flatMap((node) => {
|
|
3195
|
+
const def = findNodeDefinition(definitions, node);
|
|
3196
|
+
const bindings = def?.model?.bindings;
|
|
3197
|
+
const key = bindings?.resourceKey;
|
|
3198
|
+
if (!Array.isArray(def?.tags) || !def.tags.includes("in-solution") || String(bindings?.resource).toLowerCase() !== "process" || typeof key !== "string" || key.length === 0) {
|
|
3199
|
+
return [];
|
|
3200
|
+
}
|
|
3201
|
+
const projectId = typeof def.projectId === "string" ? def.projectId : undefined;
|
|
3202
|
+
return [{ node, key, projectId }];
|
|
3203
|
+
});
|
|
3204
|
+
if (refs.length === 0)
|
|
3205
|
+
return [];
|
|
3206
|
+
const keyByProject = await loadResourceKeyMap(solutionDir);
|
|
3207
|
+
const known = new Set([...keyByProject.values()].map((k) => k.toLowerCase()));
|
|
3208
|
+
const withoutProcessResource = new Map((await findProjectsWithoutProcessResource({
|
|
3209
|
+
solutionDir,
|
|
3210
|
+
projects,
|
|
3211
|
+
currentProjectId
|
|
3212
|
+
})).map((p) => [p.id.toLowerCase(), p]));
|
|
3213
|
+
const severity = this.strictBindings ? "error" : "warning";
|
|
3214
|
+
return refs.filter(({ key }) => !known.has(key.toLowerCase())).map(({ node, key, projectId }) => {
|
|
3215
|
+
const pending = withoutProcessResource.get(key.toLowerCase());
|
|
3216
|
+
if (pending) {
|
|
3217
|
+
return {
|
|
3218
|
+
path: `${node.scope}nodes[${node.id}].bindings`,
|
|
3219
|
+
severity,
|
|
3220
|
+
message: `Node "${node.id}" (type ${node.type}) calls in-solution process key "${key}", which is the project id of '${pending.name}', a project with no process resource yet. The next \`uip solution resources refresh\` gives it a new key, and this call stops matching. Run: ${resourcesRefreshCommand(solutionDir)}. Then re-run \`uip maestro flow registry get <node-type> --local\` and replace the node's definition and bindings.`
|
|
3221
|
+
};
|
|
3222
|
+
}
|
|
3223
|
+
const currentKey = projectId ? keyByProject.get(projectId.toLowerCase()) : undefined;
|
|
3224
|
+
const hint = currentKey ? `Its project now has process key "${currentKey}"; re-run \`uip maestro flow registry get <node-type> --local\` and replace the node's definition and bindings.` : "No project in the solution has that key. Re-add the project, or remove the node.";
|
|
3225
|
+
return {
|
|
3226
|
+
path: `${node.scope}nodes[${node.id}].bindings`,
|
|
3227
|
+
severity,
|
|
3228
|
+
message: `Node "${node.id}" (type ${node.type}) calls in-solution process key "${key}", which matches no process resource in solution ${solutionDir}. ${hint}`
|
|
3229
|
+
};
|
|
3230
|
+
});
|
|
3231
|
+
}
|
|
3131
3232
|
async canonicalizePath(p) {
|
|
3132
3233
|
const [err, real] = await catchError(this.fs.realpath(p));
|
|
3133
3234
|
return err || !real ? p : real;
|
|
@@ -3506,4 +3607,4 @@ function describeUnsatisfiableJoin(node, finding, graph) {
|
|
|
3506
3607
|
|
|
3507
3608
|
export { FlowValidateService };
|
|
3508
3609
|
|
|
3509
|
-
//# debugId=
|
|
3610
|
+
//# debugId=00181C4930912C2764756E2164756E21
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAuthContext
|
|
3
|
+
} from "./packager-tool-kn86394c.js";
|
|
4
|
+
|
|
5
|
+
// ../solution-sdk/src/solution-auth.ts
|
|
6
|
+
async function getSolutionAuthContext(options) {
|
|
7
|
+
const ctx = await getAuthContext({
|
|
8
|
+
tenant: options.tenant,
|
|
9
|
+
ensureTokenValidityMinutes: options.loginValidity ?? 10,
|
|
10
|
+
envFilePath: options.envFilePath,
|
|
11
|
+
requireOrganizationId: true,
|
|
12
|
+
requireTenantName: true
|
|
13
|
+
});
|
|
14
|
+
const organizationId = ctx.organizationId;
|
|
15
|
+
const tenantName = ctx.tenantName;
|
|
16
|
+
const basePath = `${ctx.baseUrl}/${organizationId}/${tenantName}/automationsolutions_`;
|
|
17
|
+
return {
|
|
18
|
+
accessToken: ctx.accessToken,
|
|
19
|
+
basePath,
|
|
20
|
+
organizationId,
|
|
21
|
+
tenantName,
|
|
22
|
+
identity: ctx.identity
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { getSolutionAuthContext };
|
|
27
|
+
|
|
28
|
+
//# debugId=F76D3832B86881B164756E2164756E21
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EvalRunApi
|
|
3
|
+
} from "./packager-tool-xk78j7dz.js";
|
|
4
|
+
|
|
5
|
+
// src/services/flow-eval-run-api.ts
|
|
6
|
+
class FlowEvalRunApi extends EvalRunApi {
|
|
7
|
+
constructor() {
|
|
8
|
+
super("Flow");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { FlowEvalRunApi };
|
|
13
|
+
|
|
14
|
+
//# debugId=028E1F1C632C0C6664756E2164756E21
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
UnknownEntryPointError
|
|
3
|
+
} from "./packager-tool-4kr6g0zw.js";
|
|
1
4
|
import {
|
|
2
5
|
JobsApi,
|
|
3
6
|
ReleasesApi,
|
|
4
7
|
createOrchestratorConfig,
|
|
5
8
|
resolveFolder
|
|
6
|
-
} from "./packager-tool-
|
|
9
|
+
} from "./packager-tool-skcjythd.js";
|
|
7
10
|
import {
|
|
8
11
|
parseJsonInputOrFile
|
|
9
|
-
} from "./packager-tool-
|
|
12
|
+
} from "./packager-tool-ymma2s85.js";
|
|
10
13
|
import {
|
|
11
14
|
getPersonalFolderKey
|
|
12
|
-
} from "./packager-tool-
|
|
15
|
+
} from "./packager-tool-tqjfdpda.js";
|
|
13
16
|
import {
|
|
14
17
|
ErrorDecision,
|
|
15
18
|
MIN_INTERVAL_MS,
|
|
16
19
|
PollOutcome,
|
|
17
|
-
catchError,
|
|
18
20
|
logger,
|
|
19
21
|
pollUntil,
|
|
20
22
|
processContext
|
|
21
|
-
} from "./packager-tool-
|
|
23
|
+
} from "./packager-tool-apawc11t.js";
|
|
24
|
+
import {
|
|
25
|
+
catchError
|
|
26
|
+
} from "./packager-tool-t7ahhaer.js";
|
|
22
27
|
|
|
23
28
|
// src/services/http-client.ts
|
|
24
29
|
function buildCommonHeaders(config, options) {
|
|
@@ -78,7 +83,7 @@ async function resolveFlowFolderId(config) {
|
|
|
78
83
|
});
|
|
79
84
|
return personalFolder.id.toString();
|
|
80
85
|
}
|
|
81
|
-
async function listFlowProcesses(config, filter) {
|
|
86
|
+
async function listFlowProcesses(config, filter, window = {}) {
|
|
82
87
|
const folder = await resolveFolder({ folderKey: config.folderKey }, { tenant: config.tenantName });
|
|
83
88
|
const sdkConfig = await createOrchestratorConfig({
|
|
84
89
|
folderId: folder.id.toString()
|
|
@@ -90,7 +95,9 @@ async function listFlowProcesses(config, filter) {
|
|
|
90
95
|
}
|
|
91
96
|
const filterQuery = filters.length > 0 ? filters.join(" and ") : undefined;
|
|
92
97
|
const response = await releasesApi.releasesGet({
|
|
93
|
-
$filter: filterQuery
|
|
98
|
+
$filter: filterQuery,
|
|
99
|
+
$top: window.limit,
|
|
100
|
+
$skip: window.offset || undefined
|
|
94
101
|
});
|
|
95
102
|
return response.value || [];
|
|
96
103
|
}
|
|
@@ -130,6 +137,18 @@ async function getFlowEntryPoints(config) {
|
|
|
130
137
|
const response = await orchestratorGet(apiConfig, path);
|
|
131
138
|
return response.value;
|
|
132
139
|
}
|
|
140
|
+
async function defaultFlowEntryPoint(config, mainEntryPointId) {
|
|
141
|
+
const entryPoints = await getFlowEntryPoints(config);
|
|
142
|
+
return entryPoints.find((ep) => ep.Id === mainEntryPointId) ?? entryPoints[0];
|
|
143
|
+
}
|
|
144
|
+
async function resolveEntryPoint(config, entryPoint) {
|
|
145
|
+
const triggers = (await getFlowEntryPoints(config)).filter((ep) => ep.Path.includes("#")).map((ep) => ({ ep, id: ep.Path.slice(ep.Path.lastIndexOf("#") + 1) }));
|
|
146
|
+
const match = triggers.find((trigger) => trigger.id === entryPoint);
|
|
147
|
+
if (!match) {
|
|
148
|
+
throw new UnknownEntryPointError(entryPoint, triggers.map((trigger) => trigger.id));
|
|
149
|
+
}
|
|
150
|
+
return match.ep;
|
|
151
|
+
}
|
|
133
152
|
async function startFlowJob(config) {
|
|
134
153
|
const folder = await resolveFolder({ folderKey: config.folderKey }, { tenant: config.tenantName });
|
|
135
154
|
const sdkConfig = await createOrchestratorConfig({
|
|
@@ -145,6 +164,9 @@ async function startFlowJob(config) {
|
|
|
145
164
|
if (config.robotIds && config.robotIds.length > 0) {
|
|
146
165
|
startInfo.robotIds = config.robotIds;
|
|
147
166
|
}
|
|
167
|
+
if (config.entryPointPath !== undefined) {
|
|
168
|
+
startInfo.entryPointPath = config.entryPointPath;
|
|
169
|
+
}
|
|
148
170
|
const response = await jobsApi.jobsStartJobs({
|
|
149
171
|
body: { startInfo }
|
|
150
172
|
});
|
|
@@ -382,16 +404,15 @@ function isJobAttachmentReference(value) {
|
|
|
382
404
|
const ref = value;
|
|
383
405
|
return typeof ref.ID === "string" && typeof ref.FullName === "string";
|
|
384
406
|
}
|
|
385
|
-
async function validateFlowInputs(config, inputs) {
|
|
407
|
+
async function validateFlowInputs(config, inputs, chosenEntryPoint, mainEntryPointId) {
|
|
386
408
|
try {
|
|
387
|
-
const
|
|
388
|
-
if (
|
|
409
|
+
const entryPoint = chosenEntryPoint ?? await defaultFlowEntryPoint(config, mainEntryPointId);
|
|
410
|
+
if (entryPoint === undefined) {
|
|
389
411
|
return {
|
|
390
412
|
valid: false,
|
|
391
413
|
errors: ["No entry points found for this process"]
|
|
392
414
|
};
|
|
393
415
|
}
|
|
394
|
-
const entryPoint = entryPoints[0];
|
|
395
416
|
const inputSchema = JSON.parse(entryPoint.InputArguments);
|
|
396
417
|
if (inputSchema.type !== "object") {
|
|
397
418
|
return { valid: true };
|
|
@@ -438,6 +459,6 @@ async function parseFlowInputs(inputSource) {
|
|
|
438
459
|
return await parseJsonInputOrFile(inputSource);
|
|
439
460
|
}
|
|
440
461
|
|
|
441
|
-
export { listFlowProcesses, listFlowJobs, getFlowEntryPoints, spanToTraceEvent, startFlowProjectJob, streamJobTraces, getJobStatusDetailed, validateFlowInputs, parseFlowInputs };
|
|
462
|
+
export { escapeODataStringLiteral, listFlowProcesses, listFlowJobs, getFlowEntryPoints, resolveEntryPoint, spanToTraceEvent, startFlowProjectJob, streamJobTraces, getJobStatusDetailed, validateFlowInputs, parseFlowInputs };
|
|
442
463
|
|
|
443
|
-
//# debugId=
|
|
464
|
+
//# debugId=A28215A36FCF992064756E2164756E21
|