@uipath/flow-tool 1.203.0-preview.205 → 1.204.0-preview.206
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 +4 -0
- package/dist/THIRD-PARTY-NOTICES.md +237 -2
- package/dist/authoring-4kyzh1tf.js +23 -0
- package/dist/{binding-service-ft8mabkr.js → binding-service-815skxfx.js} +28 -30
- package/dist/{connector-service-qnpnwzpv.js → connector-service-xw4f8a7v.js} +34 -31
- package/dist/{conversion-FQTRFHRX-xh98wp2q.js → conversion-FQTRFHRX-1q7rk0te.js} +5 -5
- package/dist/{debug-conversation-trigger-fy19ygsm.js → debug-conversation-trigger-qdgvrekh.js} +14 -16
- package/dist/{debug-http-client-53qk6pc5.js → debug-http-client-s78gbtbn.js} +3 -3
- package/dist/{debug-service-nyk0s6mc.js → debug-service-0ppdzgzv.js} +4 -4
- package/dist/{edge-service-an71q4ry.js → edge-service-ttzfnxkf.js} +13 -14
- package/dist/{embedded-file-reader-0sjt4nkj.js → embedded-file-reader-v8c2yj2a.js} +2 -2
- package/dist/{flow-api-2phdajnk.js → flow-api-b7k5dtpm.js} +8 -8
- package/dist/{flow-debug-service-bnzgj53b.js → flow-debug-service-4we602jx.js} +38 -35
- package/dist/{flow-eval-node-target-2mjben3g.js → flow-eval-node-target-331vzbkw.js} +14 -15
- package/dist/{flow-eval-run-api-1bw5e0k4.js → flow-eval-run-api-yq18x5rb.js} +4 -4
- package/dist/{flow-eval-run-service-qv8j8fd1.js → flow-eval-run-service-36h1bnm8.js} +40 -37
- package/dist/{flow-eval-service-amd02ctw.js → flow-eval-service-ndtk9f9j.js} +19 -20
- package/dist/flow-init-sdk-source-9fy9p8ap.js +58 -0
- package/dist/{flow-init-service-rnygj5f8.js → flow-init-service-kwhbdtpc.js} +19 -18
- package/dist/{flow-io-hddhkve5.js → flow-io-pt392xct.js} +13 -14
- package/dist/{flow-migrate-service-e3hm99gp.js → flow-migrate-service-xvz8pbmp.js} +14 -15
- package/dist/{flow-pack-service-g8jebcts.js → flow-pack-service-wg1kt2bt.js} +72 -39
- package/dist/flow-validate-service-xbhrj47n.js +64 -0
- package/dist/{governance-fetcher-cswx2cw7.js → governance-fetcher-5yy89pfd.js} +6 -5
- package/dist/{headless-mmnrkzve.js → headless-1pdmae01.js} +2 -2
- package/dist/{hitl-service-a4fmjrzh.js → hitl-service-q2d39v5s.js} +13 -14
- package/dist/{index-3ts7y9d3.js → index-2s8rmmw6.js} +5 -3
- package/dist/index-3jpjaq1g.js +26 -0
- package/dist/{index-t5zedby6.js → index-41vyzws2.js} +59 -27
- package/dist/{index-b46bavh7.js → index-5yw15y73.js} +2 -2
- package/dist/{index-212q16sv.js → index-7qw3ttge.js} +416 -87
- package/dist/{index-t8e0ft8r.js → index-c1q6mnw1.js} +3 -3
- package/dist/{index-xa7gm52r.js → index-dqqg54v6.js} +601 -61
- package/dist/index.js +10 -10
- package/dist/init.d.ts +1 -1
- package/dist/init.js +19 -18
- package/dist/{input-reader-tw0j373f.js → input-reader-bv7kt19c.js} +2 -2
- package/dist/{known-types-b64as10y.js → known-types-jhyhnkt6.js} +4 -4
- package/dist/{maestro-automate-entry-pqy9xqm3.js → maestro-automate-entry-qak46eg0.js} +2 -2
- package/dist/node-2whm5wkf.js +4823 -0
- package/dist/{node-service-qnny15cm.js → node-service-js01ft95.js} +31 -30
- package/dist/{node-strategy-gc4sg6a2.js → node-strategy-fdnkvq4a.js} +1 -1
- package/dist/{node-sync-service-f1x1ak6q.js → node-sync-service-pb3m4dp2.js} +9 -9
- package/dist/{packager-tool-et7wj8kr.js → packager-tool-0w4es6rz.js} +2 -2
- package/dist/{packager-tool-dph5p2f5.js → packager-tool-1mnq1c97.js} +1 -1
- package/dist/packager-tool-225z77w9.js +52 -0
- package/dist/{packager-tool-de2txaxx.js → packager-tool-2hzsf1rc.js} +5 -5
- package/dist/{packager-tool-vbser1d9.js → packager-tool-2qr8z5ke.js} +4 -4
- package/dist/{packager-tool-0egkaa38.js → packager-tool-32czz9mq.js} +2 -2
- package/dist/{packager-tool-0v3s8r01.js → packager-tool-3h2ktz6q.js} +2 -2
- package/dist/{packager-tool-h9d8c9rf.js → packager-tool-4zdhy0c3.js} +2 -2
- package/dist/{packager-tool-afd1wwf2.js → packager-tool-53c81nnr.js} +440 -29
- package/dist/{packager-tool-2c688mdj.js → packager-tool-57fak54h.js} +4 -4
- package/dist/{packager-tool-qa2xzxez.js → packager-tool-59s95scr.js} +1 -1
- package/dist/{packager-tool-n8p9cay6.js → packager-tool-6azk3rex.js} +1 -1
- package/dist/{packager-tool-26ydwf12.js → packager-tool-6h69pd2a.js} +23 -8
- package/dist/{packager-tool-mnrbdn6a.js → packager-tool-6scjsgh6.js} +55 -17
- package/dist/{packager-tool-xzf4xc65.js → packager-tool-70cta0be.js} +4 -4
- package/dist/{packager-tool-tw3j5h3z.js → packager-tool-8hj7w7em.js} +5 -5
- package/dist/{packager-tool-795gzq9k.js → packager-tool-8pmgk4f6.js} +1 -1
- package/dist/{packager-tool-321a1806.js → packager-tool-8vmx4j2w.js} +1 -1
- package/dist/{packager-tool-cnftzx4c.js → packager-tool-a6ph7149.js} +40 -11
- package/dist/{packager-tool-s0mzv3sx.js → packager-tool-aw60v0et.js} +1 -1
- package/dist/{packager-tool-e89k4pjj.js → packager-tool-c0rtxezv.js} +1 -1
- package/dist/{packager-tool-1w4f09cq.js → packager-tool-d0ny3x3b.js} +141 -96
- package/dist/{packager-tool-gzpvdcnw.js → packager-tool-da1cmt0q.js} +2 -2
- package/dist/{packager-tool-p8j4zvrq.js → packager-tool-dp8vjby4.js} +4829 -1364
- package/dist/packager-tool-e5hj89zm.js +6 -0
- package/dist/{packager-tool-fwp34rqp.js → packager-tool-ev80vk13.js} +8 -8
- package/dist/{packager-tool-gctpkdzs.js → packager-tool-hhy1gr2k.js} +1 -1
- package/dist/{packager-tool-sf9f6jft.js → packager-tool-hygq2wy6.js} +1 -1
- package/dist/{packager-tool-0v3tzseq.js → packager-tool-jeb6xmgw.js} +2 -2
- package/dist/packager-tool-krzxg3ga.js +804 -0
- package/dist/{packager-tool-1r5dnt9q.js → packager-tool-mv4jav1h.js} +1 -1
- package/dist/{packager-tool-pppzgwfw.js → packager-tool-n4vdjmjx.js} +18079 -18079
- package/dist/{packager-tool-t9c77psy.js → packager-tool-p1tb6d4f.js} +955 -150
- package/dist/{packager-tool-gs28y1eq.js → packager-tool-qhhrq12s.js} +2 -2
- package/dist/{packager-tool-6k8s7pt9.js → packager-tool-r7xy9sew.js} +1090 -545
- package/dist/{packager-tool-b1xs6aty.js → packager-tool-stq8800d.js} +902 -897
- package/dist/{packager-tool-61r38k4d.js → packager-tool-t57d6pzz.js} +320 -200
- package/dist/{packager-tool-a7t9v5ss.js → packager-tool-v9v9ch04.js} +2 -2
- package/dist/{packager-tool-cdn59g60.js → packager-tool-ve5t7317.js} +2 -2
- package/dist/{packager-tool-yxv9mm8s.js → packager-tool-vtaqtf7f.js} +10 -10
- package/dist/{packager-tool-t39edv0g.js → packager-tool-w3dy6vnj.js} +184 -193
- package/dist/{packager-tool-9kx94sj5.js → packager-tool-x5qafkb7.js} +2 -2
- package/dist/{packager-tool-s841bbkr.js → packager-tool-yednpbbw.js} +2 -2
- package/dist/{packager-tool-yxnepq2j.js → packager-tool-ysbskrta.js} +1 -1
- package/dist/packager-tool-zgsvggdr.js +50 -0
- package/dist/packager-tool.js +12 -13
- package/dist/{serialization-BXU6AKAN-rhgmwp06.js → serialization-BXU6AKAN-c2ge8yvb.js} +5 -5
- package/dist/services/flow-init-sdk-source.d.ts +28 -0
- package/dist/services/flow-init-service.d.ts +25 -0
- package/dist/services/inline-activity-service.d.ts +135 -0
- package/dist/services/node-service.d.ts +14 -0
- package/dist/services/node-validators/index.d.ts +2 -0
- package/dist/services/node-validators/inline-activity-validator.d.ts +18 -0
- package/dist/services/node-validators/types.d.ts +6 -0
- package/dist/services/node-validators/unresolved-binding-placeholder-validator.d.ts +2 -0
- package/dist/services/preview-id-rule.d.ts +33 -0
- package/dist/services/ui-only-node-types.d.ts +1 -0
- package/dist/{shared-utils-wv356cvj.js → shared-utils-9vfmrxtx.js} +2 -2
- package/dist/{packager-tool-es0a755k.js → tidy-service-q2wwwans.js} +33 -7
- package/dist/tool.js +10 -10
- package/dist/utils/flow-io.d.ts +3 -16
- package/dist/validation.js +35 -36
- package/dist/{variable-service-bc7920kx.js → variable-service-nm9fdwsw.js} +13 -14
- package/dist/{wait-for-flow-job-v0njb0dk.js → wait-for-flow-job-yzyamptd.js} +8 -8
- package/package.json +2 -2
- package/dist/authoring-tv4dh80p.js +0 -360
- package/dist/flow-validate-service-x9dtdrc7.js +0 -65
- package/dist/node-xdgxafqs.js +0 -15600
- package/dist/packager-tool-2513jrxr.js +0 -898
- package/dist/packager-tool-5kt8tsq4.js +0 -85
- package/dist/packager-tool-w0kr4mbc.js +0 -996
- package/dist/services/tidy-service.d.ts +0 -26
- package/dist/tidy-service-8y2tjmb5.js +0 -39
- /package/dist/{localization-y790z9vm.js → localization-xecwjpe2.js} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
inMemoryWorkflowToFileFormat
|
|
3
|
-
} from "./packager-tool-
|
|
3
|
+
} from "./packager-tool-ysbskrta.js";
|
|
4
4
|
import {
|
|
5
5
|
logger
|
|
6
|
-
} from "./packager-tool-
|
|
6
|
+
} from "./packager-tool-r7xy9sew.js";
|
|
7
7
|
|
|
8
8
|
// src/utils/write-resolved-flow.ts
|
|
9
9
|
async function writeResolvedFlow(fs, dir, name, workflow) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
validateIntSvcNode
|
|
3
|
-
} from "./packager-tool-
|
|
3
|
+
} from "./packager-tool-ev80vk13.js";
|
|
4
4
|
import {
|
|
5
5
|
catchError
|
|
6
|
-
} from "./packager-tool-
|
|
6
|
+
} from "./packager-tool-r7xy9sew.js";
|
|
7
7
|
|
|
8
8
|
// src/services/connector-node-types.ts
|
|
9
9
|
function isConnectorTriggerType(nodeType) {
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveJsonInput
|
|
3
|
-
} from "./packager-tool-
|
|
3
|
+
} from "./packager-tool-4zdhy0c3.js";
|
|
4
4
|
import {
|
|
5
5
|
DEBUG_MODE_MAP,
|
|
6
6
|
SIMULATION_MODE_MAP,
|
|
7
7
|
beginDebugSession,
|
|
8
8
|
createDebugInstance,
|
|
9
9
|
getPersonalFolderKey
|
|
10
|
-
} from "./packager-tool-
|
|
10
|
+
} from "./packager-tool-x5qafkb7.js";
|
|
11
11
|
import {
|
|
12
12
|
debugPimsGet,
|
|
13
13
|
debugPimsPatch,
|
|
14
14
|
debugPimsPost,
|
|
15
15
|
debugPimsPut
|
|
16
|
-
} from "./packager-tool-
|
|
16
|
+
} from "./packager-tool-aw60v0et.js";
|
|
17
17
|
import {
|
|
18
18
|
getAuthContext,
|
|
19
19
|
getLoginStatusAsync
|
|
20
|
-
} from "./packager-tool-
|
|
20
|
+
} from "./packager-tool-6h69pd2a.js";
|
|
21
21
|
import {
|
|
22
22
|
DEFAULT_PAGE_SIZE,
|
|
23
23
|
EXIT_CODES,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
parseLimit,
|
|
34
34
|
parseOffset,
|
|
35
35
|
processContext
|
|
36
|
-
} from "./packager-tool-
|
|
36
|
+
} from "./packager-tool-r7xy9sew.js";
|
|
37
37
|
import {
|
|
38
38
|
__require
|
|
39
39
|
} from "./packager-tool-1yh8g550.js";
|
|
@@ -308,7 +308,7 @@ function flattenNodeWithAvailability(n, availableOnTenant) {
|
|
|
308
308
|
};
|
|
309
309
|
}
|
|
310
310
|
async function mergeWithKnownSdkNodes(tenantNodes) {
|
|
311
|
-
const { listKnownSdkNodes } = await import("./known-types-
|
|
311
|
+
const { listKnownSdkNodes } = await import("./known-types-jhyhnkt6.js");
|
|
312
312
|
const tenantTypes = new Set(tenantNodes.map((n) => n.nodeType?.toLowerCase()).filter((t) => typeof t === "string"));
|
|
313
313
|
const merged = tenantNodes.map((node) => ({ node, availableOnTenant: true }));
|
|
314
314
|
for (const known of listKnownSdkNodes()) {
|
|
@@ -429,7 +429,7 @@ Subcommands:
|
|
|
429
429
|
}
|
|
430
430
|
];
|
|
431
431
|
registry.command("pull").description(`Pull and sync node data from ${commandPrefix} registry (login first for full registry)`).option("-f, --force", "Force refresh, ignore cache").examples(pullExamples).trackedAction(processContext, async (options) => {
|
|
432
|
-
const { pullNodes } = await import("./node-sync-service-
|
|
432
|
+
const { pullNodes } = await import("./node-sync-service-pb3m4dp2.js");
|
|
433
433
|
const [error, result] = await catchError(pullNodes({
|
|
434
434
|
force: options.force
|
|
435
435
|
}));
|
|
@@ -475,7 +475,7 @@ In-solution (--local):
|
|
|
475
475
|
processContext.exit(1);
|
|
476
476
|
return;
|
|
477
477
|
}
|
|
478
|
-
const { listNodes } = await import("./node-sync-service-
|
|
478
|
+
const { listNodes } = await import("./node-sync-service-pb3m4dp2.js");
|
|
479
479
|
const [error, tenantNodes] = await catchError(listNodes({ local: options.local }));
|
|
480
480
|
if (error) {
|
|
481
481
|
OutputFormatter.error({
|
|
@@ -583,7 +583,7 @@ In-solution (--local):
|
|
|
583
583
|
searchNodeSummariesWithAvailability,
|
|
584
584
|
searchNodes,
|
|
585
585
|
searchNodesWithFilters
|
|
586
|
-
} = await import("./node-sync-service-
|
|
586
|
+
} = await import("./node-sync-service-pb3m4dp2.js");
|
|
587
587
|
if (options.local) {
|
|
588
588
|
const [searchError2, results2] = await catchError(parsedFilters ? searchNodesWithFilters(keyword, parsedFilters, {
|
|
589
589
|
local: true
|
|
@@ -643,7 +643,7 @@ Examples:
|
|
|
643
643
|
|
|
644
644
|
In-solution (--local):
|
|
645
645
|
cd MySolution/MyFlow && ${cmd} get <node-type> --local`).argument("<node-type>", `Node type identifier — get it from '${cmd} search'`).option("--connection-id <id>", "Connection ID for Integration Service connector node enrichment. Required for connector trigger nodes; optional for connector activity nodes.").option("--local", "Get node from in-solution projects only (requires .uipx in CWD, parent, or grandparent)").examples(getExamples).trackedAction(processContext, async (nodeType, options) => {
|
|
646
|
-
const { getNodeEnriched } = await import("./node-sync-service-
|
|
646
|
+
const { getNodeEnriched } = await import("./node-sync-service-pb3m4dp2.js");
|
|
647
647
|
const [error, result] = await catchError(getNodeEnriched(nodeType, options.connectionId, {
|
|
648
648
|
local: options.local
|
|
649
649
|
}));
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
UI_ONLY_NODE_TYPES
|
|
3
|
-
} from "./packager-tool-es0a755k.js";
|
|
4
|
-
import {
|
|
5
|
-
checkForwardMigration
|
|
6
|
-
} from "./packager-tool-s841bbkr.js";
|
|
7
1
|
import {
|
|
8
2
|
connectorNodeValidator,
|
|
9
3
|
crossNodeBindingValidator,
|
|
@@ -11,7 +5,10 @@ import {
|
|
|
11
5
|
isConnectorWaitForEventType,
|
|
12
6
|
isEventDrivenConnectorType,
|
|
13
7
|
readEssentialConfiguration
|
|
14
|
-
} from "./packager-tool-
|
|
8
|
+
} from "./packager-tool-ve5t7317.js";
|
|
9
|
+
import {
|
|
10
|
+
checkForwardMigration
|
|
11
|
+
} from "./packager-tool-yednpbbw.js";
|
|
15
12
|
import {
|
|
16
13
|
ERROR_SOURCE_PORT,
|
|
17
14
|
deriveHandleCustomizationSourceOverride,
|
|
@@ -22,73 +19,78 @@ import {
|
|
|
22
19
|
parseVisibleInputKey,
|
|
23
20
|
portMatchesTemplate
|
|
24
21
|
} from "./packager-tool-1frs4sr4.js";
|
|
22
|
+
import {
|
|
23
|
+
previewIdIssues
|
|
24
|
+
} from "./packager-tool-zgsvggdr.js";
|
|
25
|
+
import {
|
|
26
|
+
UI_ONLY_NODE_TYPES
|
|
27
|
+
} from "./packager-tool-e5hj89zm.js";
|
|
25
28
|
import {
|
|
26
29
|
collectNodeBindingResourceKeys,
|
|
27
30
|
isProcessNode,
|
|
28
31
|
resolveProcessTarget
|
|
29
|
-
} from "./packager-tool-
|
|
32
|
+
} from "./packager-tool-6scjsgh6.js";
|
|
30
33
|
import {
|
|
34
|
+
INLINE_ACTIVITY_SOURCE,
|
|
35
|
+
INLINE_ACTIVITY_TYPE_PREFIX,
|
|
36
|
+
collectScriptRefs,
|
|
37
|
+
getInlineActivityConfiguration,
|
|
31
38
|
loadRegistry,
|
|
32
39
|
parse
|
|
33
|
-
} from "./packager-tool-
|
|
40
|
+
} from "./packager-tool-p1tb6d4f.js";
|
|
34
41
|
import {
|
|
35
42
|
isRecord
|
|
36
|
-
} from "./packager-tool-
|
|
43
|
+
} from "./packager-tool-da1cmt0q.js";
|
|
37
44
|
import {
|
|
38
45
|
findNodeDefinition
|
|
39
46
|
} from "./packager-tool-w5a1hhyj.js";
|
|
40
47
|
import {
|
|
41
48
|
getLoginStatusAsync
|
|
42
|
-
} from "./packager-tool-
|
|
49
|
+
} from "./packager-tool-6h69pd2a.js";
|
|
43
50
|
import {
|
|
44
51
|
findNearestParentUipxFile,
|
|
45
52
|
readSolutionManifest
|
|
46
|
-
} from "./packager-tool-
|
|
53
|
+
} from "./packager-tool-8vmx4j2w.js";
|
|
47
54
|
import {
|
|
48
55
|
ManifestClient,
|
|
49
56
|
buildErrorHandle
|
|
50
|
-
} from "./packager-tool-
|
|
57
|
+
} from "./packager-tool-qhhrq12s.js";
|
|
51
58
|
import {
|
|
52
59
|
resolveProjectFlowFile
|
|
53
|
-
} from "./packager-tool-
|
|
60
|
+
} from "./packager-tool-225z77w9.js";
|
|
54
61
|
import {
|
|
55
62
|
canonicalAgentInputPath,
|
|
56
63
|
collectAgentInputLeaves,
|
|
57
64
|
createFlowRefResolver,
|
|
58
|
-
|
|
59
|
-
|
|
65
|
+
hydrateAgentNodeInputs,
|
|
66
|
+
inlineFlowRefs,
|
|
67
|
+
parseFlowSource,
|
|
68
|
+
resolveWorkflowRefs,
|
|
69
|
+
runDesignerRules
|
|
70
|
+
} from "./packager-tool-53c81nnr.js";
|
|
60
71
|
import {
|
|
61
72
|
AGENT_NODE_TYPES,
|
|
62
73
|
DECISION_NODE_TYPE,
|
|
63
74
|
SYNTHETIC_GATEWAY_OUTPUT_KEYS,
|
|
64
|
-
cliRules,
|
|
65
|
-
conditionExpressionRule,
|
|
66
75
|
decodeLiteral,
|
|
67
76
|
getJsExpressionBody,
|
|
68
|
-
isBlockingSeverity,
|
|
69
77
|
isExpressionValue,
|
|
70
78
|
isStartEventNode,
|
|
71
|
-
isVoiceAgentNodeType
|
|
72
|
-
|
|
73
|
-
runRules,
|
|
74
|
-
toSerializedNodes
|
|
75
|
-
} from "./packager-tool-yxnepq2j.js";
|
|
76
|
-
import {
|
|
77
|
-
registerFlowSchemaI18n
|
|
78
|
-
} from "./packager-tool-p79yh9ww.js";
|
|
79
|
+
isVoiceAgentNodeType
|
|
80
|
+
} from "./packager-tool-ysbskrta.js";
|
|
79
81
|
import {
|
|
80
82
|
instance
|
|
81
|
-
} from "./packager-tool-
|
|
83
|
+
} from "./packager-tool-n4vdjmjx.js";
|
|
82
84
|
import {
|
|
83
85
|
OutputFormatter,
|
|
84
86
|
RESULTS,
|
|
85
87
|
catchError,
|
|
86
88
|
extractErrorMessageSync,
|
|
87
89
|
logger
|
|
88
|
-
} from "./packager-tool-
|
|
90
|
+
} from "./packager-tool-r7xy9sew.js";
|
|
89
91
|
import {
|
|
90
92
|
getFileSystem
|
|
91
|
-
} from "./packager-tool-
|
|
93
|
+
} from "./packager-tool-3h2ktz6q.js";
|
|
92
94
|
import {
|
|
93
95
|
__require
|
|
94
96
|
} from "./packager-tool-1yh8g550.js";
|
|
@@ -390,7 +392,7 @@ async function ensureCatalogRegistered() {
|
|
|
390
392
|
if (catalogRegistered || !instance.isInitialized)
|
|
391
393
|
return;
|
|
392
394
|
try {
|
|
393
|
-
const { registerFlowExpressionModelI18n } = await import("./localization-
|
|
395
|
+
const { registerFlowExpressionModelI18n } = await import("./localization-xecwjpe2.js");
|
|
394
396
|
registerFlowExpressionModelI18n(instance);
|
|
395
397
|
} catch (error) {
|
|
396
398
|
logger.warn(`Expression type checking localization unavailable, falling back to English: ${extractErrorMessageSync(error)}`);
|
|
@@ -399,7 +401,7 @@ async function ensureCatalogRegistered() {
|
|
|
399
401
|
}
|
|
400
402
|
var headlessModule;
|
|
401
403
|
function loadHeadless() {
|
|
402
|
-
headlessModule ??= import("./headless-
|
|
404
|
+
headlessModule ??= import("./headless-1pdmae01.js").then((mod) => {
|
|
403
405
|
logger.info(`Expression type checking: @uipath/flow-expression-model (TypeScript ${mod.HEADLESS_TYPESCRIPT_VERSION})`);
|
|
404
406
|
return mod;
|
|
405
407
|
}).catch((error) => {
|
|
@@ -825,6 +827,68 @@ function scanForUnprefixedExpressions(obj, path, issues) {
|
|
|
825
827
|
}
|
|
826
828
|
}
|
|
827
829
|
|
|
830
|
+
// src/services/node-validators/inline-activity-validator.ts
|
|
831
|
+
var inlineActivityValidator = {
|
|
832
|
+
id: "inline-activity",
|
|
833
|
+
appliesTo: (node) => node.type.startsWith(INLINE_ACTIVITY_TYPE_PREFIX) || getInlineActivityConfiguration(node) !== undefined,
|
|
834
|
+
validate: (node) => {
|
|
835
|
+
const issue = (path, message) => ({
|
|
836
|
+
path: `nodes[${node.id}].${path}`,
|
|
837
|
+
severity: "error",
|
|
838
|
+
message
|
|
839
|
+
});
|
|
840
|
+
const isInlineType = node.type.startsWith(INLINE_ACTIVITY_TYPE_PREFIX);
|
|
841
|
+
const config = getInlineActivityConfiguration(node);
|
|
842
|
+
if (!config) {
|
|
843
|
+
return [
|
|
844
|
+
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 node add <file> <type> --metadata <Name>.json --scripts <dir>`.")
|
|
845
|
+
];
|
|
846
|
+
}
|
|
847
|
+
if (!isInlineType) {
|
|
848
|
+
return [
|
|
849
|
+
issue("type", `Node \`${node.id}\` carries \`inputs.inlineActivityConfiguration\` but its type \`${node.type}\` is not a non-catalog activity type (\`${INLINE_ACTIVITY_TYPE_PREFIX}<connector-key>.<slug>\`).`)
|
|
850
|
+
];
|
|
851
|
+
}
|
|
852
|
+
const issues = [];
|
|
853
|
+
const scripts = config.scripts && typeof config.scripts === "object" ? config.scripts : {};
|
|
854
|
+
const hasScript = (ref) => typeof scripts[ref] === "string" && scripts[ref].length > 0;
|
|
855
|
+
const scriptRef = typeof config.scriptRef === "string" ? config.scriptRef : "";
|
|
856
|
+
if (!scriptRef) {
|
|
857
|
+
issues.push(issue("inputs.inlineActivityConfiguration.scriptRef", "`scriptRef` is missing — it must name the main action script."));
|
|
858
|
+
} else if (!hasScript(scriptRef)) {
|
|
859
|
+
issues.push(issue(`inputs.inlineActivityConfiguration.scripts.${scriptRef}`, `The main action script \`${scriptRef}\` has no source under \`scripts\`.`));
|
|
860
|
+
}
|
|
861
|
+
const missingLookups = collectLookupRefs(config.metadata).filter((ref) => !hasScript(ref));
|
|
862
|
+
if (missingLookups.length > 0) {
|
|
863
|
+
issues.push(issue("inputs.inlineActivityConfiguration.scripts", `Lookup script(s) referenced by the metadata have no source under \`scripts\`: ${missingLookups.join(", ")}. ` + "Re-add the node with a --scripts directory that holds every <scriptRef>.js."));
|
|
864
|
+
}
|
|
865
|
+
const detail = node.inputs?.detail;
|
|
866
|
+
const context = detail && typeof detail === "object" ? detail.activityContext : undefined;
|
|
867
|
+
if (context && typeof context === "object") {
|
|
868
|
+
const ac = context;
|
|
869
|
+
if (ac.source !== INLINE_ACTIVITY_SOURCE) {
|
|
870
|
+
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 node configure\`.`));
|
|
871
|
+
}
|
|
872
|
+
if (scriptRef && ac.scriptRef !== scriptRef) {
|
|
873
|
+
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 node configure\`.`));
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
return issues;
|
|
877
|
+
}
|
|
878
|
+
};
|
|
879
|
+
function collectLookupRefs(metadata) {
|
|
880
|
+
if (!metadata || typeof metadata !== "object")
|
|
881
|
+
return [];
|
|
882
|
+
const slots = metadata.metadata?.method;
|
|
883
|
+
if (!slots || typeof slots !== "object")
|
|
884
|
+
return [];
|
|
885
|
+
try {
|
|
886
|
+
return collectScriptRefs(metadata).lookups;
|
|
887
|
+
} catch {
|
|
888
|
+
return [];
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
|
|
828
892
|
// src/services/node-validators/ixp-node-validator.ts
|
|
829
893
|
var FORBIDDEN_INPUT_FIELDS = [
|
|
830
894
|
"digitizationMode",
|
|
@@ -1049,6 +1113,73 @@ function readLegacyModelSource(node) {
|
|
|
1049
1113
|
return;
|
|
1050
1114
|
}
|
|
1051
1115
|
|
|
1116
|
+
// src/services/node-validators/unresolved-binding-placeholder-validator.ts
|
|
1117
|
+
var PLACEHOLDER_RE = /^<bindings\.(.+)>$/;
|
|
1118
|
+
var asKey = (value) => typeof value === "string" && value ? value : undefined;
|
|
1119
|
+
var isConnection = (resource) => resource === undefined || resource.toLowerCase() === "connection";
|
|
1120
|
+
function instanceKey(resource, inputs) {
|
|
1121
|
+
if (isConnection(resource)) {
|
|
1122
|
+
const detail = inputs?.detail;
|
|
1123
|
+
return asKey(detail?.connectionResourceId) ?? asKey(inputs?.connectionId);
|
|
1124
|
+
}
|
|
1125
|
+
if (resource === "queue") {
|
|
1126
|
+
const queue = inputs?.queue;
|
|
1127
|
+
if (!queue || typeof queue !== "object")
|
|
1128
|
+
return;
|
|
1129
|
+
return asKey(queue.folderPath ? queue.key : queue.name);
|
|
1130
|
+
}
|
|
1131
|
+
if (resource === "ixpDeployment") {
|
|
1132
|
+
const model = inputs?.model;
|
|
1133
|
+
return model && typeof model === "object" ? asKey(model.id) : undefined;
|
|
1134
|
+
}
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
function matches(name, rows, scope, resource, sameResource) {
|
|
1138
|
+
const candidates = resource ? rows.filter((b) => sameResource(b.resource, resource)) : rows;
|
|
1139
|
+
return candidates.some((b) => b.name === name && (!scope || b.resourceKey === scope));
|
|
1140
|
+
}
|
|
1141
|
+
var exact = (a, b) => a === b;
|
|
1142
|
+
var folded = (a, b) => (a ?? "").toLowerCase() === (b ?? "").toLowerCase();
|
|
1143
|
+
var unresolvedBindingPlaceholderValidator = {
|
|
1144
|
+
id: "unresolved-binding-placeholder",
|
|
1145
|
+
appliesTo: () => true,
|
|
1146
|
+
validate: (node, context) => {
|
|
1147
|
+
const definition = findNodeDefinition(context.definitions, node);
|
|
1148
|
+
const model = definition?.model;
|
|
1149
|
+
if (!Array.isArray(model?.context))
|
|
1150
|
+
return [];
|
|
1151
|
+
const rows = context.bindings ?? [];
|
|
1152
|
+
const resource = model.bindings?.resource;
|
|
1153
|
+
const scope = instanceKey(resource, node.inputs) ?? asKey(model.bindings?.resourceKey);
|
|
1154
|
+
const severity = context.strictBindings ? "error" : "warning";
|
|
1155
|
+
const issues = [];
|
|
1156
|
+
for (const entry of model.context) {
|
|
1157
|
+
const name = typeof entry.value === "string" ? PLACEHOLDER_RE.exec(entry.value)?.[1] : undefined;
|
|
1158
|
+
if (!name)
|
|
1159
|
+
continue;
|
|
1160
|
+
if (matches(name, rows, scope, resource, exact))
|
|
1161
|
+
continue;
|
|
1162
|
+
const casingOnly = resource !== undefined && matches(name, rows, scope, resource, folded);
|
|
1163
|
+
let message;
|
|
1164
|
+
if (casingOnly) {
|
|
1165
|
+
const rowCasings = [
|
|
1166
|
+
...new Set(rows.filter((b) => b.name === name && b.resource !== resource && folded(b.resource, resource)).map((b) => `"${b.resource}"`))
|
|
1167
|
+
].join(", ");
|
|
1168
|
+
const canonical = isConnection(resource) ? ' Canonical casing is "connection" — correct whichever side differs.' : " Align the two casings.";
|
|
1169
|
+
message = `[UNRESOLVED_BINDING] Node "${node.id}": placeholder "<bindings.${name}>" matches a binding only case-insensitively — the definition "${node.type}" declares model.bindings.resource "${resource}" but the matching bindings[] rows declare ${rowCasings}. Studio Web compares these exactly and refuses to publish ("${name}" is not configured).${canonical}`;
|
|
1170
|
+
} else {
|
|
1171
|
+
message = `[UNRESOLVED_BINDING] Node "${node.id}": placeholder "<bindings.${name}>" has no matching entry in the flow's bindings[] (need name "${name}"${resource ? `, resource "${resource}"` : ""}${scope ? `, resourceKey "${scope}"` : ""}). Studio Web refuses to publish ("${name}" is not configured) and the runtime would receive the literal placeholder. Re-bind the node's connection/resource so its bindings[] rows are written.`;
|
|
1172
|
+
}
|
|
1173
|
+
issues.push({
|
|
1174
|
+
path: `nodes[${node.id}].model.context`,
|
|
1175
|
+
message,
|
|
1176
|
+
severity
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
return issues;
|
|
1180
|
+
}
|
|
1181
|
+
};
|
|
1182
|
+
|
|
1052
1183
|
// src/services/node-validators/index.ts
|
|
1053
1184
|
var defaultNodeValidators = [
|
|
1054
1185
|
activityTypeIdValidator,
|
|
@@ -1056,9 +1187,11 @@ var defaultNodeValidators = [
|
|
|
1056
1187
|
connectorNodeValidator,
|
|
1057
1188
|
crossNodeBindingValidator,
|
|
1058
1189
|
expressionPrefixValidator,
|
|
1190
|
+
inlineActivityValidator,
|
|
1059
1191
|
jsExpressionSyntaxValidator,
|
|
1060
1192
|
ixpNodeValidator,
|
|
1061
|
-
modelSourceValidator
|
|
1193
|
+
modelSourceValidator,
|
|
1194
|
+
unresolvedBindingPlaceholderValidator
|
|
1062
1195
|
];
|
|
1063
1196
|
|
|
1064
1197
|
// src/services/vars-reference-rule.ts
|
|
@@ -1799,16 +1932,6 @@ function validateVarsReferences(flow, options = {}) {
|
|
|
1799
1932
|
}
|
|
1800
1933
|
|
|
1801
1934
|
// src/services/flow-validate-service.ts
|
|
1802
|
-
if (!instance.isInitialized) {
|
|
1803
|
-
instance.init({
|
|
1804
|
-
lng: "en",
|
|
1805
|
-
fallbackLng: "en",
|
|
1806
|
-
defaultNS: "validation",
|
|
1807
|
-
resources: {},
|
|
1808
|
-
interpolation: { escapeValue: false }
|
|
1809
|
-
});
|
|
1810
|
-
}
|
|
1811
|
-
registerFlowSchemaI18n(instance);
|
|
1812
1935
|
function extractPromptVariables(content) {
|
|
1813
1936
|
const vars = new Set;
|
|
1814
1937
|
const re = /\{\{([^}]*)\}\}/g;
|
|
@@ -1913,29 +2036,6 @@ function collectNodeExpressionStrings(nodes) {
|
|
|
1913
2036
|
}
|
|
1914
2037
|
return expressions;
|
|
1915
2038
|
}
|
|
1916
|
-
function extractSupportsErrorHandling(content) {
|
|
1917
|
-
const map = new Map;
|
|
1918
|
-
let raw;
|
|
1919
|
-
try {
|
|
1920
|
-
raw = JSON.parse(content);
|
|
1921
|
-
} catch {
|
|
1922
|
-
return map;
|
|
1923
|
-
}
|
|
1924
|
-
if (!raw || typeof raw !== "object")
|
|
1925
|
-
return map;
|
|
1926
|
-
const defs = raw.definitions;
|
|
1927
|
-
if (!Array.isArray(defs))
|
|
1928
|
-
return map;
|
|
1929
|
-
for (const def of defs) {
|
|
1930
|
-
if (!def || typeof def !== "object")
|
|
1931
|
-
continue;
|
|
1932
|
-
const d = def;
|
|
1933
|
-
if (typeof d.nodeType === "string" && typeof d.version === "string" && d.supportsErrorHandling === true) {
|
|
1934
|
-
map.set(`${d.nodeType}:${d.version}`, true);
|
|
1935
|
-
}
|
|
1936
|
-
}
|
|
1937
|
-
return map;
|
|
1938
|
-
}
|
|
1939
2039
|
function normalizeManifestVersion(version) {
|
|
1940
2040
|
const raw = version ?? "1.0.0";
|
|
1941
2041
|
const parts = raw.split(".");
|
|
@@ -1957,77 +2057,6 @@ function formatHandleList(concrete, templates) {
|
|
|
1957
2057
|
];
|
|
1958
2058
|
return ports.length > 0 ? ports.join(", ") : "(none)";
|
|
1959
2059
|
}
|
|
1960
|
-
function validationErrorToIssue(error) {
|
|
1961
|
-
let path;
|
|
1962
|
-
if (error.nodeId) {
|
|
1963
|
-
path = error.fieldPath ? `nodes[${error.nodeId}].${error.fieldPath}` : `nodes[${error.nodeId}]`;
|
|
1964
|
-
} else {
|
|
1965
|
-
path = error.fieldPath ?? "(workflow)";
|
|
1966
|
-
}
|
|
1967
|
-
return {
|
|
1968
|
-
path,
|
|
1969
|
-
message: `[${error.code}] ${error.message}`,
|
|
1970
|
-
severity: isBlockingSeverity(error.severity) ? "error" : "warning"
|
|
1971
|
-
};
|
|
1972
|
-
}
|
|
1973
|
-
function buildValidationContext(flow) {
|
|
1974
|
-
const nodes = toSerializedNodes(flow.nodes);
|
|
1975
|
-
const edges = flow.edges.map((e) => ({
|
|
1976
|
-
id: e.id,
|
|
1977
|
-
source: e.sourceNodeId,
|
|
1978
|
-
sourceHandle: e.sourcePort ?? null,
|
|
1979
|
-
target: e.targetNodeId,
|
|
1980
|
-
targetHandle: e.targetPort ?? null
|
|
1981
|
-
}));
|
|
1982
|
-
const manifests = new Map;
|
|
1983
|
-
for (const def of flow.definitions) {
|
|
1984
|
-
manifests.set(`${def.nodeType}:${def.version}`, {
|
|
1985
|
-
nodeType: def.nodeType,
|
|
1986
|
-
version: def.version,
|
|
1987
|
-
category: def.category,
|
|
1988
|
-
display: def.display,
|
|
1989
|
-
handleConfiguration: def.handleConfiguration,
|
|
1990
|
-
inputDefinition: def.inputDefinition,
|
|
1991
|
-
outputDefinition: def.outputDefinition,
|
|
1992
|
-
tags: def.tags
|
|
1993
|
-
});
|
|
1994
|
-
}
|
|
1995
|
-
const outputVariableIds = [];
|
|
1996
|
-
const variables = flow.variables;
|
|
1997
|
-
if (variables?.globals) {
|
|
1998
|
-
for (const v of variables.globals) {
|
|
1999
|
-
if (v.direction === "out" || v.direction === "inout") {
|
|
2000
|
-
outputVariableIds.push(v.id);
|
|
2001
|
-
}
|
|
2002
|
-
}
|
|
2003
|
-
}
|
|
2004
|
-
return {
|
|
2005
|
-
nodes,
|
|
2006
|
-
edges,
|
|
2007
|
-
manifests,
|
|
2008
|
-
outputVariableIds
|
|
2009
|
-
};
|
|
2010
|
-
}
|
|
2011
|
-
function splitSchemaParseError(parseError) {
|
|
2012
|
-
const header = "Schema validation failed:";
|
|
2013
|
-
if (!parseError.startsWith(header)) {
|
|
2014
|
-
return null;
|
|
2015
|
-
}
|
|
2016
|
-
const body = parseError.slice(header.length);
|
|
2017
|
-
const lines = body.split(`
|
|
2018
|
-
`);
|
|
2019
|
-
const issues = [];
|
|
2020
|
-
for (const rawLine of lines) {
|
|
2021
|
-
const match = /^\s*-\s+(.+?):\s(.*)$/.exec(rawLine);
|
|
2022
|
-
if (!match)
|
|
2023
|
-
continue;
|
|
2024
|
-
const [, path, message] = match;
|
|
2025
|
-
if (!path || !message)
|
|
2026
|
-
continue;
|
|
2027
|
-
issues.push({ path, message });
|
|
2028
|
-
}
|
|
2029
|
-
return issues.length > 0 ? issues : null;
|
|
2030
|
-
}
|
|
2031
2060
|
|
|
2032
2061
|
class FlowValidateService {
|
|
2033
2062
|
fs;
|
|
@@ -2151,28 +2180,16 @@ Validating: ${absolutePath}
|
|
|
2151
2180
|
throw new Error(`Could not read file: ${absolutePath}`);
|
|
2152
2181
|
}
|
|
2153
2182
|
const issues = [];
|
|
2154
|
-
const
|
|
2155
|
-
const
|
|
2156
|
-
if (
|
|
2157
|
-
const recoveredIssues = parseIssues && parseIssues.length > 0 ? parseIssues : parseError ? splitSchemaParseError(parseError) : null;
|
|
2158
|
-
const fallback = [
|
|
2159
|
-
{
|
|
2160
|
-
path: "(root)",
|
|
2161
|
-
message: parseError ?? "File is not valid JSON",
|
|
2162
|
-
severity: "error"
|
|
2163
|
-
}
|
|
2164
|
-
];
|
|
2183
|
+
const [, source] = await catchError(inlineFlowRefs(this.fs, content, absolutePath, logger));
|
|
2184
|
+
const parsed = parseFlowSource(source ?? content);
|
|
2185
|
+
if (!parsed.ok) {
|
|
2165
2186
|
return {
|
|
2166
2187
|
success: false,
|
|
2167
2188
|
filePath: absolutePath,
|
|
2168
|
-
issues:
|
|
2169
|
-
path: pi.path,
|
|
2170
|
-
message: pi.message,
|
|
2171
|
-
severity: "error"
|
|
2172
|
-
})) : fallback
|
|
2189
|
+
issues: parsed.issues
|
|
2173
2190
|
};
|
|
2174
2191
|
}
|
|
2175
|
-
const rawDefErrorHandling =
|
|
2192
|
+
const { workflow, rawDefErrorHandling } = parsed;
|
|
2176
2193
|
const currentManifests = this.validateCurrentManifests ? await this.loadCurrentManifestMap() : new Map;
|
|
2177
2194
|
const flowDir = this.fs.path.dirname(absolutePath);
|
|
2178
2195
|
const hydrationDiagnoses = await this.resolveAgentPrompts(workflow.nodes, flowDir);
|
|
@@ -2202,7 +2219,8 @@ Validating: ${absolutePath}
|
|
|
2202
2219
|
nodes: subNodes,
|
|
2203
2220
|
edges: entry.edges,
|
|
2204
2221
|
definitions: workflow.definitions,
|
|
2205
|
-
variables: entry.variables
|
|
2222
|
+
variables: entry.variables,
|
|
2223
|
+
bindings: workflow.bindings
|
|
2206
2224
|
};
|
|
2207
2225
|
const prefix = `subflows[${subflowId}].`;
|
|
2208
2226
|
issues.push(...this.validateGraph(subGraph, prefix, rawDefErrorHandling, currentManifests, (workflow.variables?.globals ?? []).map((g) => g.id).filter((id) => typeof id === "string")));
|
|
@@ -2284,7 +2302,6 @@ Validating: ${absolutePath}
|
|
|
2284
2302
|
}
|
|
2285
2303
|
if (!node.inputs)
|
|
2286
2304
|
node.inputs = {};
|
|
2287
|
-
const inputs = node.inputs;
|
|
2288
2305
|
const diag = {
|
|
2289
2306
|
sourceLocation,
|
|
2290
2307
|
sourceId: source,
|
|
@@ -2312,13 +2329,11 @@ Validating: ${absolutePath}
|
|
|
2312
2329
|
diag.agentJsonUnparseable = true;
|
|
2313
2330
|
continue;
|
|
2314
2331
|
}
|
|
2332
|
+
hydrateAgentNodeInputs(node, agent);
|
|
2315
2333
|
const settings = agent.settings;
|
|
2316
2334
|
if (isVoiceAgentNodeType(node.type)) {
|
|
2317
2335
|
const voiceSettings = isRecord(settings) ? settings.voice : undefined;
|
|
2318
2336
|
diag.voiceSettingsPresent = isRecord(voiceSettings);
|
|
2319
|
-
if (diag.voiceSettingsPresent && inputs.voice === undefined) {
|
|
2320
|
-
inputs.voice = voiceSettings;
|
|
2321
|
-
}
|
|
2322
2337
|
diag.isConversationalAgent = isRecord(agent.metadata) && agent.metadata.isConversational === true;
|
|
2323
2338
|
}
|
|
2324
2339
|
const messages = agent.messages;
|
|
@@ -2338,12 +2353,10 @@ Validating: ${absolutePath}
|
|
|
2338
2353
|
}
|
|
2339
2354
|
}
|
|
2340
2355
|
if (m.role === "system" && typeof m.content === "string") {
|
|
2341
|
-
inputs.systemPrompt ??= m.content;
|
|
2342
2356
|
if (m.content.length > 0)
|
|
2343
2357
|
diag.systemPromptPopulated = true;
|
|
2344
2358
|
}
|
|
2345
2359
|
if (m.role === "user" && typeof m.content === "string") {
|
|
2346
|
-
inputs.userPrompt ??= m.content;
|
|
2347
2360
|
if (m.content.length > 0)
|
|
2348
2361
|
diag.userPromptPopulated = true;
|
|
2349
2362
|
}
|
|
@@ -2356,18 +2369,6 @@ Validating: ${absolutePath}
|
|
|
2356
2369
|
if (Object.keys(byField).length > 0) {
|
|
2357
2370
|
diag.promptVariablesByField = byField;
|
|
2358
2371
|
}
|
|
2359
|
-
if (settings && typeof settings === "object") {
|
|
2360
|
-
const s = settings;
|
|
2361
|
-
if (typeof s.temperature === "number" && inputs.temperature === undefined) {
|
|
2362
|
-
inputs.temperature = s.temperature;
|
|
2363
|
-
}
|
|
2364
|
-
if (typeof s.maxTokens === "number" && inputs.maxTokenPerResponse === undefined) {
|
|
2365
|
-
inputs.maxTokenPerResponse = s.maxTokens;
|
|
2366
|
-
}
|
|
2367
|
-
if (typeof s.model === "string" && inputs.model === undefined) {
|
|
2368
|
-
inputs.model = s.model;
|
|
2369
|
-
}
|
|
2370
|
-
}
|
|
2371
2372
|
const inputSchema = agent.inputSchema;
|
|
2372
2373
|
if (inputSchema && typeof inputSchema === "object") {
|
|
2373
2374
|
const props = inputSchema.properties;
|
|
@@ -2680,28 +2681,17 @@ Validating: ${absolutePath}
|
|
|
2680
2681
|
const issues = [];
|
|
2681
2682
|
issues.push(...this.validateEdgeReferences(graph));
|
|
2682
2683
|
issues.push(...this.validateNodeTypeDefinitions(graph));
|
|
2683
|
-
issues.push(...this.validateUniqueIds(graph), ...this.validateExclusiveBranchJoins(graph), ...validateVarsReferences(graph, {
|
|
2684
|
+
issues.push(...this.validateUniqueIds(graph), ...previewIdIssues(graph), ...this.validateExclusiveBranchJoins(graph), ...validateVarsReferences(graph, {
|
|
2684
2685
|
extraKnownRoots: parentVariableIds
|
|
2685
2686
|
}));
|
|
2686
2687
|
issues.push(...this.validateEdgeHandles(graph, rawDefErrorHandling));
|
|
2687
2688
|
issues.push(...this.validateEdgeHandlesAgainstCurrentManifests(graph, currentManifests));
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
}
|
|
2695
|
-
const dropped = new Set(["expression-ref"]);
|
|
2696
|
-
if (pathPrefix)
|
|
2697
|
-
dropped.add("trigger-required");
|
|
2698
|
-
const rules = cliRules.filter((r) => !dropped.has(r.id));
|
|
2699
|
-
const ruleErrors = runRules([
|
|
2700
|
-
...rules,
|
|
2701
|
-
conditionExpressionRule,
|
|
2702
|
-
...this.extraRules
|
|
2703
|
-
], ctx);
|
|
2704
|
-
issues.push(...ruleErrors.map(validationErrorToIssue));
|
|
2689
|
+
issues.push(...runDesignerRules(graph, {
|
|
2690
|
+
isSubflow: Boolean(pathPrefix),
|
|
2691
|
+
governanceEnforcements: this.governanceEnforcements,
|
|
2692
|
+
availableModelNames: this.availableModelNames,
|
|
2693
|
+
extraRules: this.extraRules
|
|
2694
|
+
}));
|
|
2705
2695
|
issues.push(...this.runNodeValidators(graph));
|
|
2706
2696
|
return pathPrefix ? issues.map((i) => ({ ...i, path: `${pathPrefix}${i.path}` })) : issues;
|
|
2707
2697
|
}
|
|
@@ -3424,7 +3414,8 @@ Validating: ${absolutePath}
|
|
|
3424
3414
|
const context = {
|
|
3425
3415
|
definitions: flow.definitions,
|
|
3426
3416
|
nodeIds: new Set(flow.nodes.map((n) => n.id)),
|
|
3427
|
-
strictBindings: this.strictBindings
|
|
3417
|
+
strictBindings: this.strictBindings,
|
|
3418
|
+
bindings: flow.bindings
|
|
3428
3419
|
};
|
|
3429
3420
|
for (const node of flow.nodes) {
|
|
3430
3421
|
for (const validator of this.nodeValidators) {
|
|
@@ -3510,4 +3501,4 @@ function describeUnsatisfiableJoin(node, finding, graph) {
|
|
|
3510
3501
|
|
|
3511
3502
|
export { FlowValidateService };
|
|
3512
3503
|
|
|
3513
|
-
//# debugId=
|
|
3504
|
+
//# debugId=A2D8B7CDA2B08E8464756E2164756E21
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
orchestratorGet,
|
|
7
7
|
orchestratorPost,
|
|
8
8
|
studioWebPost
|
|
9
|
-
} from "./packager-tool-
|
|
9
|
+
} from "./packager-tool-aw60v0et.js";
|
|
10
10
|
import {
|
|
11
11
|
RESULTS,
|
|
12
12
|
catchError,
|
|
13
13
|
logger
|
|
14
|
-
} from "./packager-tool-
|
|
14
|
+
} from "./packager-tool-r7xy9sew.js";
|
|
15
15
|
|
|
16
16
|
// ../maestro-sdk/src/debug-service.ts
|
|
17
17
|
import { randomUUID } from "node:crypto";
|