@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
@@ -1,3 +1,7 @@
1
+ import {
2
+ createTaskBindings,
3
+ prefixedId
4
+ } from "./packager-tool-0mj06yen.js";
1
5
  import {
2
6
  DEFAULT_TRIGGER_ID,
3
7
  DEFAULT_TRIGGER_LABEL,
@@ -17,16 +21,12 @@ import {
17
21
  requireStageNode,
18
22
  requireTask
19
23
  } from "./packager-tool-sv0d6wb6.js";
20
- import {
21
- createTaskBindings,
22
- prefixedId
23
- } from "./packager-tool-0mj06yen.js";
24
24
  import {
25
25
  registerSharedIncidentCommands,
26
26
  registerSharedInstanceCommands,
27
27
  registerSharedProcessCommands,
28
28
  registerSharedProcessesCommands
29
- } from "./packager-tool-6q9vpaye.js";
29
+ } from "./packager-tool-cg2j4rma.js";
30
30
  import {
31
31
  GET_SEARCHABLE_TYPES,
32
32
  RESOURCE_TYPES,
@@ -48,7 +48,7 @@ import {
48
48
  mapPackageMetadataOptions,
49
49
  processContext,
50
50
  registerPackageMetadataOptions
51
- } from "./packager-tool-8m22sr4j.js";
51
+ } from "./packager-tool-kpcjnxd1.js";
52
52
  import {
53
53
  getFileSystem
54
54
  } from "./packager-tool-0v3s8r01.js";
@@ -58,8 +58,9 @@ import {
58
58
  // package.json
59
59
  var package_default = {
60
60
  name: "@uipath/case-tool",
61
+ author: "UiPath",
61
62
  license: "SEE LICENSE IN LICENSE.txt",
62
- version: "1.202.1",
63
+ version: "1.203.0-preview.180",
63
64
  description: "Manage Case Management instances, processes, and incidents.",
64
65
  private: false,
65
66
  repository: {
@@ -113,6 +114,72 @@ var package_default = {
113
114
  }
114
115
  };
115
116
 
117
+ // src/commands/bindings.ts
118
+ var CASE_BINDINGS_SYNC_EXAMPLES = [
119
+ {
120
+ Description: "Generate bindings_v2.json from a case plan's root bindings",
121
+ Command: "uip maestro case bindings sync case.json",
122
+ Output: {
123
+ Code: "CaseBindingsSync",
124
+ Data: {
125
+ BindingsPath: "bindings_v2.json",
126
+ ResourceCount: 8,
127
+ ConnectionCount: 2
128
+ }
129
+ }
130
+ }
131
+ ];
132
+ var registerBindingsCommand = (program) => {
133
+ const bindings = program.command("bindings").description("Generate the bindings_v2.json sidecar from a case plan. Required input to 'uip solution resources refresh' for solutions authored without opening Studio Web.").addHelpText("after", `
134
+ The sidecar is a pure derivation of the case plan's root 'bindings' array: the
135
+ 'name' and 'folderPath' bindings that share a resourceKey collapse into one
136
+ entry keyed by that resourceKey, and each distinct connection collapses the
137
+ same way. Nothing else is read — no network call, no registry file — so the
138
+ output depends only on the case plan you pass in.
139
+
140
+ Generate it rather than writing it by hand. The consumer deserializes the
141
+ on-disk 'key' field, so an entry written as 'resourceKey' has no identity and
142
+ is skipped without an error: the resources are all present in the file and all
143
+ invisible to 'uip solution resources refresh'.
144
+
145
+ Subcommands:
146
+ sync Write 'bindings_v2.json' next to a case plan.`);
147
+ bindings.command("sync").description("Derive bindings_v2.json from a case plan and write it into the same directory.").argument("<file>", "Path to the case plan JSON file. The output 'bindings_v2.json' is written next to it, overwriting any existing file.").examples(CASE_BINDINGS_SYNC_EXAMPLES).trackedAction(processContext, async (file) => {
148
+ const { syncCaseBindings } = await import("./case-bindings-service-1wxfghzd.js");
149
+ const [error, result] = await catchError(syncCaseBindings(file));
150
+ if (error) {
151
+ OutputFormatter.error({
152
+ Result: RESULTS.Failure,
153
+ ErrorCode: "unknown_error",
154
+ Message: `Bindings sync failed: ${error.message}`,
155
+ Instructions: `Verify that ${file} is a readable case plan JSON file.`
156
+ });
157
+ processContext.exit(1);
158
+ return;
159
+ }
160
+ if (!result.ok) {
161
+ OutputFormatter.error({
162
+ Result: RESULTS.Failure,
163
+ ErrorCode: "invalid_argument",
164
+ Retry: "RetryWillNotFix",
165
+ Message: result.message,
166
+ Instructions: result.instructions
167
+ });
168
+ processContext.exit(1);
169
+ return;
170
+ }
171
+ OutputFormatter.success({
172
+ Result: RESULTS.Success,
173
+ Code: "CaseBindingsSync",
174
+ Data: {
175
+ BindingsPath: result.path,
176
+ ResourceCount: result.resourceCount,
177
+ ConnectionCount: result.connectionCount
178
+ }
179
+ });
180
+ });
181
+ };
182
+
116
183
  // src/utils/schemaFile.ts
117
184
  async function readSchema(filePath) {
118
185
  const fs = getFileSystem();
@@ -713,7 +780,7 @@ var CASE_DEBUG_EXAMPLES = [
713
780
  ];
714
781
  function registerDebugCommand(program) {
715
782
  program.command("debug").description("Debug a case project by uploading to Studio Web and running a debug session").argument("<project-path>", "Path to the case project directory (must contain project.uiproj)").option("--folder-id <id>", "Orchestrator folder ID (OrganizationUnitId). Auto-detected if not provided.").option("--poll-interval <ms>", "Polling interval in milliseconds", "2000").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(CASE_DEBUG_EXAMPLES).trackedAction(processContext, async (projectPath, options) => {
716
- const { getLoginStatusAsync } = await import("./index-kwxe1vep.js");
783
+ const { getLoginStatusAsync } = await import("./index-fz4ttsde.js");
717
784
  const [loginError, loginStatus] = await catchError(getLoginStatusAsync({
718
785
  ensureTokenValidityMinutes: options.loginValidity
719
786
  }));
@@ -816,8 +883,8 @@ function registerDebugCommand(program) {
816
883
  logger.info(` Tenant: ${tenantName} (${tenantId})`);
817
884
  logger.info(` Base URL: ${baseUrl}`);
818
885
  const pollInterval = parseInt(options.pollInterval || "2000", 10);
819
- const { CaseDebugStudioWebService } = await import("./case-debug-studio-web-service-45rb4ej9.js");
820
- const { DebugPollTimeoutError, buildPollTimeoutFailureOutput } = await import("./debug-service-rgh5q6v7.js");
886
+ const { CaseDebugStudioWebService } = await import("./case-debug-studio-web-service-tpfm4r66.js");
887
+ const { DebugPollTimeoutError, buildPollTimeoutFailureOutput } = await import("./debug-service-8x087xxt.js");
821
888
  const service = new CaseDebugStudioWebService;
822
889
  logger.info(`Starting Studio Web debug session for: ${projectPath}`);
823
890
  const [executeError, result] = await catchError(service.executeProjectViaStudioWeb(projectPath, studioWebConfig, {
@@ -843,7 +910,7 @@ function registerDebugCommand(program) {
843
910
  const {
844
911
  buildSolutionUploadFailureOutput,
845
912
  isSolutionUploadHttpError
846
- } = await import("./index-j63n7z6x.js");
913
+ } = await import("./index-38apv2p1.js");
847
914
  if (isSolutionUploadHttpError(executeError)) {
848
915
  OutputFormatter.error(buildSolutionUploadFailureOutput(executeError, {
849
916
  subject: "case",
@@ -1175,6 +1242,55 @@ var registerEdgesCommand = (program) => {
1175
1242
  });
1176
1243
  });
1177
1244
  };
1245
+
1246
+ // src/commands/format.ts
1247
+ var CASE_FORMAT_EXAMPLES = [
1248
+ {
1249
+ Description: "Rewrite a case plan pretty-printed so it can be edited",
1250
+ Command: "uip maestro case format case.json",
1251
+ Output: {
1252
+ Code: "CaseFormat",
1253
+ Data: { Changed: true, Lines: 1842, LongestLine: 118 }
1254
+ }
1255
+ }
1256
+ ];
1257
+ var registerFormatCommand = (program) => {
1258
+ program.command("format").description("Rewrite a case plan JSON file pretty-printed (2-space indent, one key per line) so it can be patched with a file-edit tool.").argument("<file>", "Path to the case plan JSON file, rewritten in place").examples(CASE_FORMAT_EXAMPLES).trackedAction(processContext, async (file) => {
1259
+ const { formatCasePlan } = await import("./case-format-service-q345a2fd.js");
1260
+ const [error, result] = await catchError(formatCasePlan(file));
1261
+ if (error) {
1262
+ OutputFormatter.error({
1263
+ Result: RESULTS.Failure,
1264
+ ErrorCode: "unknown_error",
1265
+ Message: `Formatting failed: ${error.message}`,
1266
+ Instructions: `Verify that ${file} is a readable case plan JSON file.`
1267
+ });
1268
+ processContext.exit(1);
1269
+ return;
1270
+ }
1271
+ if (!result.ok) {
1272
+ OutputFormatter.error({
1273
+ Result: RESULTS.Failure,
1274
+ ErrorCode: "invalid_argument",
1275
+ Retry: "RetryWillNotFix",
1276
+ Message: result.message,
1277
+ Instructions: result.instructions
1278
+ });
1279
+ processContext.exit(1);
1280
+ return;
1281
+ }
1282
+ OutputFormatter.success({
1283
+ Result: RESULTS.Success,
1284
+ Code: "CaseFormat",
1285
+ Data: {
1286
+ File: result.path,
1287
+ Changed: result.changed,
1288
+ Lines: result.lines,
1289
+ LongestLine: result.longestLine
1290
+ }
1291
+ });
1292
+ });
1293
+ };
1178
1294
  // src/commands/incidents.ts
1179
1295
  var registerIncidentsCommand = (program) => {
1180
1296
  registerSharedIncidentCommands(program, {
@@ -1203,7 +1319,7 @@ var initCaseProject = async (name, options) => {
1203
1319
  throw new Error(`Invalid project name "${name}". Name can only contain letters, numbers, underscores (_), and hyphens (-).`);
1204
1320
  }
1205
1321
  const fs = getFileSystem();
1206
- const { prepareProjectLocation, tryRegisterProjectInParentSolution } = await import("./index-j63n7z6x.js");
1322
+ const { prepareProjectLocation, tryRegisterProjectInParentSolution } = await import("./index-38apv2p1.js");
1207
1323
  const { projectDir, autoCreatedSolution } = await prepareProjectLocation(fs, fs.path.resolve(name), name, { skipRegistration: options.skipSolutionRegistration === true });
1208
1324
  const projectDirExists = await fs.stat(projectDir).then(() => true).catch((err) => {
1209
1325
  const code = err instanceof Error ? err.code : undefined;
@@ -1296,7 +1412,7 @@ var initCaseProject = async (name, options) => {
1296
1412
  const solutionRegistration = await tryRegisterProjectInParentSolution(fs, projectDir, { skipRegistration: options.skipSolutionRegistration === true });
1297
1413
  let projectArtifacts;
1298
1414
  if ((solutionRegistration.Status === "Registered" || solutionRegistration.Status === "AlreadyRegistered") && solutionRegistration.Solution && solutionRegistration.ProjectId) {
1299
- const { ensureProjectArtifacts } = await import("./project-artifacts-a69j3g1q.js");
1415
+ const { ensureProjectArtifacts } = await import("./project-artifacts-8snev67g.js");
1300
1416
  projectArtifacts = await ensureProjectArtifacts({
1301
1417
  solutionDir: fs.path.dirname(solutionRegistration.Solution),
1302
1418
  projectId: solutionRegistration.ProjectId,
@@ -1351,8 +1467,8 @@ var registerInstancesCommand = (program) => {
1351
1467
  };
1352
1468
 
1353
1469
  // src/commands/job.ts
1354
- var loadAuth = () => import("./index-kwxe1vep.js");
1355
- var loadCaseApi = () => import("./case-api-63ncrr7n.js");
1470
+ var loadAuth = () => import("./index-fz4ttsde.js");
1471
+ var loadCaseApi = () => import("./case-api-v6cjyrfw.js");
1356
1472
  var CASE_JOB_STATUS_EXAMPLES = [
1357
1473
  {
1358
1474
  Description: "Get detailed status of a case job",
@@ -1548,16 +1664,17 @@ var DETECTION_FAILURE_MARKERS = [
1548
1664
  "is not a valid Case Management JSON of any previous version",
1549
1665
  "is not a valid Case Management JSON of any known version"
1550
1666
  ];
1551
- var AUTHORING_GUIDANCE = "Author caseplan.json directly, then run `uip maestro case validate <file>`. " + "The task and stage JSON shapes are documented in the uipath-maestro-case " + "skill under references/plugins/ — load it rather than inferring the shape " + "from packed output.";
1667
+ var CASE_PLAN_NAMES = "caseplan.case, caseplan.json, case.stage.json, default.stage.json";
1668
+ var AUTHORING_GUIDANCE = `Author the case plan directly (${CASE_PLAN_NAMES}), then run \`uip maestro case validate <file>\`. ` + "The task and stage JSON shapes are documented in the uipath-maestro-case " + "skill under references/plugins/ — load it rather than inferring the shape " + "from packed output.";
1552
1669
  var DETECTION_FAILURE_INSTRUCTIONS = [
1553
1670
  "The case plan did not match any schema version bundled with this CLI.",
1554
1671
  "",
1555
1672
  "This usually means a version mismatch rather than a corrupt file. Check the",
1556
- "`version` field at the root of caseplan.json: a plan opened and saved in",
1557
- "Studio Web is upgraded in place and may declare a NEWER version than this",
1558
- "CLI accepts, in which case upgrading the CLI is the fix. Note the wording of",
1559
- 'the underlying error — "any previous version" is misleading here, since the',
1560
- "usual cause is a plan that is newer, not older.",
1673
+ `\`version\` field at the root of the case plan (${CASE_PLAN_NAMES}): a plan`,
1674
+ "opened and saved in Studio Web is upgraded in place and may declare a NEWER",
1675
+ "version than this CLI accepts, in which case upgrading the CLI is the fix.",
1676
+ 'Note the wording of the underlying error — "any previous version" is',
1677
+ "misleading here, since the usual cause is a plan that is newer, not older.",
1561
1678
  "",
1562
1679
  "If the version is in range, the document is structurally invalid against that",
1563
1680
  "schema. Re-run `uip maestro case validate <file>` — validate reports per-node",
@@ -1597,7 +1714,7 @@ var CASE_PACK_EXAMPLES = [
1597
1714
  var registerPackCommand = (program) => {
1598
1715
  const command = program.command("pack").description("Pack a Case project into a .nupkg file").argument("<project-path>", "Path to the Case project directory").argument("<output-path>", "Output directory where the .nupkg will be saved").option("-n, --name <name>", "Package name (default: project folder name)").option("-v, --version <version>", "Package version (default: 1.0.0)", "1.0.0");
1599
1716
  registerPackageMetadataOptions(command).examples(CASE_PACK_EXAMPLES).trackedAction(processContext, async (projectPath, outputPath, options) => {
1600
- const { CasePackService } = await import("./case-pack-service-72ymxkvq.js");
1717
+ const { CasePackService } = await import("./case-pack-service-29rza2q2.js");
1601
1718
  const service = new CasePackService;
1602
1719
  const [error, result] = await catchError(service.execute(projectPath, {
1603
1720
  output: outputPath,
@@ -1679,8 +1796,8 @@ var CASE_PROCESS_RUN_EXAMPLES = [
1679
1796
  }
1680
1797
  }
1681
1798
  ];
1682
- var loadAuth2 = () => import("./index-kwxe1vep.js");
1683
- var loadCaseApi2 = () => import("./case-api-63ncrr7n.js");
1799
+ var loadAuth2 = () => import("./index-fz4ttsde.js");
1800
+ var loadCaseApi2 = () => import("./case-api-v6cjyrfw.js");
1684
1801
  function registerProcessCommand(program) {
1685
1802
  const processCmd = program.command("process").description("Manage Case processes");
1686
1803
  registerSharedProcessCommands(processCmd, { toolLabel: "Case" });
@@ -1918,7 +2035,7 @@ function registerProcessCommand(program) {
1918
2035
  }
1919
2036
  inputs = parsed;
1920
2037
  } else {
1921
- const { readStdin } = await import("./input-reader-8kdvqfaf.js");
2038
+ const { readStdin } = await import("./input-reader-pnh948bq.js");
1922
2039
  const [stdinError, stdinData] = await catchError(readStdin());
1923
2040
  if (!stdinError && stdinData) {
1924
2041
  const [parseError, parsed] = await catchError(parseCaseInputs(stdinData));
@@ -2092,6 +2209,9 @@ function parseFilterString(filterStr) {
2092
2209
  return { filters, logic: "AND" };
2093
2210
  }
2094
2211
 
2212
+ // src/utils/output-casing-hint.ts
2213
+ var OUTPUT_CASING_HINT = "Copied-into-caseplan subtrees keep their own key casing — see `packages/case-tool/docs/output-key-casing.md`.";
2214
+
2095
2215
  // src/commands/registry.ts
2096
2216
  var REGISTRY_PULL_EXAMPLES = [
2097
2217
  {
@@ -2155,6 +2275,7 @@ var REGISTRY_LIST_EXAMPLES = [
2155
2275
  }
2156
2276
  }
2157
2277
  ];
2278
+ var VERBATIM_REGISTRY_FIELDS = ["entry", "config"];
2158
2279
  var REGISTRY_GET_EXAMPLES = [
2159
2280
  {
2160
2281
  Description: "Get a registry resource by identifier",
@@ -2228,7 +2349,7 @@ Subcommands:
2228
2349
  search Find resources by keyword and/or field filters
2229
2350
  get Get full schema for a single resource`);
2230
2351
  registry.command("pull").description("Pull and sync data from Case registry").option("-f, --force", "Force refresh, ignore cache").option("-s, --solution-id <solutionId>", "Include the registry of the solution").examples(REGISTRY_PULL_EXAMPLES).trackedAction(processContext, async (options) => {
2231
- const { pullResources } = await import("./resourcesSyncService-gnmpre85.js");
2352
+ const { pullResources } = await import("./resourcesSyncService-8t5qdtvt.js");
2232
2353
  const [mapError, promises] = catchError(() => RESOURCE_TYPES.map((type) => pullResources({
2233
2354
  force: options.force,
2234
2355
  solutionId: options.solutionId
@@ -2280,7 +2401,7 @@ Subcommands:
2280
2401
  processContext.exit(1);
2281
2402
  return;
2282
2403
  }
2283
- const { searchResources, searchResourcesWithFilters } = await import("./resourcesSyncService-gnmpre85.js");
2404
+ const { searchResources, searchResourcesWithFilters } = await import("./resourcesSyncService-8t5qdtvt.js");
2284
2405
  let searchResult;
2285
2406
  if (options.filter) {
2286
2407
  const [parseError, filters] = catchError(() => parseFilterString(options.filter));
@@ -2338,7 +2459,7 @@ Subcommands:
2338
2459
  });
2339
2460
  });
2340
2461
  registry.command("list").description("List all resources (use pull to update list)").option("--local", "List only in-solution sibling project resources (requires a .uipx in the current directory, its parent, or grandparent). Skips the tenant cache.").examples(REGISTRY_LIST_EXAMPLES).trackedAction(processContext, async (options) => {
2341
- const { listLocalResources, listResources } = await import("./resourcesSyncService-gnmpre85.js");
2462
+ const { listLocalResources, listResources } = await import("./resourcesSyncService-8t5qdtvt.js");
2342
2463
  let grouped;
2343
2464
  if (options.local) {
2344
2465
  const [localError, localGrouped] = await catchError(listLocalResources());
@@ -2385,7 +2506,7 @@ Subcommands:
2385
2506
  });
2386
2507
  });
2387
2508
  registry.command("get").description("Get resource(s) by identifier (entityKey or id)").argument("<identifier>", "The entityKey (process-types) or id (action-apps) of the resource").addOption(new Option("-t, --type <type>", `Limit search to a specific resource type (${GET_SEARCHABLE_TYPES.map((t) => t.type).join(", ")})`).choices(GET_SEARCHABLE_TYPES.map((t) => t.type))).option("--connection-id <id>", "Connection ID for connector-specific IS field metadata (custom fields). Only applies to typecache-* activity / trigger results.").option("--local", "Resolve the identifier against in-solution sibling project resources (requires a .uipx in the current directory, its parent, or grandparent). Skips the tenant cache. The identifier is the sibling's resource key or .uipx project Id.").examples(REGISTRY_GET_EXAMPLES).trackedAction(processContext, async (identifier, options) => {
2388
- const { getResources } = await import("./resourcesSyncService-gnmpre85.js");
2509
+ const { getResources } = await import("./resourcesSyncService-8t5qdtvt.js");
2389
2510
  const [error, matches] = await catchError(getResources(identifier, options.type, {
2390
2511
  local: options.local
2391
2512
  }));
@@ -2422,11 +2543,11 @@ Subcommands:
2422
2543
  const id = m.resource.uiPathActivityTypeId;
2423
2544
  if (typeof id !== "string")
2424
2545
  return m;
2425
- const { lookupTypeCacheEntry } = await import("./connector-lookup-service-cwm3bk3a.js");
2546
+ const { lookupTypeCacheEntry } = await import("./connector-lookup-service-8v4qawd5.js");
2426
2547
  const [lookupError, lookupResult] = await catchError(lookupTypeCacheEntry(id, m.resourceType));
2427
2548
  if (lookupError)
2428
2549
  return m;
2429
- const { enrichConnectorRegistryEntry } = await import("./connector-enrichment-service-wqdd0561.js");
2550
+ const { enrichConnectorRegistryEntry } = await import("./connector-enrichment-service-qa26zsjg.js");
2430
2551
  const [enrichError, definitions] = await catchError(enrichConnectorRegistryEntry(lookupResult.config, options.connectionId));
2431
2552
  if (enrichError || definitions === null)
2432
2553
  return m;
@@ -2451,8 +2572,8 @@ Subcommands:
2451
2572
  }
2452
2573
  });
2453
2574
  });
2454
- registry.command("get-connector").description("Look up a connector activity/trigger from the local TypeCache index").addOption(new Option("-t, --type <type>", "Resource type").choices([...TYPECACHE_INDEX_TYPES]).makeOptionMandatory()).requiredOption("--activity-type-id <id>", "The uiPathActivityTypeId to look up").examples(REGISTRY_GET_CONNECTOR_EXAMPLES).trackedAction(processContext, async (options) => {
2455
- const { lookupTypeCacheEntry } = await import("./connector-lookup-service-cwm3bk3a.js");
2575
+ registry.command("get-connector").description(`Look up a connector activity/trigger from the local TypeCache index. ${OUTPUT_CASING_HINT}`).addOption(new Option("-t, --type <type>", "Resource type").choices([...TYPECACHE_INDEX_TYPES]).makeOptionMandatory()).requiredOption("--activity-type-id <id>", "The uiPathActivityTypeId to look up").examples(REGISTRY_GET_CONNECTOR_EXAMPLES).trackedAction(processContext, async (options) => {
2576
+ const { lookupTypeCacheEntry } = await import("./connector-lookup-service-8v4qawd5.js");
2456
2577
  const [error, result] = await catchError(lookupTypeCacheEntry(options.activityTypeId, options.type));
2457
2578
  if (error) {
2458
2579
  OutputFormatter.error({
@@ -2470,10 +2591,10 @@ Subcommands:
2470
2591
  Entry: result.entry,
2471
2592
  Config: result.config
2472
2593
  }
2473
- });
2594
+ }, { preserveDataKeys: VERBATIM_REGISTRY_FIELDS });
2474
2595
  });
2475
- registry.command("get-connection").description("Look up a connector and fetch available connections from Integration Service").addOption(new Option("-t, --type <type>", "Resource type").choices([...TYPECACHE_INDEX_TYPES]).makeOptionMandatory()).requiredOption("--activity-type-id <id>", "The uiPathActivityTypeId to look up").examples(REGISTRY_GET_CONNECTION_EXAMPLES).trackedAction(processContext, async (options) => {
2476
- const { fetchConnectorConnections, lookupTypeCacheEntry } = await import("./connector-lookup-service-cwm3bk3a.js");
2596
+ registry.command("get-connection").description(`Look up a connector and fetch available connections from Integration Service. ${OUTPUT_CASING_HINT}`).addOption(new Option("-t, --type <type>", "Resource type").choices([...TYPECACHE_INDEX_TYPES]).makeOptionMandatory()).requiredOption("--activity-type-id <id>", "The uiPathActivityTypeId to look up").examples(REGISTRY_GET_CONNECTION_EXAMPLES).trackedAction(processContext, async (options) => {
2597
+ const { fetchConnectorConnections, lookupTypeCacheEntry } = await import("./connector-lookup-service-8v4qawd5.js");
2477
2598
  const [lookupError, lookupResult] = await catchError(lookupTypeCacheEntry(options.activityTypeId, options.type));
2478
2599
  if (lookupError) {
2479
2600
  OutputFormatter.error({
@@ -2502,7 +2623,7 @@ Subcommands:
2502
2623
  Config: lookupResult.config,
2503
2624
  Connections: connections
2504
2625
  }
2505
- });
2626
+ }, { preserveDataKeys: VERBATIM_REGISTRY_FIELDS });
2506
2627
  });
2507
2628
  };
2508
2629
 
@@ -3185,6 +3306,11 @@ var registerSlaCommand = (program) => {
3185
3306
  };
3186
3307
 
3187
3308
  // src/commands/spec.ts
3309
+ var VERBATIM_SPEC_FIELDS = [
3310
+ "caseShape",
3311
+ "typecacheEntry",
3312
+ "essentialConfiguration"
3313
+ ];
3188
3314
  var SPEC_EXAMPLES = [
3189
3315
  {
3190
3316
  Description: "Get the full spec for a curated connector activity (Send Email)",
@@ -3241,7 +3367,7 @@ var SPEC_EXAMPLES = [
3241
3367
  }
3242
3368
  ];
3243
3369
  var registerSpecCommand = (program) => {
3244
- program.command("spec").description("Generate a normalized ConnectorTaskSpec — a one-stop description of everything a consumer needs to construct a runnable Integration Service activity or trigger task. Looks up the typeId in the local TypeCache, lists IS connections for the connector, and fetches IS metadata.").addOption(new Option("--type <type>", "TypeCache to look up").choices(["activity", "trigger"]).makeOptionMandatory()).requiredOption("--activity-type-id <uuid>", "Studio Web uiPathActivityTypeId — found via 'uip maestro case registry pull' + reading typecache-{activities,triggers}-index.json or 'uip maestro case registry get-connector'").requiredOption("--connection-id <id>", "Connection UUID. List candidates with `uip maestro case registry get-connection --type typecache-{activities,triggers} --activity-type-id <uuid>` and pick one before invoking spec.").option("--object-name <name>", "Override the typecache objectName. Required for entity-typed Curated triggers whose typecache stores a placeholder (e.g. Data Service `{tenantEntityName|folderEntityName}` — pick a real entity name).").option("--skip-case-shape", "Omit `caseShape` (`inputs[]`, `outputs[]`, `context[]`) from the response. Use during the planning phase when the caller only needs the connector contract (`inputs.*[?required]`, `references[*].discoverCommand`, `outputs.responseFields`). Re-run without the flag during implementation to get the full caseShape scaffold. Mutually exclusive with --input-details.").option("--input-details <json>", "JSON values to fold into the generated `caseShape`. Activity accepts {bodyParameters, queryParameters, pathParameters, filter}; trigger accepts {eventParameters, filter}. See `packages/case-tool/docs/spec-input-details.md` for the full reference. Mutually exclusive with --skip-case-shape.").examples(SPEC_EXAMPLES).trackedAction(processContext, async (options) => {
3370
+ program.command("spec").description(`Generate a normalized ConnectorTaskSpec — a one-stop description of everything a consumer needs to construct a runnable Integration Service activity or trigger task. Looks up the typeId in the local TypeCache, lists IS connections for the connector, and fetches IS metadata. ${OUTPUT_CASING_HINT}`).addOption(new Option("--type <type>", "TypeCache to look up").choices(["activity", "trigger"]).makeOptionMandatory()).requiredOption("--activity-type-id <uuid>", "Studio Web uiPathActivityTypeId — found via 'uip maestro case registry pull' + reading typecache-{activities,triggers}-index.json or 'uip maestro case registry get-connector'").requiredOption("--connection-id <id>", "Connection UUID. List candidates with `uip maestro case registry get-connection --type typecache-{activities,triggers} --activity-type-id <uuid>` and pick one before invoking spec.").option("--object-name <name>", "Override the typecache objectName. Required for entity-typed Curated triggers whose typecache stores a placeholder (e.g. Data Service `{tenantEntityName|folderEntityName}` — pick a real entity name).").option("--skip-case-shape", "Omit `caseShape` (`inputs[]`, `outputs[]`, `context[]`) from the response. Use during the planning phase when the caller only needs the connector contract (`inputs.*[?required]`, `references[*].discoverCommand`, `outputs.responseFields`). Re-run without the flag during implementation to get the full caseShape scaffold. Mutually exclusive with --input-details.").option("--input-details <json>", "JSON values to fold into the generated `caseShape`. Activity accepts {bodyParameters, queryParameters, pathParameters, filter}; trigger accepts {eventParameters, filter}. See `packages/case-tool/docs/spec-input-details.md` for the full reference. Mutually exclusive with --skip-case-shape.").examples(SPEC_EXAMPLES).trackedAction(processContext, async (options) => {
3245
3371
  logger.info(`Fetching ${options.type} spec for typeId ${options.activityTypeId} (connection: ${options.connectionId})`);
3246
3372
  let parsedInputDetails;
3247
3373
  if (options.inputDetails !== undefined) {
@@ -3271,7 +3397,7 @@ var registerSpecCommand = (program) => {
3271
3397
  skipCaseShape: options.skipCaseShape === true,
3272
3398
  inputDetails: parsedInputDetails
3273
3399
  };
3274
- const { fetchConnectorTaskSpec } = await import("./connector-task-spec-pn5vqw89.js");
3400
+ const { fetchConnectorTaskSpec } = await import("./connector-task-spec-q9v9vjd2.js");
3275
3401
  const [error, spec] = await catchError(fetchConnectorTaskSpec(options.type, options.activityTypeId, options.connectionId, fetchOpts));
3276
3402
  if (error) {
3277
3403
  OutputFormatter.error({
@@ -3286,7 +3412,7 @@ var registerSpecCommand = (program) => {
3286
3412
  Result: RESULTS.Success,
3287
3413
  Code: "ConnectorTaskSpec",
3288
3414
  Data: spec
3289
- });
3415
+ }, { preserveDataKeys: VERBATIM_SPEC_FIELDS });
3290
3416
  });
3291
3417
  };
3292
3418
 
@@ -5137,9 +5263,9 @@ var TASKS_DESCRIBE_EXAMPLES = [
5137
5263
  }
5138
5264
  }
5139
5265
  ];
5140
- var loadConnectorEnrichment = () => import("./connector-enrichment-service-wqdd0561.js");
5141
- var loadTriggerEnrichment = () => import("./trigger-enrichment-service-52h9fjqd.js");
5142
- var loadEnrichment = () => import("./enrichment-service-6qd2ekgp.js");
5266
+ var loadConnectorEnrichment = () => import("./connector-enrichment-service-qa26zsjg.js");
5267
+ var loadTriggerEnrichment = () => import("./trigger-enrichment-service-n622a230.js");
5268
+ var loadEnrichment = () => import("./enrichment-service-7vbxcwge.js");
5143
5269
  var TASK_TYPES = [
5144
5270
  "process",
5145
5271
  "action",
@@ -5416,6 +5542,7 @@ async function runDescribeTask(options) {
5416
5542
  }
5417
5543
  return describeEnrichableTask(normalizedType, options.id);
5418
5544
  }
5545
+ var VERBATIM_TASK_IO_FIELDS = ["inputs", "outputs", "enrichment"];
5419
5546
  var registerTasksCommand = (program) => {
5420
5547
  const tasks = program.command("tasks").description("Manage tasks within a stage in a case management definition JSON file");
5421
5548
  tasks.command("add", { hidden: true }).description("Add a new task to a stage").argument("<file>", "Path to the case management JSON file").argument("<stage-id>", "ID of the stage to add the task to").requiredOption("-t, --type <type>", `Task type: ${TASK_TYPES.join(", ")}`).option("-d, --display-name <displayName>", "Display name for the task").option("-n, --name <name>", "Process or workflow name").option("--folder-path <folderPath>", "Folder path for the process or workflow").option("--lane <lane>", "Parallel lane index (default: 0)", "0").option("--task-type-id <taskTypeId>", "Task type ID to enrich with bindings, inputs, and outputs").option("--should-run-only-once", "Whether the task should run only once").option("--description <description>", "Description of the task").option("--is-required", "Whether the task is required").option("--task-title <taskTitle>", "Title for the action task (action type only)").option("--priority <priority>", "Priority for the action task: Low, Medium, High, Critical (action type only, default: Medium)").option("--recipient <email>", "Recipient email for the action task (action type only, sets assignmentCriteria to user)").examples(TASKS_ADD_EXAMPLES).trackedAction(processContext, async (file, stageId, options) => {
@@ -5821,7 +5948,7 @@ var registerTasksCommand = (program) => {
5821
5948
  }
5822
5949
  });
5823
5950
  });
5824
- tasks.command("enrich").description("Enrich a task with input/output schemas from the API").requiredOption("--type <type>", `Task type: ${ENRICHABLE_TYPES.join(", ")}`).requiredOption("--id <id>", "Unique ID of the task (entityKey or action-app id)").option("--element-id <elementId>", "Element ID for variable binding").examples(TASKS_ENRICH_EXAMPLES).trackedAction(processContext, async (options) => {
5951
+ tasks.command("enrich").description(`Enrich a task with input/output schemas from the API. ${OUTPUT_CASING_HINT}`).requiredOption("--type <type>", `Task type: ${ENRICHABLE_TYPES.join(", ")}`).requiredOption("--id <id>", "Unique ID of the task (entityKey or action-app id)").option("--element-id <elementId>", "Element ID for variable binding").examples(TASKS_ENRICH_EXAMPLES).trackedAction(processContext, async (options) => {
5825
5952
  const normalizedType = options.type.toLowerCase();
5826
5953
  if (!ENRICHABLE_TYPES.includes(normalizedType)) {
5827
5954
  OutputFormatter.error({
@@ -5849,9 +5976,9 @@ var registerTasksCommand = (program) => {
5849
5976
  Result: RESULTS.Success,
5850
5977
  Code: "TaskEnriched",
5851
5978
  Data: result
5852
- });
5979
+ }, { preserveDataKeys: VERBATIM_TASK_IO_FIELDS });
5853
5980
  });
5854
- tasks.command("describe").description("Describe a task type's input/output metadata for binding discovery").requiredOption("--type <type>", `Task type: ${DESCRIBABLE_TYPES.join(", ")}`).requiredOption("--id <id>", "Unique ID of the task (entityKey or action-app id)").option("--connection-id <connectionId>", "Connection UUID (required for connector-activity type)").examples(TASKS_DESCRIBE_EXAMPLES).trackedAction(processContext, async (options) => {
5981
+ tasks.command("describe").description(`Describe a task type's input/output metadata for binding discovery. ${OUTPUT_CASING_HINT}`).requiredOption("--type <type>", `Task type: ${DESCRIBABLE_TYPES.join(", ")}`).requiredOption("--id <id>", "Unique ID of the task (entityKey or action-app id)").option("--connection-id <connectionId>", "Connection UUID (required for connector-activity type)").examples(TASKS_DESCRIBE_EXAMPLES).trackedAction(processContext, async (options) => {
5855
5982
  const [error, result] = await catchError(runDescribeTask(options));
5856
5983
  if (error) {
5857
5984
  OutputFormatter.error({
@@ -5870,7 +5997,7 @@ var registerTasksCommand = (program) => {
5870
5997
  outputs: result.outputs,
5871
5998
  ...result.enrichment ? { enrichment: result.enrichment } : {}
5872
5999
  }
5873
- });
6000
+ }, { preserveDataKeys: VERBATIM_TASK_IO_FIELDS });
5874
6001
  });
5875
6002
  };
5876
6003
 
@@ -6171,7 +6298,7 @@ var registerTriggersCommand = (program) => {
6171
6298
  const result = await readAndBuildTrigger(file, options.displayName, options.position, options.description);
6172
6299
  if (result.error)
6173
6300
  return;
6174
- const { enrichConnectorTrigger } = await import("./trigger-enrichment-service-52h9fjqd.js");
6301
+ const { enrichConnectorTrigger } = await import("./trigger-enrichment-service-n622a230.js");
6175
6302
  const [enrichError, enrichment] = await catchError(enrichConnectorTrigger(options.typeId, options.connectionId, parsedEventParams));
6176
6303
  if (enrichError) {
6177
6304
  OutputFormatter.error({
@@ -6303,8 +6430,28 @@ var toIssueData = (issues) => issues.map((issue) => ({
6303
6430
  Message: issue.message,
6304
6431
  Severity: issue.severity
6305
6432
  }));
6433
+ var suppressedAudit = async (file, shown) => {
6434
+ const { findAdjacentSdd } = await import("./sdd-lookup-x08j9g9m.js");
6435
+ const [lookupError, sdd] = await catchError(Promise.resolve(findAdjacentSdd(file)));
6436
+ if (lookupError || sdd === undefined)
6437
+ return;
6438
+ const { CaseValidateService } = await import("./case-validate-service-cqw3tz9y.js");
6439
+ const [auditError, audited] = await catchError(new CaseValidateService().validateFileUsingSDK(file, {
6440
+ profile: "strict",
6441
+ sddPath: sdd
6442
+ }));
6443
+ if (auditError || audited === undefined)
6444
+ return;
6445
+ const alreadyShown = new Set(shown.map((i) => `${i.code}:${i.path}`));
6446
+ const hidden = audited.issues.filter((i) => !alreadyShown.has(`${i.code}:${i.path}`));
6447
+ return {
6448
+ sdd,
6449
+ errors: hidden.filter((i) => i.severity === "error").length,
6450
+ warnings: hidden.filter((i) => i.severity === "warning").length
6451
+ };
6452
+ };
6306
6453
  var executeCaseValidate = async (file, options = {}) => {
6307
- const { CaseValidateService } = await import("./case-validate-service-4fzrq8ee.js");
6454
+ const { CaseValidateService } = await import("./case-validate-service-cqw3tz9y.js");
6308
6455
  const service = new CaseValidateService;
6309
6456
  const [error, result] = await catchError(service.validateFileUsingSDK(file, {
6310
6457
  profile: resolveProfile(options),
@@ -6343,9 +6490,14 @@ ${result.issues.map((i) => ` - [${i.severity}] [${i.path}] ${i.message}`).join(
6343
6490
  processContext.exit(1);
6344
6491
  return;
6345
6492
  }
6493
+ const suppressed = options.strict === true || options.sdd !== undefined || options.skeleton === true || options.skeletonV2 === true ? undefined : await suppressedAudit(file, result.issues);
6494
+ const hidden = (suppressed?.errors ?? 0) + (suppressed?.warnings ?? 0);
6346
6495
  OutputFormatter.success({
6347
6496
  Result: RESULTS.Success,
6348
6497
  Code: "CaseValidate",
6498
+ ...suppressed !== undefined && hidden > 0 && {
6499
+ Instructions: `Profile default: ${suppressed.errors} strict/SDD error(s) and ${suppressed.warnings} warning(s) are not shown. Run 'uip maestro case validate ${file} --strict --sdd ${suppressed.sdd}' to see them.`
6500
+ },
6349
6501
  Data: {
6350
6502
  File: result.filePath,
6351
6503
  Status: "Valid",
@@ -6355,6 +6507,14 @@ ${result.issues.map((i) => ` - [${i.severity}] [${i.path}] ${i.message}`).join(
6355
6507
  ${warnings.map((i) => ` - [${i.path}] ${i.message}`).join(`
6356
6508
  `)}`,
6357
6509
  Issues: toIssueData(warnings)
6510
+ },
6511
+ ...suppressed !== undefined && {
6512
+ Suppressed: {
6513
+ Profile: "strict",
6514
+ Sdd: suppressed.sdd,
6515
+ Errors: suppressed.errors,
6516
+ Warnings: suppressed.warnings
6517
+ }
6358
6518
  }
6359
6519
  }
6360
6520
  });
@@ -6683,10 +6843,12 @@ var metadata = {
6683
6843
  };
6684
6844
  var registerCommands = async (program) => {
6685
6845
  if (isPreviewBuild()) {
6686
- const { registerCaseAuthoringCommands } = await import("./authoring-vpa82rhb.js");
6846
+ const { registerCaseAuthoringCommands } = await import("./authoring-kngaggwm.js");
6687
6847
  registerCaseAuthoringCommands(program);
6688
6848
  }
6689
6849
  registerInitCommand(program);
6850
+ registerBindingsCommand(program);
6851
+ registerFormatCommand(program);
6690
6852
  registerPackCommand(program);
6691
6853
  registerDebugCommand(program);
6692
6854
  registerProcessCommand(program);
@@ -6714,4 +6876,4 @@ var registerCommands = async (program) => {
6714
6876
 
6715
6877
  export { metadata, registerCommands };
6716
6878
 
6717
- //# debugId=E12D04810921764164756E2164756E21
6879
+ //# debugId=7827B0B235027F2264756E2164756E21
@@ -0,0 +1,88 @@
1
+ // src/services/strict-connector-context.ts
2
+ var REQUIRED_CONNECTOR_CONTEXT_KEYS = [
3
+ "connectorKey",
4
+ "connection",
5
+ "resourceKey",
6
+ "folderKey",
7
+ "objectName",
8
+ "metadata"
9
+ ];
10
+ var REQUIRED_TRIGGER_CONTEXT_KEYS = [
11
+ ...REQUIRED_CONNECTOR_CONTEXT_KEYS,
12
+ "operation"
13
+ ];
14
+ var asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : undefined;
15
+ var contextEntries = (context) => (Array.isArray(context) ? context : []).map((entry) => asRecord(entry)).filter((entry) => entry !== undefined);
16
+ var contextEntry = (context, name) => contextEntries(context).find((entry) => entry.name === name);
17
+ var missingContextKeys = (context, waitsForEvent) => {
18
+ const present = new Set(contextEntries(context).map((entry) => entry.name).filter((name) => typeof name === "string"));
19
+ const required = waitsForEvent ? REQUIRED_TRIGGER_CONTEXT_KEYS : REQUIRED_CONNECTOR_CONTEXT_KEYS;
20
+ return required.filter((key) => !present.has(key));
21
+ };
22
+ var readActivityTypeId = (context) => {
23
+ const metadata = contextEntry(context, "metadata");
24
+ const configuration = asRecord(asRecord(metadata?.body)?.activityPropertyConfiguration);
25
+ const activityTypeId = configuration?.uiPathActivityTypeId;
26
+ return typeof activityTypeId === "string" && activityTypeId.trim() !== "" ? activityTypeId : undefined;
27
+ };
28
+ var ACTIVITY_TYPE_ID_PATH = "body.activityPropertyConfiguration.uiPathActivityTypeId";
29
+ var ACTIVITY_TYPE_ID_KEY = "uiPathActivityTypeId";
30
+ var MISCASED_ACTIVITY_TYPE_ID_KEY = "UiPathActivityTypeId";
31
+ var findActivityTypeIdPath = (context) => {
32
+ const metadata = contextEntry(context, "metadata");
33
+ if (metadata === undefined)
34
+ return;
35
+ const search = (value, path) => {
36
+ const record = asRecord(value);
37
+ if (record === undefined) {
38
+ if (!Array.isArray(value))
39
+ return;
40
+ for (const [index, entry] of value.entries()) {
41
+ const found = search(entry, `${path}[${index}]`);
42
+ if (found !== undefined)
43
+ return found;
44
+ }
45
+ return;
46
+ }
47
+ for (const [key, entry] of Object.entries(record)) {
48
+ const here = path === "" ? key : `${path}.${key}`;
49
+ if ((key === ACTIVITY_TYPE_ID_KEY || key === MISCASED_ACTIVITY_TYPE_ID_KEY) && typeof entry === "string" && entry.trim() !== "") {
50
+ return here;
51
+ }
52
+ const found = search(entry, here);
53
+ if (found !== undefined)
54
+ return found;
55
+ }
56
+ return;
57
+ };
58
+ const { name: _name, type: _type, ...payload } = metadata;
59
+ return search(payload, "");
60
+ };
61
+ var activityTypeIdMessage = (subject, context, consequence) => {
62
+ const foundAt = findActivityTypeIdPath(context);
63
+ if (foundAt !== undefined && foundAt !== ACTIVITY_TYPE_ID_PATH) {
64
+ return `Connector ${subject} carries an activity type id at ` + `context[metadata].${foundAt}, but the runtime reads it from ` + `context[metadata].${ACTIVITY_TYPE_ID_PATH}. Write it at that ` + "path instead, with that exact spelling. Both keys start " + 'lower-case: "activityPropertyConfiguration" directly under ' + `"body", then "${ACTIVITY_TYPE_ID_KEY}". The id itself is ` + "already correct.";
65
+ }
66
+ return `Connector ${subject} has a metadata configuration with no ` + `${ACTIVITY_TYPE_ID_KEY} at context[metadata].` + `${ACTIVITY_TYPE_ID_PATH}. ${consequence}`;
67
+ };
68
+
69
+ // src/services/resource-task-binding.ts
70
+ var NAME_BOUND_TASK_TYPES = new Set([
71
+ "action",
72
+ "agent",
73
+ "api-workflow",
74
+ "case-management",
75
+ "process",
76
+ "rpa"
77
+ ]);
78
+ var RESOLVED_IDENTITY_KEYS = [
79
+ "resourceId",
80
+ "typeId",
81
+ "actionAppId",
82
+ "actionDefinitionId"
83
+ ];
84
+ var BINDING_REFERENCE_PREFIX = "=bindings.";
85
+
86
+ export { contextEntries, contextEntry, missingContextKeys, readActivityTypeId, ACTIVITY_TYPE_ID_PATH, activityTypeIdMessage, NAME_BOUND_TASK_TYPES, RESOLVED_IDENTITY_KEYS, BINDING_REFERENCE_PREFIX };
87
+
88
+ //# debugId=F24FF71C1A7CE33164756E2164756E21