@uipath/skills 1.199.0 → 1.200.0

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 (345) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CODEOWNERS +14 -8
  4. package/README.md +18 -3
  5. package/assets/skill-status.json +9 -1
  6. package/assets/uip-catalog-snapshot.json +227 -21
  7. package/package.json +11 -2
  8. package/scripts/npm-package-lifecycle.mjs +46 -0
  9. package/skills/uipath-admin/SKILL.md +5 -1
  10. package/skills/uipath-admin/references/audit-commands.md +1 -1
  11. package/skills/uipath-admin/references/audit-workflow-guide.md +9 -0
  12. package/skills/uipath-agents/SKILL.md +2 -2
  13. package/skills/uipath-agents/references/lowcode/capabilities/context/index.md +7 -0
  14. package/skills/uipath-agents/references/lowcode/capabilities/integration-service/integration-service.md +5 -6
  15. package/skills/uipath-agents/references/lowcode/critical-rules/critical-rules.md +1 -1
  16. package/skills/uipath-agents/references/lowcode/evaluations/evaluation-sets.md +5 -0
  17. package/skills/uipath-agents/references/lowcode/project-lifecycle.md +3 -3
  18. package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +3 -2
  19. package/skills/uipath-api-workflow/SKILL.md +2 -1
  20. package/skills/uipath-api-workflow/references/cli-reference.md +3 -3
  21. package/skills/uipath-coded-apps/SKILL.md +3 -2
  22. package/skills/uipath-coded-apps/assets/fixtures/governance-dashboard-starter-kit.tar.gz +0 -0
  23. package/skills/uipath-coded-apps/assets/templates/web-app-template.md +1 -1
  24. package/skills/uipath-coded-apps/references/create-web-app.md +60 -48
  25. package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +2 -2
  26. package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +2 -2
  27. package/skills/uipath-coded-apps/references/dashboards/primitives/tier-resolution.md +16 -16
  28. package/skills/uipath-coded-apps/references/oauth-scopes.md +28 -272
  29. package/skills/uipath-coded-apps/references/sdk/action-center.md +26 -243
  30. package/skills/uipath-coded-apps/references/sdk/agents.md +20 -130
  31. package/skills/uipath-coded-apps/references/sdk/conversational-agent.md +52 -706
  32. package/skills/uipath-coded-apps/references/sdk/data-fabric.md +20 -237
  33. package/skills/uipath-coded-apps/references/sdk/feedback.md +4 -139
  34. package/skills/uipath-coded-apps/references/sdk/governance-traces.md +7 -55
  35. package/skills/uipath-coded-apps/references/sdk/governance.md +4 -44
  36. package/skills/uipath-coded-apps/references/sdk/imports.md +77 -35
  37. package/skills/uipath-coded-apps/references/sdk/maestro.md +29 -406
  38. package/skills/uipath-coded-apps/references/sdk/orchestrator.md +30 -324
  39. package/skills/uipath-coded-apps/references/sdk/pagination.md +9 -67
  40. package/skills/uipath-coded-apps/references/sdk/traces.md +8 -43
  41. package/skills/uipath-functions/SKILL.md +23 -23
  42. package/skills/uipath-governance/SKILL.md +5 -4
  43. package/skills/uipath-governance/references/cli-cheatsheet.md +2 -1
  44. package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +143 -58
  45. package/skills/uipath-governance/references/compliance-pack/restore/impl.md +61 -0
  46. package/skills/uipath-human-in-the-loop/SKILL.md +4 -2
  47. package/skills/uipath-insights/SKILL.md +17 -18
  48. package/skills/uipath-ixp/SKILL.md +12 -7
  49. package/skills/uipath-ixp/references/cli-reference.md +71 -9
  50. package/skills/uipath-ixp/references/improve-prompts-guide.md +23 -9
  51. package/skills/uipath-ixp/references/label-documents-guide.md +33 -5
  52. package/skills/uipath-maestro-bpmn/SKILL.md +15 -14
  53. package/skills/uipath-maestro-bpmn/references/cli-conventions.md +15 -6
  54. package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +18 -17
  55. package/skills/uipath-maestro-case/SKILL.md +46 -33
  56. package/skills/uipath-maestro-case/assets/templates/sdd-template.md +77 -37
  57. package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +0 -2
  58. package/skills/uipath-maestro-case/references/bindings-and-expressions.md +3 -1
  59. package/skills/uipath-maestro-case/references/bindings-v2-sync.md +2 -2
  60. package/skills/uipath-maestro-case/references/brownfield.md +15 -5
  61. package/skills/uipath-maestro-case/references/case-commands.md +19 -3
  62. package/skills/uipath-maestro-case/references/case-editing-operations.md +24 -21
  63. package/skills/uipath-maestro-case/references/case-schema.md +38 -16
  64. package/skills/uipath-maestro-case/references/connector-trigger-common.md +15 -8
  65. package/skills/uipath-maestro-case/references/evals/evals.json +35 -18
  66. package/skills/uipath-maestro-case/references/implementation.md +86 -71
  67. package/skills/uipath-maestro-case/references/phase-0-interview.md +92 -23
  68. package/skills/uipath-maestro-case/references/phased-execution.md +70 -55
  69. package/skills/uipath-maestro-case/references/placeholder-tasks.md +5 -5
  70. package/skills/uipath-maestro-case/references/planning.md +57 -9
  71. package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +7 -5
  72. package/skills/uipath-maestro-case/references/plugins/case/planning.md +1 -1
  73. package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +5 -5
  74. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +41 -5
  75. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +27 -3
  76. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +6 -6
  77. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +3 -1
  78. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +20 -7
  79. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +37 -4
  80. package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +24 -13
  81. package/skills/uipath-maestro-case/references/plugins/sla/planning.md +9 -3
  82. package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +4 -0
  83. package/skills/uipath-maestro-case/references/plugins/stages/planning.md +4 -1
  84. package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +3 -1
  85. package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +2 -0
  86. package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -2
  87. package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +4 -2
  88. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -2
  89. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +4 -2
  90. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +3 -2
  91. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +4 -2
  92. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +1 -1
  93. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +2 -0
  94. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +1 -1
  95. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +2 -0
  96. package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +1 -1
  97. package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -2
  98. package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +6 -4
  99. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -2
  100. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +4 -2
  101. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -3
  102. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +4 -0
  103. package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +17 -14
  104. package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +1 -1
  105. package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +13 -10
  106. package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +18 -16
  107. package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +2 -2
  108. package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +1 -1
  109. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +11 -9
  110. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +6 -2
  111. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +19 -1
  112. package/skills/uipath-maestro-case/references/registry-discovery.md +3 -3
  113. package/skills/uipath-maestro-case/references/sdd-generation-rules.md +155 -51
  114. package/skills/uipath-maestro-case/references/sla-response-shapes.md +74 -0
  115. package/skills/uipath-maestro-flow/SKILL.md +4 -3
  116. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +3 -0
  117. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +10 -17
  118. package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +1 -1
  119. package/skills/uipath-maestro-flow/references/author/references/greenfield.md +8 -6
  120. package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +1 -1
  121. package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +4 -9
  122. package/skills/uipath-maestro-flow/references/author/references/plugins/agentic-process/impl.md +3 -7
  123. package/skills/uipath-maestro-flow/references/author/references/plugins/api-workflow/impl.md +5 -8
  124. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +11 -4
  125. package/skills/uipath-maestro-flow/references/author/references/plugins/flow/impl.md +3 -7
  126. package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +14 -17
  127. package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +60 -13
  128. package/skills/uipath-maestro-flow/references/author/references/plugins/queue/impl.md +2 -14
  129. package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +4 -9
  130. package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +3 -0
  131. package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +5 -9
  132. package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +13 -0
  133. package/skills/uipath-maestro-flow/references/shared/action-nodes.md +2 -2
  134. package/skills/uipath-maestro-flow/references/shared/file-format.md +16 -12
  135. package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +3 -3
  136. package/skills/uipath-planner/SKILL.md +1 -1
  137. package/skills/uipath-planner/references/non-pdd-lane-guide.md +1 -1
  138. package/skills/uipath-platform/SKILL.md +1 -1
  139. package/skills/uipath-platform/references/data-fabric/bulk-import.md +10 -27
  140. package/skills/uipath-platform/references/data-fabric/choice-sets.md +7 -64
  141. package/skills/uipath-platform/references/data-fabric/data-fabric.md +76 -267
  142. package/skills/uipath-platform/references/data-fabric/entity-schema.md +23 -99
  143. package/skills/uipath-platform/references/data-fabric/file-attachments.md +5 -28
  144. package/skills/uipath-platform/references/data-fabric/filter-platform-contract.md +2 -2
  145. package/skills/uipath-platform/references/data-fabric/records-query.md +11 -32
  146. package/skills/uipath-platform/references/integration-service/reference-resolution.md +6 -2
  147. package/skills/uipath-platform/references/licensing/consumables-report.md +18 -0
  148. package/skills/uipath-platform/references/licensing/licensing.md +1 -1
  149. package/skills/uipath-platform/references/orchestrator/run-jobs.md +9 -2
  150. package/skills/uipath-platform/references/orchestrator/setup-environment.md +9 -0
  151. package/skills/uipath-platform/references/traces/feedback.md +4 -1
  152. package/skills/uipath-process-mining/SKILL.md +97 -0
  153. package/skills/uipath-process-mining/references/app-types.md +66 -0
  154. package/skills/uipath-process-mining/references/data-model.md +130 -0
  155. package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +67 -0
  156. package/skills/uipath-process-mining/references/model-editing.md +112 -0
  157. package/skills/uipath-process-mining/references/pre-flight.md +119 -0
  158. package/skills/uipath-process-mining/references/querying.md +66 -0
  159. package/skills/uipath-process-mining/references/transformations.md +80 -0
  160. package/skills/uipath-process-mining/references/uip-pm-cli.md +145 -0
  161. package/skills/uipath-review/SKILL.md +23 -18
  162. package/skills/uipath-review/references/agents/agent-grading-rubric.md +1 -1
  163. package/skills/uipath-review/references/agents/agent-review-checklist.md +0 -4
  164. package/skills/uipath-review/references/agents/agents-coded-rules.md +1 -10
  165. package/skills/uipath-review/references/agents/agents-lowcode-rules.md +3 -6
  166. package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +62 -14
  167. package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +60 -4
  168. package/skills/uipath-review/references/review-workflow-guide.md +3 -2
  169. package/skills/uipath-review/references/rule-catalog-workflow.md +4 -5
  170. package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +20 -0
  171. package/skills/uipath-rpa/SKILL.md +57 -55
  172. package/skills/uipath-rpa/agents/uipath-project-discovery-agent.md +75 -19
  173. package/skills/uipath-rpa/assets/codedworkflow-template.md +245 -11
  174. package/skills/uipath-rpa/references/cli-reference.md +229 -6
  175. package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +158 -2
  176. package/skills/uipath-rpa/references/coded/integration-service-guide.md +6 -5
  177. package/skills/uipath-rpa/references/coded/operations-guide.md +273 -5
  178. package/skills/uipath-rpa/references/coded-vs-xaml-guide.md +3 -3
  179. package/skills/uipath-rpa/references/common-pattern-card.md +303 -0
  180. package/skills/uipath-rpa/references/data-manipulation-guide.md +18 -3
  181. package/skills/uipath-rpa/references/debugging.md +0 -2
  182. package/skills/uipath-rpa/references/environment-setup.md +309 -1
  183. package/skills/uipath-rpa/references/error-handling-guide.md +1 -1
  184. package/skills/uipath-rpa/references/execution-maps-guide.md +110 -0
  185. package/skills/uipath-rpa/references/is-connector-xaml-guide.md +58 -4
  186. package/skills/uipath-rpa/references/legacy/activity-docs/Excel.md +1 -1
  187. package/skills/uipath-rpa/references/legacy/activity-docs/_DU-PROCESS.md +0 -2
  188. package/skills/uipath-rpa/references/legacy/activity-docs/_INDEX.md +2 -2
  189. package/skills/uipath-rpa/references/legacy/activity-docs/_PATTERNS.md +1 -1
  190. package/skills/uipath-rpa/references/legacy/activity-docs/_REFRAMEWORK.md +2 -7
  191. package/skills/uipath-rpa/references/legacy/cli-reference.md +599 -0
  192. package/skills/uipath-rpa/references/legacy/error-handling-guide.md +2 -2
  193. package/skills/uipath-rpa/references/legacy/legacy-mode-guide.md +16 -16
  194. package/skills/uipath-rpa/references/legacy/project-organization-guide.md +2 -2
  195. package/skills/uipath-rpa/references/legacy/selector-guide.md +163 -1
  196. package/skills/uipath-rpa/references/legacy/testing-guide.md +246 -3
  197. package/skills/uipath-rpa/references/legacy/xaml-basics-and-rules.md +267 -2
  198. package/skills/uipath-rpa/references/library-authoring-guide.md +4 -3
  199. package/skills/uipath-rpa/references/testing-guide.md +2 -28
  200. package/skills/uipath-rpa/references/trigger-pattern-guide.md +1 -1
  201. package/skills/uipath-rpa/references/xaml/canvas-layout-guide.md +140 -33
  202. package/skills/uipath-rpa/references/xaml/common-pitfalls.md +57 -240
  203. package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +42 -2
  204. package/skills/uipath-rpa/references/xaml/long-running-workflow-guide.md +1 -1
  205. package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +194 -228
  206. package/skills/uipath-solution/references/activate-and-manage.md +22 -0
  207. package/skills/uipath-solution/references/develop-solution.md +26 -2
  208. package/skills/uipath-solution/references/pack-and-deploy.md +43 -9
  209. package/skills/uipath-test/SKILL.md +4 -4
  210. package/skills/uipath-test/references/playwright-first-mile-guide.md +5 -4
  211. package/skills/uipath-test/references/publish-and-link-guide.md +2 -2
  212. package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/click-silent-no-op.md +5 -5
  213. package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/queue-operation-failed.md +20 -4
  214. package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/summary.md +1 -1
  215. package/skills/uipath-troubleshoot/references/activity-packages/csv-activities/playbooks/read-csv-file-not-found.md +12 -0
  216. package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/send-outlook-mail-failures.md +12 -1
  217. package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +2 -1
  218. package/skills/uipath-troubleshoot/references/activity-packages/terminal-activities/playbooks/terminal-session-connection-failed.md +5 -1
  219. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-silent-no-op.md +5 -5
  220. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/dependency-version-conflict.md +27 -6
  221. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/napplicationcard-view-generation-failed.md +10 -0
  222. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/scope-container-wrong-page.md +1 -1
  223. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/summary.md +1 -1
  224. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/overview.md +4 -0
  225. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-auth-401-403.md +44 -0
  226. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-connection-failure.md +2 -1
  227. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-content-type-rejected.md +37 -0
  228. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-proxy-blocked.md +39 -0
  229. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/package-version-mismatch.md +42 -0
  230. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/securestring-misuse-analyzer.md +41 -0
  231. package/skills/uipath-troubleshoot/references/activity-packages/web-activities/summary.md +5 -0
  232. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-null-reference.md +14 -1
  233. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-runtime-exception.md +2 -0
  234. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/is-activities-prerelease-not-found.md +39 -0
  235. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-content-too-large.md +41 -0
  236. package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +9 -0
  237. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/console-conflict-login-to-console.md +40 -0
  238. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/credential-store-unavailable.md +42 -0
  239. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/executor-start-transient-rerun.md +49 -0
  240. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-consecutive-system-exceptions.md +47 -0
  241. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-faulted-session-timeout.md +19 -19
  242. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-output-too-large.md +47 -0
  243. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-stopped-generic-exit-code.md +55 -0
  244. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/known-issue-robot-defect.md +40 -0
  245. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/platform-incident-correlation.md +45 -0
  246. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/screen-capture-handle-invalid.md +43 -0
  247. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-license-quota.md +43 -0
  248. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-time-limit-exceeded.md +34 -0
  249. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/workstation-in-use-machine-slots.md +40 -0
  250. package/skills/uipath-troubleshoot/references/products/orchestrator/summary.md +13 -1
  251. package/version-manifest.json +2 -2
  252. package/skills/uipath-maestro-bpmn/validator/README.md +0 -224
  253. package/skills/uipath-maestro-bpmn/validator/model.mjs +0 -419
  254. package/skills/uipath-maestro-bpmn/validator/package.json +0 -17
  255. package/skills/uipath-maestro-bpmn/validator/rules.mjs +0 -1403
  256. package/skills/uipath-maestro-bpmn/validator/samples/invalid-conditional-and-variable.bpmn +0 -25
  257. package/skills/uipath-maestro-bpmn/validator/samples/valid-baseline.bpmn +0 -52
  258. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.0.bpmn +0 -157
  259. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.1.bpmn +0 -333
  260. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.1.0.bpmn +0 -598
  261. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.2.0.bpmn +0 -1709
  262. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.2.0.bpmn +0 -564
  263. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.3.0.bpmn +0 -671
  264. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.4.0.bpmn +0 -1045
  265. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.5.0.bpmn +0 -1176
  266. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.6.0.bpmn +0 -670
  267. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.7.0.bpmn +0 -466
  268. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Can_Parse_Complex_Process_With_Task_Gateway_BoundaryEvent_etc.bpmn +0 -74
  269. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExclusiveGatewayDefaultFlow.bpmn +0 -32
  270. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExternalAgentWorkflow.bpmn +0 -62
  271. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Golden_Scenario.initial.bpmn +0 -361
  272. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/InclusiveJoinRouteAwayBranch.bpmn +0 -62
  273. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_AsyncExecution_And_Create_CorrectModel.bpmn +0 -74
  274. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_ExtractionValidation_And_Create_CorrectModel.bpmn +0 -35
  275. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_FileUpload_And_Create_CorrectModel.bpmn +0 -33
  276. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_JobAttachment_And_Create_CorrectModel.bpmn +0 -35
  277. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_SubProcess_With_Multiple_Element_Types.bpmn +0 -76
  278. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartEventWithOutputs.bpmn +0 -36
  279. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartGatewayEnd.bpmn +0 -44
  280. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all elements.bpmn +0 -516
  281. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all_sequence_flow_types.bpmn +0 -173
  282. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/demo.bpmn +0 -181
  283. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-collapsed.bpmn +0 -126
  284. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-expanded.bpmn +0 -122
  285. package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-003-collapsed_deeply-nested.bpmn +0 -438
  286. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.1.0.bpmn +0 -87
  287. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.3.0.bpmn +0 -165
  288. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ApiWorkflow.bpmn +0 -39
  289. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnNestedSubProcessTests.bpmn +0 -102
  290. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnTimerBoundaryEvents.bpmn +0 -160
  291. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithCatchAllErrorEventSubProcess.bpmn +0 -45
  292. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithSpecificErrorEventSubProcess.bpmn +0 -46
  293. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/CaseManagementWithConstantIdentifier.bpmn +0 -218
  294. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorBoundary.bpmn +0 -78
  295. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorPropagationInEventSubprocess.bpmn +0 -340
  296. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/EventBasedGatewayFirstCatcherWins.bpmn +0 -56
  297. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Example-EventBasedGateway.bpmn +0 -117
  298. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewayConditional.bpmn +0 -45
  299. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewaySharedEndEvent.bpmn +0 -45
  300. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveWithParallelGateway.bpmn +0 -68
  301. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/FourScriptTasks.bpmn +0 -84
  302. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/HitlTaskOnly.bpmn +0 -55
  303. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/InclusiveGatewayForkJoin.bpmn +0 -69
  304. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_BPMN_Elements_And_Create_CorrectModel.bpmn +0 -20
  305. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_HttpRequest_ServiceTask_And_Create_Correct_Model.bpmn +0 -34
  306. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_MessageBoundaryEvent_And_Create_CorrectModel.bpmn +0 -87
  307. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Script_Task_V2_And_Create_Correct_Model.bpmn +0 -31
  308. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Sets_Containers_Properly.bpmn +0 -129
  309. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ScriptWritesVariableThenGatewayBranches.bpmn +0 -59
  310. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/boundaryevent.bpmn +0 -30
  311. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/collapsed-subprocess.bpmn +0 -83
  312. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/connectable-types.bpmn +0 -85
  313. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/extensions-orchestrator-start-job.bpmn +0 -80
  314. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/multiparticipantpool.bpmn +0 -77
  315. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/nestedsubprocess.bpmn +0 -36
  316. package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/simple.bpmn +0 -59
  317. package/skills/uipath-maestro-bpmn/validator/test/integration.test.mjs +0 -146
  318. package/skills/uipath-maestro-bpmn/validator/test/model-helpers.mjs +0 -42
  319. package/skills/uipath-maestro-bpmn/validator/test/ported-rule-tests.mjs +0 -983
  320. package/skills/uipath-maestro-bpmn/validator/test/run-tests.mjs +0 -530
  321. package/skills/uipath-maestro-bpmn/validator/uipath-moddle.v1.json +0 -715
  322. package/skills/uipath-maestro-bpmn/validator/validate-bpmn.mjs +0 -164
  323. package/skills/uipath-review/references/agents/agents-common-rules.md +0 -32
  324. package/skills/uipath-rpa/assets/before-after-hooks-template.md +0 -115
  325. package/skills/uipath-rpa/assets/helper-utility-template.md +0 -22
  326. package/skills/uipath-rpa/assets/testcase-template.md +0 -92
  327. package/skills/uipath-rpa/references/coded/coding-guidelines.md +0 -255
  328. package/skills/uipath-rpa/references/coded/inspect-package-guide.md +0 -80
  329. package/skills/uipath-rpa/references/coded/third-party-packages-guide.md +0 -67
  330. package/skills/uipath-rpa/references/connector-capabilities.md +0 -79
  331. package/skills/uipath-rpa/references/legacy/activity-docs/Testing.md +0 -95
  332. package/skills/uipath-rpa/references/legacy/activity-docs/UIAutomation.md +0 -159
  333. package/skills/uipath-rpa/references/legacy/common-pitfalls.md +0 -318
  334. package/skills/uipath-rpa/references/legacy/discovery-workflow.md +0 -147
  335. package/skills/uipath-rpa/references/legacy/environment-setup.md +0 -78
  336. package/skills/uipath-rpa/references/legacy/project-structure.md +0 -206
  337. package/skills/uipath-rpa/references/legacy/test-data-guide.md +0 -142
  338. package/skills/uipath-rpa/references/legacy/validation-and-fixing.md +0 -154
  339. package/skills/uipath-rpa/references/project-structure-guide.md +0 -168
  340. package/skills/uipath-rpa/references/project-structure.md +0 -135
  341. package/skills/uipath-rpa/references/publishing-guide.md +0 -80
  342. package/skills/uipath-rpa/references/validation-guide.md +0 -170
  343. package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +0 -43
  344. package/skills/uipath-rpa/references/xaml/flowchart-guide.md +0 -113
  345. package/skills/uipath-rpa/references/xaml/workflow-guide.md +0 -258
@@ -1,530 +0,0 @@
1
- #!/usr/bin/env node
2
- // Rule-coverage test harness. For each of the 19 PO.Frontend rules (+ the
3
- // Maestro-original variable-existence check) it builds a minimal invalid BPMN
4
- // that should trip exactly that rule, and asserts the rule's code is emitted.
5
- // It also asserts a valid twin produces NO finding for that code.
6
- //
7
- // Run: node test/run-tests.mjs (exit 0 = all rules fire correctly)
8
- import BpmnModdle from "bpmn-moddle";
9
- import descriptor from "../uipath-moddle.v1.json" with { type: "json" };
10
- import { buildModel, collectKnownVariableIds, allNodes, allEdges } from "../model.mjs";
11
- import { validateDiagram, validateVariableExistence, validateVariableNotSet } from "../rules.mjs";
12
- import { execFileSync } from "child_process";
13
- import { fileURLToPath } from "url";
14
- import { dirname, join } from "path";
15
- import { writeFileSync, mkdtempSync } from "fs";
16
- import { tmpdir } from "os";
17
-
18
- const moddle = new BpmnModdle({ uipath: descriptor });
19
-
20
- async function findingsFor(xml) {
21
- const { rootElement } = await moddle.fromXML(xml);
22
- const cs = buildModel(rootElement);
23
- const knownIds = collectKnownVariableIds(cs);
24
- const out = [];
25
- for (const d of Object.values(cs.diagramsById)) {
26
- out.push(...validateDiagram(d, cs, { enableMissingRootVariableValidation: true }));
27
- }
28
- out.push(...validateVariableExistence(allNodes(cs), allEdges(cs), knownIds));
29
- out.push(...validateVariableNotSet(allNodes(cs), allEdges(cs), knownIds, cs));
30
- return out;
31
- }
32
-
33
- // ---- XML builders -------------------------------------------------------
34
- const DEFS = (inner) =>
35
- `<?xml version="1.0" encoding="UTF-8"?>
36
- <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:uipath="http://uipath.org/schema/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Defs" targetNamespace="urn:test">
37
- ${inner}
38
- </bpmn:definitions>`;
39
- const PROC = (body, ext = "") => ` <bpmn:process id="P" name="P" isExecutable="true">${ext}\n${body}\n </bpmn:process>`;
40
- const COND = (s, t, expr) =>
41
- ` <bpmn:sequenceFlow id="${s}_${t}" sourceRef="${s}" targetRef="${t}"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${expr}</bpmn:conditionExpression></bpmn:sequenceFlow>`;
42
- const FLOW = (s, t, id) => ` <bpmn:sequenceFlow id="${id ?? s + "_" + t}" sourceRef="${s}" targetRef="${t}" />`;
43
-
44
- // ---- Per-rule cases -----------------------------------------------------
45
- const cases = [];
46
- const add = (code, xml, note) => cases.push({ code, xml, note });
47
-
48
- // 1 MISSING_CONDITION_EXPRESSION: XOR with 2 outgoing, no default, no conditions
49
- add(
50
- "MISSING_CONDITION_EXPRESSION",
51
- DEFS(
52
- PROC(
53
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_G</bpmn:outgoing></bpmn:startEvent>
54
- <bpmn:exclusiveGateway id="G"><bpmn:incoming>S_G</bpmn:incoming><bpmn:outgoing>G_A</bpmn:outgoing><bpmn:outgoing>G_B</bpmn:outgoing></bpmn:exclusiveGateway>
55
- <bpmn:task id="A"><bpmn:incoming>G_A</bpmn:incoming></bpmn:task>
56
- <bpmn:task id="B"><bpmn:incoming>G_B</bpmn:incoming></bpmn:task>
57
- ${FLOW("S", "G", "S_G")}
58
- ${FLOW("G", "A", "G_A")}
59
- ${FLOW("G", "B", "G_B")}`,
60
- ),
61
- ),
62
- );
63
-
64
- // 2 INVALID_CONNECTION_TYPE: EndEvent -> Task
65
- add(
66
- "INVALID_CONNECTION_TYPE",
67
- DEFS(
68
- PROC(
69
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_E</bpmn:outgoing></bpmn:startEvent>
70
- <bpmn:endEvent id="E"><bpmn:incoming>S_E</bpmn:incoming><bpmn:outgoing>E_T</bpmn:outgoing></bpmn:endEvent>
71
- <bpmn:task id="T"><bpmn:incoming>E_T</bpmn:incoming></bpmn:task>
72
- ${FLOW("S", "E", "S_E")}
73
- ${FLOW("E", "T", "E_T")}`,
74
- ),
75
- ),
76
- );
77
-
78
- // 3 DUPLICATE_ERROR_EVENT_SUBPROCESS: two event subprocesses, same error code
79
- add(
80
- "DUPLICATE_ERROR_EVENT_SUBPROCESS",
81
- DEFS(
82
- ` <bpmn:error id="Err1" name="E1" errorCode="CODE_X" />
83
- ${PROC(
84
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
85
- <bpmn:task id="T"><bpmn:incoming>S_T</bpmn:incoming><bpmn:outgoing>T_E</bpmn:outgoing></bpmn:task>
86
- <bpmn:endEvent id="E"><bpmn:incoming>T_E</bpmn:incoming></bpmn:endEvent>
87
- <bpmn:subProcess id="SP1" triggeredByEvent="true">
88
- <bpmn:startEvent id="SP1S"><bpmn:errorEventDefinition id="ed1" errorRef="Err1" /></bpmn:startEvent>
89
- </bpmn:subProcess>
90
- <bpmn:subProcess id="SP2" triggeredByEvent="true">
91
- <bpmn:startEvent id="SP2S"><bpmn:errorEventDefinition id="ed2" errorRef="Err1" /></bpmn:startEvent>
92
- </bpmn:subProcess>
93
- ${FLOW("S", "T", "S_T")}
94
- ${FLOW("T", "E", "T_E")}`,
95
- )}`,
96
- ),
97
- );
98
-
99
- // 4 START_EVENT_WITH_DEFINITION_IN_SUBPROCESS: regular subprocess start has timer def
100
- add(
101
- "START_EVENT_WITH_DEFINITION_IN_SUBPROCESS",
102
- DEFS(
103
- PROC(
104
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_SP</bpmn:outgoing></bpmn:startEvent>
105
- <bpmn:subProcess id="SP"><bpmn:incoming>S_SP</bpmn:incoming><bpmn:outgoing>SP_E</bpmn:outgoing>
106
- <bpmn:startEvent id="SPS"><bpmn:timerEventDefinition id="t1"><bpmn:timeDuration>PT5M</bpmn:timeDuration></bpmn:timerEventDefinition></bpmn:startEvent>
107
- </bpmn:subProcess>
108
- <bpmn:endEvent id="E"><bpmn:incoming>SP_E</bpmn:incoming></bpmn:endEvent>
109
- ${FLOW("S", "SP", "S_SP")}
110
- ${FLOW("SP", "E", "SP_E")}`,
111
- ),
112
- ),
113
- );
114
-
115
- // 4b START_EVENT_WITHOUT_DEFINITION_IN_EVENT_SUBPROCESS
116
- add(
117
- "START_EVENT_WITHOUT_DEFINITION_IN_EVENT_SUBPROCESS",
118
- DEFS(
119
- PROC(
120
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
121
- <bpmn:task id="T"><bpmn:incoming>S_T</bpmn:incoming></bpmn:task>
122
- <bpmn:subProcess id="SP" triggeredByEvent="true">
123
- <bpmn:startEvent id="SPS" />
124
- </bpmn:subProcess>
125
- ${FLOW("S", "T", "S_T")}`,
126
- ),
127
- ),
128
- );
129
-
130
- // 5 ERROR_BOUNDARY_EVENT_REQUIRES_ERROR_CODE: boundary refs an Error with no errorCode
131
- add(
132
- "ERROR_BOUNDARY_EVENT_REQUIRES_ERROR_CODE",
133
- DEFS(
134
- ` <bpmn:error id="ErrNoCode" name="NoCode" />
135
- ${PROC(
136
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
137
- <bpmn:task id="T"><bpmn:incoming>S_T</bpmn:incoming></bpmn:task>
138
- <bpmn:boundaryEvent id="BE" attachedToRef="T"><bpmn:errorEventDefinition id="bed" errorRef="ErrNoCode" /></bpmn:boundaryEvent>
139
- ${FLOW("S", "T", "S_T")}`,
140
- )}`,
141
- ),
142
- );
143
-
144
- // 5b MULTIPLE_CATCH_ALL_BOUNDARY_EVENTS_ON_TASK: two catch-all error boundaries on one task
145
- add(
146
- "MULTIPLE_CATCH_ALL_BOUNDARY_EVENTS_ON_TASK",
147
- DEFS(
148
- PROC(
149
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
150
- <bpmn:task id="T"><bpmn:incoming>S_T</bpmn:incoming></bpmn:task>
151
- <bpmn:boundaryEvent id="BE1" attachedToRef="T"><bpmn:errorEventDefinition id="bed1" /></bpmn:boundaryEvent>
152
- <bpmn:boundaryEvent id="BE2" attachedToRef="T"><bpmn:errorEventDefinition id="bed2" /></bpmn:boundaryEvent>
153
- ${FLOW("S", "T", "S_T")}`,
154
- ),
155
- ),
156
- );
157
-
158
- // 6 ERROR_END_EVENT_MISSING_EXCEPTION: error end event with no errorRef
159
- add(
160
- "ERROR_END_EVENT_MISSING_EXCEPTION",
161
- DEFS(
162
- PROC(
163
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_E</bpmn:outgoing></bpmn:startEvent>
164
- <bpmn:endEvent id="E"><bpmn:incoming>S_E</bpmn:incoming><bpmn:errorEventDefinition id="eed" /></bpmn:endEvent>
165
- ${FLOW("S", "E", "S_E")}`,
166
- ),
167
- ),
168
- );
169
-
170
- // 7 FAKE_JOIN: NOTE — this rule fires only on literal abstract node types
171
- // ("bpmn:Activity"/"bpmn:Event"), which the frontend canvas never assigns to a
172
- // real node (it uses concrete $types), so the rule is dormant on exported BPMN.
173
- // It is therefore NOT triggerable via this XML harness; the rule LOGIC is proven
174
- // at the model level in test/ported-rule-tests.mjs (FakeJoinRule suite, which
175
- // mirrors the frontend unit test verbatim). We mark it as covered there.
176
- // (No XML case added; see FakeJoinRule drift note in rules.mjs / README.)
177
-
178
- // 8 SAME_POOL_MESSAGE_FLOW: message flow between two nodes in the same pool
179
- add(
180
- "SAME_POOL_MESSAGE_FLOW",
181
- DEFS(
182
- ` <bpmn:collaboration id="C">
183
- <bpmn:participant id="Pool1" name="Pool 1" processRef="P" />
184
- <bpmn:messageFlow id="MF" sourceRef="T1" targetRef="T2" />
185
- </bpmn:collaboration>
186
- <bpmn:process id="P" isExecutable="true">
187
- <bpmn:task id="T1" />
188
- <bpmn:task id="T2" />
189
- </bpmn:process>`,
190
- ),
191
- );
192
-
193
- // 9 MISSING_RESOURCE: Orchestrator.StartJob with no resource binding (WARNING)
194
- add(
195
- "MISSING_RESOURCE",
196
- DEFS(
197
- PROC(
198
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
199
- <bpmn:serviceTask id="T" name="Start Job"><bpmn:incoming>S_T</bpmn:incoming>
200
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="Orchestrator.StartJob" version="v1" /></uipath:activity></bpmn:extensionElements>
201
- </bpmn:serviceTask>
202
- ${FLOW("S", "T", "S_T")}`,
203
- ),
204
- ),
205
- );
206
-
207
- // 10 MISSING_ROOT_VARIABLE: node output var not declared at root (WARNING)
208
- add(
209
- "MISSING_ROOT_VARIABLE",
210
- DEFS(
211
- PROC(
212
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
213
- <bpmn:serviceTask id="T" name="Job"><bpmn:incoming>S_T</bpmn:incoming>
214
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="Orchestrator.StartJob" version="v1" />
215
- <uipath:context><uipath:input name="name" value="X" /></uipath:context>
216
- <uipath:output name="JobState" type="string" var="Var_Undeclared" source="state" custom="true" />
217
- </uipath:activity></bpmn:extensionElements>
218
- </bpmn:serviceTask>
219
- ${FLOW("S", "T", "S_T")}`,
220
- `\n <bpmn:extensionElements><uipath:variables version="v1"><uipath:input id="Var_Other" name="other" type="string" /></uipath:variables></bpmn:extensionElements>`,
221
- ),
222
- ),
223
- );
224
-
225
- // 11 ASSIGNMENT_NOT_ALLOWED: condition contains an assignment (WARNING)
226
- add(
227
- "ASSIGNMENT_NOT_ALLOWED",
228
- DEFS(
229
- PROC(
230
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_G</bpmn:outgoing></bpmn:startEvent>
231
- <bpmn:exclusiveGateway id="G" default="G_B"><bpmn:incoming>S_G</bpmn:incoming><bpmn:outgoing>G_A</bpmn:outgoing><bpmn:outgoing>G_B</bpmn:outgoing></bpmn:exclusiveGateway>
232
- <bpmn:task id="A"><bpmn:incoming>G_A</bpmn:incoming></bpmn:task>
233
- <bpmn:task id="B"><bpmn:incoming>G_B</bpmn:incoming></bpmn:task>
234
- ${FLOW("S", "G", "S_G")}
235
- ${COND("G", "A", "=vars.x = 5")}
236
- ${FLOW("G", "B", "G_B")}`,
237
- ),
238
- ),
239
- );
240
-
241
- // 12 EMPTY_REQUIRED_FIELD: HttpExecution with required 'url' present but empty
242
- add(
243
- "EMPTY_REQUIRED_FIELD",
244
- DEFS(
245
- PROC(
246
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
247
- <bpmn:serviceTask id="T" name="HTTP"><bpmn:incoming>S_T</bpmn:incoming>
248
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="Intsvc.HttpExecution" version="v1" />
249
- <uipath:context><uipath:input name="method" value="GET" /><uipath:input name="url" value="" /></uipath:context>
250
- </uipath:activity></bpmn:extensionElements>
251
- </bpmn:serviceTask>
252
- ${FLOW("S", "T", "S_T")}`,
253
- ),
254
- ),
255
- );
256
-
257
- // 12b EMPTY_REQUIRED_FIELD (absent): HttpExecution missing required 'method'/'mode'
258
- // entirely (only 'url' present+valid). Frontend treats an unbound required field
259
- // as present-with-empty-value, so an absent required field must fire too.
260
- add(
261
- "EMPTY_REQUIRED_FIELD",
262
- DEFS(
263
- PROC(
264
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
265
- <bpmn:serviceTask id="T" name="HTTP"><bpmn:incoming>S_T</bpmn:incoming>
266
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="Intsvc.HttpExecution" version="v1" />
267
- <uipath:context><uipath:input name="url" value="https://example.com" /></uipath:context>
268
- </uipath:activity></bpmn:extensionElements>
269
- </bpmn:serviceTask>
270
- ${FLOW("S", "T", "S_T")}`,
271
- ),
272
- ),
273
- "absent required field",
274
- );
275
-
276
- // 13 CROSSING_POOL_BOUNDARY: sequence flow between two pools (non-start target)
277
- add(
278
- "CROSSING_POOL_BOUNDARY",
279
- DEFS(
280
- ` <bpmn:collaboration id="C">
281
- <bpmn:participant id="Pool1" name="P1" processRef="P" />
282
- <bpmn:participant id="Pool2" name="P2" processRef="P2" />
283
- </bpmn:collaboration>
284
- <bpmn:process id="P" isExecutable="true">
285
- <bpmn:task id="T1"><bpmn:outgoing>T1_T2</bpmn:outgoing></bpmn:task>
286
- ${FLOW("T1", "T2", "T1_T2")}
287
- </bpmn:process>
288
- <bpmn:process id="P2" isExecutable="true">
289
- <bpmn:task id="T2"><bpmn:incoming>T1_T2</bpmn:incoming></bpmn:task>
290
- </bpmn:process>`,
291
- ),
292
- "cross-pool",
293
- );
294
-
295
- // 14 CROSSING_SUBPROCESS_BOUNDARY: flow from outside into a subprocess child
296
- add(
297
- "CROSSING_SUBPROCESS_BOUNDARY",
298
- DEFS(
299
- PROC(
300
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_C</bpmn:outgoing></bpmn:startEvent>
301
- <bpmn:subProcess id="SP">
302
- <bpmn:task id="C" />
303
- </bpmn:subProcess>
304
- ${FLOW("S", "C", "S_C")}`,
305
- ),
306
- ),
307
- );
308
-
309
- // 15 MULTIPLE_BLANK_START_EVENTS: process with two blank start events
310
- add(
311
- "MULTIPLE_BLANK_START_EVENTS",
312
- DEFS(
313
- PROC(
314
- ` <bpmn:startEvent id="S1"><bpmn:outgoing>S1_T</bpmn:outgoing></bpmn:startEvent>
315
- <bpmn:startEvent id="S2"><bpmn:outgoing>S2_T</bpmn:outgoing></bpmn:startEvent>
316
- <bpmn:task id="T"><bpmn:incoming>S1_T</bpmn:incoming></bpmn:task>
317
- <bpmn:task id="T2"><bpmn:incoming>S2_T</bpmn:incoming></bpmn:task>
318
- ${FLOW("S1", "T", "S1_T")}
319
- ${FLOW("S2", "T2", "S2_T")}`,
320
- ),
321
- ),
322
- );
323
-
324
- // 16 MULTIPLE_START_EVENTS_IN_EVENT_SUBPROCESS
325
- add(
326
- "MULTIPLE_START_EVENTS_IN_EVENT_SUBPROCESS",
327
- DEFS(
328
- PROC(
329
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
330
- <bpmn:task id="T"><bpmn:incoming>S_T</bpmn:incoming></bpmn:task>
331
- <bpmn:subProcess id="SP" triggeredByEvent="true">
332
- <bpmn:startEvent id="SPS1"><bpmn:timerEventDefinition id="t1"><bpmn:timeDuration>PT5M</bpmn:timeDuration></bpmn:timerEventDefinition></bpmn:startEvent>
333
- <bpmn:startEvent id="SPS2"><bpmn:timerEventDefinition id="t2"><bpmn:timeDuration>PT5M</bpmn:timeDuration></bpmn:timerEventDefinition></bpmn:startEvent>
334
- </bpmn:subProcess>
335
- ${FLOW("S", "T", "S_T")}`,
336
- ),
337
- ),
338
- );
339
-
340
- // 17 SUPERFLUOUS_GATEWAY: gateway with exactly one in and one out
341
- add(
342
- "SUPERFLUOUS_GATEWAY",
343
- DEFS(
344
- PROC(
345
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_G</bpmn:outgoing></bpmn:startEvent>
346
- <bpmn:exclusiveGateway id="G"><bpmn:incoming>S_G</bpmn:incoming><bpmn:outgoing>G_T</bpmn:outgoing></bpmn:exclusiveGateway>
347
- <bpmn:task id="T"><bpmn:incoming>G_T</bpmn:incoming></bpmn:task>
348
- ${FLOW("S", "G", "S_G")}
349
- ${FLOW("G", "T", "G_T")}`,
350
- ),
351
- ),
352
- );
353
-
354
- // 18 TASK_TIMER_OUT_OF_RANGE: actions task Timer below 15 minutes (WARNING)
355
- add(
356
- "TASK_TIMER_OUT_OF_RANGE",
357
- DEFS(
358
- PROC(
359
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_T</bpmn:outgoing></bpmn:startEvent>
360
- <bpmn:userTask id="T" name="HITL"><bpmn:incoming>S_T</bpmn:incoming>
361
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="actions" version="v1" />
362
- <uipath:context><uipath:input name="Timer" value="5" /></uipath:context>
363
- </uipath:activity></bpmn:extensionElements>
364
- </bpmn:userTask>
365
- ${FLOW("S", "T", "S_T")}`,
366
- ),
367
- ),
368
- );
369
-
370
- // 19 TIMER_DURATION_INVALID: timer intermediate event with bad ISO duration
371
- add(
372
- "TIMER_DURATION_INVALID",
373
- DEFS(
374
- PROC(
375
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_I</bpmn:outgoing></bpmn:startEvent>
376
- <bpmn:intermediateCatchEvent id="I"><bpmn:incoming>S_I</bpmn:incoming><bpmn:outgoing>I_E</bpmn:outgoing>
377
- <bpmn:timerEventDefinition id="td"><bpmn:timeDuration>NOT_A_DURATION</bpmn:timeDuration></bpmn:timerEventDefinition>
378
- </bpmn:intermediateCatchEvent>
379
- <bpmn:endEvent id="E"><bpmn:incoming>I_E</bpmn:incoming></bpmn:endEvent>
380
- ${FLOW("S", "I", "S_I")}
381
- ${FLOW("I", "E", "I_E")}`,
382
- ),
383
- ),
384
- );
385
-
386
- // 19b TIMER_DURATION_WEEK_UNSUPPORTED: valid ISO with week designator (WARNING)
387
- add(
388
- "TIMER_DURATION_WEEK_UNSUPPORTED",
389
- DEFS(
390
- PROC(
391
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_I</bpmn:outgoing></bpmn:startEvent>
392
- <bpmn:intermediateCatchEvent id="I"><bpmn:incoming>S_I</bpmn:incoming><bpmn:outgoing>I_E</bpmn:outgoing>
393
- <bpmn:timerEventDefinition id="td"><bpmn:timeDuration>P1W</bpmn:timeDuration></bpmn:timerEventDefinition>
394
- </bpmn:intermediateCatchEvent>
395
- <bpmn:endEvent id="E"><bpmn:incoming>I_E</bpmn:incoming></bpmn:endEvent>
396
- ${FLOW("S", "I", "S_I")}
397
- ${FLOW("I", "E", "I_E")}`,
398
- ),
399
- ),
400
- );
401
-
402
- // 20 VARIABLE_DOES_NOT_EXIST: condition references undeclared vars.X (Maestro-original)
403
- add(
404
- "VARIABLE_DOES_NOT_EXIST",
405
- DEFS(
406
- PROC(
407
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_G</bpmn:outgoing></bpmn:startEvent>
408
- <bpmn:exclusiveGateway id="G" default="G_B"><bpmn:incoming>S_G</bpmn:incoming><bpmn:outgoing>G_A</bpmn:outgoing><bpmn:outgoing>G_B</bpmn:outgoing></bpmn:exclusiveGateway>
409
- <bpmn:task id="A"><bpmn:incoming>G_A</bpmn:incoming></bpmn:task>
410
- <bpmn:task id="B"><bpmn:incoming>G_B</bpmn:incoming></bpmn:task>
411
- ${FLOW("S", "G", "S_G")}
412
- ${COND("G", "A", '=vars.DoesNotExist == "x"')}
413
- ${FLOW("G", "B", "G_B")}`,
414
- ),
415
- ),
416
- );
417
-
418
- // 21 VARIABLE_NOT_SET: task A references vars.fromB, produced by B downstream
419
- // (so it is declared/known but NOT reachable at A). WARNING-severity; mirrors
420
- // the frontend's flow-order check distinct from VARIABLE_DOES_NOT_EXIST.
421
- add(
422
- "VARIABLE_NOT_SET",
423
- DEFS(
424
- PROC(
425
- ` <bpmn:startEvent id="S"><bpmn:outgoing>S_A</bpmn:outgoing></bpmn:startEvent>
426
- <bpmn:serviceTask id="A"><bpmn:incoming>S_A</bpmn:incoming><bpmn:outgoing>A_B</bpmn:outgoing>
427
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="x" version="v1" /><uipath:input name="i" value="=vars.fromB" /></uipath:activity></bpmn:extensionElements>
428
- </bpmn:serviceTask>
429
- <bpmn:serviceTask id="B"><bpmn:incoming>A_B</bpmn:incoming>
430
- <bpmn:extensionElements><uipath:activity version="v1"><uipath:type value="x" version="v1" /><uipath:output name="o" var="fromB" custom="true" source="x" /></uipath:activity></bpmn:extensionElements>
431
- </bpmn:serviceTask>
432
- ${FLOW("S", "A", "S_A")}
433
- ${FLOW("A", "B", "A_B")}`,
434
- ),
435
- ),
436
- "declared but unreachable",
437
- );
438
-
439
- // ---- Run: 1) crafted-invalid XML coverage harness -----------------------
440
- let failures = 0;
441
- const fired = new Set();
442
- console.log("== Crafted-invalid XML coverage ==");
443
- for (const c of cases) {
444
- const findings = await findingsFor(c.xml);
445
- const codes = findings.map((f) => f.code);
446
- const ok = codes.includes(c.code);
447
- if (ok) fired.add(c.code);
448
- const tag = ok ? "PASS" : "FAIL";
449
- if (!ok) failures++;
450
- console.log(`${tag} ${c.code}${c.note ? " (" + c.note + ")" : ""} -> [${[...new Set(codes)].join(", ") || "none"}]`);
451
- }
452
- console.log(`${cases.length} crafted cases, ${cases.length - failures} passed, ${failures} failed.`);
453
-
454
- // FAKE_JOIN is dormant on real/exported BPMN (matches the frontend — it keys off
455
- // abstract node types the canvas never assigns). Its logic is proven in the
456
- // ported rule suite, so it is intentionally not triggerable via this XML harness.
457
- import { RULE_CODES } from "../rules.mjs";
458
-
459
- // ---- Run: 2) ported per-rule tests (1:1 with PO.Frontend rule tests) -----
460
- console.log("\n== Ported PO.Frontend rule tests ==");
461
- const ported = (await import("./ported-rule-tests.mjs")).default;
462
- console.log(`${ported.passed + ported.failed} ported assertions, ${ported.passed} passed, ${ported.failed} failed.`);
463
- for (const f of ported.failures) console.log(" FAIL " + f);
464
- failures += ported.failed;
465
- // Codes the ported suite positively asserts (incl. FAKE_JOIN, dormant in XML).
466
- const COVERED_BY_PORTED = ported.firedCodes;
467
-
468
- // ---- Run: 3) integration over real .bpmn files ---------------------------
469
- console.log("\n== Integration over real .bpmn files ==");
470
- const runIntegration = (await import("./integration.test.mjs")).default;
471
- const integ = await runIntegration({ verbose: true });
472
- console.log(
473
- `${integ.ranFiles} real files (${integ.knownGood} known-good, ${integ.expected} expected-findings), ${integ.passed} passed, ${integ.failed} failed.`,
474
- );
475
- for (const f of integ.failures) console.log(" FAIL " + f);
476
- failures += integ.failed;
477
-
478
- // ---- Run: 4) CLI well-formedness gate ------------------------------------
479
- // bpmn-moddle's SAX parser is lenient and accepts "--" inside comments, which
480
- // strict parsers and the canvas import reject. The CLI applies a pre-parse
481
- // well-formedness gate; assert it fires (exit 2) and does not false-positive.
482
- console.log("\n== CLI well-formedness gate ==");
483
- {
484
- const cli = join(dirname(fileURLToPath(import.meta.url)), "..", "validate-bpmn.mjs");
485
- const tmp = mkdtempSync(join(tmpdir(), "wf-"));
486
- const runExit = (xml) => {
487
- const p = join(tmp, "case.bpmn");
488
- writeFileSync(p, xml);
489
- try {
490
- execFileSync("node", [cli, p], { stdio: "pipe" });
491
- return 0;
492
- } catch (e) {
493
- return e.status ?? 1;
494
- }
495
- };
496
- const head = '<?xml version="1.0"?><bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"';
497
- // Each malformed case is well-formedness-invalid (strict parsers / canvas import
498
- // reject it) but bpmn-moddle's lenient SAX parser would accept it.
499
- const malformed = {
500
- '"--" inside comment': `${head}><!-- uip foo --connection-id x --><bpmn:process id="P"/></bpmn:definitions>`,
501
- "unescaped ampersand": `${head}><bpmn:process id="P" name="Tom & Jerry"/></bpmn:definitions>`,
502
- "&& in text (not CDATA)": `${head}><bpmn:process id="P">a && b</bpmn:process></bpmn:definitions>`,
503
- "stray <": `${head}><bpmn:process id="P">a < b</bpmn:process></bpmn:definitions>`,
504
- };
505
- for (const [name, xml] of Object.entries(malformed)) {
506
- const exit = runExit(xml);
507
- const ok = exit !== 0;
508
- console.log(`${ok ? "PASS" : "FAIL"} rejects ${name} (exit ${exit})`);
509
- if (!ok) failures++;
510
- }
511
- const okComment = `${head}><!-- uip foo with connection id and json output --><bpmn:process id="P"/></bpmn:definitions>`;
512
- const okExit = runExit(okComment);
513
- const okOk = okExit !== 2;
514
- console.log(`${okOk ? "PASS" : "FAIL"} clean comment not flagged for well-formedness (exit ${okExit})`);
515
- if (!okOk) failures++;
516
- }
517
-
518
- // ---- Coverage assertion: every rule code is exercised somewhere -----------
519
- const portedOnly = [...COVERED_BY_PORTED].filter((c) => !fired.has(c));
520
- const portedCoverageNote = portedOnly.length ? ` (+${portedOnly.join(",")} via ported suite)` : "";
521
- const allFired = new Set([...fired, ...COVERED_BY_PORTED]);
522
- const missing = RULE_CODES.filter((c) => !allFired.has(c));
523
- console.log(`\nRule codes exercised: ${allFired.size}/${RULE_CODES.length}${portedCoverageNote}`);
524
- if (missing.length) {
525
- console.log(` MISSING coverage for: ${missing.join(", ")}`);
526
- failures += missing.length;
527
- }
528
-
529
- console.log(`\n${failures === 0 ? "ALL GREEN" : failures + " FAILURE(S)"}`);
530
- process.exit(failures === 0 ? 0 : 1);