@uipath/case-tool 1.202.1 → 1.203.0-preview.180

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.
Files changed (78) hide show
  1. package/dist/THIRD-PARTY-NOTICES.md +75 -251
  2. package/dist/{authoring-vpa82rhb.js → authoring-kngaggwm.js} +42 -4
  3. package/dist/{case-api-63ncrr7n.js → case-api-v6cjyrfw.js} +8 -8
  4. package/dist/case-bindings-service-1wxfghzd.js +240 -0
  5. package/dist/case-debug-studio-web-service-tpfm4r66.js +133 -0
  6. package/dist/case-format-service-q345a2fd.js +84 -0
  7. package/dist/{case-pack-service-72ymxkvq.js → case-pack-service-29rza2q2.js} +61 -11
  8. package/dist/{case-validate-service-4fzrq8ee.js → case-validate-service-cqw3tz9y.js} +1422 -40
  9. package/dist/{connector-enrichment-service-wqdd0561.js → connector-enrichment-service-qa26zsjg.js} +20 -20
  10. package/dist/{connector-lookup-service-cwm3bk3a.js → connector-lookup-service-8v4qawd5.js} +7 -7
  11. package/dist/{connector-task-spec-pn5vqw89.js → connector-task-spec-q9v9vjd2.js} +24 -24
  12. package/dist/{de-MUJPA4EB-209jpeqe.js → de-MUJPA4EB-dpg7t2rw.js} +3 -3
  13. package/dist/{debug-service-rgh5q6v7.js → debug-service-8x087xxt.js} +2 -2
  14. package/dist/{index-71zc7k6y.js → embedded-file-reader-0sjt4nkj.js} +96 -16641
  15. package/dist/{en-TBNO2WUV-rfe87pgh.js → en-BWGKA5OE-1qkvb9rn.js} +2 -2
  16. package/dist/{en-GN2ZGWUE-03z2df4k.js → en-FBPVNKFN-dqt573xn.js} +5 -3
  17. package/dist/{enrichment-service-6qd2ekgp.js → enrichment-service-7vbxcwge.js} +7 -7
  18. package/dist/{es-7SE7HX2X-qda7whn6.js → es-7SE7HX2X-8yh1aj2y.js} +3 -3
  19. package/dist/{es-MX-2MYFZU7X-6v0q5rbn.js → es-MX-2MYFZU7X-3rek4r73.js} +3 -3
  20. package/dist/first-party-service-srxaftkn.js +27 -0
  21. package/dist/{fr-MDFKNZ4C-qmypp92m.js → fr-MDFKNZ4C-h4a122k9.js} +3 -3
  22. package/dist/{index-j63n7z6x.js → index-38apv2p1.js} +6 -4
  23. package/dist/{index-kwxe1vep.js → index-fz4ttsde.js} +16 -4
  24. package/dist/index-jxj2jz45.js +16742 -0
  25. package/dist/index-kmp9fmhb.js +25 -0
  26. package/dist/index.js +10 -10
  27. package/dist/{input-reader-8kdvqfaf.js → input-reader-pnh948bq.js} +1 -1
  28. package/dist/{ja-UTQEAP34-hvyf683h.js → ja-UTQEAP34-8e0q6swp.js} +3 -3
  29. package/dist/{known-types-dec5kvwh.js → known-types-mn8xn36b.js} +4 -4
  30. package/dist/{ko-AXCHW2OK-pkwdcbmx.js → ko-AXCHW2OK-askct7f6.js} +3 -3
  31. package/dist/{node-strategy-0267x5e5.js → node-strategy-gc4sg6a2.js} +4 -4
  32. package/dist/{node-sync-service-nyzvsxte.js → node-sync-service-y471a8jm.js} +11 -11
  33. package/dist/{packager-tool-2rqwt6k1.js → packager-tool-052kvydg.js} +1 -1
  34. package/dist/packager-tool-53w8skv5.js +262 -0
  35. package/dist/{packager-tool-gqa97ecv.js → packager-tool-61hxhgeg.js} +1 -1
  36. package/dist/{packager-tool-11x9d29d.js → packager-tool-6vm5fd0w.js} +6 -6
  37. package/dist/{packager-tool-r87gxwqa.js → packager-tool-7q6z6npd.js} +12 -12
  38. package/dist/packager-tool-83qnybab.js +1564 -0
  39. package/dist/{packager-tool-ph7m6q8q.js → packager-tool-8q7vzh65.js} +5 -4
  40. package/dist/{packager-tool-g27rwyhq.js → packager-tool-adcaxdhs.js} +15 -5
  41. package/dist/{packager-tool-6q9vpaye.js → packager-tool-cg2j4rma.js} +8 -8
  42. package/dist/{packager-tool-e65xt669.js → packager-tool-cr03q3q4.js} +213 -51
  43. package/dist/packager-tool-d4sjk46c.js +88 -0
  44. package/dist/{packager-tool-4mna26cc.js → packager-tool-d88rqwk8.js} +5 -3
  45. package/dist/packager-tool-dd8bq6az.js +8462 -0
  46. package/dist/packager-tool-gdtpsdn7.js +342 -0
  47. package/dist/{packager-tool-k4edys72.js → packager-tool-hrdan5ms.js} +1 -1
  48. package/dist/{packager-tool-73266j0h.js → packager-tool-hz1mz8fs.js} +1 -1
  49. package/dist/{packager-tool-c23zrhj8.js → packager-tool-jysvpt8p.js} +2 -2
  50. package/dist/{packager-tool-m9yxkjc5.js → packager-tool-kkxhc0fp.js} +2905 -817
  51. package/dist/{packager-tool-8m22sr4j.js → packager-tool-kpcjnxd1.js} +269 -23
  52. package/dist/{packager-tool-s44cpykq.js → packager-tool-n6vfz7c3.js} +22 -16
  53. package/dist/{packager-tool-axgsbgv9.js → packager-tool-sqd89cn1.js} +10 -13
  54. package/dist/{packager-tool-fh1f8bv4.js → packager-tool-tatg1kz2.js} +10 -9
  55. package/dist/{packager-tool-51a9f6yz.js → packager-tool-wefb1zw3.js} +1 -1
  56. package/dist/{packager-tool-3fm9yhgv.js → packager-tool-x2hktw5m.js} +11 -11
  57. package/dist/{packager-tool-dqs5qy9s.js → packager-tool-yrsrzz1a.js} +134 -19
  58. package/dist/packager-tool.js +5 -1501
  59. package/dist/{project-artifacts-a69j3g1q.js → project-artifacts-8snev67g.js} +1 -1
  60. package/dist/{pt-3DIO5QWG-hb763vct.js → pt-3DIO5QWG-59b3f4bc.js} +3 -3
  61. package/dist/{pt-BR-Y6K6XHXK-37a932vp.js → pt-BR-Y6K6XHXK-mp3hwhw1.js} +3 -3
  62. package/dist/{resourcesSyncService-gnmpre85.js → resourcesSyncService-8t5qdtvt.js} +20 -20
  63. package/dist/{ro-BWR3ONRR-jmap5ajd.js → ro-BWR3ONRR-vzx3hy8a.js} +3 -3
  64. package/dist/ru-WBLQ5B2U-s4em88p0.js +10 -0
  65. package/dist/sdd-lookup-x08j9g9m.js +48 -0
  66. package/dist/{strict-case-rules-303vjvas.js → strict-case-rules-x6t0vb40.js} +141 -109
  67. package/dist/strict-sdd-audit-8e2fh9jg.js +2520 -0
  68. package/dist/tool.js +9 -9
  69. package/dist/{tr-5IIHSFW5-stsb3dar.js → tr-5IIHSFW5-hw4cewew.js} +3 -3
  70. package/dist/{trigger-enrichment-service-52h9fjqd.js → trigger-enrichment-service-n622a230.js} +24 -24
  71. package/dist/{zh-CN-R2KU4U5L-q4yhc33t.js → zh-CN-R2KU4U5L-tc1hat59.js} +3 -3
  72. package/dist/{zh-TW-GNKMELBF-r4ay2475.js → zh-TW-GNKMELBF-j674515r.js} +3 -3
  73. package/package.json +3 -2
  74. package/dist/case-debug-studio-web-service-45rb4ej9.js +0 -335
  75. package/dist/packager-tool-134mvmcm.js +0 -3040
  76. package/dist/packager-tool-ty1t2byf.js +0 -27
  77. package/dist/ru-WBLQ5B2U-8r3c7v6d.js +0 -10
  78. package/dist/strict-sdd-audit-qdmc9e1y.js +0 -1024
@@ -4,7 +4,7 @@ import {
4
4
 
5
5
  // src/services/project-artifacts.ts
6
6
  async function ensureProjectArtifacts(args) {
7
- const { addProjectArtifactsToSolutionAsync } = await import("./index-71zc7k6y.js");
7
+ const { addProjectArtifactsToSolutionAsync } = await import("./index-jxj2jz45.js");
8
8
  return addProjectArtifactsToSolutionAsync(args);
9
9
  }
10
10
  export {
@@ -1,7 +1,7 @@
1
- import"./packager-tool-c23zrhj8.js";
1
+ import"./packager-tool-jysvpt8p.js";
2
2
  import"./packager-tool-1yh8g550.js";
3
3
 
4
- // ../../node_modules/@uipath/flow-schema/dist/pt-3DIO5QWG.js
4
+ // ../../node_modules/@uipath/flow-core/node_modules/@uipath/flow-schema/dist/pt-3DIO5QWG.js
5
5
  var agentDuplicateToolNames_duplicateName_message = 'O nome da ferramenta "{{name}}" é utilizado por várias ferramentas neste agente. Cada ferramenta tem de ter um nome único.';
6
6
  var agentEmptyVar_unwrittenVariable_message = 'O agente utiliza "$vars.{{root}}" mas nenhum nó atribui um valor a "{{root}}", pelo que estará vazio no runtime. Associe-o a uma saída de nó (por exemplo, "<node>.output") ou atribua-lhe uma origem de valor.';
7
7
  var agentInputRefs_ambiguousUnderscoreRoot_message = 'O pedido referencia "$vars.{{ref}}", mas o nome "{{rootSegment}}" contém "__", que está reservado como o separador de codificação de entrada de agente e não pode fazer a viagem de ida e volta. Mude o nome para remover os carateres de sublinhado duplo.';
@@ -170,4 +170,4 @@ export {
170
170
  triggerRequired_message
171
171
  };
172
172
 
173
- //# debugId=50FE3F819785D4A664756E2164756E21
173
+ //# debugId=A9081A724343C5DC64756E2164756E21
@@ -1,7 +1,7 @@
1
- import"./packager-tool-c23zrhj8.js";
1
+ import"./packager-tool-jysvpt8p.js";
2
2
  import"./packager-tool-1yh8g550.js";
3
3
 
4
- // ../../node_modules/@uipath/flow-schema/dist/pt-BR-Y6K6XHXK.js
4
+ // ../../node_modules/@uipath/flow-core/node_modules/@uipath/flow-schema/dist/pt-BR-Y6K6XHXK.js
5
5
  var agentDuplicateToolNames_duplicateName_message = 'O nome da ferramenta "{{name}}" é usado por várias ferramentas neste agente. Cada ferramenta deve ter um nome exclusivo.';
6
6
  var agentEmptyVar_unwrittenVariable_message = 'O agente usa "$vars.{{root}}", mas nenhum nó atribui um valor a "{{root}}", portanto, estará vazio no runtime. Associe-o a uma saída de nó (por exemplo, "<node>.output" de um conector) ou forneça uma origem de valor.';
7
7
  var agentInputRefs_ambiguousUnderscoreRoot_message = 'Referências de prompt "$vars.{{ref}}", mas o nome "{{rootSegment}}" contém "__", que é reservado como separador de codificação de entrada do agente e não pode ser convertido de volta corretamente. Renomeie-o para remover o sublinhado duplo.';
@@ -170,4 +170,4 @@ export {
170
170
  triggerRequired_message
171
171
  };
172
172
 
173
- //# debugId=5C8AD6D29B36E76E64756E2164756E21
173
+ //# debugId=C097C1A5D319571364756E2164756E21
@@ -1,43 +1,43 @@
1
- import"./packager-tool-134mvmcm.js";
2
- import {
3
- findSolutionFromCwd
4
- } from "./packager-tool-s44cpykq.js";
5
- import"./packager-tool-k4edys72.js";
6
- import"./packager-tool-fh1f8bv4.js";
1
+ import"./packager-tool-dd8bq6az.js";
7
2
  import {
8
3
  loadIndexMetadata,
9
4
  loadResourceIndex,
10
5
  saveIndexMetadata,
11
6
  saveResourceIndex
12
- } from "./packager-tool-51a9f6yz.js";
13
- import"./packager-tool-m9yxkjc5.js";
14
- import"./packager-tool-r87gxwqa.js";
7
+ } from "./packager-tool-wefb1zw3.js";
8
+ import {
9
+ findSolutionFromCwd
10
+ } from "./packager-tool-n6vfz7c3.js";
11
+ import"./packager-tool-hrdan5ms.js";
12
+ import"./packager-tool-tatg1kz2.js";
13
+ import"./packager-tool-kkxhc0fp.js";
14
+ import"./packager-tool-7q6z6npd.js";
15
15
  import"./packager-tool-sc961w0q.js";
16
- import"./packager-tool-4mna26cc.js";
17
- import"./packager-tool-c23zrhj8.js";
18
- import"./packager-tool-ph7m6q8q.js";
19
- import"./packager-tool-6q9vpaye.js";
16
+ import"./packager-tool-d88rqwk8.js";
17
+ import"./packager-tool-8q7vzh65.js";
18
+ import"./packager-tool-jysvpt8p.js";
19
+ import"./packager-tool-cg2j4rma.js";
20
20
  import {
21
21
  GET_SEARCHABLE_TYPES,
22
22
  RESOURCE_TYPES
23
23
  } from "./packager-tool-r84ng21s.js";
24
- import"./packager-tool-g27rwyhq.js";
25
- import"./packager-tool-73266j0h.js";
24
+ import"./packager-tool-hz1mz8fs.js";
26
25
  import"./packager-tool-vepqrsse.js";
27
26
  import {
28
27
  getLoginStatusAsync
29
- } from "./packager-tool-dqs5qy9s.js";
28
+ } from "./packager-tool-yrsrzz1a.js";
29
+ import"./packager-tool-0gctz400.js";
30
30
  import"./packager-tool-qa9gftnj.js";
31
+ import"./packager-tool-yc4kw997.js";
32
+ import"./packager-tool-adcaxdhs.js";
31
33
  import {
32
34
  catchError,
33
35
  hashContent,
34
36
  logger
35
- } from "./packager-tool-8m22sr4j.js";
37
+ } from "./packager-tool-kpcjnxd1.js";
36
38
  import {
37
39
  getFileSystem
38
40
  } from "./packager-tool-0v3s8r01.js";
39
- import"./packager-tool-0gctz400.js";
40
- import"./packager-tool-yc4kw997.js";
41
41
  import"./packager-tool-1yh8g550.js";
42
42
 
43
43
  // src/services/action-app-api.ts
@@ -680,4 +680,4 @@ export {
680
680
  searchResourcesWithFilters
681
681
  };
682
682
 
683
- //# debugId=E111735BC7C7645664756E2164756E21
683
+ //# debugId=7816F84064957AB564756E2164756E21
@@ -1,7 +1,7 @@
1
- import"./packager-tool-c23zrhj8.js";
1
+ import"./packager-tool-jysvpt8p.js";
2
2
  import"./packager-tool-1yh8g550.js";
3
3
 
4
- // ../../node_modules/@uipath/flow-schema/dist/ro-BWR3ONRR.js
4
+ // ../../node_modules/@uipath/flow-core/node_modules/@uipath/flow-schema/dist/ro-BWR3ONRR.js
5
5
  var agentDuplicateToolNames_duplicateName_message = "Numele instrumentului „{{name}}” este utilizat de mai multe instrumente pe acest agent. Fiecare instrument trebuie să aibă un nume unic.";
6
6
  var agentEmptyVar_unwrittenVariable_message = 'Agentul folosește "$vars.{{root}}", dar niciun nod nu atribuie o valoare lui "{{root}}", astfel încât va fi gol în timpul execuției. Asociați-l cu un output al unui nod (de exemplu, output-ul "<node>.output" al unui conector) sau oferiți-i o sursă de valoare.';
7
7
  var agentInputRefs_ambiguousUnderscoreRoot_message = "Referința promptului este „$vars.{{ref}}”, dar numele „{{rootSegment}}” conține „__”, care este rezervat ca separator de codificare pentru input-ul agentului și nu poate fi convertit dus-întors. Redenumiți-l pentru a elimina caracterul de subliniere dublu.";
@@ -170,4 +170,4 @@ export {
170
170
  triggerRequired_message
171
171
  };
172
172
 
173
- //# debugId=D10CA8D11343504264756E2164756E21
173
+ //# debugId=148C0693C9BEE5AE64756E2164756E21
@@ -0,0 +1,10 @@
1
+ import"./packager-tool-jysvpt8p.js";
2
+ import"./packager-tool-1yh8g550.js";
3
+
4
+ // ../../node_modules/@uipath/flow-core/node_modules/@uipath/flow-schema/dist/ru-WBLQ5B2U.js
5
+ var ru_default = {};
6
+ export {
7
+ ru_default as default
8
+ };
9
+
10
+ //# debugId=B7EA616BDBCEA40B64756E2164756E21
@@ -0,0 +1,48 @@
1
+ import {
2
+ catchError
3
+ } from "./packager-tool-kpcjnxd1.js";
4
+ import {
5
+ getFileSystem
6
+ } from "./packager-tool-0v3s8r01.js";
7
+ import"./packager-tool-1yh8g550.js";
8
+
9
+ // src/services/sdd-lookup.ts
10
+ var SDD_FILE_NAME = "sdd.md";
11
+ var SOLUTION_MANIFEST_SUFFIX = ".uipx";
12
+ var findAdjacentSdd = async (caseplanPath) => {
13
+ const fs = getFileSystem();
14
+ const from = fs.path.dirname(fs.path.resolve(caseplanPath));
15
+ const chain = [from];
16
+ for (let depth = 0;depth < MAX_WALK; depth += 1) {
17
+ const parent = fs.path.dirname(chain[chain.length - 1]);
18
+ if (parent === chain[chain.length - 1])
19
+ break;
20
+ chain.push(parent);
21
+ }
22
+ const manifestAt = await firstIndexHoldingManifest(chain);
23
+ const candidates = manifestAt === undefined ? [from] : [...chain.slice(0, manifestAt + 1), chain[manifestAt + 1]].filter((directory) => directory !== undefined);
24
+ for (const directory of candidates) {
25
+ const candidate = fs.path.join(directory, SDD_FILE_NAME);
26
+ if (await fs.exists(candidate))
27
+ return candidate;
28
+ }
29
+ return;
30
+ };
31
+ var MAX_WALK = 6;
32
+ var firstIndexHoldingManifest = async (chain) => {
33
+ const fs = getFileSystem();
34
+ for (const [at, directory] of chain.entries()) {
35
+ const [, entries] = await catchError(fs.readdir(directory));
36
+ if (entries === undefined)
37
+ continue;
38
+ if (entries.some((name) => name.endsWith(SOLUTION_MANIFEST_SUFFIX))) {
39
+ return at;
40
+ }
41
+ }
42
+ return;
43
+ };
44
+ export {
45
+ findAdjacentSdd
46
+ };
47
+
48
+ //# debugId=BC7D0494633C241764756E2164756E21
@@ -1,8 +1,13 @@
1
1
  import {
2
+ ACTIVITY_TYPE_ID_PATH,
3
+ BINDING_REFERENCE_PREFIX,
4
+ NAME_BOUND_TASK_TYPES,
5
+ RESOLVED_IDENTITY_KEYS,
6
+ activityTypeIdMessage,
2
7
  contextEntry,
3
8
  missingContextKeys,
4
9
  readActivityTypeId
5
- } from "./packager-tool-ty1t2byf.js";
10
+ } from "./packager-tool-d4sjk46c.js";
6
11
  import"./packager-tool-1yh8g550.js";
7
12
 
8
13
  // src/services/strict-case-rules.ts
@@ -32,31 +37,6 @@ var checkStagesHaveTasks = (nodes) => {
32
37
  }
33
38
  return issues;
34
39
  };
35
- var checkNoUnresolvedXrefs = (value, path, issues) => {
36
- if (typeof value === "string") {
37
- if (value.includes("$xref(")) {
38
- issues.push({
39
- code: "STRICT_XREF_UNRESOLVED",
40
- path,
41
- severity: "error",
42
- message: `Unresolved authoring marker in "${value}". "$xref(...)" ` + "is a placeholder the converter does not expand — resolve " + "it to the real id before packing."
43
- });
44
- }
45
- return;
46
- }
47
- if (Array.isArray(value)) {
48
- value.forEach((entry, index) => {
49
- checkNoUnresolvedXrefs(entry, `${path}[${index}]`, issues);
50
- });
51
- return;
52
- }
53
- const record = asRecord(value);
54
- if (!record)
55
- return;
56
- for (const [key, entry] of Object.entries(record)) {
57
- checkNoUnresolvedXrefs(entry, `${path}.${key}`, issues);
58
- }
59
- };
60
40
  var jsSyntaxError = (source) => {
61
41
  try {
62
42
  new Script(source);
@@ -96,42 +76,6 @@ var checkJsExpressionsParse = (value, path, issues) => {
96
76
  checkJsExpressionsParse(entry, `${path}.${key}`, issues);
97
77
  }
98
78
  };
99
- var checkConditionExpressionPlacement = (conditions, path) => {
100
- const issues = [];
101
- asArray(conditions).forEach((condition, index) => {
102
- const record = asRecord(condition);
103
- if (!record)
104
- return;
105
- if (typeof record.conditionExpression !== "string")
106
- return;
107
- issues.push({
108
- code: "STRICT_CONDITION_EXPR_HOISTED",
109
- path: `${path}[${index}].conditionExpression`,
110
- severity: "error",
111
- message: '"conditionExpression" sits on the condition object. The ' + "scheduler reads it from a rule inside rules[][], so here it " + "is ignored and the condition fires ungated — move it onto " + "the rule it is meant to guard."
112
- });
113
- });
114
- return issues;
115
- };
116
- var collectConditionIssues = (nodes, metadata) => {
117
- const issues = [];
118
- for (const node of nodes) {
119
- const id = typeof node.id === "string" ? node.id : "?";
120
- const data = asRecord(node.data);
121
- issues.push(...checkConditionExpressionPlacement(data?.entryConditions, `nodes[${id}].data.entryConditions`), ...checkConditionExpressionPlacement(data?.exitConditions, `nodes[${id}].data.exitConditions`));
122
- for (const lane of asArray(data?.tasks)) {
123
- for (const task of asArray(lane)) {
124
- const taskRecord = asRecord(task);
125
- if (!taskRecord)
126
- continue;
127
- const taskId = typeof taskRecord.id === "string" ? taskRecord.id : "?";
128
- issues.push(...checkConditionExpressionPlacement(taskRecord.entryConditions, `nodes[${id}].data.tasks[${taskId}].entryConditions`));
129
- }
130
- }
131
- }
132
- issues.push(...checkConditionExpressionPlacement(metadata?.caseExitRules, "metadata.caseExitRules"));
133
- return issues;
134
- };
135
79
  var checkVariableContract = (variables) => {
136
80
  const issues = [];
137
81
  for (const slot of ["inputs", "outputs", "inputOutputs"]) {
@@ -210,50 +154,13 @@ var checkInputOutputCompanions = (variables, nodes) => {
210
154
  }
211
155
  return issues;
212
156
  };
213
- var checkOutputIdUniqueness = (nodes) => {
214
- const issues = [];
215
- const seen = new Map;
216
- const reported = new Set;
217
- for (const node of nodes) {
218
- const nodeId = typeof node.id === "string" ? node.id : "?";
219
- const data = asRecord(node.data);
220
- for (const lane of asArray(data?.tasks)) {
221
- for (const task of asArray(lane)) {
222
- const taskRecord = asRecord(task);
223
- if (!taskRecord)
224
- continue;
225
- const taskId = typeof taskRecord.id === "string" ? taskRecord.id : "?";
226
- const taskData = asRecord(taskRecord.data);
227
- for (const output of asArray(taskData?.outputs)) {
228
- const id = asRecord(output)?.id;
229
- if (typeof id !== "string" || id === "")
230
- continue;
231
- const owner = `${nodeId}/${taskId}`;
232
- const previous = seen.get(id);
233
- if (previous !== undefined && !reported.has(id)) {
234
- reported.add(id);
235
- issues.push({
236
- code: "STRICT_OUTPUT_ID_DUPLICATE",
237
- path: `nodes[${nodeId}].data.tasks[${taskId}].data.outputs[${id}]`,
238
- severity: "error",
239
- message: `Output id "${id}" is used by two tasks ` + `(${previous} and ${owner}). Output ids are ` + "the write target, so the second write lands " + "on the first task's variable."
240
- });
241
- }
242
- if (previous === undefined)
243
- seen.set(id, owner);
244
- }
245
- }
246
- }
247
- }
248
- return issues;
249
- };
250
157
  var checkConnectorRuleContext = (nodes) => {
251
158
  const issues = [];
252
159
  const visitRule = (rule, path) => {
253
160
  if (rule.rule !== "wait-for-connector")
254
161
  return;
255
162
  const context = asRecord(rule.uipath)?.context;
256
- const missing = missingContextKeys(context);
163
+ const missing = missingContextKeys(context, true);
257
164
  if (missing.length > 0) {
258
165
  issues.push({
259
166
  code: "STRICT_CONNECTOR_CONTEXT_INCOMPLETE",
@@ -267,9 +174,9 @@ var checkConnectorRuleContext = (nodes) => {
267
174
  if (readActivityTypeId(context) === undefined) {
268
175
  issues.push({
269
176
  code: "STRICT_CONNECTOR_ACTIVITY_TYPE_ID",
270
- path: `${path}.uipath.context[metadata].body.activityPropertyConfiguration.UiPathActivityTypeId`,
177
+ path: `${path}.uipath.context[metadata].${ACTIVITY_TYPE_ID_PATH}`,
271
178
  severity: "error",
272
- message: `Connector rule "${String(rule.id ?? "?")}" has metadata ` + "with no UiPathActivityTypeId. The connection id alone " + "does not identify the event to wait for."
179
+ message: activityTypeIdMessage(`rule "${typeof rule.id === "string" ? rule.id : "?"}"`, context, "The connection id alone does not identify the event to " + "wait for.")
273
180
  });
274
181
  }
275
182
  };
@@ -350,28 +257,153 @@ var checkActionRecipientShape = (nodes) => nodes.flatMap((node) => {
350
257
  return recipientIssues(recipient, `nodes[${nodeId}].data.tasks[${taskId}].data.recipient`);
351
258
  }));
352
259
  });
260
+ var RESOURCE_TASK_TYPES = new Set([
261
+ "action",
262
+ "agent",
263
+ "api-workflow",
264
+ "case-management",
265
+ "execute-connector-activity",
266
+ "process",
267
+ "rpa",
268
+ "wait-for-connector"
269
+ ]);
270
+ var collectBindingReferences = (value, path, found) => {
271
+ if (typeof value === "string") {
272
+ if (value.startsWith(BINDING_REFERENCE_PREFIX)) {
273
+ const id = value.slice(BINDING_REFERENCE_PREFIX.length);
274
+ if (id !== "" && !found.has(id))
275
+ found.set(id, path);
276
+ }
277
+ return;
278
+ }
279
+ if (Array.isArray(value)) {
280
+ value.forEach((entry, index) => {
281
+ collectBindingReferences(entry, `${path}[${index}]`, found);
282
+ });
283
+ return;
284
+ }
285
+ const record = asRecord(value);
286
+ if (record === undefined)
287
+ return;
288
+ for (const [key, entry] of Object.entries(record)) {
289
+ collectBindingReferences(entry, `${path}.${key}`, found);
290
+ }
291
+ };
292
+ var isBindingReference = (value) => typeof value === "string" && value.startsWith(BINDING_REFERENCE_PREFIX);
293
+ var checkTaskBindings = (nodes) => {
294
+ const issues = [];
295
+ for (const node of nodes) {
296
+ const stage = asRecord(node.data);
297
+ const stageName = typeof stage?.label === "string" ? stage.label : "";
298
+ for (const lane of asArray(stage?.tasks)) {
299
+ for (const task of asArray(lane)) {
300
+ const taskRecord = asRecord(task);
301
+ const type = taskRecord?.type;
302
+ const data = asRecord(taskRecord?.data);
303
+ if (typeof type !== "string" || !NAME_BOUND_TASK_TYPES.has(type) || data === undefined) {
304
+ continue;
305
+ }
306
+ const identity = RESOLVED_IDENTITY_KEYS.filter((key) => data[key] !== undefined);
307
+ if (identity.length === 0)
308
+ continue;
309
+ const unbound = ["name", "folderPath"].filter((field) => !isBindingReference(data[field]));
310
+ if (unbound.length === 0)
311
+ continue;
312
+ const taskName = typeof taskRecord?.displayName === "string" ? taskRecord.displayName : type;
313
+ issues.push({
314
+ code: "STRICT_BINDINGS_TASK_UNBOUND",
315
+ path: `nodes[${stageName}].data.tasks[${taskName}].data`,
316
+ severity: "error",
317
+ message: `Task "${taskName}" (${type}) pins its resource with ` + `${identity.join(", ")}, but ${unbound.join(" and ")} ` + `${unbound.length === 1 ? `is not a ${BINDING_REFERENCE_PREFIX} reference` : `are not ${BINDING_REFERENCE_PREFIX} references`}. A resolved ` + "resource task binds both: `name` and `folderPath` " + "each point at a root bindings entry, and " + "bindings_v2.json is derived from those. A raw id " + "binds nothing, so the solution ships resolving this " + "task to nothing, and the id itself does not survive " + "a move to another tenant. Bind the pair and drop the " + "raw id."
318
+ });
319
+ }
320
+ }
321
+ }
322
+ return issues;
323
+ };
324
+ var resourceTaskCount = (nodes) => {
325
+ let count = 0;
326
+ for (const node of nodes) {
327
+ for (const lane of asArray(asRecord(node.data)?.tasks)) {
328
+ for (const task of asArray(lane)) {
329
+ const taskRecord = asRecord(task);
330
+ const type = taskRecord?.type;
331
+ if (typeof type === "string" && RESOURCE_TASK_TYPES.has(type) && Object.keys(asRecord(taskRecord?.data) ?? {}).length > 0) {
332
+ count += 1;
333
+ }
334
+ }
335
+ }
336
+ }
337
+ return count;
338
+ };
339
+ var checkResourceBindings = (parsed, nodes) => {
340
+ const issues = [];
341
+ const bindings = asArray(parsed.bindings).map((entry) => asRecord(entry)).filter((entry) => entry !== undefined);
342
+ const bindingIds = new Set(bindings.map((entry) => entry.id).filter((id) => typeof id === "string"));
343
+ const seenIds = new Set;
344
+ const reportedIds = new Set;
345
+ for (const entry of bindings) {
346
+ const id = entry.id;
347
+ if (typeof id !== "string" || id === "")
348
+ continue;
349
+ if (!seenIds.has(id)) {
350
+ seenIds.add(id);
351
+ continue;
352
+ }
353
+ if (reportedIds.has(id))
354
+ continue;
355
+ reportedIds.add(id);
356
+ issues.push({
357
+ code: "STRICT_BINDINGS_ID_DUPLICATE",
358
+ path: `bindings[${id}]`,
359
+ severity: "error",
360
+ message: `Two or more bindings share the id "${id}". A ` + `${BINDING_REFERENCE_PREFIX}${id} reference resolves to ` + "whichever entry a consumer scans first, so the one that " + "wins depends on array order — and the losing entry still " + "reads as though it applies. Give each entry its own id."
361
+ });
362
+ }
363
+ const references = new Map;
364
+ collectBindingReferences(parsed.nodes, "nodes", references);
365
+ collectBindingReferences(parsed.metadata, "metadata", references);
366
+ for (const [id, path] of references) {
367
+ if (bindingIds.has(id))
368
+ continue;
369
+ issues.push({
370
+ code: "STRICT_BINDINGS_REFERENCE_UNRESOLVED",
371
+ path,
372
+ severity: "error",
373
+ message: `"${BINDING_REFERENCE_PREFIX}${id}" points at no entry in the ` + "root bindings array, so nothing resolves it at run time. Add " + `a binding with id "${id}", or correct the reference.`
374
+ });
375
+ }
376
+ const resourceTasks = resourceTaskCount(nodes);
377
+ if (bindings.length > 0) {
378
+ issues.push(...checkTaskBindings(nodes));
379
+ } else if (resourceTasks > 0) {
380
+ issues.push({
381
+ code: "STRICT_BINDINGS_ABSENT",
382
+ path: "bindings",
383
+ severity: "warning",
384
+ message: `The root bindings array is empty, but ${resourceTasks} task(s) ` + "name a platform resource (process, agent, rpa, action, " + "api-workflow, child case or connector). Every such task needs " + "a name/folderPath binding pair — or, for a connector, a " + "connection and folder key — and bindings_v2.json is derived " + "from that array, so an empty one publishes a solution that " + "resolves none of them."
385
+ });
386
+ }
387
+ return issues;
388
+ };
353
389
  var runStrictCaseRules = (parsed) => {
354
390
  const nodes = Array.isArray(parsed.nodes) ? parsed.nodes : [];
355
391
  const variables = asRecord(parsed.variables);
356
392
  const metadata = asRecord(parsed.metadata);
357
- const xrefIssues = [];
358
- checkNoUnresolvedXrefs(parsed, "(root)", xrefIssues);
359
393
  const jsSyntaxIssues = [];
360
394
  checkJsExpressionsParse(parsed, "(root)", jsSyntaxIssues);
361
395
  return [
362
396
  ...checkStagesHaveTasks(nodes),
363
- ...xrefIssues,
364
397
  ...jsSyntaxIssues,
365
- ...collectConditionIssues(nodes, metadata),
366
398
  ...checkVariableContract(variables),
367
399
  ...checkInputOutputCompanions(variables, nodes),
368
- ...checkOutputIdUniqueness(nodes),
369
400
  ...checkConnectorRuleContext(nodes),
370
- ...checkActionRecipientShape(nodes)
401
+ ...checkActionRecipientShape(nodes),
402
+ ...checkResourceBindings(parsed, nodes)
371
403
  ];
372
404
  };
373
405
  export {
374
406
  runStrictCaseRules
375
407
  };
376
408
 
377
- //# debugId=A26096E08E3DBD7464756E2164756E21
409
+ //# debugId=C4B6D297A9F4627964756E2164756E21