@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CODEOWNERS +14 -8
- package/README.md +18 -3
- package/assets/skill-status.json +9 -1
- package/assets/uip-catalog-snapshot.json +227 -21
- package/package.json +11 -2
- package/scripts/npm-package-lifecycle.mjs +46 -0
- package/skills/uipath-admin/SKILL.md +5 -1
- package/skills/uipath-admin/references/audit-commands.md +1 -1
- package/skills/uipath-admin/references/audit-workflow-guide.md +9 -0
- package/skills/uipath-agents/SKILL.md +2 -2
- package/skills/uipath-agents/references/lowcode/capabilities/context/index.md +7 -0
- package/skills/uipath-agents/references/lowcode/capabilities/integration-service/integration-service.md +5 -6
- package/skills/uipath-agents/references/lowcode/critical-rules/critical-rules.md +1 -1
- package/skills/uipath-agents/references/lowcode/evaluations/evaluation-sets.md +5 -0
- package/skills/uipath-agents/references/lowcode/project-lifecycle.md +3 -3
- package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +3 -2
- package/skills/uipath-api-workflow/SKILL.md +2 -1
- package/skills/uipath-api-workflow/references/cli-reference.md +3 -3
- package/skills/uipath-coded-apps/SKILL.md +3 -2
- package/skills/uipath-coded-apps/assets/fixtures/governance-dashboard-starter-kit.tar.gz +0 -0
- package/skills/uipath-coded-apps/assets/templates/web-app-template.md +1 -1
- package/skills/uipath-coded-apps/references/create-web-app.md +60 -48
- package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +2 -2
- package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +2 -2
- package/skills/uipath-coded-apps/references/dashboards/primitives/tier-resolution.md +16 -16
- package/skills/uipath-coded-apps/references/oauth-scopes.md +28 -272
- package/skills/uipath-coded-apps/references/sdk/action-center.md +26 -243
- package/skills/uipath-coded-apps/references/sdk/agents.md +20 -130
- package/skills/uipath-coded-apps/references/sdk/conversational-agent.md +52 -706
- package/skills/uipath-coded-apps/references/sdk/data-fabric.md +20 -237
- package/skills/uipath-coded-apps/references/sdk/feedback.md +4 -139
- package/skills/uipath-coded-apps/references/sdk/governance-traces.md +7 -55
- package/skills/uipath-coded-apps/references/sdk/governance.md +4 -44
- package/skills/uipath-coded-apps/references/sdk/imports.md +77 -35
- package/skills/uipath-coded-apps/references/sdk/maestro.md +29 -406
- package/skills/uipath-coded-apps/references/sdk/orchestrator.md +30 -324
- package/skills/uipath-coded-apps/references/sdk/pagination.md +9 -67
- package/skills/uipath-coded-apps/references/sdk/traces.md +8 -43
- package/skills/uipath-functions/SKILL.md +23 -23
- package/skills/uipath-governance/SKILL.md +5 -4
- package/skills/uipath-governance/references/cli-cheatsheet.md +2 -1
- package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +143 -58
- package/skills/uipath-governance/references/compliance-pack/restore/impl.md +61 -0
- package/skills/uipath-human-in-the-loop/SKILL.md +4 -2
- package/skills/uipath-insights/SKILL.md +17 -18
- package/skills/uipath-ixp/SKILL.md +12 -7
- package/skills/uipath-ixp/references/cli-reference.md +71 -9
- package/skills/uipath-ixp/references/improve-prompts-guide.md +23 -9
- package/skills/uipath-ixp/references/label-documents-guide.md +33 -5
- package/skills/uipath-maestro-bpmn/SKILL.md +15 -14
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +15 -6
- package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +18 -17
- package/skills/uipath-maestro-case/SKILL.md +46 -33
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +77 -37
- package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +0 -2
- package/skills/uipath-maestro-case/references/bindings-and-expressions.md +3 -1
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +2 -2
- package/skills/uipath-maestro-case/references/brownfield.md +15 -5
- package/skills/uipath-maestro-case/references/case-commands.md +19 -3
- package/skills/uipath-maestro-case/references/case-editing-operations.md +24 -21
- package/skills/uipath-maestro-case/references/case-schema.md +38 -16
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +15 -8
- package/skills/uipath-maestro-case/references/evals/evals.json +35 -18
- package/skills/uipath-maestro-case/references/implementation.md +86 -71
- package/skills/uipath-maestro-case/references/phase-0-interview.md +92 -23
- package/skills/uipath-maestro-case/references/phased-execution.md +70 -55
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +5 -5
- package/skills/uipath-maestro-case/references/planning.md +57 -9
- package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +7 -5
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +5 -5
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +41 -5
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +27 -3
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +6 -6
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +20 -7
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +37 -4
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +24 -13
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +9 -3
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +4 -0
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +4 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +4 -0
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +17 -14
- package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +13 -10
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +18 -16
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +2 -2
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +11 -9
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +6 -2
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +19 -1
- package/skills/uipath-maestro-case/references/registry-discovery.md +3 -3
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +155 -51
- package/skills/uipath-maestro-case/references/sla-response-shapes.md +74 -0
- package/skills/uipath-maestro-flow/SKILL.md +4 -3
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +3 -0
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +10 -17
- package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +8 -6
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +4 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/agentic-process/impl.md +3 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/api-workflow/impl.md +5 -8
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +11 -4
- package/skills/uipath-maestro-flow/references/author/references/plugins/flow/impl.md +3 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +14 -17
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +60 -13
- package/skills/uipath-maestro-flow/references/author/references/plugins/queue/impl.md +2 -14
- package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +4 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +3 -0
- package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +5 -9
- package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +13 -0
- package/skills/uipath-maestro-flow/references/shared/action-nodes.md +2 -2
- package/skills/uipath-maestro-flow/references/shared/file-format.md +16 -12
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +3 -3
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-planner/references/non-pdd-lane-guide.md +1 -1
- package/skills/uipath-platform/SKILL.md +1 -1
- package/skills/uipath-platform/references/data-fabric/bulk-import.md +10 -27
- package/skills/uipath-platform/references/data-fabric/choice-sets.md +7 -64
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +76 -267
- package/skills/uipath-platform/references/data-fabric/entity-schema.md +23 -99
- package/skills/uipath-platform/references/data-fabric/file-attachments.md +5 -28
- package/skills/uipath-platform/references/data-fabric/filter-platform-contract.md +2 -2
- package/skills/uipath-platform/references/data-fabric/records-query.md +11 -32
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +6 -2
- package/skills/uipath-platform/references/licensing/consumables-report.md +18 -0
- package/skills/uipath-platform/references/licensing/licensing.md +1 -1
- package/skills/uipath-platform/references/orchestrator/run-jobs.md +9 -2
- package/skills/uipath-platform/references/orchestrator/setup-environment.md +9 -0
- package/skills/uipath-platform/references/traces/feedback.md +4 -1
- package/skills/uipath-process-mining/SKILL.md +97 -0
- package/skills/uipath-process-mining/references/app-types.md +66 -0
- package/skills/uipath-process-mining/references/data-model.md +130 -0
- package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +67 -0
- package/skills/uipath-process-mining/references/model-editing.md +112 -0
- package/skills/uipath-process-mining/references/pre-flight.md +119 -0
- package/skills/uipath-process-mining/references/querying.md +66 -0
- package/skills/uipath-process-mining/references/transformations.md +80 -0
- package/skills/uipath-process-mining/references/uip-pm-cli.md +145 -0
- package/skills/uipath-review/SKILL.md +23 -18
- package/skills/uipath-review/references/agents/agent-grading-rubric.md +1 -1
- package/skills/uipath-review/references/agents/agent-review-checklist.md +0 -4
- package/skills/uipath-review/references/agents/agents-coded-rules.md +1 -10
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +3 -6
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +62 -14
- package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +60 -4
- package/skills/uipath-review/references/review-workflow-guide.md +3 -2
- package/skills/uipath-review/references/rule-catalog-workflow.md +4 -5
- package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +20 -0
- package/skills/uipath-rpa/SKILL.md +57 -55
- package/skills/uipath-rpa/agents/uipath-project-discovery-agent.md +75 -19
- package/skills/uipath-rpa/assets/codedworkflow-template.md +245 -11
- package/skills/uipath-rpa/references/cli-reference.md +229 -6
- package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +158 -2
- package/skills/uipath-rpa/references/coded/integration-service-guide.md +6 -5
- package/skills/uipath-rpa/references/coded/operations-guide.md +273 -5
- package/skills/uipath-rpa/references/coded-vs-xaml-guide.md +3 -3
- package/skills/uipath-rpa/references/common-pattern-card.md +303 -0
- package/skills/uipath-rpa/references/data-manipulation-guide.md +18 -3
- package/skills/uipath-rpa/references/debugging.md +0 -2
- package/skills/uipath-rpa/references/environment-setup.md +309 -1
- package/skills/uipath-rpa/references/error-handling-guide.md +1 -1
- package/skills/uipath-rpa/references/execution-maps-guide.md +110 -0
- package/skills/uipath-rpa/references/is-connector-xaml-guide.md +58 -4
- package/skills/uipath-rpa/references/legacy/activity-docs/Excel.md +1 -1
- package/skills/uipath-rpa/references/legacy/activity-docs/_DU-PROCESS.md +0 -2
- package/skills/uipath-rpa/references/legacy/activity-docs/_INDEX.md +2 -2
- package/skills/uipath-rpa/references/legacy/activity-docs/_PATTERNS.md +1 -1
- package/skills/uipath-rpa/references/legacy/activity-docs/_REFRAMEWORK.md +2 -7
- package/skills/uipath-rpa/references/legacy/cli-reference.md +599 -0
- package/skills/uipath-rpa/references/legacy/error-handling-guide.md +2 -2
- package/skills/uipath-rpa/references/legacy/legacy-mode-guide.md +16 -16
- package/skills/uipath-rpa/references/legacy/project-organization-guide.md +2 -2
- package/skills/uipath-rpa/references/legacy/selector-guide.md +163 -1
- package/skills/uipath-rpa/references/legacy/testing-guide.md +246 -3
- package/skills/uipath-rpa/references/legacy/xaml-basics-and-rules.md +267 -2
- package/skills/uipath-rpa/references/library-authoring-guide.md +4 -3
- package/skills/uipath-rpa/references/testing-guide.md +2 -28
- package/skills/uipath-rpa/references/trigger-pattern-guide.md +1 -1
- package/skills/uipath-rpa/references/xaml/canvas-layout-guide.md +140 -33
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +57 -240
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +42 -2
- package/skills/uipath-rpa/references/xaml/long-running-workflow-guide.md +1 -1
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +194 -228
- package/skills/uipath-solution/references/activate-and-manage.md +22 -0
- package/skills/uipath-solution/references/develop-solution.md +26 -2
- package/skills/uipath-solution/references/pack-and-deploy.md +43 -9
- package/skills/uipath-test/SKILL.md +4 -4
- package/skills/uipath-test/references/playwright-first-mile-guide.md +5 -4
- package/skills/uipath-test/references/publish-and-link-guide.md +2 -2
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/click-silent-no-op.md +5 -5
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/queue-operation-failed.md +20 -4
- package/skills/uipath-troubleshoot/references/activity-packages/classic-activities/summary.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/csv-activities/playbooks/read-csv-file-not-found.md +12 -0
- package/skills/uipath-troubleshoot/references/activity-packages/mail-activities/playbooks/send-outlook-mail-failures.md +12 -1
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/terminal-activities/playbooks/terminal-session-connection-failed.md +5 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-silent-no-op.md +5 -5
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/dependency-version-conflict.md +27 -6
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/napplicationcard-view-generation-failed.md +10 -0
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/scope-container-wrong-page.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/summary.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/overview.md +4 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-auth-401-403.md +44 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-connection-failure.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-content-type-rejected.md +37 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/http-request-proxy-blocked.md +39 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/package-version-mismatch.md +42 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/playbooks/securestring-misuse-analyzer.md +41 -0
- package/skills/uipath-troubleshoot/references/activity-packages/web-activities/summary.md +5 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-null-reference.md +14 -1
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-runtime-exception.md +2 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/is-activities-prerelease-not-found.md +39 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-content-too-large.md +41 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +9 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/console-conflict-login-to-console.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/credential-store-unavailable.md +42 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/executor-start-transient-rerun.md +49 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-consecutive-system-exceptions.md +47 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-faulted-session-timeout.md +19 -19
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-output-too-large.md +47 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-stopped-generic-exit-code.md +55 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/known-issue-robot-defect.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/platform-incident-correlation.md +45 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/screen-capture-handle-invalid.md +43 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-license-quota.md +43 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/serverless-time-limit-exceeded.md +34 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/workstation-in-use-machine-slots.md +40 -0
- package/skills/uipath-troubleshoot/references/products/orchestrator/summary.md +13 -1
- package/version-manifest.json +2 -2
- package/skills/uipath-maestro-bpmn/validator/README.md +0 -224
- package/skills/uipath-maestro-bpmn/validator/model.mjs +0 -419
- package/skills/uipath-maestro-bpmn/validator/package.json +0 -17
- package/skills/uipath-maestro-bpmn/validator/rules.mjs +0 -1403
- package/skills/uipath-maestro-bpmn/validator/samples/invalid-conditional-and-variable.bpmn +0 -25
- package/skills/uipath-maestro-bpmn/validator/samples/valid-baseline.bpmn +0 -52
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.0.bpmn +0 -157
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/A.2.1.bpmn +0 -333
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.1.0.bpmn +0 -598
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/B.2.0.bpmn +0 -1709
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.2.0.bpmn +0 -564
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.3.0.bpmn +0 -671
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.4.0.bpmn +0 -1045
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.5.0.bpmn +0 -1176
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.6.0.bpmn +0 -670
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/C.7.0.bpmn +0 -466
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Can_Parse_Complex_Process_With_Task_Gateway_BoundaryEvent_etc.bpmn +0 -74
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExclusiveGatewayDefaultFlow.bpmn +0 -32
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/ExternalAgentWorkflow.bpmn +0 -62
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Golden_Scenario.initial.bpmn +0 -361
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/InclusiveJoinRouteAwayBranch.bpmn +0 -62
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_AsyncExecution_And_Create_CorrectModel.bpmn +0 -74
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_ExtractionValidation_And_Create_CorrectModel.bpmn +0 -35
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_FileUpload_And_Create_CorrectModel.bpmn +0 -33
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_IXP_Extraction_JobAttachment_And_Create_CorrectModel.bpmn +0 -35
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/Parse_SubProcess_With_Multiple_Element_Types.bpmn +0 -76
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartEventWithOutputs.bpmn +0 -36
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/StartGatewayEnd.bpmn +0 -44
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all elements.bpmn +0 -516
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/all_sequence_flow_types.bpmn +0 -173
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/demo.bpmn +0 -181
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-collapsed.bpmn +0 -126
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-001-expanded.bpmn +0 -122
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/expected-findings/subprocess-example-003-collapsed_deeply-nested.bpmn +0 -438
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.1.0.bpmn +0 -87
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/A.3.0.bpmn +0 -165
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ApiWorkflow.bpmn +0 -39
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnNestedSubProcessTests.bpmn +0 -102
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnTimerBoundaryEvents.bpmn +0 -160
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithCatchAllErrorEventSubProcess.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/BpmnXmlWithSpecificErrorEventSubProcess.bpmn +0 -46
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/CaseManagementWithConstantIdentifier.bpmn +0 -218
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorBoundary.bpmn +0 -78
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ErrorPropagationInEventSubprocess.bpmn +0 -340
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/EventBasedGatewayFirstCatcherWins.bpmn +0 -56
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Example-EventBasedGateway.bpmn +0 -117
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewayConditional.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveGatewaySharedEndEvent.bpmn +0 -45
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ExclusiveWithParallelGateway.bpmn +0 -68
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/FourScriptTasks.bpmn +0 -84
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/HitlTaskOnly.bpmn +0 -55
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/InclusiveGatewayForkJoin.bpmn +0 -69
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_BPMN_Elements_And_Create_CorrectModel.bpmn +0 -20
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_HttpRequest_ServiceTask_And_Create_Correct_Model.bpmn +0 -34
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_MessageBoundaryEvent_And_Create_CorrectModel.bpmn +0 -87
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Script_Task_V2_And_Create_Correct_Model.bpmn +0 -31
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/Parse_Sets_Containers_Properly.bpmn +0 -129
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/ScriptWritesVariableThenGatewayBranches.bpmn +0 -59
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/boundaryevent.bpmn +0 -30
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/collapsed-subprocess.bpmn +0 -83
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/connectable-types.bpmn +0 -85
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/extensions-orchestrator-start-job.bpmn +0 -80
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/multiparticipantpool.bpmn +0 -77
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/nestedsubprocess.bpmn +0 -36
- package/skills/uipath-maestro-bpmn/validator/test/fixtures/known-good/simple.bpmn +0 -59
- package/skills/uipath-maestro-bpmn/validator/test/integration.test.mjs +0 -146
- package/skills/uipath-maestro-bpmn/validator/test/model-helpers.mjs +0 -42
- package/skills/uipath-maestro-bpmn/validator/test/ported-rule-tests.mjs +0 -983
- package/skills/uipath-maestro-bpmn/validator/test/run-tests.mjs +0 -530
- package/skills/uipath-maestro-bpmn/validator/uipath-moddle.v1.json +0 -715
- package/skills/uipath-maestro-bpmn/validator/validate-bpmn.mjs +0 -164
- package/skills/uipath-review/references/agents/agents-common-rules.md +0 -32
- package/skills/uipath-rpa/assets/before-after-hooks-template.md +0 -115
- package/skills/uipath-rpa/assets/helper-utility-template.md +0 -22
- package/skills/uipath-rpa/assets/testcase-template.md +0 -92
- package/skills/uipath-rpa/references/coded/coding-guidelines.md +0 -255
- package/skills/uipath-rpa/references/coded/inspect-package-guide.md +0 -80
- package/skills/uipath-rpa/references/coded/third-party-packages-guide.md +0 -67
- package/skills/uipath-rpa/references/connector-capabilities.md +0 -79
- package/skills/uipath-rpa/references/legacy/activity-docs/Testing.md +0 -95
- package/skills/uipath-rpa/references/legacy/activity-docs/UIAutomation.md +0 -159
- package/skills/uipath-rpa/references/legacy/common-pitfalls.md +0 -318
- package/skills/uipath-rpa/references/legacy/discovery-workflow.md +0 -147
- package/skills/uipath-rpa/references/legacy/environment-setup.md +0 -78
- package/skills/uipath-rpa/references/legacy/project-structure.md +0 -206
- package/skills/uipath-rpa/references/legacy/test-data-guide.md +0 -142
- package/skills/uipath-rpa/references/legacy/validation-and-fixing.md +0 -154
- package/skills/uipath-rpa/references/project-structure-guide.md +0 -168
- package/skills/uipath-rpa/references/project-structure.md +0 -135
- package/skills/uipath-rpa/references/publishing-guide.md +0 -80
- package/skills/uipath-rpa/references/validation-guide.md +0 -170
- package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +0 -43
- package/skills/uipath-rpa/references/xaml/flowchart-guide.md +0 -113
- 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
|
|
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
|
|
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":
|
|
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 `
|
|
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:** `
|
|
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,
|
|
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:
|
|
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":
|
|
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:
|
|
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":
|
|
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
|
|
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":
|
|
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.
|
|
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.
|
|
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
|
-
"
|
|
73
|
-
"
|
|
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
|
-
>
|
|
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
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
166
|
-
2. **Fully configured
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
64
|
+
"type": "uipath.case.trigger",
|
|
65
65
|
"data": {
|
|
66
66
|
"parentElement": { "id": "root", "type": "case-management:root" },
|
|
67
|
-
"
|
|
68
|
-
"
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
"
|
|
43
|
-
|
|
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
|
|
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
|
-
"
|
|
66
|
-
|
|
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.
|
|
109
|
-
- `node.data.
|
|
110
|
-
- `node.data.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|