@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
@@ -98,7 +98,7 @@ For each entry in `caseShape.outputs[]`: same fields, **plus the dedup rule** pe
98
98
  }
99
99
  ```
100
100
 
101
- Append the task to the target stage's `data.tasks` structure in its planned order. Lane placement is structural/layout state; it does not express sequencing. Add `runs-sequentially` to the task's entry conditions when the frontend toggle is selected.
101
+ Append the task to the target stage's `data.tasks` structure using `activation-mode` + `entry-rule`, not `lane` alone. Strict `sequential` tasks append as new single-task inner arrays in planned order. `parallel-after-predecessor` siblings share the planned same next inner array even though their entry rule is `runs-sequentially`. Adhoc, event-driven, fan-in, conditional-gate, and standalone tasks get their own single-task inner array. Only `activation-mode: parallel` or `parallel-after-predecessor` tasks with explicit same-lane intent and rationale may share an inner array. Add `runs-sequentially` to the task's entry conditions when the frontend toggle or ordered task-set rule is selected; if `lane` conflicts with mode, mode wins.
102
102
 
103
103
  ### Step 8 — Append root-level bindings
104
104
 
@@ -40,6 +40,8 @@ Populate `outputs:` using the shared [I/O-binding output-list contract](../../va
40
40
  - <SDD output row, copied verbatim>
41
41
  - isRequired: true
42
42
  - runOnlyOnce: false
43
+ - activation-mode: event-triggered # required; normally event-triggered for a connector event wait
44
+ - entry-rule: wait-for-connector # required; must pair with activation-mode — see ../../conditions/task-entry-conditions/planning.md
43
45
  - order: after T<m>
44
46
  - lane: <n>
45
47
  - verify: Confirm task created with correct event parameters
@@ -36,7 +36,7 @@ Rules:
36
36
 
37
37
  ## Step 3 — Binding invariants
38
38
 
39
- After the sibling is built, registered, and verified (orchestration §), bind the task by name+folder: two bindings `resource:"process"`, `resourceSubType` per the table below, shared `resourceKey="solution_folder.<Name>"`; `name` default `<Name>`, **`folderPath` default `""` (empty string)**. The sibling ships **inside** the solution `.uipx` (registered as a sibling project), so it co-deploys with the case when the solution is published (Phase 6 `uip solution upload`); it is **not** published separately to the tenant.
39
+ After the sibling is built, registered, and verified (orchestration §), bind the task by name+folder: two bindings `resource:"process"`, `resourceSubType` per the table below, shared `resourceKey="solution_folder.<Name>"`; `name` default `<Name>`, **`folderPath` default `""` (empty string)**. The sibling ships **inside** the solution `.uipx` (registered as a sibling project), so it co-deploys with the case when the solution is published (Phase 5 `uip solution upload`); it is **not** published separately to the tenant.
40
40
 
41
41
  | Type | `resourceSubType` |
42
42
  |------|-------------------|
@@ -11,7 +11,7 @@
11
11
  "displayName": "Run KYC",
12
12
  "elementId": "Stage_aB3kL9-t8GQTYo8O",
13
13
  "isRequired": true,
14
- "shouldRunOnlyOnce": true,
14
+ "shouldRunOnlyOnce": false,
15
15
  "data": {
16
16
  "name": "=bindings.bG0SraLpg",
17
17
  "folderPath": "=bindings.bH1iJK2lm",
@@ -22,6 +22,7 @@
22
22
  ```
23
23
 
24
24
  - `id`: `t` + 8 alphanumeric chars. `elementId`: `${stageId}-${taskId}`.
25
+ - `isRequired` and `shouldRunOnlyOnce` come from the SDD task envelope via `tasks.md`; default `shouldRunOnlyOnce` to `false` when omitted. Do not infer run-once from task type.
25
26
  - `data.name` / `data.folderPath` MUST be `=bindings.<id>` references — never literals.
26
27
 
27
28
  ## Procedure
@@ -51,7 +52,7 @@ Dedup per [§ Deduplication](../../variables/bindings/impl-json.md).
51
52
  3. Write `data.inputs[]` / `data.outputs[]` from Step 0 schema. Each input: `{ name, type, id, var, elementId, value: "" }`. Each output: `{ name, type, id, var, value, source, target, elementId }`.
52
53
 
53
54
  **Output binding.** Apply [io-binding/impl-json.md § Output Binding Shapes](../../variables/io-binding/impl-json.md#output-binding-shapes). The Step 0 schema for this plugin is the `tasks describe` output (Step 0 above).
54
- 4. Append to target stage's `tasks[laneIndex][]`
55
+ 4. Append to the target stage's `data.tasks` structure using `activation-mode` + `entry-rule`, not `lane` alone. Strict `sequential` tasks append as new single-task inner arrays in planned order. `parallel-after-predecessor` siblings share the planned same next inner array even though their entry rule is `runs-sequentially`. Adhoc, event-driven, fan-in, conditional-gate, and standalone tasks get their own single-task inner array. Only `activation-mode: parallel` or `parallel-after-predecessor` tasks with explicit same-lane intent and rationale may share `tasks[laneIndex][]`; if `lane` conflicts with mode, mode wins.
55
56
 
56
57
  > Entry conditions added in Step 10. Input value bindings in Phase 3 per [io-binding/impl-json.md](../../variables/io-binding/impl-json.md).
57
58
 
@@ -22,14 +22,14 @@ For RPA robot tasks specifically, prefer [rpa](../rpa/planning.md). For Coded wo
22
22
  | `task-type-id` | Registry resolution (see below) | Enables auto-enrichment via `tasks describe`. |
23
23
  | `inputs` | sdd.md task data mapping | See [bindings-and-expressions.md](../../../bindings-and-expressions.md) |
24
24
  | `outputs` | sdd.md task Outputs + `tasks describe` schema | Follow the shared [I/O-binding output-list contract](../../variables/io-binding/planning.md#canonical-tasksmd-output-list). |
25
- | `runOnlyOnce` | sdd.md (default `true`) | |
25
+ | `runOnlyOnce` | sdd.md (default `false`) | Re-entry behavior comes from the SDD, not the task type. |
26
26
  | `isRequired` | sdd.md (default `true`) | |
27
27
 
28
28
  ## Registry Resolution
29
29
 
30
- 1. **Primary cache file:** `process-index.json` for `PROCESS`, `processOrchestration-index.json` for `AGENTIC_PROCESS`.
30
+ 1. **Primary cache file:** `processOrchestration-index.json` for both `PROCESS` and `AGENTIC_PROCESS`.
31
31
  2. **Identifier field:** `entityKey`.
32
- 3. **Cross-type fallback.** If the primary cache file has no match, search both files — the sdd.md label is not authoritative. A process registered as `process` may be mislabeled `AGENTIC_PROCESS` in sdd.md and vice versa.
32
+ 3. **Cross-type fallback — mandatory before unresolved fallback.** If the primary cache file has no exact match, query the *other* process cache with the same name and folder hint before recording `selected: null`, asking the empty-lookup question, or writing a placeholder. Therefore a `PROCESS` or `AGENTIC_PROCESS` miss in `processOrchestration-index.json` **MUST** be followed by a `process-index.json` lookup. The sdd.md label is not authoritative: a runnable process can be registered under either index. When the fallback matches, use that entry's `entityKey`, `name`, and full folder path, then continue to schema discovery — do not preserve the primary miss as an unresolved task.
33
33
  4. **Match priority:** exact name + exact folder > exact name, multiple folders (pick matching) > exact name only > no match.
34
34
  5. **`folder-path` = the SELECTED entry's `folders[0].fullyQualifiedName`** (not the sdd.md "Folder" — see the field table above). Fall back to the sdd.md folder only when there is no registry match (Unresolved path).
35
35
  5a. **`name` = the SELECTED entry's `name`** (not the sdd.md name — the Orchestrator release name is what Orchestrator uses at runtime; it may differ from the package/project name). Record this as the `name` binding default; `resourceKey = <folder-path>.<name>`. Fall back to the sdd.md name only when there is no registry match.
@@ -56,8 +56,10 @@ If no match is found across both cache files after `registry pull`:
56
56
  - <input_name> <- "<Stage>"."<Task>".<output>
57
57
  - outputs:
58
58
  - <SDD output row, copied verbatim>
59
- - runOnlyOnce: true
59
+ - runOnlyOnce: false
60
60
  - isRequired: true
61
+ - activation-mode: <sequential|parallel|event-triggered|adhoc|fan-in|conditional-gate> # required
62
+ - entry-rule: <runs-sequentially|current-stage-entered|wait-for-connector|adhoc|selected-tasks-completed> # required; must pair with activation-mode — see ../../conditions/task-entry-conditions/planning.md
61
63
  - order: after T<m>
62
64
  - lane: <n> # structural/layout position only; sequencing is the task entry rule plus data.tasks order.
63
65
  - verify: Confirm Result: Success, capture TaskId
@@ -11,7 +11,7 @@
11
11
  "displayName": "Extract Invoice Data",
12
12
  "elementId": "Stage_aB3kL9-tQ2pVx7Lm",
13
13
  "isRequired": true,
14
- "shouldRunOnlyOnce": true,
14
+ "shouldRunOnlyOnce": false,
15
15
  "data": {
16
16
  "name": "=bindings.bG0SraLpg",
17
17
  "folderPath": "=bindings.bH1iJK2lm",
@@ -22,6 +22,7 @@
22
22
  ```
23
23
 
24
24
  - `id`: `t` + 8 alphanumeric chars. `elementId`: `${stageId}-${taskId}`.
25
+ - `isRequired` and `shouldRunOnlyOnce` come from the SDD task envelope via `tasks.md`; default `shouldRunOnlyOnce` to `false` when omitted. Do not infer run-once from task type.
25
26
  - `data.name` / `data.folderPath` MUST be `=bindings.<id>` references — never literals.
26
27
  - **Do not flip to `type: "process"`** based on registry. The `rpa` vs `process` distinction comes from sdd.md intent.
27
28
 
@@ -52,7 +53,7 @@ Dedup per [§ Deduplication](../../variables/bindings/impl-json.md).
52
53
  3. Write `data.inputs[]` / `data.outputs[]` from Step 0 schema. Each input: `{ name, type, id, var, elementId, value: "" }`. Each output: `{ name, type, id, var, value, source, target, elementId }`.
53
54
 
54
55
  **Output binding.** Apply [io-binding/impl-json.md § Output Binding Shapes](../../variables/io-binding/impl-json.md#output-binding-shapes). The Step 0 schema for this plugin is the `tasks describe` output (Step 0 above).
55
- 4. Append to target stage's `tasks[laneIndex][]`
56
+ 4. Append to the target stage's `data.tasks` structure using `activation-mode` + `entry-rule`, not `lane` alone. Strict `sequential` tasks append as new single-task inner arrays in planned order. `parallel-after-predecessor` siblings share the planned same next inner array even though their entry rule is `runs-sequentially`. Adhoc, event-driven, fan-in, conditional-gate, and standalone tasks get their own single-task inner array. Only `activation-mode: parallel` or `parallel-after-predecessor` tasks with explicit same-lane intent and rationale may share `tasks[laneIndex][]`; if `lane` conflicts with mode, mode wins.
56
57
 
57
58
  > Entry conditions added in Step 10. Input value bindings in Phase 3 per [io-binding/impl-json.md](../../variables/io-binding/impl-json.md).
58
59
 
@@ -20,7 +20,7 @@ Same shape as [process/planning.md](../process/planning.md):
20
20
  | `task-type-id` | from registry (`entityKey` in `process-index.json`) |
21
21
  | `inputs` | see [bindings-and-expressions.md](../../../bindings-and-expressions.md) |
22
22
  | `outputs` | follow the shared [I/O-binding output-list contract](../../variables/io-binding/planning.md#canonical-tasksmd-output-list) |
23
- | `runOnlyOnce`, `isRequired` | from sdd.md |
23
+ | `runOnlyOnce`, `isRequired` | from sdd.md (`runOnlyOnce` defaults false if omitted; do not infer true from task type) |
24
24
 
25
25
  ## Registry Resolution
26
26
 
@@ -47,8 +47,10 @@ Mark `<UNRESOLVED: rpa "<name>" in folder "<folder>" not found in registry>`. Om
47
47
  - <input_name> = "<value>"
48
48
  - outputs:
49
49
  - <SDD output row, copied verbatim>
50
- - runOnlyOnce: true
50
+ - runOnlyOnce: false
51
51
  - isRequired: true
52
+ - activation-mode: <sequential|parallel|event-triggered|adhoc|fan-in|conditional-gate> # required
53
+ - entry-rule: <runs-sequentially|current-stage-entered|wait-for-connector|adhoc|selected-tasks-completed> # required; must pair with activation-mode — see ../../conditions/task-entry-conditions/planning.md
52
54
  - order: after T<m>
53
55
  - lane: <n> # structural/layout position only; sequencing is the task entry rule plus data.tasks order.
54
56
  - verify: Confirm Result: Success, capture TaskId
@@ -15,7 +15,7 @@ Write the timer task directly to `caseplan.json`. No CLI command needed.
15
15
  "displayName": "Approval Escalation Timer",
16
16
  "elementId": "Stage_aB3kL9-tWm4Vx9Tp",
17
17
  "isRequired": false,
18
- "shouldRunOnlyOnce": true,
18
+ "shouldRunOnlyOnce": false,
19
19
  "skipCondition": "=js:vars.skipReview === true",
20
20
  "data": {
21
21
  "timerType": "timeDuration",
@@ -24,6 +24,7 @@ Write the timer task directly to `caseplan.json`. No CLI command needed.
24
24
  }
25
25
  ```
26
26
 
27
+ > **Envelope source.** `isRequired` and `shouldRunOnlyOnce` come from the SDD task envelope via `tasks.md`; default `shouldRunOnlyOnce` to `false` when omitted. Do not infer run-once from timer task type.
27
28
  > **`data` holds ONLY `timerType` + the duration field.** `skipCondition` and all other envelope fields are top-level siblings of `data`, never nested inside it (a misplaced one passes `validate` silently but is never applied). See [case-schema.md](../../../case-schema.md) §7 Tasks — BaseTask shape.
28
29
 
29
30
  ## Procedure
@@ -32,7 +33,7 @@ Write the timer task directly to `caseplan.json`. No CLI command needed.
32
33
 
33
34
  1. Generate task ID: `t` + 8 alphanumeric chars (unique across all tasks)
34
35
  2. Generate elementId: `<stageId>-<taskId>`
35
- 3. Write the task with `"data": {}` to the target stage's `tasks[]` array (in its own task set)
36
+ 3. Write the task with `"data": {}` to the target stage's `data.tasks` structure using the common placement contract: strict sequential timers get their own single-task inner array, `parallel-after-predecessor` timers share the planned same next inner array even though their entry rule is `runs-sequentially`, adhoc/event-driven/fan-in/conditional-gate/standalone timers get their own single-task inner array, and only explicitly parallel or parallel-after-predecessor timers may share an inner array.
36
37
 
37
38
  ```json
38
39
  {
@@ -41,7 +42,7 @@ Write the timer task directly to `caseplan.json`. No CLI command needed.
41
42
  "displayName": "Approval Escalation Timer",
42
43
  "elementId": "Stage_aB3kL9-tWm4Vx9Tp",
43
44
  "isRequired": false,
44
- "shouldRunOnlyOnce": true,
45
+ "shouldRunOnlyOnce": false,
45
46
  "data": {}
46
47
  }
47
48
  ```
@@ -23,6 +23,7 @@ Distinguish from:
23
23
  | Either `timeDuration` (`--every`) OR `timeCycle` OR `timeDate` (`--at`) | sdd.md timer semantics | At least one required |
24
24
  | `repeat` | sdd.md (optional) | Number of repetitions — omit for infinite |
25
25
  | `isRequired` | sdd.md (default `true`) | |
26
+ | `runOnlyOnce` | sdd.md (default `false`) | Re-entry behavior comes from the SDD, not the task type. |
26
27
 
27
28
  ## Registry Resolution
28
29
 
@@ -64,6 +65,9 @@ Ambiguous phrasing → **AskUserQuestion** with 2–3 candidate interpretations
64
65
  - repeat: 5 # optional
65
66
  - time-cycle: R/PT1H # optional (overrides above)
66
67
  - isRequired: true
68
+ - runOnlyOnce: false
69
+ - activation-mode: <sequential|parallel|event-triggered|adhoc|fan-in|conditional-gate> # required
70
+ - entry-rule: <runs-sequentially|current-stage-entered|wait-for-connector|adhoc|selected-tasks-completed> # required; must pair with activation-mode — see ../../conditions/task-entry-conditions/planning.md
67
71
  - order: after T<m>
68
72
  - lane: <n> # structural/layout position only; sequencing is the task entry rule plus data.tasks order.
69
73
  - verify: Confirm Result: Success, capture TaskId
@@ -4,7 +4,7 @@ Configure the case-level event trigger by writing directly into the trigger node
4
4
 
5
5
  For shared CLI invocation, placeholder substitution, anti-patterns, and the canonical form for filter expressions with variable references, see [connector-trigger-common.md](../../../connector-trigger-common.md). For the per-sink canonical-form table covering all expression-syntax decisions in this skill, see [bindings-and-expressions.md § Canonical form per sink](../../../bindings-and-expressions.md#canonical-form-per-sink). This doc covers only the **trigger-node-specific** parts.
6
6
 
7
- > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement`, `data.isInvalidDropTarget`, `data.isPendingParent`, `data.label`, `data.description`, `data.uipath`.
7
+ > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement`, `data.isInvalidDropTarget`, `data.isPendingParent`, `data.typeVersion`, `data.display`, `data.description`, `data.inputs`.
8
8
 
9
9
  ## Prerequisites from Planning
10
10
 
@@ -53,7 +53,7 @@ For each entry in `caseShape.inputs[]` (these are trigger configuration: `eventP
53
53
  - `id` = same as `var`
54
54
  - **No `elementId`** on trigger inputs (different from in-stage task inputs).
55
55
 
56
- > **`caseShape.outputs[]` are NOT minted here.** Under B's redesign, all writes to `triggerNode.data.uipath.outputs[]` are owned by the variables plugin (see [`../../variables/global-vars/impl-json.md` § Dispatcher Loop](../../variables/global-vars/impl-json.md)). This plugin captures the un-minted `caseShape.outputs[]` into `tasks/trigger-spec-cache.json` (Step 8) for the variables plugin to consume.
56
+ > **`caseShape.outputs[]` are NOT minted here.** Under B's redesign, all writes to `triggerNode.data.inputs.outputs[]` are owned by the variables plugin (see [`../../variables/global-vars/impl-json.md` § Dispatcher Loop](../../variables/global-vars/impl-json.md)). This plugin captures the un-minted `caseShape.outputs[]` into `tasks/trigger-spec-cache.json` (Step 8) for the variables plugin to consume.
57
57
 
58
58
  ## Step 7 — Build trigger node and write to caseplan.json
59
59
 
@@ -69,8 +69,9 @@ Set the trigger's display name from `tasks.md`. Record `T<N> → trigger_xxxxxx`
69
69
 
70
70
  ```json
71
71
  {
72
- "label": "<display-name>",
73
- "uipath": {
72
+ "typeVersion": "1.0.0",
73
+ "display": { "label": "<display-name>" },
74
+ "inputs": {
74
75
  "serviceType": "Intsvc.EventTrigger",
75
76
  "context": "<caseShape.context — placeholders substituted in Step 5>",
76
77
  "inputs": "<caseShape.inputs — var/id minted in Step 6; NO elementId>",
@@ -80,7 +81,8 @@ Set the trigger's display name from `tasks.md`. Record `T<N> → trigger_xxxxxx`
80
81
  }
81
82
  ```
82
83
 
83
- > `outputs: []` is initialized empty. The variables plugin populates it in Phase 3 Step 6.2 using the sidecar from Step 8 below.
84
+ > Since v24 all trigger runtime config lives under `data.inputs` (the old `data.uipath` bag flattened in). The event trigger's CONFIG-input array is therefore `data.inputs.inputs`, its outputs `data.inputs.outputs`, its context `data.inputs.context`.
85
+ > `data.inputs.outputs` is initialized empty (`[]`). The variables plugin populates it in Phase 3 Step 6.2 using the sidecar from Step 8 below.
84
86
 
85
87
  ## Step 8 — Write trigger-spec-cache.json sidecar
86
88
 
@@ -128,17 +130,18 @@ When the T-entry carries `<UNRESOLVED>` on `type-id`, `connection-id`, or `conne
128
130
  ```json
129
131
  {
130
132
  "id": "<trigger_xxxxxx>",
131
- "type": "case-management:Trigger",
133
+ "type": "uipath.case.trigger",
132
134
  "data": {
133
135
  "parentElement": { "id": "root", "type": "case-management:root" },
134
- "label": "<display-name>",
135
136
  "description": "<description from sdd.md>",
136
- "uipath": { "serviceType": "Intsvc.EventTrigger" }
137
+ "typeVersion": "1.0.0",
138
+ "display": { "label": "<display-name>" },
139
+ "inputs": { "serviceType": "Intsvc.EventTrigger" }
137
140
  }
138
141
  }
139
142
  ```
140
143
 
141
- `data.uipath` carries **only** `serviceType` — no `context[]`, `inputs[]`, `outputs[]`, `bindings[]`, `metadata`. Equivalent intent to a connector-task `data: {}` placeholder; trigger nodes need `label` / `description` / `parentElement` to render at all.
144
+ `data.inputs` carries **only** `serviceType` — no `context[]`, `inputs[]`, `outputs[]`, `bindings[]`, `metadata`. Equivalent intent to a connector-task `data: {}` placeholder; trigger nodes need `label` / `description` / `parentElement` to render at all.
142
145
 
143
146
  **Sibling artifacts:** append the matching `entry-points.json` entry per [manual/impl-json.md § Recipe — entry-points.json](../manual/impl-json.md#recipe--entry-pointsjson-append-to-entrypoints). No trigger-edge is created (Rule 20) — the first stage's `case-entered` entry condition starts the case. No root bindings, no `inputOutputs[]` entries from this trigger.
144
147
 
@@ -162,13 +165,13 @@ All issues appended per [logging/impl-json.md](../../logging/impl-json.md).
162
165
 
163
166
  ## Post-Write Verification
164
167
 
165
- 1. `data.uipath.serviceType` is `"Intsvc.EventTrigger"` (not `WaitForEvent` or `CuratedTrigger`).
166
- 2. **Fully configured:** `context[]`, `inputs[]` (CONFIG inputs only — no `elementId`), `outputs[]` (empty array — populated later by variables plugin Step 6.2), and `bindings[] = []` all present per §7b.
168
+ 1. `data.inputs.serviceType` is `"Intsvc.EventTrigger"` (not `WaitForEvent` or `CuratedTrigger`).
169
+ 2. **Fully configured** (all under `data.inputs`): `context[]`, `inputs[]` (CONFIG inputs only — no `elementId`), `outputs[]` (empty array — populated later by variables plugin Step 6.2), and `bindings[] = []` all present per §7b. `data.typeVersion` is `"1.0.0"`; `data.display.label` set.
167
170
  3. **`tasks/trigger-spec-cache.json` exists** with this trigger's T-number as a top-level key, containing un-minted `context`, `inputs`, `outputs` from `caseShape`.
168
171
  4. **`id-map.json`** contains `"T<N>": { "kind": "trigger", "id": "<triggerId>" }` for this trigger.
169
- 5. **Placeholder:** all four `data.uipath` fields beyond `serviceType` **absent** (not empty arrays); no root bindings entries from this trigger; no `trigger-spec-cache.json` entry from this trigger; `[SKIPPED]` log entry present.
170
- 6. `data.context[name="metadata"].body.activityPropertyConfiguration.configuration` is a `=jsonString:…` string (CLI-produced; do not modify).
171
- 7. When the trigger has event parameters: `data.context[name="metadata"].body.bindings[Property].metadata.ParentResourceKey` is `EventTrigger.<eventTriggerKey>` (substituted from `EventTrigger.{{TRIGGER_REGISTRATION_KEY}}`).
172
+ 5. **Placeholder:** all four `data.inputs` fields beyond `serviceType` **absent** (not empty arrays); no root bindings entries from this trigger; no `trigger-spec-cache.json` entry from this trigger; `[SKIPPED]` log entry present.
173
+ 6. `data.inputs.context[name="metadata"].body.activityPropertyConfiguration.configuration` is a `=jsonString:…` string (CLI-produced; do not modify).
174
+ 7. When the trigger has event parameters: `data.inputs.context[name="metadata"].body.bindings[Property].metadata.ParentResourceKey` is `EventTrigger.<eventTriggerKey>` (substituted from `EventTrigger.{{TRIGGER_REGISTRATION_KEY}}`).
172
175
  8. `schema.edges` stays `[]` (Rule 20) — no edge from this trigger.
173
176
  9. `entry-points.json` has a matching entry referencing the trigger node ID.
174
177
 
@@ -51,7 +51,7 @@ Two entry paths: **Scenario A** — connector not found in TypeCache ([connector
51
51
  If the connector or connection cannot be resolved:
52
52
  - Mark **every connector-derived field** with `<UNRESOLVED: reason>` in the T-entry — `type-id`, `connection-id`, `connector-key`, `object-name`, `event-operation`, and `event-mode` all derive from the connector / connection lookup, so when the connector itself is unresolved, none of them have authoritative values. Mark each one explicitly rather than omitting them (so the user sees the full attach checklist when upgrading).
53
53
  - Omit `input-values:` and `filter:` from the T-entry — there is no schema to wire against.
54
- - **Execution creates a placeholder trigger node** with `serviceType: "Intsvc.EventTrigger"` as the only `data.uipath` field (no `context[]`, `metadata`, `inputs`, `outputs`, or `bindings`). The node carries `id`, `label`, `description`, `parentElement`, and standard render fields so the FE renders it as an event trigger awaiting attachment. See [`impl-json.md` § Placeholder fallback](impl-json.md#placeholder-fallback-unresolved-connector--connection).
54
+ - **Execution creates a placeholder trigger node** with `serviceType: "Intsvc.EventTrigger"` as the only `data.inputs` field (no `context[]`, `metadata`, `inputs`, `outputs`, or `bindings`). The node carries `id`, `display.label`, `description`, `parentElement`, `typeVersion`, and standard render fields so the FE renders it as an event trigger awaiting attachment. See [`impl-json.md` § Placeholder fallback](impl-json.md#placeholder-fallback-unresolved-connector--connection).
55
55
  - The matching `entry-points.json` entry **is still appended** — entry-points are structural BPMN references and do not depend on connector resolution.
56
56
  - **No trigger-edge is created** (Rule 20). The first stage's `case-entered` entry condition starts the case regardless of whether this trigger is resolved or a placeholder.
57
57
  - Document the missing trigger and its `<UNRESOLVED>` fields in the completion report so the user knows what to attach after registering the IS connection.
@@ -6,13 +6,13 @@ direct-json: supported
6
6
 
7
7
  Cross-cutting direct-JSON rules live in [`case-editing-operations.md`](../../../case-editing-operations.md).
8
8
 
9
- > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement`, `data.isInvalidDropTarget`, `data.isPendingParent`, `data.label`, `data.description`, `data.uipath`.
9
+ > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement`, `data.isInvalidDropTarget`, `data.isPendingParent`, `data.typeVersion`, `data.display`, `data.description`.
10
10
 
11
11
  ## Purpose
12
12
 
13
13
  Append one secondary manual trigger to the schema. This plugin performs **two file writes as an atomic pair**:
14
14
 
15
- 1. Append a `case-management:Trigger` node to `caseplan.json.nodes`.
15
+ 1. Append a `uipath.case.trigger` node to `caseplan.json.nodes`.
16
16
  2. Append a matching entry to `entry-points.json.entryPoints` (sibling of `caseplan.json`).
17
17
 
18
18
  The sibling-file sync is the main reason this plugin needs a dedicated JSON recipe rather than reusing a generic "add node" primitive — orchestrator discovers entry points via `entry-points.json`, so a trigger node without a matching entry is invisible to runtime.
@@ -48,7 +48,7 @@ Record `T<n> → trigger_xxxxxx` in `id-map.json` for downstream cross-reference
48
48
  If the T-entry does not supply `display-name`:
49
49
 
50
50
  ```text
51
- existingTriggers = schema.nodes.filter(n => n.type === "case-management:Trigger")
51
+ existingTriggers = schema.nodes.filter(n => n.type === "uipath.case.trigger")
52
52
  displayName = `Trigger ${existingTriggers.length + 1}`
53
53
  ```
54
54
 
@@ -61,16 +61,18 @@ Append (not prepend) the trigger node:
61
61
  ```json
62
62
  {
63
63
  "id": "<trigger_XXXXXX>",
64
- "type": "case-management:Trigger",
64
+ "type": "uipath.case.trigger",
65
65
  "data": {
66
66
  "parentElement": { "id": "root", "type": "case-management:root" },
67
- "label": "<displayName>",
68
- "description": "<description from sdd.md or LLM-inferred>"
67
+ "description": "<description from sdd.md or LLM-inferred>",
68
+ "typeVersion": "1.0.0",
69
+ "display": { "label": "<displayName>" },
70
+ "inputs": { "serviceType": "None" }
69
71
  }
70
72
  }
71
73
  ```
72
74
 
73
- **No `data.uipath` key.** Absence of `uipath` is the manual trigger's signature. `serviceType` only appears on timer (`Intsvc.TimerTrigger`) and event (`Intsvc.EventTrigger`) variants.
75
+ **`data.inputs.serviceType` is `"None"` for manual triggers.** Older schemas may omit `inputs` entirely — both forms are valid when reading. Always emit `"inputs": {"serviceType": "None"}` when writing.
74
76
 
75
77
  ## Recipe — `entry-points.json` (append to `entryPoints`)
76
78
 
@@ -107,11 +109,12 @@ If the second write fails, the `caseplan.json` mutation must be rolled back to a
107
109
  After writing, confirm:
108
110
 
109
111
  - `caseplan.json.nodes` contains the new node with the generated `trigger_XXXXXX` id, at the end of the array.
110
- - `nodes[].type === "case-management:Trigger"`.
111
- - `nodes[].data.label` matches the resolved `displayName`.
112
+ - `nodes[].type === "uipath.case.trigger"`.
113
+ - `nodes[].data.display.label` matches the resolved `displayName`.
112
114
  - `nodes[].data.description` is present and non-empty (direct-JSON-write divergence — always emitted).
115
+ - `nodes[].data.typeVersion === "1.0.0"`.
113
116
  - `nodes[].data.parentElement` always present. No `position`, `style`, `measured`, `width`, `height`, `zIndex` at the node level (Rule 18).
114
- - `nodes[].data.uipath` is **absent** (manual triggers have no `uipath` key).
117
+ - `nodes[].data.inputs.serviceType === "None"` (or `inputs` absent in older schemas — both are valid).
115
118
  - **`schema.edges` is still `[]`** (Rule 20) — the trigger connects to nothing; the case starts via the first stage's `case-entered` entry condition. If an edge was authored, remove it before proceeding.
116
119
  - `entry-points.json.entryPoints` contains a new entry with `filePath` ending in `#<trigger_XXXXXX>` and `displayName === <displayName>`.
117
120
 
@@ -6,7 +6,7 @@ direct-json: supported
6
6
 
7
7
  Cross-cutting direct-JSON rules live in [`case-editing-operations.md`](../../../case-editing-operations.md).
8
8
 
9
- > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement` (when applicable per Case A vs B below), `data.isInvalidDropTarget`, `data.isPendingParent`, `data.label`, `data.description`, `data.uipath`.
9
+ > **Layout-strip (Rule 18).** Omit `position`, `style`, `measured`, `width`, `height`, `zIndex` from the trigger node. Keep `data.parentElement` (when applicable per Case A vs B below), `data.isInvalidDropTarget`, `data.isPendingParent`, `data.typeVersion`, `data.display`, `data.description`, `data.inputs`.
10
10
 
11
11
  ## Purpose
12
12
 
@@ -25,7 +25,7 @@ Add a scheduled trigger to a case. Adapts shape to whether any Trigger node alre
25
25
  Count existing Trigger nodes in `schema.nodes` **before** writing:
26
26
 
27
27
  ```text
28
- existingTriggers = schema.nodes.filter(n => n.type === "case-management:Trigger")
28
+ existingTriggers = schema.nodes.filter(n => n.type === "uipath.case.trigger")
29
29
  ```
30
30
 
31
31
  ### Case A — zero existing triggers (first-trigger path)
@@ -35,12 +35,13 @@ Emit the canonical first-trigger shape with the timer `uipath` block:
35
35
  ```json
36
36
  {
37
37
  "id": "trigger_1",
38
- "type": "case-management:Trigger",
38
+ "type": "uipath.case.trigger",
39
39
  "data": {
40
- "label": "<displayName or \"Trigger 1\">",
41
40
  "description": "<description from sdd.md or LLM-inferred>",
42
- "uipath": {
43
- "serviceType": "Intsvc.TimerTrigger",
41
+ "typeVersion": "1.0.0",
42
+ "display": { "label": "<displayName or \"Trigger 1\">" },
43
+ "inputs": {
44
+ "serviceType": "timer",
44
45
  "timerType": "timeCycle",
45
46
  "timeCycle": "<timeCycle from tasks.md>"
46
47
  }
@@ -57,13 +58,14 @@ Emit a secondary trigger with `data.parentElement` included:
57
58
  ```json
58
59
  {
59
60
  "id": "trigger_<6-rand>",
60
- "type": "case-management:Trigger",
61
+ "type": "uipath.case.trigger",
61
62
  "data": {
62
63
  "parentElement": { "id": "root", "type": "case-management:root" },
63
- "label": "<displayName or \"Trigger <N>\">",
64
64
  "description": "<description from sdd.md or LLM-inferred>",
65
- "uipath": {
66
- "serviceType": "Intsvc.TimerTrigger",
65
+ "typeVersion": "1.0.0",
66
+ "display": { "label": "<displayName or \"Trigger <N>\">" },
67
+ "inputs": {
68
+ "serviceType": "timer",
67
69
  "timerType": "timeCycle",
68
70
  "timeCycle": "<timeCycle from tasks.md>"
69
71
  }
@@ -82,13 +84,13 @@ Locate `entry-points.json` adjacent to `caseplan.json` (same directory). Append
82
84
  "type": "CaseManagement",
83
85
  "input": { "type": "object", "properties": {} },
84
86
  "output": { "type": "object", "properties": {} },
85
- "displayName": "<same as node.data.label>"
87
+ "displayName": "<same as node.data.display.label>"
86
88
  }
87
89
  ```
88
90
 
89
91
  - `<caseplan-basename>` — the literal filename of the case file (typically `caseplan.json`), producing a path like `/content/caseplan.json.bpmn#trigger_xxxxxx`.
90
92
  - `<UUID v4>` — fresh `crypto.randomUUID()` per write. Non-deterministic; normalizer strips in golden diff.
91
- - `displayName` matches `node.data.label` (including the `Trigger <N>` default if `displayName` absent).
93
+ - `displayName` matches `node.data.display.label` (including the `Trigger <N>` default if `displayName` absent).
92
94
  - Leave this entry's `input`/`output` schemas (the `entry-points.json` fields above — not the trigger node's I/O) empty here — Step 6.3 back-fills them from the case's In/Out args ([entry-points-sync.md](../../../entry-points-sync.md)).
93
95
 
94
96
  **Write order:** `caseplan.json` first, then `entry-points.json`. If the second write fails, the skill surfaces the inconsistency to the user rather than silently half-applying.
@@ -105,13 +107,13 @@ Record `T<n> → <triggerId>` in `id-map.json` for downstream cross-reference
105
107
  After writing, confirm:
106
108
 
107
109
  - `schema.nodes` contains the new Trigger node with the expected `id`
108
- - `node.data.uipath.serviceType == "Intsvc.TimerTrigger"`
109
- - `node.data.uipath.timerType == "timeCycle"`
110
- - `node.data.uipath.timeCycle` is byte-identical to the input string
110
+ - `node.data.inputs.serviceType == "timer"`
111
+ - `node.data.inputs.timerType == "timeCycle"`
112
+ - `node.data.inputs.timeCycle` is byte-identical to the input string
111
113
  - Node has NO `position`, `style`, `measured`, `width`, `height`, `zIndex` (Rule 18 layout-strip)
112
114
  - Case A: no `data.parentElement`. Case B: `data.parentElement == {id: "root", type: "case-management:root"}`
113
115
  - **`schema.edges` is still `[]`** (Rule 20) — the trigger connects to nothing; the case starts via the first stage's `case-entered` entry condition. If an edge was authored, remove it before proceeding.
114
- - `entry-points.json.entryPoints` has a new entry with `filePath` containing the new `triggerId` and `displayName` matching `node.data.label`
116
+ - `entry-points.json.entryPoints` has a new entry with `filePath` containing the new `triggerId` and `displayName` matching `node.data.display.label`
115
117
 
116
118
  Run `uip maestro case validate <file> --output json` after all triggers for this plugin's batch are added.
117
119
 
@@ -71,7 +71,7 @@ When the sdd.md phrasing is ambiguous (missing start time, timezone, repeat coun
71
71
  - displayName: "<optional — defaults to Trigger N>"
72
72
  - sdd-intent: "<prose restatement for reviewer — e.g. Every 10 min, starting 2026-04-21 22:00 PDT, 12 times>"
73
73
  - order: after T01
74
- - verify: node added to schema.nodes with data.uipath.serviceType == Intsvc.TimerTrigger; entry-points.json has matching entry; timeCycle exact match
74
+ - verify: node added to schema.nodes with data.inputs.serviceType == timer; entry-points.json has matching entry; timeCycle exact match
75
75
  ```
76
76
 
77
- `sdd-intent` is reviewer-only prose — the execution phase ignores it. `timeCycle` is the canonical executable field, written directly into `node.data.uipath.timeCycle` per [`impl-json.md`](impl-json.md).
77
+ `sdd-intent` is reviewer-only prose — the execution phase ignores it. `timeCycle` is the canonical executable field, written directly into `node.data.inputs.timeCycle` per [`impl-json.md`](impl-json.md).
@@ -6,7 +6,7 @@ Top-level binding creation. Referenced by **all** task plugins — non-connector
6
6
 
7
7
  ## Destination
8
8
 
9
- Bindings live at top-level `bindings[]` in `caseplan.json` (no `root` wrapper, no `data.uipath`).
9
+ Bindings live at top-level `bindings[]` in `caseplan.json` (no `root` wrapper, no `data.inputs`).
10
10
 
11
11
  ## What Bindings Are
12
12
 
@@ -33,7 +33,7 @@ return allVariables.find(v => v.id === variableId);
33
33
  | `variables.outputs[]` *(top level)* | YES (the formal entry) | But its `var` points elsewhere — see Out-arg shape below |
34
34
  | `task.data.outputs[]` | YES if `id` present | Bare outputs self-declare with `id === var`; reassigned outputs may have a collision-safe `id` while `var` points to the target Case variable |
35
35
  | `task.data.inputs[]` | YES — by random `id` | Picker-invisible; used for the In-arg formal slot |
36
- | `triggerNode.data.uipath.outputs[]` | YES if `id` present; **NO if only `var` (no `id`)** | Pattern A entries (`id === var`) self-resolve; Pattern C entries (`var` only) require a companion in `root.inputOutputs[]` |
36
+ | `triggerNode.data.inputs.outputs[]` | YES if `id` present; **NO if only `var` (no `id`)** | Pattern A entries (`id === var`) self-resolve; Pattern C entries (`var` only) require a companion in `root.inputOutputs[]` |
37
37
 
38
38
  **"Companion" = the paired `inputOutputs[]` entry whose `id` matches the lookup name.** Required for trigger outputs that lack `id`; load-bearing for Out-args with a `Default` value; optional when the producer (task output) already self-declares.
39
39
 
@@ -46,7 +46,7 @@ Under the B refactor, this plugin is **the sole owner** of:
46
46
  | `variables.inputs[]` *(top level)* | Yes |
47
47
  | `variables.outputs[]` *(top level)* | Yes |
48
48
  | `variables.inputOutputs[]` *(top level)* | Yes |
49
- | `triggerNode.data.uipath.outputs[]` | **Yes** — sole owner under B (was co-mutated with trigger plugin in previous design) |
49
+ | `triggerNode.data.inputs.outputs[]` | **Yes** — sole owner under B (was co-mutated with trigger plugin in previous design) |
50
50
  | `task.data.outputs[]` | No — task plugins self-declare; this plugin's writes never touch them |
51
51
  | `task.data.inputs[].value` | No — io-binding owns this |
52
52
  | top-level `bindings[]` | No — connector / trigger plugins own resource bindings |
@@ -58,7 +58,7 @@ Under the B refactor, this plugin is **the sole owner** of:
58
58
  | In argument inputs | `variables.inputs[]` *(top level)* |
59
59
  | Out argument outputs | `variables.outputs[]` *(top level)* |
60
60
  | All internal variables | `variables.inputOutputs[]` *(top level)* |
61
- | Trigger output mappings | `nodes[<triggerIndex>].data.uipath.outputs[]` |
61
+ | Trigger output mappings | `nodes[<triggerIndex>].data.inputs.outputs[]` |
62
62
 
63
63
  ## Uniqueness Rule
64
64
 
@@ -83,7 +83,7 @@ Build the uniqueness pool from EVERY `var` / `id` currently in `caseplan.json`.
83
83
  |---|---|---|
84
84
  | Root variables | top-level `variables.{inputs,outputs,inputOutputs}[]` | The canonical case-variable namespace |
85
85
  | Task outputs | `nodes[<stage>].data.tasks[<lane>][].data.outputs[]` (for every task) | Self-declared task outputs |
86
- | Trigger outputs | `nodes[<trigger>].data.uipath.outputs[]` (for every trigger node) | Plain-name auto-emit + Pattern C wires |
86
+ | Trigger outputs | `nodes[<trigger>].data.inputs.outputs[]` (for every trigger node) | Plain-name auto-emit + Pattern C wires |
87
87
  | **Stage entry / exit rule outputs** | `nodes[<stage>].data.entryConditions[].rules[][].uipath.outputs[]` AND `nodes[<stage>].data.exitConditions[].rules[][].uipath.outputs[]` | Connector-bound condition rules — outputs minted under `elementId = <stageId>-<ruleId>` |
88
88
  | **Case-exit rule outputs** | `metadata.caseExitRules[].rules[][].uipath.outputs[]` | Connector-bound case-exit rules — outputs minted under `elementId = root-<ruleId>` |
89
89
  | **Task-entry rule outputs** | `nodes[<stage>].data.tasks[<lane>][].entryConditions[].rules[][].uipath.outputs[]` (for every task) | Connector-bound task-entry rules — outputs minted under `elementId = <stageId>-<ruleId>` |
@@ -98,6 +98,8 @@ In/Out-arg formal slots (`variables.inputs[].id`, `variables.outputs[].id`) MUST
98
98
 
99
99
  Rationale: the formal In-arg slot id surfaces in the case BPMN as `<uipath:input id="...">` and is dot-referenced via `=vars.<id>` (the bridge, § In argument). A prefix-less random id can lead with a digit → BPMN parser rejects it (`illegal ID <5AinMKBDm>`); C# identifier + XML NCName rules require a leading letter/underscore. Companion ids (`inputOutputs[].id`) keep the human-readable name (`applicantName`) and are already letter-leading — only the random formal-slot id needs the `v` prefix.
100
100
 
101
+ **Anti-pattern:** do not copy the companion's readable name into the formal slot id (e.g. `variables.inputs[].id: "applicantName"`). That satisfies the companion's naming convention but violates the formal slot's mint-as-`v`+8-chars requirement — the two ids are deliberately different values, not the same value written twice.
102
+
101
103
  ## Inputs the plugin reads at Phase 3 Step 6.2
102
104
 
103
105
  1. **`tasks.md`** variable T-entries — for category, type, default, sourceTrigger(s), sourceField(s). On `Category=In` rows, `sourceTriggers` is a single T-number selecting the bound trigger (blank → primary trigger)
@@ -190,7 +192,7 @@ No trigger.outputs[] write, no root.inputs[] / outputs[] writes.
190
192
  SDD row: `Category=Variable`, `sourceTriggers: T02`, `sourceFields: response.subject`.
191
193
 
192
194
  ```json
193
- // triggerNode.data.uipath.outputs[] (the trigger plugin's caseplan node — written by THIS plugin under B)
195
+ // triggerNode.data.inputs.outputs[] (the trigger plugin's caseplan node — written by THIS plugin under B)
194
196
  { "name": "subject", "var": "calendarTitle",
195
197
  "source": "=response.subject", "type": "string", "value": "calendarTitle" }
196
198
  // No `id`, no `elementId` — FE auto-emit convention. `name` is the last segment of sourceField path.
@@ -228,9 +230,9 @@ Resolver doesn't care that two trigger entries write to the same `vars.caseStart
228
230
 
229
231
  SDD row: `Category=In`, optional `sourceTriggers: T<N>` (a single T-number selecting the bound trigger; blank → primary trigger T02). `sourceFields` is empty for In rows. **Works on any trigger type — manual, timer, or event.** For event triggers, the bridge mechanics are identical; the formal slot's `default` propagates to the companion at trigger fire (no caller-override path since events have no API caller, but the structural emission is the same).
230
232
 
231
- **Trigger resolution.** `<triggerId>` in the entries below = `id-map.json[T<N>].id` for the trigger named by `sourceTriggers`; blank `sourceTriggers` → `id-map["T02"].id` (the primary trigger). Entries 1 (formal slot) and 2 (companion) carry it as `elementId`; entry 3 (bridge) is written on that same trigger node's `data.uipath.outputs[]`. `sourceFields` is not consulted for In.
233
+ **Trigger resolution.** `<triggerId>` in the entries below = `id-map.json[T<N>].id` for the trigger named by `sourceTriggers`; blank `sourceTriggers` → `id-map["T02"].id` (the primary trigger). Entries 1 (formal slot) and 2 (companion) carry it as `elementId`; entry 3 (bridge) is written on that same trigger node's `data.inputs.outputs[]`. `sourceFields` is not consulted for In.
232
234
 
233
- > **Bare manual bound trigger:** a manual trigger has no `data.uipath` key (its signature — see [`../../triggers/manual/impl-json.md`](../../triggers/manual/impl-json.md)). When the bound trigger is manual (the common case — the primary trigger is usually manual), create `data.uipath = { "outputs": [] }` on that node before appending the bridge. Do NOT add a `serviceType` — its absence is what keeps the trigger manual.
235
+ > **Bare manual bound trigger:** a manual trigger has no `data.inputs` key (its signature — see [`../../triggers/manual/impl-json.md`](../../triggers/manual/impl-json.md)). When the bound trigger is manual (the common case — the primary trigger is usually manual), create `data.inputs = { "outputs": [] }` on that node before appending the bridge. Do NOT add a `serviceType` — its absence is what keeps the trigger manual.
234
236
 
235
237
  Three entries — formal slot + companion + bridge:
236
238
 
@@ -243,14 +245,14 @@ Three entries — formal slot + companion + bridge:
243
245
  { "id": "applicantName", "name": "applicantName", "type": "string",
244
246
  "elementId": "<triggerId>" }
245
247
 
246
- // 3. triggerNode.data.uipath.outputs[] — bridge from formal slot to companion
248
+ // 3. triggerNode.data.inputs.outputs[] — bridge from formal slot to companion
247
249
  { "name": "applicantName", "type": "string", "source": "=vars.v<random8>", "var": "applicantName" }
248
250
  // No `id`, no `elementId` on bridge — FE convention. `type` matches the SDD row's Type column.
249
251
  ```
250
252
 
251
253
  **Why three entries instead of one?** The runtime resolver (`VariablesService.findVariableByVariableId`) is a single string-equality find on `Variable.id`. The caller (or trigger fire for event triggers) writes the formal-arg's value into `vars.v<random8>` at trigger fire (because `inputs[].id` is `v<random8>`); downstream code wants to read it as `=vars.applicantName` (because that's the readable name). There is no automatic forwarding between the two slots — the bridge entry on `triggerNode.outputs[]` executes the copy at fire time: `source: "=vars.v<random8>"` reads the formal slot, `var: "applicantName"` writes to the companion's slot. Without the bridge, `=vars.applicantName` resolves to undefined. The companion's `inputOutputs[]` entry alone declares the *name* in the namespace, but holds no *value* because nobody writes to it.
252
254
 
253
- > **Placeholder trigger interaction:** if the **bound trigger** (the one named by `sourceTriggers`, or the primary trigger when blank) is a placeholder (any type), write entries 1 + 2 only; skip the bridge (entry 3) — the placeholder has no `data.uipath.outputs` array. The placeholder trigger never fires, so the bridge would never execute anyway. **Consequence:** at runtime `vars.<name>` (the companion slot) is undefined — the `default` on the `inputs[]` formal slot does NOT propagate to the companion without the bridge. This is expected: a placeholder case is structurally incomplete and not meant to run until the trigger is resolved. Re-generate from scratch (Rule 6) after the trigger resolves to get the working bridge.
255
+ > **Placeholder trigger interaction:** if the **bound trigger** (the one named by `sourceTriggers`, or the primary trigger when blank) is a placeholder (any type), write entries 1 + 2 only; skip the bridge (entry 3) — the placeholder has no `data.inputs.outputs` array. The placeholder trigger never fires, so the bridge would never execute anyway. **Consequence:** at runtime `vars.<name>` (the companion slot) is undefined — the `default` on the `inputs[]` formal slot does NOT propagate to the companion without the bridge. This is expected: a placeholder case is structurally incomplete and not meant to run until the trigger is resolved. Re-generate from scratch (Rule 6) after the trigger resolves to get the working bridge.
254
256
 
255
257
  **File-type In-arg carve-out:** when `type === "file"`:
256
258
  - Formal slot (entry 1) MUST add `body: <FILE_TYPE_JSON_SCHEMA>` (see [`## file type`](#file-type)) — drives entry-points.json `$ref: "#/definitions/job-attachment"` at packaging
@@ -46,7 +46,7 @@ For each top-level Step 0 entry, check whether tasks.md references it either as
46
46
 
47
47
  - **`<sdd-field-path> -> <sdd-name>`** (extract) → reassign-shape. Let `baseId = camelCase(leaf segment)` and allocate `id` per the global [uniqueness rule](../global-vars/impl-json.md#uniqueness-rule), including its controlled equal-name alias. Emit `{name: <resolved name>, type: <resolved descriptor's type>, id: <allocated id>, var: "<sdd-name>", originalVar: <allocated id>, value: "<sdd-name>", source: "=<sdd-field-path>", target: "=<allocated id>", elementId: "<stage-task>"}`. `<resolved name>` is the top-level schema display name for a top-level path; for a nested path it is the leaf display name when present, otherwise the exact final path segment. **`source` is the SDD's left-side string with `=` prefix, verbatim.** **`type` is required on every emitted output — FE rejects entries without it.** **`originalVar` is load-bearing and mirrors the allocated `id`** — it records the output slot before reassignment and tells FE's `mutateRootVariables` (`VariableMutationUtils.ts:135`) to skip root-mirroring, preserving the case-Variable companion across FE edits. Example: if another task already owns `id: "aPIOutput1"`, `APIOutput1 -> renamedResult` emits `id: "aPIOutput12"`, `target: "=aPIOutput12"`, `var: "renamedResult"`, and `originalVar: "aPIOutput12"`.
48
48
  - **Bare `<name>`** (no operator) → auto-mint shape: `{name, type: <Step 0 entry's type>, id: <camelCase(name)>, var: <id>, value: <id>, source: <Step 0 entry's source verbatim>, target: "=<id>", elementId}`. No `originalVar`. Used for top-level Step 0 entries the SDD doesn't alias.
49
- - **`<sdd-name> = <expression>`** (set / compute / copy) → Scenario E shape: `{name: "<sdd-name>", custom: true, var: "<sdd-name>", value: "<expression>", source: "<same as value>", target: "", body: "", type: <case var's type>, elementId: "root"}`. **No `id`**, no `originalVar`. NO root mirror — FE's `isUpdateExistingOutput` filter at `VariableMutationUtils.ts:49-64` skips it. For a quoted string literal, treat the quotes as SDD delimiters: `status = "InReview"` emits JSON `"value": "InReview", "source": "InReview"` — never embed the delimiters as payload (`"value": "\"InReview\""`).
49
+ - **`<sdd-name> = <expression>`** (set / compute / copy) → Scenario E shape: `{name: "<sdd-name>", custom: true, var: "<sdd-name>", value: "<expression>", source: "<same as value>", target: "", body: "", type: <case var's type>, elementId: "root"}`. **No `id`**, no `originalVar`. NO root mirror — FE's `isUpdateExistingOutput` filter at `VariableMutationUtils.ts:49-64` skips it. Canonicalize `=metadata.X` to `=js:metadata.X` in both `value` and `source`; retain the SDD-natural form in `tasks.md`. For a quoted string literal, treat the quotes as SDD delimiters: `status = "InReview"` emits JSON `"value": "InReview", "source": "InReview"` — never embed the delimiters as payload (`"value": "\"InReview\""`).
50
50
  - **Schema fields with no SDD reference** → fall back to auto-mint shape (`var` = camelCased schema name). Connector plugins additionally apply the [uniqueness rule](../global-vars/impl-json.md#uniqueness-rule) dedup-suffix on collision (e.g., `response` → `response2`).
51
51
 
52
52
  **Equal-name extract dispatch.** Dispatch by the explicit operator before comparing names; equal operands select the reassign shape, never the bare auto-mint branch. Apply the global [controlled-alias rule](../global-vars/impl-json.md#uniqueness-rule). With no unrelated collision, `greeting -> greeting` emits `id`, `var`, `originalVar`, and `value` as `"greeting"`, with `source: "=greeting"` and `target: "=greeting"`. `originalVar` distinguishes reassignment from a bare output and keeps the predeclared root companion intact during frontend synchronization; the linked allocator owns any required suffixing.
@@ -179,6 +179,10 @@ Also scan `=vars.X` references in:
179
179
 
180
180
  Same resolution rule applies — these are read-side consumers of the variable namespace.
181
181
 
182
+ ### Check 1.5 — Custom-output metadata expressions are canonical
183
+
184
+ For every `custom: true` output, reject `value` or `source` beginning with `=metadata.`; emit `=js:metadata.<field>` in both properties instead.
185
+
182
186
  ### Check 2 — Out-arg producer presence
183
187
 
184
188
  For every entry in top-level `variables.outputs[]` (formal Out-arg entries), the entry's `var` field is a POINTER to the variable slot that should hold the value at case end. Per the always-emit-companion rule, the companion in `variables.inputOutputs[]` is always present; its `default` field is empty when SDD didn't declare a Default.
@@ -213,7 +217,7 @@ for entry in root.outputs[]:
213
217
  has_bare_name_producer = exists in tasks.md any task's T-entry with an `outputs:` line `- <name>` (bare, no operator) where camelCase(name) == var
214
218
  has_any_producer = has_extraction_producer || has_assignment_producer || has_bare_name_producer
215
219
 
216
- producer_task_unresolved = the tasks.md-declared producer task is a Rule 17 placeholder (look up the task in caseplan.json by displayName; check `node.data.uipath` is empty `{}`)
220
+ producer_task_unresolved = the tasks.md-declared producer task is a Rule 17 placeholder (look up the task in caseplan.json by displayName; check `node.data.inputs` is empty `{}`)
217
221
 
218
222
  if has_companion_default:
219
223
  # Companion default guarantees a value; producer is optional bonus