@uipath/flow-tool 1.204.0-preview.254 → 1.205.0-preview.256
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 +36 -12
- package/dist/{authoring-bppe07p0.js → authoring-e1k40hyw.js} +6 -5
- package/dist/{binding-service-9t9gqe9c.js → binding-service-yw91615m.js} +38 -30
- package/dist/{connector-service-xm05bmhz.js → connector-service-ttm75a4n.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-rms6p69f.js → edge-service-8fv0m681.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-3wtns3k7.js → flow-debug-service-cgawm96k.js} +96 -58
- package/dist/{flow-eval-node-target-ee6vbq8a.js → flow-eval-node-target-dah1gmmh.js} +17 -17
- package/dist/flow-eval-run-api-xdygjzfv.js +13 -0
- package/dist/{flow-eval-run-service-0ne6bjff.js → flow-eval-run-service-03j1szf6.js} +73 -80
- package/dist/{flow-eval-service-kbbq3wwq.js → flow-eval-service-9j46ta9k.js} +167 -415
- package/dist/{flow-init-sdk-source-z9qx1zkt.js → flow-init-sdk-source-xvdvkq7d.js} +6 -5
- package/dist/{flow-init-service-cefvmek0.js → flow-init-service-0a4y3a46.js} +19 -15
- package/dist/{flow-io-ykx6eb1v.js → flow-io-1wabd32s.js} +15 -11
- package/dist/{flow-migrate-service-c4hcjfc8.js → flow-migrate-service-mkqpbwtv.js} +16 -12
- package/dist/{flow-pack-service-6wqe1mj3.js → flow-pack-service-7dj2hhyz.js} +47 -38
- package/dist/flow-validate-service-1ktjayjv.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-fgwewrfq.js → governance-fetcher-76hxssjm.js} +7 -6
- package/dist/{hitl-service-0tct4x3e.js → hitl-service-vcbhd4cb.js} +15 -11
- 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-tzky1ynd.js → index-hz008fep.js} +6 -5
- 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-64pqwk86.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-ey7dteda.js → node-hz6cvp9d.js} +29 -15
- package/dist/{node-service-z8s4nm09.js → node-service-7wz8gx7h.js} +41 -30
- package/dist/{node-strategy-fdnkvq4a.js → node-strategy-1dmmhvf3.js} +1 -1
- package/dist/node-sync-service-yvyf7chw.js +61 -0
- package/dist/packager-tool-10vc8pq4.js +2 -0
- package/dist/{packager-tool-wq9k7pq8.js → packager-tool-2h15x2kb.js} +6 -6
- package/dist/{packager-tool-c4909mw9.js → packager-tool-2z0r1f32.js} +668 -57
- package/dist/packager-tool-4kr6g0zw.js +16 -0
- package/dist/packager-tool-4x7tzvv0.js +1176 -0
- package/dist/{packager-tool-d88rqwk8.js → packager-tool-6z1hsm2h.js} +13 -5
- package/dist/packager-tool-7hw344bt.js +107 -0
- package/dist/{packager-tool-fjcbc1bb.js → packager-tool-7wnxyvf9.js} +519 -437
- 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-9era57c0.js +28 -0
- package/dist/packager-tool-9gprvfcy.js +23 -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-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-m6abv2vy.js → packager-tool-fjqpf1y6.js} +6 -24
- package/dist/{packager-tool-3dc9gz35.js → packager-tool-frjt46rb.js} +1 -1
- package/dist/{packager-tool-y8egb0fa.js → packager-tool-gqq3vkgh.js} +2573 -535
- package/dist/{packager-tool-w5a1hhyj.js → packager-tool-hxyjn885.js} +13 -2
- package/dist/packager-tool-j3228zs9.js +35 -0
- package/dist/{packager-tool-hhy1gr2k.js → packager-tool-jgfzfqjm.js} +1 -1
- package/dist/{packager-tool-n4m8yrm2.js → packager-tool-kb520rm5.js} +172 -71
- package/dist/{packager-tool-4fhedj18.js → packager-tool-kmv2p8z4.js} +20 -8
- 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-2xycknte.js → packager-tool-ns9xn7zq.js} +13 -13
- 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-c7nmvv5g.js → packager-tool-q8akejne.js} +6 -4
- package/dist/packager-tool-qcqb9hf8.js +26 -0
- package/dist/{packager-tool-n89vrpex.js → packager-tool-skcjythd.js} +10907 -25608
- package/dist/{packager-tool-vnwq9t1v.js → packager-tool-sphnextf.js} +5 -6
- package/dist/{packager-tool-1ca047de.js → packager-tool-sqpesv2e.js} +12 -56
- package/dist/packager-tool-t7ahhaer.js +877 -0
- package/dist/{packager-tool-0d375dbz.js → packager-tool-thnkpqwc.js} +1802 -378
- package/dist/{packager-tool-peawy22c.js → packager-tool-tqjfdpda.js} +53 -8
- package/dist/{packager-tool-qsa2nf80.js → packager-tool-vd3rn4fj.js} +463 -327
- 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-arbswyqr.js → packager-tool-x20684x5.js} +1 -1
- 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-chs0s9pw.js → tidy-service-tqjea6g2.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-6ky17hts.js → variable-service-kqnqxmx2.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-mqzrtt1v.js +0 -44
- package/dist/flow-eval-run-api-byx3cacw.js +0 -13
- package/dist/flow-validate-service-5pbh3s4p.js +0 -64
- package/dist/input-reader-vhar4g0k.js +0 -11
- package/dist/node-sync-service-ak1wgysc.js +0 -40
- package/dist/packager-tool-2m06764j.js +0 -454
- package/dist/packager-tool-6c3szt0w.js +0 -265
- package/dist/packager-tool-8ak76pc3.js +0 -15
- 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/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
|
@@ -8,6 +8,17 @@ function findNodeDefinition(definitions, node) {
|
|
|
8
8
|
return byType.length === 1 ? byType[0] : undefined;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// src/services/flow-eval-utils.ts
|
|
12
|
+
function findMatchingDefinition(nodeType, typeVersion, definitions) {
|
|
13
|
+
const strict = findNodeDefinition(definitions, {
|
|
14
|
+
type: nodeType,
|
|
15
|
+
typeVersion
|
|
16
|
+
});
|
|
17
|
+
if (strict)
|
|
18
|
+
return strict;
|
|
19
|
+
return definitions.find((d) => d.nodeType === nodeType);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { findNodeDefinition, findMatchingDefinition };
|
|
12
23
|
|
|
13
|
-
//# debugId=
|
|
24
|
+
//# debugId=2B514DC63489618164756E2164756E21
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readSolutionInlineEntities
|
|
3
|
+
} from "./packager-tool-4x7tzvv0.js";
|
|
4
|
+
import {
|
|
5
|
+
describeUnboundInlineEntity,
|
|
6
|
+
findInlineEntity,
|
|
7
|
+
findUnboundInlineEntityNodes
|
|
8
|
+
} from "./packager-tool-thnkpqwc.js";
|
|
9
|
+
|
|
10
|
+
// src/services/inline-entity-resolver.ts
|
|
11
|
+
async function resolveInlineEntity(fs, flowFilePath, entityName) {
|
|
12
|
+
const entities = await readSolutionInlineEntities(fs, flowFilePath);
|
|
13
|
+
return findInlineEntity(entities, entityName);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
class UnboundInlineEntityError extends Error {
|
|
17
|
+
code = "UnboundInlineEntity";
|
|
18
|
+
instructions;
|
|
19
|
+
constructor(nodes, flowFilePath) {
|
|
20
|
+
super(`${nodes.length} Data Fabric node(s) name an entity this solution authors locally but carry no Entity binding: ${nodes.map((node) => `"${node.nodeId}" (${node.entityName})`).join(", ")}.`);
|
|
21
|
+
this.name = "UnboundInlineEntityError";
|
|
22
|
+
this.instructions = nodes.map((node) => describeUnboundInlineEntity(node, flowFilePath)).join(`
|
|
23
|
+
`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function assertInlineEntitiesBound(fs, flowFilePath, workflow) {
|
|
27
|
+
const unbound = findUnboundInlineEntityNodes(workflow, await readSolutionInlineEntities(fs, flowFilePath));
|
|
28
|
+
if (unbound.length > 0) {
|
|
29
|
+
throw new UnboundInlineEntityError(unbound, flowFilePath);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { resolveInlineEntity, UnboundInlineEntityError, assertInlineEntitiesBound };
|
|
34
|
+
|
|
35
|
+
//# debugId=D426ED1FF2E4080264756E2164756E21
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkForwardMigration
|
|
3
|
+
} from "./packager-tool-x20684x5.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-arbswyqr.js";
|
|
11
|
+
} from "./packager-tool-2h15x2kb.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-2m06764j.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-gqq3vkgh.js";
|
|
41
39
|
import {
|
|
42
|
-
|
|
43
|
-
} from "./packager-tool-
|
|
40
|
+
loadCurrentTenantNodes
|
|
41
|
+
} from "./packager-tool-7wnxyvf9.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-sphnextf.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-thnkpqwc.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
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readUipxFile
|
|
3
|
-
} from "./packager-tool-
|
|
3
|
+
} from "./packager-tool-8g5931fz.js";
|
|
4
4
|
import {
|
|
5
5
|
zipSync
|
|
6
6
|
} from "./packager-tool-nkrmjr3a.js";
|
|
7
7
|
import {
|
|
8
8
|
RESULTS,
|
|
9
9
|
addSdkUserAgentHeader,
|
|
10
|
-
catchError,
|
|
11
10
|
getSdkUserAgentToken,
|
|
12
11
|
installSdkUserAgentHeader,
|
|
13
12
|
logger,
|
|
14
13
|
summarizePlatformBody
|
|
15
|
-
} from "./packager-tool-
|
|
14
|
+
} from "./packager-tool-apawc11t.js";
|
|
15
|
+
import {
|
|
16
|
+
catchError
|
|
17
|
+
} from "./packager-tool-t7ahhaer.js";
|
|
16
18
|
import {
|
|
17
19
|
__commonJS,
|
|
18
20
|
__toESM
|
|
@@ -578,7 +580,7 @@ var package_default = {
|
|
|
578
580
|
name: "@uipath/solution-sdk",
|
|
579
581
|
author: "UiPath",
|
|
580
582
|
license: "SEE LICENSE IN LICENSE.txt",
|
|
581
|
-
version: "1.
|
|
583
|
+
version: "1.205.0-preview.256",
|
|
582
584
|
repository: {
|
|
583
585
|
type: "git",
|
|
584
586
|
url: "https://github.com/UiPath/cli.git",
|
|
@@ -607,6 +609,14 @@ var package_default = {
|
|
|
607
609
|
"./auth": {
|
|
608
610
|
types: "./dist/src/solution-auth.d.ts",
|
|
609
611
|
default: "./dist/solution-auth.js"
|
|
612
|
+
},
|
|
613
|
+
"./deployments": {
|
|
614
|
+
types: "./dist/src/deployment-search.d.ts",
|
|
615
|
+
default: "./dist/deployment-search.js"
|
|
616
|
+
},
|
|
617
|
+
"./packages": {
|
|
618
|
+
types: "./dist/src/package-search.d.ts",
|
|
619
|
+
default: "./dist/package-search.js"
|
|
610
620
|
}
|
|
611
621
|
},
|
|
612
622
|
bin: {
|
|
@@ -617,7 +627,7 @@ var package_default = {
|
|
|
617
627
|
],
|
|
618
628
|
private: false,
|
|
619
629
|
scripts: {
|
|
620
|
-
build: "bun build ./src/index.ts ./src/resources/index.ts ./src/solution-auth.ts --outdir dist --format esm --target node --splitting --sourcemap=linked && bun build ./src/scripts/generate-sdk.ts --outdir dist/scripts --format esm --target node --sourcemap=linked && tsc -p tsconfig.build.json --noCheck",
|
|
630
|
+
build: "bun build ./src/index.ts ./src/resources/index.ts ./src/solution-auth.ts ./src/deployment-search.ts ./src/package-search.ts --outdir dist --format esm --target node --splitting --sourcemap=linked && bun build ./src/scripts/generate-sdk.ts --outdir dist/scripts --format esm --target node --sourcemap=linked && tsc -p tsconfig.build.json --noCheck",
|
|
621
631
|
generate: "bun run src/scripts/generate-sdk.ts",
|
|
622
632
|
lint: "biome check .",
|
|
623
633
|
test: "vitest run",
|
|
@@ -629,7 +639,8 @@ var package_default = {
|
|
|
629
639
|
"@uipath/common": "workspace:*",
|
|
630
640
|
"@uipath/filesystem": "workspace:*",
|
|
631
641
|
"@uipath/orchestrator-sdk": "workspace:*",
|
|
632
|
-
"@uipath/
|
|
642
|
+
"@uipath/pipelines-sdk": "workspace:*",
|
|
643
|
+
"@uipath/resource-builder-sdk": "2025.11.0-alpha6584-4367",
|
|
633
644
|
"@uipath/solutionpackager-tool-core": "workspace:*",
|
|
634
645
|
"@uipath/studioweb-sdk": "workspace:*",
|
|
635
646
|
"@types/node": "^25.5.2",
|
|
@@ -4597,7 +4608,8 @@ var DEFAULT_EXCLUDED_DIR_NAMES = new Set([
|
|
|
4597
4608
|
"__pycache__",
|
|
4598
4609
|
".git",
|
|
4599
4610
|
".local",
|
|
4600
|
-
".flow-sdk"
|
|
4611
|
+
".flow-sdk",
|
|
4612
|
+
".flow-debug"
|
|
4601
4613
|
]);
|
|
4602
4614
|
var DEFAULT_EXCLUDED_FILE_PATTERNS = [
|
|
4603
4615
|
/^\.env($|\..+)/
|
|
@@ -5352,4 +5364,4 @@ async function uploadOrOverwriteSolution(config, organizationName, fileBufferOrP
|
|
|
5352
5364
|
}
|
|
5353
5365
|
export { BASE_PATH, Configuration, DefaultConfig, BaseAPI, ResponseError, FetchError, RequiredError, COLLECTION_FORMATS, querystring, exists, mapValues, canConsumeForm, JSONApiResponse, VoidApiResponse, BlobApiResponse, TextApiResponse, SDK_USER_AGENT, getAvailablePublishLocationsV2, instanceOfResponseDictionaryDto, ResponseDictionaryDtoFromJSON, ResponseDictionaryDtoFromJSONTyped, ResponseDictionaryDtoToJSON, ResponseDictionaryDtoToJSONTyped, instanceOfBlobFileAccessDto, BlobFileAccessDtoFromJSON, BlobFileAccessDtoFromJSONTyped, BlobFileAccessDtoToJSON, BlobFileAccessDtoToJSONTyped, instanceOfCreateConfigurationCommand, CreateConfigurationCommandFromJSON, CreateConfigurationCommandFromJSONTyped, CreateConfigurationCommandToJSON, CreateConfigurationCommandToJSONTyped, DeploymentActivationStatus, instanceOfDeploymentActivationStatus, DeploymentActivationStatusFromJSON, DeploymentActivationStatusFromJSONTyped, DeploymentActivationStatusToJSON, DeploymentActivationStatusToJSONTyped, OverwriteType, instanceOfOverwriteType, OverwriteTypeFromJSON, OverwriteTypeFromJSONTyped, OverwriteTypeToJSON, OverwriteTypeToJSONTyped, instanceOfOverwrite, OverwriteFromJSON, OverwriteFromJSONTyped, OverwriteToJSON, OverwriteToJSONTyped, instanceOfResourceOverwrite, ResourceOverwriteFromJSON, ResourceOverwriteFromJSONTyped, ResourceOverwriteToJSON, ResourceOverwriteToJSONTyped, instanceOfRuntimeSetup, RuntimeSetupFromJSON, RuntimeSetupFromJSONTyped, RuntimeSetupToJSON, RuntimeSetupToJSONTyped, instanceOfDeploymentAutoRequest, DeploymentAutoRequestFromJSON, DeploymentAutoRequestFromJSONTyped, DeploymentAutoRequestToJSON, DeploymentAutoRequestToJSONTyped, instanceOfDeploymentDto, DeploymentDtoFromJSON, DeploymentDtoFromJSONTyped, DeploymentDtoToJSON, DeploymentDtoToJSONTyped, WorkflowAction, instanceOfWorkflowAction, WorkflowActionFromJSON, WorkflowActionFromJSONTyped, WorkflowActionToJSON, WorkflowActionToJSONTyped, DeploymentOperation, instanceOfDeploymentOperation, DeploymentOperationFromJSON, DeploymentOperationFromJSONTyped, DeploymentOperationToJSON, DeploymentOperationToJSONTyped, PackageVersionOrigin, instanceOfPackageVersionOrigin, PackageVersionOriginFromJSON, PackageVersionOriginFromJSONTyped, PackageVersionOriginToJSON, PackageVersionOriginToJSONTyped, DeploymentOperationStatus, instanceOfDeploymentOperationStatus, DeploymentOperationStatusFromJSON, DeploymentOperationStatusFromJSONTyped, DeploymentOperationStatusToJSON, DeploymentOperationStatusToJSONTyped, DeploymentUpgradeType, instanceOfDeploymentUpgradeType, DeploymentUpgradeTypeFromJSON, DeploymentUpgradeTypeFromJSONTyped, DeploymentUpgradeTypeToJSON, DeploymentUpgradeTypeToJSONTyped, DeploymentStatus, instanceOfDeploymentStatus, DeploymentStatusFromJSON, DeploymentStatusFromJSONTyped, DeploymentStatusToJSON, DeploymentStatusToJSONTyped, instanceOfDeploymentItemDto, DeploymentItemDtoFromJSON, DeploymentItemDtoFromJSONTyped, DeploymentItemDtoToJSON, DeploymentItemDtoToJSONTyped, instanceOfDeploymentRequest, DeploymentRequestFromJSON, DeploymentRequestFromJSONTyped, DeploymentRequestToJSON, DeploymentRequestToJSONTyped, DeploymentResourceValidationAction, instanceOfDeploymentResourceValidationAction, DeploymentResourceValidationActionFromJSON, DeploymentResourceValidationActionFromJSONTyped, DeploymentResourceValidationActionToJSON, DeploymentResourceValidationActionToJSONTyped, ResetConfigurationSource, instanceOfResetConfigurationSource, ResetConfigurationSourceFromJSON, ResetConfigurationSourceFromJSONTyped, ResetConfigurationSourceToJSON, ResetConfigurationSourceToJSONTyped, DeploymentUpgradeState, instanceOfDeploymentUpgradeState, DeploymentUpgradeStateFromJSON, DeploymentUpgradeStateFromJSONTyped, DeploymentUpgradeStateToJSON, DeploymentUpgradeStateToJSONTyped, instanceOfDeploymentResourceReplacementDto, DeploymentResourceReplacementDtoFromJSON, DeploymentResourceReplacementDtoFromJSONTyped, DeploymentResourceReplacementDtoToJSON, DeploymentResourceReplacementDtoToJSONTyped, instanceOfFolderInfo, FolderInfoFromJSON, FolderInfoFromJSONTyped, FolderInfoToJSON, FolderInfoToJSONTyped, instanceOfDeploymentResourceInfo, DeploymentResourceInfoFromJSON, DeploymentResourceInfoFromJSONTyped, DeploymentResourceInfoToJSON, DeploymentResourceInfoToJSONTyped, DeploymentResourceValidationErrorKind, instanceOfDeploymentResourceValidationErrorKind, DeploymentResourceValidationErrorKindFromJSON, DeploymentResourceValidationErrorKindFromJSONTyped, DeploymentResourceValidationErrorKindToJSON, DeploymentResourceValidationErrorKindToJSONTyped, DeploymentResourceValidationErrorLevel, instanceOfDeploymentResourceValidationErrorLevel, DeploymentResourceValidationErrorLevelFromJSON, DeploymentResourceValidationErrorLevelFromJSONTyped, DeploymentResourceValidationErrorLevelToJSON, DeploymentResourceValidationErrorLevelToJSONTyped, DeploymentType, instanceOfDeploymentType, DeploymentTypeFromJSON, DeploymentTypeFromJSONTyped, DeploymentTypeToJSON, DeploymentTypeToJSONTyped, instanceOfDeploymentSearchItemDto2, DeploymentSearchItemDto2FromJSON, DeploymentSearchItemDto2FromJSONTyped, DeploymentSearchItemDto2ToJSON, DeploymentSearchItemDto2ToJSONTyped, instanceOfServiceMessage, ServiceMessageFromJSON, ServiceMessageFromJSONTyped, ServiceMessageToJSON, ServiceMessageToJSONTyped, instanceOfResourceValidationError, ResourceValidationErrorFromJSON, ResourceValidationErrorFromJSONTyped, ResourceValidationErrorToJSON, ResourceValidationErrorToJSONTyped, instanceOfResourceValidationDto, ResourceValidationDtoFromJSON, ResourceValidationDtoFromJSONTyped, ResourceValidationDtoToJSON, ResourceValidationDtoToJSONTyped, instanceOfDeploymentValidationResultDto, DeploymentValidationResultDtoFromJSON, DeploymentValidationResultDtoFromJSONTyped, DeploymentValidationResultDtoToJSON, DeploymentValidationResultDtoToJSONTyped, OrderByDirection, instanceOfOrderByDirection, OrderByDirectionFromJSON, OrderByDirectionFromJSONTyped, OrderByDirectionToJSON, OrderByDirectionToJSONTyped, instanceOfDeploymentsSearchRequest2, DeploymentsSearchRequest2FromJSON, DeploymentsSearchRequest2FromJSONTyped, DeploymentsSearchRequest2ToJSON, DeploymentsSearchRequest2ToJSONTyped, ExtendedPackageVersionState, instanceOfExtendedPackageVersionState, ExtendedPackageVersionStateFromJSON, ExtendedPackageVersionStateFromJSONTyped, ExtendedPackageVersionStateToJSON, ExtendedPackageVersionStateToJSONTyped, instanceOfLocationDto, LocationDtoFromJSON, LocationDtoFromJSONTyped, LocationDtoToJSON, LocationDtoToJSONTyped, instanceOfPackageInfo, PackageInfoFromJSON, PackageInfoFromJSONTyped, PackageInfoToJSON, PackageInfoToJSONTyped, instanceOfResourceStats, ResourceStatsFromJSON, ResourceStatsFromJSONTyped, ResourceStatsToJSON, ResourceStatsToJSONTyped, instanceOfPackageVersionResourceDto, PackageVersionResourceDtoFromJSON, PackageVersionResourceDtoFromJSONTyped, PackageVersionResourceDtoToJSON, PackageVersionResourceDtoToJSONTyped, instanceOfPackageVersionComponentsDto, PackageVersionComponentsDtoFromJSON, PackageVersionComponentsDtoFromJSONTyped, PackageVersionComponentsDtoToJSON, PackageVersionComponentsDtoToJSONTyped, instanceOfPackageVersionInfoDto, PackageVersionInfoDtoFromJSON, PackageVersionInfoDtoFromJSONTyped, PackageVersionInfoDtoToJSON, PackageVersionInfoDtoToJSONTyped, instanceOfPageInfoDtoOfDeploymentResourceInfo, PageInfoDtoOfDeploymentResourceInfoFromJSON, PageInfoDtoOfDeploymentResourceInfoFromJSONTyped, PageInfoDtoOfDeploymentResourceInfoToJSON, PageInfoDtoOfDeploymentResourceInfoToJSONTyped, instanceOfPageInfoDtoOfDeploymentSearchItemDto2, PageInfoDtoOfDeploymentSearchItemDto2FromJSON, PageInfoDtoOfDeploymentSearchItemDto2FromJSONTyped, PageInfoDtoOfDeploymentSearchItemDto2ToJSON, PageInfoDtoOfDeploymentSearchItemDto2ToJSONTyped, instanceOfPageInfoDtoOfPackageInfo, PageInfoDtoOfPackageInfoFromJSON, PageInfoDtoOfPackageInfoFromJSONTyped, PageInfoDtoOfPackageInfoToJSON, PageInfoDtoOfPackageInfoToJSONTyped, instanceOfProblemDetails, ProblemDetailsFromJSON, ProblemDetailsFromJSONTyped, ProblemDetailsToJSON, ProblemDetailsToJSONTyped, instanceOfProjectCreateRequest, ProjectCreateRequestFromJSON, ProjectCreateRequestFromJSONTyped, ProjectCreateRequestToJSON, ProjectCreateRequestToJSONTyped, ProjectImportStatus, instanceOfProjectImportStatus, ProjectImportStatusFromJSON, ProjectImportStatusFromJSONTyped, ProjectImportStatusToJSON, ProjectImportStatusToJSONTyped, instanceOfProjectDto, ProjectDtoFromJSON2 as ProjectDtoFromJSON, ProjectDtoFromJSONTyped3 as ProjectDtoFromJSONTyped, ProjectDtoToJSON2 as ProjectDtoToJSON, ProjectDtoToJSONTyped2 as ProjectDtoToJSONTyped, instanceOfSearchFilter, SearchFilterFromJSON, SearchFilterFromJSONTyped, SearchFilterToJSON, SearchFilterToJSONTyped, SolutionDeploymentAction, instanceOfSolutionDeploymentAction, SolutionDeploymentActionFromJSON, SolutionDeploymentActionFromJSONTyped, SolutionDeploymentActionToJSON, SolutionDeploymentActionToJSONTyped, ConfigurationsApi, DeploymentsApi, PackagesApi, ProjectsApi, SearchApi, SettingsApi, StudioWebIncompatibleProjectError, collectFiles, createZipFromDir, finalizeZip64, UipignoreExcludesProjectError, bundleSolution, buildSolutionPackageFromDir, isDebugProvisioningTerminal, isDebugProvisioningSucceeded, getProjectDebugStatus, searchPackageVersions, getStudioWebSolutionProjects, listStudioWebSolutions, SolutionUploadHttpError, isSolutionUploadHttpError, buildSolutionUploadFailureOutput, solutionExistsOnStudioWeb, importSolution, overwriteSolution, uploadOrOverwriteSolution };
|
|
5354
5366
|
|
|
5355
|
-
//# debugId=
|
|
5367
|
+
//# debugId=9AF8056E842A846764756E2164756E21
|