@uipath/case-tool 1.202.0 → 1.203.0-preview.160

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 (90) hide show
  1. package/dist/THIRD-PARTY-NOTICES.md +172 -3
  2. package/dist/{authoring-e757p9dq.js → authoring-kngaggwm.js} +42 -4
  3. package/dist/{case-api-42s4mbpn.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-0624c07c.js +133 -0
  6. package/dist/case-format-service-q345a2fd.js +84 -0
  7. package/dist/{case-pack-service-8exkecnd.js → case-pack-service-29rza2q2.js} +61 -11
  8. package/dist/{case-validate-service-xvxkr026.js → case-validate-service-e06varbt.js} +1422 -40
  9. package/dist/{connector-enrichment-service-xq9xtz95.js → connector-enrichment-service-2pes4b1b.js} +20 -20
  10. package/dist/{connector-lookup-service-bk1wscyr.js → connector-lookup-service-2bkybhkf.js} +7 -7
  11. package/dist/{connector-task-spec-0g34na74.js → connector-task-spec-q59xmzm0.js} +24 -24
  12. package/dist/{de-7XQXX2DK-tqdy5n2b.js → de-FGHEJRCI-rv513mfh.js} +153 -9
  13. package/dist/{de-5KVP66U6-1bnf4zt5.js → de-MUJPA4EB-dpg7t2rw.js} +15 -3
  14. package/dist/{debug-service-f6t4ntmg.js → debug-service-8x087xxt.js} +2 -2
  15. package/dist/{index-j3xb87ag.js → embedded-file-reader-0sjt4nkj.js} +96 -16641
  16. package/dist/{en-5ZGC5VQ3-h581y30k.js → en-BWGKA5OE-1qkvb9rn.js} +140 -2
  17. package/dist/{en-X3S6IZ5J-nhkg6pwn.js → en-FBPVNKFN-dqt573xn.js} +29 -3
  18. package/dist/{enrichment-service-k1zhkzgr.js → enrichment-service-7vbxcwge.js} +7 -7
  19. package/dist/{es-VFPNVMP5-bx2c337j.js → es-7SE7HX2X-8yh1aj2y.js} +15 -3
  20. package/dist/{es-ZGCPPOME-8gazspjj.js → es-KR3ZSNMP-84zphx0x.js} +153 -9
  21. package/dist/{es-MX-XAVLOQW3-q00km2y7.js → es-MX-2MYFZU7X-3rek4r73.js} +15 -3
  22. package/dist/{es-MX-U2VN3SZW-anynsmd8.js → es-MX-XXZJGC4R-2mr8jtgm.js} +153 -9
  23. package/dist/first-party-service-srxaftkn.js +27 -0
  24. package/dist/{fr-E5MDO4EG-c3mkty2t.js → fr-MDFKNZ4C-h4a122k9.js} +15 -3
  25. package/dist/{fr-T3G5GZCT-y3f7xb1q.js → fr-Y6NPVODW-8vr1ja4b.js} +153 -9
  26. package/dist/{index-f0rf4m8p.js → index-8yv94z7r.js} +6 -4
  27. package/dist/{index-kwxe1vep.js → index-fz4ttsde.js} +16 -4
  28. package/dist/index-jxj2jz45.js +16742 -0
  29. package/dist/index-kmp9fmhb.js +25 -0
  30. package/dist/index.js +10 -10
  31. package/dist/{input-reader-vgsdjgst.js → input-reader-pnh948bq.js} +1 -1
  32. package/dist/{ja-BI5K3JDZ-77zat4z2.js → ja-Q5PXKJ2V-p4msxzjd.js} +153 -9
  33. package/dist/{ja-DPO5PPLO-mysfmznx.js → ja-UTQEAP34-8e0q6swp.js} +15 -3
  34. package/dist/{known-types-qryebm95.js → known-types-mn8xn36b.js} +4 -4
  35. package/dist/{ko-ITOPNIYI-hmxd2asd.js → ko-AXCHW2OK-askct7f6.js} +15 -3
  36. package/dist/{ko-JOBF5V7N-4bv0mjje.js → ko-AYBDSRZG-41mdmsg1.js} +153 -9
  37. package/dist/{node-strategy-0267x5e5.js → node-strategy-gc4sg6a2.js} +4 -4
  38. package/dist/{node-sync-service-ac8rzgnj.js → node-sync-service-9d0dqz4z.js} +12 -14
  39. package/dist/{packager-tool-5yw9xatr.js → packager-tool-052kvydg.js} +1 -1
  40. package/dist/{packager-tool-3tfbb641.js → packager-tool-32jxda3r.js} +213 -51
  41. package/dist/packager-tool-53w8skv5.js +262 -0
  42. package/dist/{packager-tool-w0209wf4.js → packager-tool-61hxhgeg.js} +1 -1
  43. package/dist/{packager-tool-58q3tvh7.js → packager-tool-7q6z6npd.js} +166 -28
  44. package/dist/packager-tool-83qnybab.js +1564 -0
  45. package/dist/{packager-tool-eh50gcdk.js → packager-tool-8q7vzh65.js} +5 -4
  46. package/dist/{packager-tool-8rf8qda5.js → packager-tool-adcaxdhs.js} +15 -5
  47. package/dist/{packager-tool-933n6t8x.js → packager-tool-af2s79jb.js} +6 -6
  48. package/dist/{packager-tool-sk2b33km.js → packager-tool-b6368khs.js} +10 -9
  49. package/dist/{packager-tool-d73376xs.js → packager-tool-cg2j4rma.js} +8 -8
  50. package/dist/packager-tool-d4sjk46c.js +88 -0
  51. package/dist/{packager-tool-a42jnpy5.js → packager-tool-d88rqwk8.js} +29 -3
  52. package/dist/packager-tool-dd8bq6az.js +8462 -0
  53. package/dist/packager-tool-gdtpsdn7.js +342 -0
  54. package/dist/{packager-tool-v60h8pvv.js → packager-tool-hrdan5ms.js} +1 -1
  55. package/dist/{packager-tool-bmn50g7v.js → packager-tool-hz1mz8fs.js} +1 -1
  56. package/dist/{packager-tool-v0vdet53.js → packager-tool-jf4hmztd.js} +10 -13
  57. package/dist/{packager-tool-c23zrhj8.js → packager-tool-jysvpt8p.js} +2 -2
  58. package/dist/{packager-tool-jhdf8gt1.js → packager-tool-kkxhc0fp.js} +13554 -8844
  59. package/dist/{packager-tool-4knkebkr.js → packager-tool-kpcjnxd1.js} +269 -23
  60. package/dist/{packager-tool-nx0j1294.js → packager-tool-rhkk0pta.js} +31 -30
  61. package/dist/{packager-tool-d128hs55.js → packager-tool-wefb1zw3.js} +1 -1
  62. package/dist/{packager-tool-3kbkkv2a.js → packager-tool-x4vxexvk.js} +11 -11
  63. package/dist/{packager-tool-dqs5qy9s.js → packager-tool-yrsrzz1a.js} +134 -19
  64. package/dist/packager-tool.js +5 -1501
  65. package/dist/{project-artifacts-43c2ynd9.js → project-artifacts-8snev67g.js} +1 -1
  66. package/dist/{pt-YI4VE4YQ-wdkn2dcf.js → pt-3DIO5QWG-59b3f4bc.js} +15 -3
  67. package/dist/{pt-BR-7DYX2YPT-fqxqzqtf.js → pt-BR-TKHNHMET-sn91xyq0.js} +153 -9
  68. package/dist/{pt-BR-BXURWX4W-bwfcwhk1.js → pt-BR-Y6K6XHXK-mp3hwhw1.js} +15 -3
  69. package/dist/{pt-HTXGGX6Y-97t21dty.js → pt-ROXU257Y-2f6bxev4.js} +153 -9
  70. package/dist/{resourcesSyncService-7ampdrez.js → resourcesSyncService-5bq0j9wf.js} +20 -20
  71. package/dist/{ro-KTNQ3MNU-y08n1x5g.js → ro-AVAWPKOO-b89pw79r.js} +153 -9
  72. package/dist/{ro-RKXZUG7Z-nndrrsq7.js → ro-BWR3ONRR-vzx3hy8a.js} +15 -3
  73. package/dist/ru-WBLQ5B2U-s4em88p0.js +10 -0
  74. package/dist/sdd-lookup-x08j9g9m.js +48 -0
  75. package/dist/{strict-case-rules-303vjvas.js → strict-case-rules-x6t0vb40.js} +141 -109
  76. package/dist/strict-sdd-audit-8e2fh9jg.js +2520 -0
  77. package/dist/tool.js +9 -9
  78. package/dist/{tr-AA6O2WSR-86ba4bdf.js → tr-5IIHSFW5-hw4cewew.js} +15 -3
  79. package/dist/{tr-XHSSPNK7-cmqyc4wd.js → tr-JMIP7ZSL-c39b6pe4.js} +153 -9
  80. package/dist/{trigger-enrichment-service-cg99dk1f.js → trigger-enrichment-service-kkh3197w.js} +24 -24
  81. package/dist/{zh-CN-2EHQT23P-mr63c4xz.js → zh-CN-IFFXSEJS-9wm9gmrv.js} +153 -9
  82. package/dist/{zh-CN-R2KLHXQV-agqr45ds.js → zh-CN-R2KU4U5L-tc1hat59.js} +15 -3
  83. package/dist/{zh-TW-RJGCQANM-w0x3qc1p.js → zh-TW-GNKMELBF-j674515r.js} +15 -3
  84. package/dist/{zh-TW-MGZCE5BT-c4ekmrz9.js → zh-TW-IYBNYAMG-8727c7v2.js} +153 -9
  85. package/package.json +3 -2
  86. package/dist/case-debug-studio-web-service-npcw81ay.js +0 -335
  87. package/dist/packager-tool-134mvmcm.js +0 -3040
  88. package/dist/packager-tool-ty1t2byf.js +0 -27
  89. package/dist/ru-WBLQ5B2U-8r3c7v6d.js +0 -10
  90. package/dist/strict-sdd-audit-qdmc9e1y.js +0 -1024
@@ -5,10 +5,17 @@ compiled into its `dist/` output rather than installed alongside it.
5
5
  Their licences and copyright notices are reproduced here in full, as
6
6
  those licences require.
7
7
 
8
- 39 bundled dependencies:
8
+ 51 bundled dependencies:
9
9
 
10
10
  - @jsep-plugin/object@1.2.2 — MIT
11
- - @serverlessworkflow/sdk@1.0.1 — http://www.apache.org/licenses/LICENSE-2.0.txt
11
+ - @serverlessworkflow/sdk@1.0.1 — Apache-2.0
12
+ - @uipath/agents-storage-schemas@1.35.0 — see below
13
+ - @uipath/case-schema@0.1052.3 — UNLICENSED
14
+ - @uipath/flow-core@0.115.4-develop — MIT
15
+ - @uipath/flow-schema@0.72.2-develop — MIT
16
+ - @uipath/integration-service-design-time@0.25.2 — see below
17
+ - @uipath/resource-builder-sdk@2025.11.0-alpha5891-4020 — ISC
18
+ - acorn@8.17.0 — MIT
12
19
  - ajv@8.20.0 — MIT
13
20
  - ajv-errors@3.0.0 — MIT
14
21
  - base64-js@1.5.1 — MIT
@@ -31,6 +38,10 @@ those licences require.
31
38
  - json-schema-traverse@1.0.0 — MIT
32
39
  - lodash@4.18.1 — MIT
33
40
  - lodash-es@4.18.1 — MIT
41
+ - lodash.isequal — MIT
42
+ - lodash.keys — MIT
43
+ - lodash.merge — MIT
44
+ - lodash.xor — MIT
34
45
  - luxon@3.7.2 — MIT
35
46
  - oauth4webapi@3.8.6 — MIT
36
47
  - open@11.0.0 — MIT
@@ -41,6 +52,7 @@ those licences require.
41
52
  - rxjs@7.8.2 — Apache-2.0
42
53
  - semver@7.8.0 — ISC
43
54
  - semver@7.8.0 — ISC
55
+ - to-json-schema — MIT
44
56
  - tslib@1.14.1 — 0BSD
45
57
  - tsyringe@4.10.0 — MIT
46
58
  - wsl-utils@0.3.1 — MIT
@@ -80,7 +92,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
80
92
 
81
93
  ## @serverlessworkflow/sdk@1.0.1
82
94
 
83
- SPDX: http://www.apache.org/licenses/LICENSE-2.0.txt
95
+ Licence decision: Its `license` field is a URL to the Apache-2.0 text rather than an SPDX id, so it reads as unknown to every scanner. Normalised to the licence that URL names.
96
+
97
+ SPDX: Apache-2.0
84
98
 
85
99
  ```
86
100
  Apache License
@@ -288,6 +302,96 @@ SPDX: http://www.apache.org/licenses/LICENSE-2.0.txt
288
302
 
289
303
  ---
290
304
 
305
+ ## @uipath/agents-storage-schemas@1.35.0
306
+
307
+ SPDX:
308
+
309
+ The upstream package ships no licence file here; `` is the
310
+ licence it is distributed under. The canonical text of that licence
311
+ applies, with copyright held by the package's authors.
312
+
313
+ ---
314
+
315
+ ## @uipath/case-schema@0.1052.3
316
+
317
+ SPDX: UNLICENSED
318
+
319
+ The upstream package ships no licence file here; `UNLICENSED` is the
320
+ licence it is distributed under. The canonical text of that licence
321
+ applies, with copyright held by the package's authors.
322
+
323
+ ---
324
+
325
+ ## @uipath/flow-core@0.115.4-develop
326
+
327
+ SPDX: MIT
328
+
329
+ The upstream package ships no licence file here; `MIT` is the
330
+ licence it is distributed under. The canonical text of that licence
331
+ applies, with copyright held by the package's authors.
332
+
333
+ ---
334
+
335
+ ## @uipath/flow-schema@0.72.2-develop
336
+
337
+ SPDX: MIT
338
+
339
+ The upstream package ships no licence file here; `MIT` is the
340
+ licence it is distributed under. The canonical text of that licence
341
+ applies, with copyright held by the package's authors.
342
+
343
+ ---
344
+
345
+ ## @uipath/integration-service-design-time@0.25.2
346
+
347
+ SPDX:
348
+
349
+ The upstream package ships no licence file here; `` is the
350
+ licence it is distributed under. The canonical text of that licence
351
+ applies, with copyright held by the package's authors.
352
+
353
+ ---
354
+
355
+ ## @uipath/resource-builder-sdk@2025.11.0-alpha5891-4020
356
+
357
+ SPDX: ISC
358
+
359
+ The upstream package ships no licence file here; `ISC` is the
360
+ licence it is distributed under. The canonical text of that licence
361
+ applies, with copyright held by the package's authors.
362
+
363
+ ---
364
+
365
+ ## acorn@8.17.0
366
+
367
+ SPDX: MIT
368
+
369
+ ```
370
+ MIT License
371
+
372
+ Copyright (C) 2012-2022 by various contributors (see AUTHORS)
373
+
374
+ Permission is hereby granted, free of charge, to any person obtaining a copy
375
+ of this software and associated documentation files (the "Software"), to deal
376
+ in the Software without restriction, including without limitation the rights
377
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
378
+ copies of the Software, and to permit persons to whom the Software is
379
+ furnished to do so, subject to the following conditions:
380
+
381
+ The above copyright notice and this permission notice shall be included in
382
+ all copies or substantial portions of the Software.
383
+
384
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
385
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
386
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
387
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
388
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
389
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
390
+ THE SOFTWARE.
391
+ ```
392
+
393
+ ---
394
+
291
395
  ## ajv@8.20.0
292
396
 
293
397
  SPDX: MIT
@@ -905,6 +1009,58 @@ terms above.
905
1009
 
906
1010
  ---
907
1011
 
1012
+ ## lodash.isequal
1013
+
1014
+ Inlined by a bundled dependency rather than resolved directly,
1015
+ so it does not appear in this package's source maps.
1016
+
1017
+ SPDX: MIT
1018
+
1019
+ The upstream package ships no licence file here; `MIT` is the
1020
+ licence it is distributed under. The canonical text of that licence
1021
+ applies, with copyright held by the package's authors.
1022
+
1023
+ ---
1024
+
1025
+ ## lodash.keys
1026
+
1027
+ Inlined by a bundled dependency rather than resolved directly,
1028
+ so it does not appear in this package's source maps.
1029
+
1030
+ SPDX: MIT
1031
+
1032
+ The upstream package ships no licence file here; `MIT` is the
1033
+ licence it is distributed under. The canonical text of that licence
1034
+ applies, with copyright held by the package's authors.
1035
+
1036
+ ---
1037
+
1038
+ ## lodash.merge
1039
+
1040
+ Inlined by a bundled dependency rather than resolved directly,
1041
+ so it does not appear in this package's source maps.
1042
+
1043
+ SPDX: MIT
1044
+
1045
+ The upstream package ships no licence file here; `MIT` is the
1046
+ licence it is distributed under. The canonical text of that licence
1047
+ applies, with copyright held by the package's authors.
1048
+
1049
+ ---
1050
+
1051
+ ## lodash.xor
1052
+
1053
+ Inlined by a bundled dependency rather than resolved directly,
1054
+ so it does not appear in this package's source maps.
1055
+
1056
+ SPDX: MIT
1057
+
1058
+ The upstream package ships no licence file here; `MIT` is the
1059
+ licence it is distributed under. The canonical text of that licence
1060
+ applies, with copyright held by the package's authors.
1061
+
1062
+ ---
1063
+
908
1064
  ## luxon@3.7.2
909
1065
 
910
1066
  SPDX: MIT
@@ -1357,6 +1513,19 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1357
1513
 
1358
1514
  ---
1359
1515
 
1516
+ ## to-json-schema
1517
+
1518
+ Inlined by a bundled dependency rather than resolved directly,
1519
+ so it does not appear in this package's source maps.
1520
+
1521
+ SPDX: MIT
1522
+
1523
+ The upstream package ships no licence file here; `MIT` is the
1524
+ licence it is distributed under. The canonical text of that licence
1525
+ applies, with copyright held by the package's authors.
1526
+
1527
+ ---
1528
+
1360
1529
  ## tslib@1.14.1
1361
1530
 
1362
1531
  SPDX: 0BSD
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  resolveMaestroRegistry
3
- } from "./packager-tool-v60h8pvv.js";
3
+ } from "./packager-tool-hrdan5ms.js";
4
4
  import {
5
5
  OutputFormatter,
6
6
  RESULTS,
7
7
  getOutputFormat,
8
8
  getOutputFormatExplicit,
9
9
  processContext
10
- } from "./packager-tool-4knkebkr.js";
10
+ } from "./packager-tool-kpcjnxd1.js";
11
11
  import {
12
12
  getFileSystem
13
13
  } from "./packager-tool-0v3s8r01.js";
@@ -147,7 +147,8 @@ async function delegateToFlowSdk({
147
147
  commandVerb,
148
148
  sdkVerb = commandVerb,
149
149
  argv,
150
- cwd
150
+ cwd,
151
+ requiresSdkBin
151
152
  }) {
152
153
  const fs = getFileSystem();
153
154
  const workspace = cwd ?? fs.env.cwd();
@@ -156,6 +157,9 @@ async function delegateToFlowSdk({
156
157
  if (!resolution.ok) {
157
158
  return fail(resolution.message, resolution.instructions);
158
159
  }
160
+ if (requiresSdkBin && !(requiresSdkBin in resolution.bin)) {
161
+ return fail(`${label}: the installed builder SDK (${resolution.version}) does not provide this command.`, upgradeInstructions());
162
+ }
159
163
  const cliPath = fs.path.join(resolution.packageDir, "dist", "cli", "index.js");
160
164
  return await runChild(cliPath, [family, sdkVerb, ...argv], workspace, label);
161
165
  }
@@ -309,14 +313,48 @@ var registerDecompileCommand = (program, family) => {
309
313
  processContext.exit(code);
310
314
  });
311
315
  };
316
+ // ../builder-sdk/src/commands/merge.ts
317
+ var MERGE_EXAMPLES = {
318
+ flow: {
319
+ description: "Merge edited authored content into the original Flow artifact",
320
+ command: "uip maestro flow merge Original.flow Edited.flow --output Merged.flow --baseline Baseline.flow",
321
+ message: "flow-merge: wrote Merged.flow (3 nodes, 2 edges)"
322
+ },
323
+ case: {
324
+ description: "Merge edited authored content into the original Case artifact",
325
+ command: "uip maestro case merge original.caseplan.json edited.caseplan.json --output merged.caseplan.json",
326
+ message: "case-merge: wrote merged.caseplan.json (3 stage(s))"
327
+ }
328
+ };
329
+ var registerMergeCommand = (program, family) => {
330
+ const command = program.previewCommand("merge <original> <edited>").description(`Merge an edited ${family} with its original artifact.`).option("-o, --output <file>", "Merged output path");
331
+ if (family === "flow") {
332
+ command.option("--baseline <file>", "Compiled pristine decompile");
333
+ }
334
+ const example = MERGE_EXAMPLES[family];
335
+ command.examples(sdkCliExample(example.description, example.command, example.message)).trackedAction(processContext, async (original, edited, options) => {
336
+ const argv = [original, edited];
337
+ addValue(argv, "-o", options.output);
338
+ addValue(argv, "--baseline", options.baseline);
339
+ const code = await delegateToFlowSdk({
340
+ family,
341
+ commandVerb: "merge",
342
+ argv,
343
+ ...family === "case" ? { requiresSdkBin: "case-merge" } : {}
344
+ });
345
+ if (code !== 0)
346
+ processContext.exit(code);
347
+ });
348
+ };
312
349
  // src/commands/authoring.ts
313
350
  var registerCaseAuthoringCommands = (program) => {
314
351
  registerCompileCommand(program, "case");
315
352
  registerCheckCommand(program, "case");
316
353
  registerDecompileCommand(program, "case");
354
+ registerMergeCommand(program, "case");
317
355
  };
318
356
  export {
319
357
  registerCaseAuthoringCommands
320
358
  };
321
359
 
322
- //# debugId=1A1E49FDDB5AEC9264756E2164756E21
360
+ //# debugId=5B5A575BDF4CDC1964756E2164756E21
@@ -3,20 +3,20 @@ import {
3
3
  ReleasesApi,
4
4
  createOrchestratorConfig,
5
5
  resolveFolder
6
- } from "./packager-tool-eh50gcdk.js";
6
+ } from "./packager-tool-8q7vzh65.js";
7
7
  import {
8
8
  parseJsonInputOrFile
9
- } from "./packager-tool-bmn50g7v.js";
9
+ } from "./packager-tool-hz1mz8fs.js";
10
10
  import"./packager-tool-vepqrsse.js";
11
- import"./packager-tool-dqs5qy9s.js";
11
+ import"./packager-tool-yrsrzz1a.js";
12
+ import"./packager-tool-0gctz400.js";
12
13
  import"./packager-tool-qa9gftnj.js";
14
+ import"./packager-tool-yc4kw997.js";
13
15
  import {
14
16
  OutputFormatter,
15
17
  catchError
16
- } from "./packager-tool-4knkebkr.js";
18
+ } from "./packager-tool-kpcjnxd1.js";
17
19
  import"./packager-tool-0v3s8r01.js";
18
- import"./packager-tool-0gctz400.js";
19
- import"./packager-tool-yc4kw997.js";
20
20
  import"./packager-tool-1yh8g550.js";
21
21
 
22
22
  // src/services/http-client.ts
@@ -289,7 +289,7 @@ async function getJobStatusDetailed(config, jobKey) {
289
289
  throw new Error(`Invalid job key format: "${jobKey}"`);
290
290
  }
291
291
  const response = await jobsApi.jobsGet({
292
- $filter: `Key eq '${jobKey}'`,
292
+ $filter: `Key eq ${jobKey}`,
293
293
  $expand: "Robot,Release,Machine",
294
294
  $top: 1
295
295
  });
@@ -378,4 +378,4 @@ export {
378
378
  validateCaseInputs
379
379
  };
380
380
 
381
- //# debugId=9AD4F87B84A79AEF64756E2164756E21
381
+ //# debugId=7CE7642FAE05A1D064756E2164756E21
@@ -0,0 +1,240 @@
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/bindings-v2.ts
10
+ var BINDINGS_V2_FILE_NAME = "bindings_v2.json";
11
+ var BINDINGS_V2_VERSION = "2.0";
12
+ var CONNECTION_ID_PROPERTY = "ConnectionId";
13
+ var FOLDER_KEY_PROPERTY = "folderKey";
14
+ var byCodeUnit = (left, right) => {
15
+ if (left < right)
16
+ return -1;
17
+ return left > right ? 1 : 0;
18
+ };
19
+ var sortBindingsV2Resources = (resources) => [...resources].sort((a, b) => byCodeUnit(a.resource, b.resource) || byCodeUnit(a.key, b.key));
20
+ var serializeBindingsV2File = (resources) => {
21
+ const file = {
22
+ version: BINDINGS_V2_VERSION,
23
+ resources: sortBindingsV2Resources(resources)
24
+ };
25
+ return `${JSON.stringify(file, null, 2)}
26
+ `;
27
+ };
28
+ var readBindingsV2Resources = (raw) => {
29
+ const [error, parsed] = catchError(() => JSON.parse(raw));
30
+ if (error)
31
+ return;
32
+ if (parsed === null || typeof parsed !== "object")
33
+ return;
34
+ const resources = parsed.resources;
35
+ if (!Array.isArray(resources))
36
+ return;
37
+ return resources.filter((entry) => entry !== null && typeof entry === "object" && typeof entry.key === "string");
38
+ };
39
+ var identity = (entry) => `${entry.resource}:${entry.key}`;
40
+ var diffBindingsV2 = (expected, actual) => {
41
+ const expectedByKey = new Map(expected.map((e) => [identity(e), e]));
42
+ const actualByKey = new Map(actual.map((e) => [identity(e), e]));
43
+ const missing = [];
44
+ const changed = [];
45
+ for (const [key, entry] of expectedByKey) {
46
+ const found = actualByKey.get(key);
47
+ if (found === undefined) {
48
+ missing.push(entry.key);
49
+ } else if (JSON.stringify(found) !== JSON.stringify(entry)) {
50
+ changed.push(entry.key);
51
+ }
52
+ }
53
+ const extra = [...actualByKey.values()].filter((entry) => !expectedByKey.has(identity(entry))).map((entry) => entry.key);
54
+ const alphabetically = (left, right) => left.localeCompare(right);
55
+ return {
56
+ missing: missing.sort(alphabetically),
57
+ extra: extra.sort(alphabetically),
58
+ changed: changed.sort(alphabetically)
59
+ };
60
+ };
61
+ var hasBindingsV2Difference = (difference) => difference.missing.length > 0 || difference.extra.length > 0 || difference.changed.length > 0;
62
+
63
+ // src/services/case-bindings-service.ts
64
+ var asBinding = (value) => {
65
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
66
+ return;
67
+ }
68
+ const record = value;
69
+ return typeof record.id === "string" && typeof record.resource === "string" && typeof record.resourceKey === "string" && record.resourceKey !== "" && typeof record.propertyAttribute === "string" && (record.default === undefined || typeof record.default === "string") ? value : undefined;
70
+ };
71
+ var CONNECTION_RESOURCE = "Connection";
72
+ var NAME_ATTRIBUTE = "name";
73
+ var FOLDER_PATH_ATTRIBUTE = "folderPath";
74
+ var SOLUTION_FOLDER_PREFIX = "solution_folder.";
75
+ var SOLUTION_FOLDER_SENTINEL = "solution_folder";
76
+ var BINDING_REFERENCE_PREFIX = "=bindings.";
77
+ var CONNECTOR_KEY_ENTRY = "connectorKey";
78
+ var CONNECTION_ENTRY = "connection";
79
+ var readConnectorContext = (value) => {
80
+ if (!Array.isArray(value))
81
+ return;
82
+ const byName = new Map;
83
+ for (const entry of value) {
84
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry))
85
+ return;
86
+ const { name, value: entryValue } = entry;
87
+ if (typeof name !== "string")
88
+ return;
89
+ if (typeof entryValue === "string")
90
+ byName.set(name, entryValue);
91
+ }
92
+ return byName.has(CONNECTOR_KEY_ENTRY) ? byName : undefined;
93
+ };
94
+ var collectConnectorKeys = (document) => {
95
+ const byBindingId = new Map;
96
+ const visit = (node) => {
97
+ if (Array.isArray(node)) {
98
+ const context = readConnectorContext(node);
99
+ const connection = context?.get(CONNECTION_ENTRY);
100
+ const connectorKey = context?.get(CONNECTOR_KEY_ENTRY);
101
+ if (connectorKey !== undefined && connection?.startsWith(BINDING_REFERENCE_PREFIX) === true) {
102
+ byBindingId.set(connection.slice(BINDING_REFERENCE_PREFIX.length), connectorKey);
103
+ }
104
+ for (const item of node)
105
+ visit(item);
106
+ return;
107
+ }
108
+ if (node === null || typeof node !== "object")
109
+ return;
110
+ for (const value of Object.values(node))
111
+ visit(value);
112
+ };
113
+ visit(document);
114
+ return byBindingId;
115
+ };
116
+ var attributeDefault = (group, attribute) => group.find((binding) => binding.propertyAttribute === attribute)?.default;
117
+ var connectionEntry = (group, connectorKeys) => {
118
+ const key = group[0].resourceKey;
119
+ const value = {
120
+ [CONNECTION_ID_PROPERTY]: {
121
+ defaultValue: attributeDefault(group, CONNECTION_ID_PROPERTY) ?? key
122
+ }
123
+ };
124
+ const folderKey = attributeDefault(group, FOLDER_KEY_PROPERTY);
125
+ if (folderKey !== undefined) {
126
+ value[FOLDER_KEY_PROPERTY] = { defaultValue: folderKey };
127
+ }
128
+ const connector = group.map((binding) => connectorKeys.get(binding.id)).find((found) => found !== undefined);
129
+ return {
130
+ resource: CONNECTION_RESOURCE,
131
+ key,
132
+ value,
133
+ ...connector !== undefined && { metadata: { connector } }
134
+ };
135
+ };
136
+ var resourceEntry = (group) => {
137
+ const key = group[0].resourceKey;
138
+ const value = {};
139
+ const name = attributeDefault(group, NAME_ATTRIBUTE);
140
+ if (name !== undefined)
141
+ value.name = { defaultValue: name };
142
+ const folderPath = key.startsWith(SOLUTION_FOLDER_PREFIX) ? SOLUTION_FOLDER_SENTINEL : attributeDefault(group, FOLDER_PATH_ATTRIBUTE);
143
+ if (folderPath !== undefined) {
144
+ value.folderPath = { defaultValue: folderPath };
145
+ }
146
+ const subType = group.find((binding) => binding.resourceSubType !== undefined)?.resourceSubType;
147
+ return {
148
+ resource: group[0].resource,
149
+ key,
150
+ value,
151
+ ...subType !== undefined && { metadata: { subType } }
152
+ };
153
+ };
154
+ var deriveCaseBindingsV2 = (document) => {
155
+ const connectorKeys = collectConnectorKeys(document);
156
+ const groups = new Map;
157
+ for (const entry of Array.isArray(document.bindings) ? document.bindings : []) {
158
+ const binding = asBinding(entry);
159
+ if (binding === undefined)
160
+ continue;
161
+ const groupKey = `${binding.resource}:${binding.resourceKey}`;
162
+ const group = groups.get(groupKey);
163
+ if (group === undefined)
164
+ groups.set(groupKey, [binding]);
165
+ else
166
+ group.push(binding);
167
+ }
168
+ return [...groups.values()].map((group) => group[0].resource === CONNECTION_RESOURCE ? connectionEntry(group, connectorKeys) : resourceEntry(group));
169
+ };
170
+ var bindingsV2PathFor = (casePlanPath) => {
171
+ const fs = getFileSystem();
172
+ return fs.path.join(fs.path.dirname(fs.path.resolve(casePlanPath)), BINDINGS_V2_FILE_NAME);
173
+ };
174
+ var compareCaseBindingsV2 = async (casePlanPath, document) => {
175
+ const fs = getFileSystem();
176
+ const path = bindingsV2PathFor(casePlanPath);
177
+ const expected = deriveCaseBindingsV2(document);
178
+ const expectedCount = expected.length;
179
+ if (!await fs.exists(path))
180
+ return { status: "absent", path, expectedCount };
181
+ const [readError, raw] = await catchError(fs.readFile(path, "utf-8"));
182
+ if (readError || raw == null)
183
+ return { status: "unreadable", path, expectedCount };
184
+ const actual = readBindingsV2Resources(raw);
185
+ if (actual === undefined)
186
+ return { status: "unreadable", path, expectedCount };
187
+ const difference = diffBindingsV2(expected, actual);
188
+ return hasBindingsV2Difference(difference) ? { status: "differs", path, expectedCount, difference } : { status: "match", path, expectedCount };
189
+ };
190
+ var syncCaseBindings = async (casePlanPath) => {
191
+ const fs = getFileSystem();
192
+ const resolved = fs.path.resolve(casePlanPath);
193
+ if (!await fs.exists(resolved)) {
194
+ return {
195
+ ok: false,
196
+ message: `Case plan file not found: ${resolved}`,
197
+ instructions: "Pass the path to an existing caseplan JSON file, for example 'uip maestro case bindings sync case.json'."
198
+ };
199
+ }
200
+ const [readError, raw] = await catchError(fs.readFile(resolved, "utf-8"));
201
+ if (readError || raw == null) {
202
+ return {
203
+ ok: false,
204
+ message: `Failed to read case plan: ${readError?.message ?? "empty content"}`,
205
+ instructions: `Verify read permissions on ${resolved}.`
206
+ };
207
+ }
208
+ const [parseError, document] = catchError(() => JSON.parse(raw));
209
+ if (parseError || document == null || typeof document !== "object" || Array.isArray(document)) {
210
+ return {
211
+ ok: false,
212
+ message: `Case plan is not valid JSON: ${parseError?.message ?? "not a JSON object"}`,
213
+ instructions: `Verify the contents of ${resolved}.`
214
+ };
215
+ }
216
+ const resources = deriveCaseBindingsV2(document);
217
+ const path = bindingsV2PathFor(resolved);
218
+ const [writeError] = await catchError(fs.writeFile(path, serializeBindingsV2File(resources)));
219
+ if (writeError) {
220
+ return {
221
+ ok: false,
222
+ message: `Failed to write bindings file: ${writeError.message}`,
223
+ instructions: `Verify write permissions on ${fs.path.dirname(path)}.`
224
+ };
225
+ }
226
+ return {
227
+ ok: true,
228
+ path,
229
+ resourceCount: resources.length,
230
+ connectionCount: resources.filter((entry) => entry.resource === CONNECTION_RESOURCE).length
231
+ };
232
+ };
233
+ export {
234
+ bindingsV2PathFor,
235
+ compareCaseBindingsV2,
236
+ deriveCaseBindingsV2,
237
+ syncCaseBindings
238
+ };
239
+
240
+ //# debugId=45E172EC16BB003D64756E2164756E21