@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
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Querying a process app (`uip pm query`)
|
|
2
|
+
|
|
3
|
+
Pull numbers out of a built app. Subcommands: `info` (metadata), `run`
|
|
4
|
+
(aggregate group-by + metrics), `details` (raw rows), `percentile`, `rca`
|
|
5
|
+
(root-cause), `insights` (process insights), `layout`. All take `--stage
|
|
6
|
+
dev|published` (default `dev`) — but query on **`dev`**: `--stage published` is
|
|
7
|
+
currently unreachable via the CLI (`UserError_InvalidOrNoIngestion`; no `uip pm`
|
|
8
|
+
path completes a published-stage ingestion — see
|
|
9
|
+
[`lifecycle-and-rbac.md`](lifecycle-and-rbac.md)).
|
|
10
|
+
|
|
11
|
+
## Start with `query info`
|
|
12
|
+
|
|
13
|
+
`query info <app>` returns the queryable model: entities (`Cases`, `Event_log`,
|
|
14
|
+
`Tags`, `Due_dates`, `__Process_Events`, process internals, **plus any table you
|
|
15
|
+
added to the data model**) and, per entity, the **fields** with their ids. Field
|
|
16
|
+
ids are hashed, e.g. `F__Cases__Service_Component__f0f7…`; a few standard fields
|
|
17
|
+
keep plain ids (`Case_ID`, `Event_count`). Query bodies reference **ids**, not
|
|
18
|
+
column names (`UserError_FieldNotFound` otherwise).
|
|
19
|
+
|
|
20
|
+
## Prefer the sugar over hand-writing the AST
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
uip pm query run <app> --group-by Open_year --metric Event_count:average --metric Case_ID:count --output table
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`--group-by <cols>` (comma-separated names or ids) and `--metric <col:fn[:alias]>`
|
|
27
|
+
(repeatable) resolve human column names to ids via `query info`, build the body,
|
|
28
|
+
and **transpose the engine's columnar response into rows** (great with `--output
|
|
29
|
+
table`). `fn` ∈ `average | count | sum | min | max`. The sugar and a raw
|
|
30
|
+
`--body`/`--body-json` are mutually exclusive.
|
|
31
|
+
|
|
32
|
+
## The raw aggregate body (`AggregateDataRequestDto`)
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{ "groupBy": ["<fieldId>", "..."],
|
|
36
|
+
"aggregates": [ { "id": "<yourName>", "argument": "<fieldId>", "aggregation": "<fn>" } ] }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- `aggregation` is the **`AggregationFunction` enum**: `average`, `count`, `sum`,
|
|
40
|
+
`min`, `max`. Invalid values (e.g. `maximum`) 400 with a raw .NET enum-convert
|
|
41
|
+
error.
|
|
42
|
+
- The response `Data` is **columnar**: one entry per group field and per
|
|
43
|
+
aggregate, keyed by the id, each `{ "values": [...per group...], "ungrouped":
|
|
44
|
+
<grand total>, "stackValues": null }`. Group and aggregate arrays are
|
|
45
|
+
**index-aligned**. (Note: the raw object is camelCase `values`/`ungrouped`; the
|
|
46
|
+
CLI's `--output json/table` formatter may present them PascalCase.)
|
|
47
|
+
- Ungrouped-only queries (`"groupBy": []`) return the total in `ungrouped`, or in
|
|
48
|
+
`values[0]` when the engine emits it as a single-row column.
|
|
49
|
+
|
|
50
|
+
## Restrictions & other subcommands
|
|
51
|
+
|
|
52
|
+
- **`groupBy` on an `Event_log` (event-table) field 400s** `UserError_EventTableUsedInQuery`.
|
|
53
|
+
`run` aggregates case-level entities only. For event/activity-level breakdowns:
|
|
54
|
+
use `insights` (`processId` + 1..10 numeric `metrics` from `query info`) or the
|
|
55
|
+
process model (`layout`), OR precompute the counts in a dbt model (e.g. group
|
|
56
|
+
the event log by activity), register it as a data-model table
|
|
57
|
+
([`data-model.md`](data-model.md)), and `query run` that table.
|
|
58
|
+
- `percentile --field <id> --values 0.5,0.9,0.95 [--filters <json>]` — points in 0..1.
|
|
59
|
+
- `rca` needs a non-empty `selectedSet`; `insights` needs a `processId` and 1..10 numeric `metrics`.
|
|
60
|
+
- `details` returns raw rows (`DetailsDataRequestDto`); `--limit` is clamped 1..1000 server-side.
|
|
61
|
+
|
|
62
|
+
## Getting custom analytics out
|
|
63
|
+
|
|
64
|
+
If your numbers live in a custom dbt model, you must first register it as a
|
|
65
|
+
data-model table so `query` can see it — see [`data-model.md`](data-model.md).
|
|
66
|
+
Once registered, everything above (sugar, aggregate AST, percentiles) works on it.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# The transformation (ELT) layer — dbt on Snowflake
|
|
2
|
+
|
|
3
|
+
The transformation layer is a dbt project that runs on **Snowflake**. Loaded
|
|
4
|
+
source tables (one per input table) feed the models that produce the process
|
|
5
|
+
model. `transformations list/get/create/update/apply/run/status/logs` is the ELT
|
|
6
|
+
editor surface:
|
|
7
|
+
|
|
8
|
+
| Operation | Command |
|
|
9
|
+
|-----------|---------|
|
|
10
|
+
| List the model tree | `transformations list <app>` |
|
|
11
|
+
| Read a file (or save locally) + its ETag | `transformations get <app> <path> [--destination <file>]` |
|
|
12
|
+
| Edit an existing file (ETag-guarded) | `transformations update <app> <path> --file <local> --etag '<etag>'` |
|
|
13
|
+
| Create a new model file | `transformations create <app> <path> --file <local>` |
|
|
14
|
+
| Re-run the **full** transform on loaded data | `transformations apply <app> --wait` |
|
|
15
|
+
| Rebuild **one** dev model + dependents | `transformations run <app> --model models/X.sql` |
|
|
16
|
+
| Status / logs of the last build | `transformations status <app>` · `transformations logs <app>` |
|
|
17
|
+
|
|
18
|
+
## Model set for `uipath.custom`
|
|
19
|
+
|
|
20
|
+
Four template models: **`Event_log`** (built from the source; the events table),
|
|
21
|
+
**`Cases`** (aggregates Event_log — one row per case), **`Tags`** and
|
|
22
|
+
**`Due_dates`** (ship as safe `where 1=0` stubs depending only on `ref('Cases')`).
|
|
23
|
+
`Tags` and `Due_dates` are pre-registered **Case-child** tables — fill their stubs
|
|
24
|
+
with real rows keyed on `Case_ID` to get per-case labels (`Tag`/`Tag_type`) or
|
|
25
|
+
per-case SLAs (`Expected_date`/`Actual_date`/`On_time`/`Cost`) with **no add-table
|
|
26
|
+
needed**. See [`data-model.md`](data-model.md) for when to use
|
|
27
|
+
them vs a custom table. `Event_log` builds first and independently. `models/schema/sources.yml` is
|
|
28
|
+
generated from the data mapping and lists every input table with **all** its
|
|
29
|
+
columns (mapped → TargetName, unmapped → raw source name), so multi-table custom
|
|
30
|
+
apps can `source('sources', '<Table>')` any loaded table.
|
|
31
|
+
|
|
32
|
+
## The #1 gotcha — `Cases.sql` references optional columns
|
|
33
|
+
|
|
34
|
+
The template `models/Cases.sql` hard-references `Event_log."Case"`,
|
|
35
|
+
`"Case_status"`, `"Case_type"`, `"Case_value"`. A minimal mapping
|
|
36
|
+
(Case_ID/Activity/timestamp only) doesn't produce them ⇒ dbt
|
|
37
|
+
`000904 invalid identifier`. Fix — pull, null the missing refs, push, apply:
|
|
38
|
+
|
|
39
|
+
```sql
|
|
40
|
+
select
|
|
41
|
+
Event_log."Case_ID",
|
|
42
|
+
cast(null as varchar) as "Case",
|
|
43
|
+
cast(null as varchar) as "Case_status",
|
|
44
|
+
cast(null as varchar) as "Case_type",
|
|
45
|
+
cast(null as float) as "Case_value",
|
|
46
|
+
count(*) as "Event_count"
|
|
47
|
+
from {{ source('sources', 'Event_log') }} as Event_log
|
|
48
|
+
group by Event_log."Case_ID"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A successful run then reports `SUCCESS_WITH_WARNINGS` with repeated
|
|
52
|
+
`UserWarning_MissingOptionalEventColumn` — **benign** for a minimal mapping.
|
|
53
|
+
|
|
54
|
+
## apply vs run; create vs update
|
|
55
|
+
|
|
56
|
+
- **`apply`** re-runs the **full** transform on already-loaded data — the fix-loop
|
|
57
|
+
verb after a transform-only failure. **Do not re-ingest** for a SQL-only change.
|
|
58
|
+
- **`run --model models/X.sql`** rebuilds one dev model and its dependents.
|
|
59
|
+
- **`create <path> --file`** adds a **new** model file (PUT without ETag — there is no
|
|
60
|
+
prior version to guard); **`update <path> --file`** edits an **existing** file and
|
|
61
|
+
**requires `--etag`**: the `Data.ETag` the `get` you edited from returned. `update` on
|
|
62
|
+
a missing path 404s — use `create`. A 409/412 means someone replaced the file after
|
|
63
|
+
your `get`: re-`get` for the new content **and** ETag, re-apply your edit on top, then
|
|
64
|
+
`update` with the new `--etag`. You can also inline intermediate logic as CTEs inside
|
|
65
|
+
one model instead of many files.
|
|
66
|
+
- Use **`apply --wait`** to block to a terminal state and auto-print the dbt error.
|
|
67
|
+
|
|
68
|
+
## Snowflake / dbt notes
|
|
69
|
+
|
|
70
|
+
- **Quoted identifiers are case-sensitive** and must match the mapped `TargetName`
|
|
71
|
+
exactly: `Event_log."Case_ID"`. Reference raw unmapped columns by their source
|
|
72
|
+
name, e.g. `"# Reassignments"`.
|
|
73
|
+
- Parse messy source columns in SQL rather than fighting the loader: European
|
|
74
|
+
dates via `try_to_timestamp(col, 'DD-MM-YYYY HH24:MI:SS')` (lenient on single
|
|
75
|
+
digits), decimal-comma numbers via `try_to_double(replace(col, ',', '.'))`.
|
|
76
|
+
- **`pm_utils` macros** seen in templates: `as_varchar('literal')` (string
|
|
77
|
+
literal) vs `to_varchar(col)` (cast), `to_timestamp('null')`, `to_boolean('true')`,
|
|
78
|
+
`id()` = `row_number() over (order by (select null))` (surrogate key),
|
|
79
|
+
`datediff('millisecond', a, b)`, `star(source, except=[...])`.
|
|
80
|
+
- Build type on `run`: `RunQueries = 0` (all) vs `RunModel = 1` (needs `modelPath`).
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# `uip pm` — CLI mechanics & conventions
|
|
2
|
+
|
|
3
|
+
The low-level "how to drive the tool" layer — the shared plumbing every `uip pm`
|
|
4
|
+
command uses. The *decisions* — which template, when to add a table, why an app locks
|
|
5
|
+
open — live in the domain references ([`app-types.md`](app-types.md),
|
|
6
|
+
[`data-model.md`](data-model.md), [`model-editing.md`](model-editing.md),
|
|
7
|
+
[`lifecycle-and-rbac.md`](lifecycle-and-rbac.md)). **Drive Process Mining through the
|
|
8
|
+
CLI — do not hand-roll the REST API.**
|
|
9
|
+
|
|
10
|
+
## Command groups
|
|
11
|
+
|
|
12
|
+
| Group | Verbs | For |
|
|
13
|
+
|-------|-------|-----|
|
|
14
|
+
| `app-types` | `list`, `get` | Discover/inspect templates ([`app-types.md`](app-types.md)). |
|
|
15
|
+
| `apps` | `list`, `create`, `delete`, `publish` | The app itself + its lifecycle ([`lifecycle-and-rbac.md`](lifecycle-and-rbac.md)). |
|
|
16
|
+
| `apps data-mapping` | `get`, `update` | The **input mapping** (source table/column → target field) ([`pre-flight.md`](pre-flight.md)). |
|
|
17
|
+
| `apps model` | `get`, `update`, `fields list\|set\|remove` | The **semantic** model — fields with their data kinds, calculated fields, metrics, dashboards ([`model-editing.md`](model-editing.md)). |
|
|
18
|
+
| `apps data-model` | `get`, `add-table` | The **structural** model — the table graph (PK/FK, roles) that `add-table` edits ([`data-model.md`](data-model.md)). |
|
|
19
|
+
| `files` | `upload` | Load a data file to an input table. |
|
|
20
|
+
| `ingestions` | `create`, `logs` | Parse + load the raw data (the LT of ELT). |
|
|
21
|
+
| `transformations` | `list`, `get`, `create`, `update`, `apply`, `run`, `status`, `logs` | The dbt dev loop ([`transformations.md`](transformations.md)). |
|
|
22
|
+
| `query` | `run`, `details`, `percentile`, `rca`, `insights`, `info`, `layout` | Pull numbers out ([`querying.md`](querying.md)). |
|
|
23
|
+
|
|
24
|
+
> **`apps model` vs `apps data-model` — don't confuse them.** `apps model` is the
|
|
25
|
+
> **semantic** model (`/model`); `apps data-model` is the **structural** table graph
|
|
26
|
+
> (`/dataModel`). Editing a field's data kind or a calculated field is `apps model
|
|
27
|
+
> fields …`; registering a new queryable table is `apps data-model add-table`.
|
|
28
|
+
|
|
29
|
+
## The output envelope
|
|
30
|
+
|
|
31
|
+
Every command prints a stable envelope and sets a branchable exit code:
|
|
32
|
+
|
|
33
|
+
- **`Result`** — `Success` / `Failure` / `ValidationError`; **`Code`** — a stable
|
|
34
|
+
machine tag (`PmAppsCreate`, `PmQueryRun`, …); **`Data`** — the payload;
|
|
35
|
+
**`Instructions`** — a next-step/fix hint, present on failures ("run `uip login`",
|
|
36
|
+
"see `uip pm apps list`") and on some successful mutating commands (`add-table`,
|
|
37
|
+
`data-mapping update`, `fields set`) pointing at the required re-ingest/publish.
|
|
38
|
+
- Exit `0` success, `1` failure, `3` validation (commander rejected a flag before any
|
|
39
|
+
API call — e.g. an unknown `--stage`).
|
|
40
|
+
- **`--output json|table|…`** picks the rendering; **`--output-filter <JMESPath>`**
|
|
41
|
+
projects/reshapes `Data` (e.g. `"[].{Key:AppTypeKey,Version:Version}"`). `list`
|
|
42
|
+
commands unwrap the API's `{ Data: [...] }` so the shape matches across commands.
|
|
43
|
+
- **`--output-filter` on a command whose `--limit` has a default requires an explicit
|
|
44
|
+
`--limit`** — otherwise it exits `3` rather than silently filtering only the first
|
|
45
|
+
page. In `pm` that is **`ingestions logs`** alone (default `100`): pair them, e.g.
|
|
46
|
+
`ingestions logs <app> --limit 200 --output-filter "[?contains(Message,'error')]"`.
|
|
47
|
+
`app-types list` / `apps list` / `query run` declare no `--limit` default, so
|
|
48
|
+
filtering them needs nothing extra.
|
|
49
|
+
|
|
50
|
+
## The ETag get-modify-put pattern
|
|
51
|
+
|
|
52
|
+
Every editable resource — `data-mapping`, `model`, `data-model`, `transformations` — is
|
|
53
|
+
written `If-Match`-guarded, so a concurrent edit (someone in the UI between your read and
|
|
54
|
+
your write) is rejected instead of silently overwritten. **Which side supplies the ETag
|
|
55
|
+
splits the commands into two groups — get this wrong and the command won't run.**
|
|
56
|
+
|
|
57
|
+
| | Commands | ETag |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| **You edited the file locally** | `apps data-mapping update`, `apps model update`, `transformations update` | **`--etag` REQUIRED** — the one the matching `get` returned |
|
|
60
|
+
| **The command reads and merges in one go** | `apps data-model add-table`, `apps model fields set\|remove` | **No `--etag`** — it guards with the ETag of the read it just did |
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
uip pm apps model get <app> --destination model.json # prints Data.ETag
|
|
64
|
+
# ...edit model.json...
|
|
65
|
+
uip pm apps model update <app> --file model.json --etag 'W/"3"'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- **Get the ETag from the `get`.** Every `get` of an editable resource returns
|
|
69
|
+
`Data.ETag` (also with `--destination`, which writes only the document to disk).
|
|
70
|
+
Project it with `--output-filter ETag`.
|
|
71
|
+
- **The CLI never re-reads the ETag just before writing** — that would make the
|
|
72
|
+
precondition pass no matter who wrote in between, defeating the guard. Do not work
|
|
73
|
+
around a rejected write by re-`get`ting only for a fresh ETag.
|
|
74
|
+
- **On a conflict, recovery differs by group.** `update` (409
|
|
75
|
+
`UserError_ETagFileConflict` / 412): re-run the `get` for the latest version **and its
|
|
76
|
+
new ETag**, re-apply your change on top of *that* version, then update again with the
|
|
77
|
+
new `--etag` — a blind re-run just fails again. `add-table` / `fields set|remove`:
|
|
78
|
+
**just re-run** — they re-read and re-apply on top of the other write. `Instructions`
|
|
79
|
+
states which applies.
|
|
80
|
+
- `fields set`/`remove` and `model update` return the new edit `Versions`;
|
|
81
|
+
`data-mapping`/`data-model` edits return `IngestionNeeded: true` (see below).
|
|
82
|
+
- A resource returned **without** an ETag fails the command rather than writing
|
|
83
|
+
unguarded.
|
|
84
|
+
|
|
85
|
+
## Async work — always `--wait`
|
|
86
|
+
|
|
87
|
+
`ingestions create` and `transformations apply` are async. Pass **`--wait`** (with
|
|
88
|
+
`--timeout`) to block to a terminal state, auto-print the loader/dbt error on failure,
|
|
89
|
+
and exit non-zero. Never hand-roll an `apps list` poll loop.
|
|
90
|
+
|
|
91
|
+
## Stages — `--stage dev|published`
|
|
92
|
+
|
|
93
|
+
Every data / transform / query command takes `--stage`, default **`dev`**. Writes
|
|
94
|
+
(`data-mapping update`, `transformations`, model/data-model edits) are **dev-only**;
|
|
95
|
+
`published` is read-only. Develop on `dev` (a subset), `publish`, then read
|
|
96
|
+
`--stage published` ([`lifecycle-and-rbac.md`](lifecycle-and-rbac.md)).
|
|
97
|
+
|
|
98
|
+
## `IngestionNeeded` — the deferred-effect signal
|
|
99
|
+
|
|
100
|
+
Mapping and data-model edits change how raw data is *parsed / structured*, so they take
|
|
101
|
+
effect only on the **next `ingestions create`**, not on `transformations apply` (which
|
|
102
|
+
only re-runs SQL over already-parsed data). Those commands return `IngestionNeeded:
|
|
103
|
+
true` as the reminder. A SQL-only change is the opposite — `apply`, don't re-ingest
|
|
104
|
+
([`transformations.md`](transformations.md)).
|
|
105
|
+
|
|
106
|
+
## Field ids come from `query info`
|
|
107
|
+
|
|
108
|
+
`query run`/`percentile` bodies reference **hashed field ids**
|
|
109
|
+
(`F__<Table>__<Col>__<hash>`), not column names. Discover them with `query info`, or —
|
|
110
|
+
better — let the sugar resolve human names: `query run <app> --group-by <col> --metric
|
|
111
|
+
<col>:<fn>` (`fn ∈ average|count|sum|min|max`). Full AST + restrictions in
|
|
112
|
+
[`querying.md`](querying.md).
|
|
113
|
+
|
|
114
|
+
## Quick Start — CSV → queryable process app
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# 0. Pre-flight (cheap local checks — see pre-flight.md): encoding (UTF-8?),
|
|
118
|
+
# delimiter, date format (dd-mm vs mm-dd), strip junk all-empty rows.
|
|
119
|
+
|
|
120
|
+
# 1. Discover the template + its target fields
|
|
121
|
+
uip pm app-types list --output-filter "[].{Key:AppTypeKey,Version:Version,Name:DefaultName}"
|
|
122
|
+
|
|
123
|
+
# 2. Create the app from a data mapping (isNotNull/isUnique default per field)
|
|
124
|
+
uip pm apps create "My Process" --type uipath.custom --data-mapping ./mapping.json
|
|
125
|
+
|
|
126
|
+
# 3. Upload + ingest (block until done; prints the loader error on failure)
|
|
127
|
+
uip pm files upload <appId> ./data.csv --input-table Event_log
|
|
128
|
+
uip pm ingestions create <appId> --file-format csv --field-delimiter ";" --encoding utf-8 --wait
|
|
129
|
+
|
|
130
|
+
# 4. If the transform failed on Cases.sql: pull → patch → apply (transformations.md)
|
|
131
|
+
uip pm transformations get <appId> models/Cases.sql --destination Cases.sql # note Data.ETag
|
|
132
|
+
# ...edit...
|
|
133
|
+
uip pm transformations update <appId> models/Cases.sql --file Cases.sql --etag 'W/"639…"'
|
|
134
|
+
uip pm transformations apply <appId> --wait
|
|
135
|
+
|
|
136
|
+
# 4b. If the MAPPING was wrong instead — fix it in place, don't recreate (pre-flight.md)
|
|
137
|
+
uip pm apps data-mapping get <appId> --destination mapping.json # note Data.ETag
|
|
138
|
+
# ...edit...
|
|
139
|
+
uip pm apps data-mapping update <appId> --file mapping.json --etag 'W/"639…"'
|
|
140
|
+
uip pm ingestions create <appId> --wait # a mapping change needs a re-ingest
|
|
141
|
+
|
|
142
|
+
# 5. Query it
|
|
143
|
+
uip pm query info <appId> # discover fields/metrics
|
|
144
|
+
uip pm query run <appId> --group-by Service_Component --metric Event_count:average --output table
|
|
145
|
+
```
|
|
@@ -20,19 +20,20 @@ Review UiPath solutions and individual artifacts for structural validity, qualit
|
|
|
20
20
|
|
|
21
21
|
## Critical Rules
|
|
22
22
|
|
|
23
|
-
1. **NEVER modify any files.** This skill is read-only. If fixes are needed, identify them in the report and tell the user which skill to use (uipath-rpa, uipath-agents, uipath-maestro-flow, uipath-maestro-bpmn, uipath-api-workflow, uipath-coded-apps, uipath-platform, uipath-solution).
|
|
24
|
-
2. **ALWAYS run validation and Workflow Analyzer before manual review.** For RPA projects, run **both** `uip rpa validate` on every entry point AND `uip rpa build "<PROJECT_DIR>"` — `validate` catches structural / analyzer issues, `build` catches compile-time issues `validate` misses (unknown member names, invalid enum values, JIT failures).
|
|
23
|
+
1. **NEVER manually modify any files.** This skill is read-only. Exception: The command `uip agent refresh` is allowed and mandatory for low code agents, because it is not a manual modification, even when the command updates derived files -- do not restore or clean up those CLI-managed changes. If fixes are needed, identify them in the report and tell the user which skill to use (uipath-rpa, uipath-agents, uipath-maestro-flow, uipath-maestro-bpmn, uipath-api-workflow, uipath-coded-apps, uipath-platform, uipath-solution).
|
|
24
|
+
2. **ALWAYS run validation and Workflow Analyzer before manual review.** For RPA projects, run **both** `uip rpa validate` on every entry point AND `uip rpa build "<PROJECT_DIR>"` — `validate` catches structural / analyzer issues, `build` catches compile-time issues `validate` misses (unknown member names, invalid enum values, JIT failures). For low-code agents, run `uip agent refresh` and `uip agent validate`. Run `uip maestro flow validate` on flows, `uip maestro bpmn validate` on BPMN processes, `uip api-workflow validate` on API workflows. Report every Error, Warning, and Info result from every command. A review without both `validate` AND `build` (for RPA) is incomplete and may ship broken member references.
|
|
25
25
|
3. **ALWAYS discover and classify before reviewing.** For solutions: classify every project before reviewing any individual one. For single projects: identify the project type and find the enclosing project directory before reviewing individual files.
|
|
26
26
|
4. **Report severity for every finding.** Use: **Critical** (blocks deployment), **Warning** (should fix), **Info** (improvement opportunity).
|
|
27
27
|
5. **Understand business context first.** Before evaluating optimization, ask or infer what the solution is trying to accomplish. A queue-based architecture is not "better" if the use case processes 5 items/day.
|
|
28
28
|
6. **Use `--output json`** on all CLI validation commands for programmatic parsing.
|
|
29
29
|
7. **Do not duplicate what validation commands catch.** Reference the validation output by rule ID and message — do not manually re-describe the same issue. But DO include every validation result (Error, Warning, Info) in the report.
|
|
30
30
|
8. **Cap the review at 30 minutes of analysis.** For very large solutions (10+ projects), provide a summary review with deep dives on the 3 highest-risk projects. Offer to review remaining projects if the user wants.
|
|
31
|
-
9. **Run the review CLI first, then apply the judgment catalog, for every agent encountered.** First run `uip agent review` (low-code) or `uip codedagent review` (coded) with `--output json` — it returns the deterministic findings (Step 2.5a). Then load the
|
|
31
|
+
9. **Run the review CLI first, then apply the judgment catalog, for every agent encountered.** First run `uip agent review` (low-code) or `uip codedagent review` (coded) with `--output json` — it returns the deterministic findings (Step 2.5a). Then load the format-specific judgment catalog (`agents-lowcode-rules.md` or `agents-coded-rules.md`). Future phases add catalogs for RPA, flows, coded apps. This holds even when the skill loads mid-task: if review work already started before this skill loaded (e.g., a generic code-review pass produced findings), Step 2.5a and the guardrail Step 0 catalog fetch are still mandatory — run them, then merge the earlier findings into this skill's report format. Prior review output is never a substitute for the review CLI or the live catalog.
|
|
32
32
|
10. **Rule findings are authoritative as emitted.** Carry review-CLI findings (`Data.Issues[]`) into the report verbatim — `RuleId`, `Severity`, `Description`, `File`, `SuggestedFix` unchanged. For the judgment catalog, use its `rule_id`, `severity`, `trigger`, and `suggested_fix` verbatim. Map severity to the report's bands: `error` → Critical, `warning` → Warning, `info` → Info. `judgment` severity rows default to Warning; the agent may escalate or de-escalate with reasoning logged in the finding's `description`. Do not re-rank otherwise.
|
|
33
33
|
11. **Report rules that could not be applied** (missing tooling, missing file, review CLI unavailable, `status: deferred`) in a dedicated "Rules Skipped" subsection of the report — never silently skip.
|
|
34
34
|
12. **Never invent `rule_id` values.** Every `rule_id` cited in the report MUST appear verbatim in EITHER a loaded judgment-catalog file (`references/agents/agents-*-rules.md`) OR the `uip agent review` / `uip codedagent review` JSON output. `rule_id` is a stable contract identifier — consumers grep for it, dashboards aggregate by it, audits trace it. An invented identifier looks authoritative but cannot be looked up, doesn't aggregate, and produces a different name for the same observation on the next run. If you observe a real issue covered by neither source, the finding is still valid — report it as a normal Critical / Warning / Info finding **without** a `rule_id` (no `` `RULE_ID` `` backtick token in the line). **Before emitting the report, scan every cited `rule_id` and confirm it appears verbatim in a loaded catalog file or the review-CLI output; demote any that don't to `rule_id`-less findings.**
|
|
35
35
|
13. **Grade every agent project by the rubric — derived, never asserted.** For **agent projects** (phase 1), produce a letter grade (`A`/`B`/`C`/`D`/`F`, no `+`/`-`) per agent and overall, computed in Step 4.5 as `min(G_det, G_jud)`. **G_det is read from the review CLI's `Data.Grade` (Step 2.5a) — do not recompute it from finding counts.** G_jud you compute from judgment (architecture scores + Step 2.5b + Step 3). CLI findings already shaped `Data.Grade`; only judgment findings feed G_jud, so each finding lands in exactly one sub-grade. Show the binding constraint for every grade; a grade with no shown derivation is invalid. A security or data-integrity judgment Critical forces **F** regardless of design quality (hard gate, not a blend). The skill grade is always ≤ `Data.Grade` (min only lowers) — report both, never overwrite the CLI grade. Do **not** grade non-agent projects (RPA, flows, coded apps) — that rubric is a future phase. See [references/agents/agent-grading-rubric.md](references/agents/agent-grading-rubric.md).
|
|
36
|
+
14. **These paths are CLI-managed — `uip agent refresh` owns them:** `.agent-builder/`, `.local/build/`, and (low-code only) the root `entry-points.json`, regenerated from `agent.json`. Do not open their contents. Exclude them from classification, source-file selection, structural metrics, and manual checks. Raise a finding only when `refresh` fails to fix them — a pre-refresh mismatch is stale by construction, not a defect. Read low-code schemas from `agent.json` (`.inputSchema` / `.outputSchema`).
|
|
36
37
|
|
|
37
38
|
## Review Workflow
|
|
38
39
|
|
|
@@ -44,10 +45,10 @@ Run this from the directory the user specified (or the current working directory
|
|
|
44
45
|
|
|
45
46
|
```bash
|
|
46
47
|
# Discover solution files, project markers, and documentation
|
|
47
|
-
find . -maxdepth 3 \( -name "*.uipx" -o -name "project.json" -o -name "project.uiproj" -o -name "agent.json" -o -name "*.flow" -o -name "*.bpmn" -o -name "app.config.json" -o -name ".uipath" -o -name "langgraph.json" -o -name "llama_index.json" -o -name "openai_agents.json" -o -name "uipath.json" -o -name "main.py" \) 2>/dev/null
|
|
48
|
+
find . -maxdepth 3 \( -type d \( -name ".agent-builder" -o -path "*/.local/build" \) \) -prune -o \( -name "*.uipx" -o -name "project.json" -o -name "project.uiproj" -o -name "agent.json" -o -name "*.flow" -o -name "*.bpmn" -o -name "app.config.json" -o -name ".uipath" -o -name "pyproject.toml" -o -name "langgraph.json" -o -name "llama_index.json" -o -name "openai_agents.json" -o -name "uipath.json" -o -name "main.py" \) -print 2>/dev/null
|
|
48
49
|
|
|
49
50
|
# Search for PDD or design documents
|
|
50
|
-
find . -maxdepth 3 \( -name "*PDD*" -o -name "*pdd*" -o -name "*Process_Design*" -o -name "*process_design*" -o -name "*Process-Design*" -o -name "*ProcessDesign*" -o -name "*SDD*" -o -name "*Solution_Design*" -o -name "*design_document*" -o -name "*DesignDocument*" -o -name "*requirements*" -o -name "*specification*" \) 2>/dev/null
|
|
51
|
+
find . -maxdepth 3 \( -type d \( -name ".agent-builder" -o -path "*/.local/build" \) \) -prune -o \( -name "*PDD*" -o -name "*pdd*" -o -name "*Process_Design*" -o -name "*process_design*" -o -name "*Process-Design*" -o -name "*ProcessDesign*" -o -name "*SDD*" -o -name "*Solution_Design*" -o -name "*design_document*" -o -name "*DesignDocument*" -o -name "*requirements*" -o -name "*specification*" \) -print 2>/dev/null
|
|
51
52
|
```
|
|
52
53
|
|
|
53
54
|
#### 0b. Locate the PDD (Process Design Document)
|
|
@@ -94,7 +95,7 @@ Classify the scope internally using these rules:
|
|
|
94
95
|
|
|
95
96
|
**Scope: Solution or Multi-project** — `.uipx` exists at root, OR 2+ **executable** project markers exist in different subdirectories.
|
|
96
97
|
|
|
97
|
-
- Executable project = `project.json` with `outputType` of `Process`/`Tests`/unspecified, OR `agent.json`, OR `.flow`, OR `project.uiproj` with `ProjectType` `Flow`/`ProcessOrchestration`/`Api`
|
|
98
|
+
- Executable project = `project.json` with `outputType` of `Process`/`Tests`/unspecified, OR a low-code `agent.json`, OR a coded-agent Python project (`pyproject.toml` + framework/`uipath.json` configuration), OR `.flow`, OR `project.uiproj` with `ProjectType` `Flow`/`ProcessOrchestration`/`Api`
|
|
98
99
|
- Library projects (`outputType: "Library"`) co-located with consumers do NOT trigger this scope — that is the normal library+consumer pattern
|
|
99
100
|
- **Windows-Legacy executables do NOT trigger this scope for `.uipx` purposes**: `.uipx` solutions are not supported for Legacy projects. If any detected executable is Legacy, do not flag missing `.uipx` — recommend migration to Modern compatibility if solution bundling is desired. Review each Legacy project independently.
|
|
100
101
|
|
|
@@ -108,7 +109,7 @@ Steps for Solution / Multi-project scope:
|
|
|
108
109
|
7. Read [references/solution-review-guide.md](references/solution-review-guide.md) for the full procedure
|
|
109
110
|
8. Proceed to Step 1 for each project individually
|
|
110
111
|
|
|
111
|
-
**Scope: Single Project** — one `project.json` / `agent.json` / `.flow` / coded-app marker at root
|
|
112
|
+
**Scope: Single Project** — one `project.json` / `agent.json` / `.flow` / coded-app marker, or one Python coded-agent project, at root; no `.uipx`, no executable siblings.
|
|
112
113
|
|
|
113
114
|
1. Classify the project using the detection table in Step 1
|
|
114
115
|
2. Cross-reference with PDD (if available)
|
|
@@ -135,9 +136,8 @@ Record the language per project alongside the type (see solution table below).
|
|
|
135
136
|
| `project.json` with no `targetFramework` or `targetFramework: "Legacy"` (any expression language — Legacy C# exists) | RPA (Windows-Legacy) | [rpa-review-checklist.md](references/rpa/rpa-review-checklist.md) §10. Also recommend the user invoke `uipath-rpa` (Legacy mode) for Legacy-specific deep validation. Legacy is supported indefinitely in Studio LTS — do NOT flag as Critical. |
|
|
136
137
|
| `project.json` + both `.cs` and `.xaml` | RPA (Hybrid) | [rpa-review-checklist.md](references/rpa/rpa-review-checklist.md) |
|
|
137
138
|
| `project.json` + `.xaml` + DU packages in dependencies (`UiPath.IntelligentOCR.Activities`, `UiPath.DocumentUnderstanding.ML.Activities`) | RPA + Document Understanding | [rpa-review-checklist.md](references/rpa/rpa-review-checklist.md) + [du-review-checklist.md](references/document-understanding/du-review-checklist.md) |
|
|
138
|
-
| `agent.json`
|
|
139
|
-
|
|
|
140
|
-
| `agent.json` + `main.py` + `pyproject.toml` (agent-builder coded layout) | Agent (Low-Code + Coded) | Checklist: [agent-review-checklist.md](references/agents/agent-review-checklist.md). Rule catalog (Step 2.5): all three — [agents-common-rules.md](references/agents/agents-common-rules.md) + [agents-lowcode-rules.md](references/agents/agents-lowcode-rules.md) + [agents-coded-rules.md](references/agents/agents-coded-rules.md) |
|
|
139
|
+
| `agent.json` with `"type": "lowCode"` | Agent (Low-Code) | Checklist: [agent-review-checklist.md](references/agents/agent-review-checklist.md). Rule catalog (Step 2.5): [agents-lowcode-rules.md](references/agents/agents-lowcode-rules.md) |
|
|
140
|
+
| Python coded-agent project, including `agent.json` with `"type": "coded"` when present | Agent (Coded) | Checklist: [agent-review-checklist.md](references/agents/agent-review-checklist.md). Rule catalog (Step 2.5): [agents-coded-rules.md](references/agents/agents-coded-rules.md) |
|
|
141
141
|
| `*.flow` + `project.uiproj` with `"ProjectType": "Flow"` | Flow | [flow-review-checklist.md](references/flows/flow-review-checklist.md) |
|
|
142
142
|
| `*.bpmn` + `project.uiproj` with `"ProjectType": "ProcessOrchestration"` | Maestro BPMN | [bpmn-review-checklist.md](references/bpmn/bpmn-review-checklist.md) |
|
|
143
143
|
| `Workflow.json` (`document.dsl` + `do[]`) + `project.uiproj` with `"ProjectType": "Api"` | API Workflow | [api-workflow-review-checklist.md](references/api-workflows/api-workflow-review-checklist.md) |
|
|
@@ -154,6 +154,14 @@ For **Solution / Multi-project scope**, record all projects in a table:
|
|
|
154
154
|
| 4 | ./Orchestration.flow | Flow | — | — |
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
+
**Step 1c — Inventory the authored files** for every project you will review. Run this instead of writing your own `find`, to avoid listing runtime artifacts:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
find "<PROJECT_DIR>" \( -type d \( -name ".agent-builder" -o -path "*/.local/build" -o -name "node_modules" -o -name ".venv" -o -name "obj" -o -name "bin" \) \) -prune -o -type f -print 2>/dev/null | sort
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The result is the authored-file set for Steps 2.5 and 3. Any path absent from it is out of scope: do not read it, cite it, or name it in the report.
|
|
164
|
+
|
|
157
165
|
### Step 2 — Run Automated Validation and Workflow Analyzer
|
|
158
166
|
|
|
159
167
|
This step is **mandatory** and **non-negotiable**. You MUST run validation commands yourself (via Bash) before doing any manual review.
|
|
@@ -205,7 +213,7 @@ If `uip rpa analyze` is not available, `uip rpa validate` includes Workflow Anal
|
|
|
205
213
|
|
|
206
214
|
| Project Type | Validation Command | Report All Severities |
|
|
207
215
|
|---|---|---|
|
|
208
|
-
| Agent (Low-Code) | `uip agent validate "<PROJECT_DIR>" --output json` | Yes — errors, warnings, info |
|
|
216
|
+
| Agent (Low-Code) | `uip agent refresh "<PROJECT_DIR>" --output json`, then `uip agent validate "<PROJECT_DIR>" --output json` | Yes — errors, warnings, info |
|
|
209
217
|
| Flow | `uip maestro flow validate "<PROJECT_NAME>.flow" --output json` | Yes — schema errors, reference errors, warnings |
|
|
210
218
|
| Maestro BPMN | `uip maestro bpmn validate "<FILE>.bpmn" --output json` | Yes — model errors, warnings |
|
|
211
219
|
| API Workflow | `uip api-workflow validate "<WORKFLOW_JSON>" --output json` | Yes — schema + semantic errors, warnings |
|
|
@@ -251,9 +259,8 @@ Run the review command for the agent type, once, capturing JSON:
|
|
|
251
259
|
|
|
252
260
|
| Agent type | Command |
|
|
253
261
|
|---|---|
|
|
254
|
-
| Low-code
|
|
255
|
-
| Coded
|
|
256
|
-
| Agent-builder coded layout (`agent.json` + `main.py`) | run **both** commands |
|
|
262
|
+
| Low-code | `uip agent review "<PROJECT_DIR>" --output json` |
|
|
263
|
+
| Coded | `uip codedagent review "<PROJECT_DIR>" --output json` |
|
|
257
264
|
|
|
258
265
|
The CLI runs every deterministic static check — structural/schema, placeholder cross-refs, eval counts/diversity, secret & import regex, framework symbol existence, eval-run analysis, packaging/git hygiene — and returns them in rule format. Parse `Data.Issues[]`; each issue is `{RuleId, Category, Severity, Description, File, SuggestedFix}`. Carry each into the report **verbatim** — do not re-derive, rename, or re-rank. These rule IDs are authoritative as emitted by the CLI; they are **not** listed in the skill catalog.
|
|
259
266
|
|
|
@@ -265,10 +272,9 @@ The CLI runs every deterministic static check — structural/schema, placeholder
|
|
|
265
272
|
|
|
266
273
|
| Signals present | Project type | Catalog files |
|
|
267
274
|
|---|---|---|
|
|
268
|
-
| `agent.json
|
|
269
|
-
|
|
|
275
|
+
| `agent.json.type == "lowCode"` | Agent (low-code) | `references/agents/agents-lowcode-rules.md` |
|
|
276
|
+
| Python coded-agent signals or `agent.json.type == "coded"` | Agent (coded) | `references/agents/agents-coded-rules.md` |
|
|
270
277
|
| `pyproject.toml` + `main.py` + `uipath.json[functions]` only (no framework config) | Agent (coded — Simple Function) | same as Agent (coded) |
|
|
271
|
-
| `agent.json` + `pyproject.toml` + `main.py` (agent-builder coded layout) | Agent (low-code + coded) | all three: common + lowcode + coded; tag each finding with its source file |
|
|
272
278
|
| `project.json` + `.xaml` / `.cs` | RPA | *(phase 2)* |
|
|
273
279
|
| `*.flow` | Flow | *(phase 2)* |
|
|
274
280
|
| `.uipath/` or `app.config.json` | Coded App | *(phase 2)* |
|
|
@@ -628,7 +634,6 @@ This maps the letter to the verdict word only. The agent grade is `min(G_det, G_
|
|
|
628
634
|
| Compute the A–F letter grade for an agent (Step 4.5) | [agent-grading-rubric.md](references/agents/agent-grading-rubric.md) |
|
|
629
635
|
| Understand the rule row schema | [rule-format.md](references/rule-format.md) |
|
|
630
636
|
| Run the review CLI + judgment catalog (Step 2.5) | [rule-catalog-workflow.md](references/rule-catalog-workflow.md) |
|
|
631
|
-
| Apply common rules for agents (both formats) | [agents-common-rules.md](references/agents/agents-common-rules.md) |
|
|
632
637
|
| Apply the low-code agent judgment catalog | [agents-lowcode-rules.md](references/agents/agents-lowcode-rules.md) |
|
|
633
638
|
| Apply the coded agent judgment catalog | [agents-coded-rules.md](references/agents/agents-coded-rules.md) |
|
|
634
639
|
| Understand the full review workflow in detail | [review-workflow-guide.md](references/review-workflow-guide.md) |
|
|
@@ -11,7 +11,7 @@ Final grade = min(G_det, G_jud)
|
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
- **G_det** — deterministic sub-grade. **Read it directly from the review CLI** — do not recompute it. `uip agent review` / `uip codedagent review` returns `Data.Grade`, the grade it assigns to its own deterministic checks. That letter **is** G_det.
|
|
14
|
-
- **G_jud** — non-deterministic sub-grade. Driven by judgment: the agent judgment catalog
|
|
14
|
+
- **G_jud** — non-deterministic sub-grade. Driven by judgment: the format-specific agent judgment catalog read in Step 2.5b, the manual agent checklist ([agent-review-checklist.md](agent-review-checklist.md)) in Step 3, and the architecture-principle scores (1–5) from [architecture-assessment-guide.md §4](../architecture-assessment-guide.md).
|
|
15
15
|
|
|
16
16
|
`min()` means an agent cannot earn an A from a clean CLI grade if its prompt, tools, and error handling are weak (G_jud gates it down), and cannot earn an A from strong design if the CLI's deterministic grade is poor (G_det gates it down). The grade is bounded by the weaker dimension. Because `min` only ever lowers the CLI grade, the **skill grade is always ≤ `Data.Grade`**.
|
|
17
17
|
|
|
@@ -123,7 +123,6 @@ Before reviewing implementation details, verify the right agent type was chosen:
|
|
|
123
123
|
| `pyproject.toml` exists with valid config | Critical | Read pyproject.toml *(rule: `MISSING_PYPROJECT`)* |
|
|
124
124
|
| ~~`pyproject.toml` does NOT have `[build-system]` section~~ | ~~Critical~~ | **Retired** — the corresponding `NO_BUILD_SYSTEM` rule was retired (SDK FAQ shows `pyproject.toml` with `[build-system]` per PEP 518). Keep only as manual check if specific `uip codedagent` packaging errors point at it. |
|
|
125
125
|
| `.env` file not committed to source control | Critical | Check .gitignore and git status *(rule: `ENV_FILE_TRACKED`, `GITIGNORE_INCOMPLETE`)* |
|
|
126
|
-
| `entry-points.json` present | Warning | `ls entry-points.json` *(rule: `ENTRY_POINTS_MISSING`, `LOWCODE_ENTRY_POINTS_MISSING`)* |
|
|
127
126
|
|
|
128
127
|
### Dependencies (pyproject.toml)
|
|
129
128
|
|
|
@@ -295,9 +294,6 @@ Review whether the agent design accounts for known UiPath limitations:
|
|
|
295
294
|
|
|
296
295
|
| Check | Severity | How to Verify |
|
|
297
296
|
|---|---|---|
|
|
298
|
-
| `entry-points.json` present and correct | Warning | Read entry-points.json *(rule: `ENTRY_POINTS_MISSING`, `LOWCODE_ENTRY_POINTS_MISSING`)* |
|
|
299
|
-
| `agent.json` ↔ `entry-points.json` schemas match (agent-builder) | Critical | Compare inputs/outputs *(rule: `LOWCODE_SCHEMA_DRIFT`)* |
|
|
300
|
-
| `bindings.json` present (if using external resources) | Warning | Read bindings.json |
|
|
301
297
|
| Agent validates without errors | Critical | Run validation command |
|
|
302
298
|
| Smoke evaluation passes (70%+ score) | Warning | Run evaluations *(rule: `EVAL_RUN_LOW_PASS_RATE`, `EVAL_RUN_NEVER_EXECUTED`)* |
|
|
303
299
|
| No `.env` file or secrets in committed code | Critical | Check git status *(rule: `ENV_FILE_TRACKED`, `GITIGNORE_INCOMPLETE`, `HARDCODED_CREDENTIALS`)* |
|
|
@@ -6,11 +6,6 @@ Judgment rules for **coded** agents (Python — `main.py` + framework config). E
|
|
|
6
6
|
|
|
7
7
|
Read [`../rule-format.md`](../rule-format.md) and [`../rule-catalog-workflow.md`](../rule-catalog-workflow.md) first.
|
|
8
8
|
|
|
9
|
-
Companion files:
|
|
10
|
-
|
|
11
|
-
- [`agents-common-rules.md`](agents-common-rules.md) — judgment rule shared with low-code agents (schema-description informativeness)
|
|
12
|
-
- [`agents-lowcode-rules.md`](agents-lowcode-rules.md) — low-code judgment rules (for the agent-builder coded layout that ships both `agent.json` and `main.py`)
|
|
13
|
-
|
|
14
9
|
## Framework detection
|
|
15
10
|
|
|
16
11
|
Many rules below gate on framework. Detect once and reuse:
|
|
@@ -72,6 +67,7 @@ LLM-judge-only is acceptable when the agent has no tools, no classification outp
|
|
|
72
67
|
|
|
73
68
|
| rule_id | severity | category | trigger | detection_method | suggested_fix |
|
|
74
69
|
|---|---|---|---|---|---|
|
|
70
|
+
| `SCHEMA_NO_DESCRIPTIONS` | judgment | schema | Input/output schema properties lack **informative** descriptions | Read the authored input/output models. Judge field descriptions for useful semantic guidance, not mere presence; assess input and output separately. | Add a useful description to each field. |
|
|
75
71
|
| `CODED_SCHEMA_COMPLETENESS` | warning | schema | `StateGraph` input/output schema is technically present but the fields are insufficient for the agent's contract | Read `StateGraph(input=..., output=...)` (or `_schema=` variants). Read the agent's actual behavior. Assess: are declared input/output fields meaningful and sufficient? An agent that needs `customer_history` + `recent_invoices` but only declares `query: str` is incomplete. file = source file. | Expand the schema to carry the context the agent actually needs / returns. |
|
|
76
72
|
| `CODED_SCHEMA_FIELD_NO_VALIDATION` | warning | schema | Constrained-value field declared as bare `str` (no `Literal`/`Enum`/regex pattern) | Read Pydantic / dataclass models. Assess per field: does the name suggest a constrained set (`category`, `status`, `severity`, `role`, `intent`, `classification`, `priority`)? AND is the type bare `str` (no `Literal`, no `Enum`, no validator)? AND does the agent's logic visibly map to a small enumerated set? Emit per concrete case. file = source file, element = `<Model>.<field>`. | Type the field as `Literal["a", "b", "c"]` or `Enum`, or add `Field(..., pattern="...")`. |
|
|
77
73
|
| `CODED_OUTPUT_ENUM_MISSING_ON_CLASSIFIER` | warning | schema | Classifier-shaped output field declared without enum | Read output schema (Pydantic field, `StateGraph` output annotation, dataclass). Identify classifier-shape fields by name (`class`, `classification`, `label`, `category`, `intent`, `severity`, `priority`, `status`) with `type: str`. Assess: is there a `Literal[...]` / `Enum` / pattern constraint? Both this rule and `CODED_SCHEMA_FIELD_NO_VALIDATION` can fire on the same field — the more-specific firing clarifies the issue. file = source file, element = field name. | Add `Literal[...]` / `Enum` / pattern constraint to the classifier output field. |
|
|
@@ -92,11 +88,6 @@ LLM-judge-only is acceptable when the agent has no tools, no classification outp
|
|
|
92
88
|
|
|
93
89
|
## GuardrailsChecker
|
|
94
90
|
|
|
95
|
-
> **Agent-builder coded layout** (`agent.json` + `main.py`): `agent.json`'s `guardrails[]` are reviewed by the
|
|
96
|
-
> low-code semantic rules (`LC_GUARDRAIL_*`) via the low-code catalog + [`guardrails/guardrails-review.md`](guardrails/guardrails-review.md)
|
|
97
|
-
> (this layout loads all three catalogs — see the detection table). The rules below cover **pure-coded** guardrails —
|
|
98
|
-
> SDK middleware / `@guardrail` decorators wired in the entry `.py` (LangChain/LangGraph today), no `agent.json`.
|
|
99
|
-
|
|
100
91
|
> **Validator-name authority.** Same caution as low-code: do NOT name a platform-documented validator
|
|
101
92
|
> (`harmful_content` / `intellectual_property` / `user_prompt_attacks`) unless it is already present in the agent's
|
|
102
93
|
> code — phrase generically (e.g. "an appropriate content-safety guardrail"). `pii_detection` / `prompt_injection`
|
|
@@ -6,10 +6,6 @@ Judgment rules for **low-code** agents (`agent.json`). Each rule requires the ag
|
|
|
6
6
|
|
|
7
7
|
Read [`../rule-format.md`](../rule-format.md) and [`../rule-catalog-workflow.md`](../rule-catalog-workflow.md) first.
|
|
8
8
|
|
|
9
|
-
Companion file:
|
|
10
|
-
|
|
11
|
-
- [`agents-common-rules.md`](agents-common-rules.md) — judgment rule shared with coded agents (schema-description informativeness)
|
|
12
|
-
|
|
13
9
|
## Layouts
|
|
14
10
|
|
|
15
11
|
Low-code agents exist in two layouts. Detect first, then apply the right `Read` path in each rule.
|
|
@@ -17,7 +13,7 @@ Low-code agents exist in two layouts. Detect first, then apply the right `Read`
|
|
|
17
13
|
| Layout | Identifier | Key files |
|
|
18
14
|
|---|---|---|
|
|
19
15
|
| **Normalized** | A single JSON file with snake_case top-level keys (`system_prompt`, `tools`, `datasets`, `input_schema`, `output_schema`, `user_prompt`) | The single JSON file |
|
|
20
|
-
| **Agent-builder** | `agent.json` at project root with camelCase keys + sibling `
|
|
16
|
+
| **Agent-builder** | `agent.json` at project root with camelCase keys + sibling `project.uiproj` and `resources/<Name>/resource.json` | `agent.json`, `resources/*/resource.json`, `evals/eval-sets/*.json`, `evals/evaluators/*.json` |
|
|
21
17
|
|
|
22
18
|
Rules tagged `(agent-builder only)` skip silently on the normalized layout; `(normalized only)` skip on agent-builder. Untagged rules apply to both with layout-aware `detection_method`.
|
|
23
19
|
|
|
@@ -40,6 +36,7 @@ One H2 section per checker class (`EvalsChecker`, `SchemaChecker`, `ToolsChecker
|
|
|
40
36
|
|
|
41
37
|
| rule_id | severity | category | trigger | detection_method | suggested_fix |
|
|
42
38
|
|---|---|---|---|---|---|
|
|
39
|
+
| `SCHEMA_NO_DESCRIPTIONS` | judgment | schema | Input/output schema properties lack **informative** descriptions | Read `.input_schema` / `.output_schema` in normalized JSON, or `agent.json.inputSchema` / `outputSchema` in Agent Builder. Judge property descriptions for useful semantic guidance, not mere presence; assess input and output separately. | Add a useful description to each property. |
|
|
43
40
|
| `LC_OUTPUT_FORMAT_PROMPT_DRIFT` | warning | schema | System prompt instructs an output shape that conflicts with `outputSchema` | Read system prompt + `outputSchema`. Assess: does the prompt instruct a shape (`"respond with a single sentence"`, `"answer in markdown"`) that conflicts with the schema's structure (structured JSON, flat string, etc.)? Emit when prompt-vs-schema drift is present. file = system prompt source. | Align the prompt's output-format instructions with `outputSchema` — pick one source of truth and have the other reference it. |
|
|
44
41
|
| `LC_INPUT_SCHEMA_OVERLAP` | warning | schema | Input schema has ≥2 fields with semantically overlapping names or descriptions | Read `inputSchema.properties`. Assess: are there fields with semantically overlapping names (`query` vs `question` vs `text` vs `prompt` vs `input`) or descriptions? Emit when ≥2 fields could reasonably hold the same content and the LLM would have to disambiguate at runtime. file = schema source, element = `<field_a>,<field_b>`. | Merge overlapping fields, or differentiate them with clear names + descriptions that scope each one. |
|
|
45
42
|
| `LC_OUTPUT_ENUM_VS_PROMPT_DRIFT` | warning | schema | Output enum disagrees with the prompt's category list (either side has extras) | Read `outputSchema.properties.<X>.enum` and the system prompt's classification list (`"Classify into: A, B, C"`). Assess: do the two sets agree? Emit when either has extras: prompt names a class the schema doesn't accept (runtime validation rejects), OR schema accepts a class the prompt never mentions (LLM never produces it). file = schema or prompt source. | Reconcile the prompt's class list with `outputSchema.enum`. |
|
|
@@ -94,7 +91,7 @@ One H2 section per checker class (`EvalsChecker`, `SchemaChecker`, `ToolsChecker
|
|
|
94
91
|
|
|
95
92
|
| rule_id | severity | category | trigger | detection_method | suggested_fix |
|
|
96
93
|
|---|---|---|---|---|---|
|
|
97
|
-
| `LC_GUARDRAIL_RECOMMENDED` | info | guardrails | A guardrail is recommended for a use case the agent matches but doesn't cover (one finding per missing guardrail; specifics in the message) | Apply `guardrails/guardrails-review.md` **Recommend Mode**: fetch the live catalog (Step 0); for each catalog entry whose `when_to_use` / `use_cases` / `security_risk_addressed` match the agent (system prompt, schemas, tools) and which is absent from `.guardrails[]`, emit one finding. The message names the guardrail / `security_category`, the matched use case, the recommended scope, and the recommended **action** — **block/escalate** when protection is really needed (PII that must not enter, injection, harmful content) or **log** for audit only (a tool legitimately handles sensitive data). De-dup by `security_category`. Do NOT name a platform-documented validator unless already present (see note above). file = `agent.json` (or normalized JSON). | Add the named guardrail at the catalog-recommended scope/action (cite `examples[].config`): block/escalate for protection, log for audit. |
|
|
94
|
+
| `LC_GUARDRAIL_RECOMMENDED` | info | guardrails | A guardrail is recommended for a use case the agent matches but doesn't cover (one finding per missing guardrail; specifics in the message) | Apply `guardrails/guardrails-review.md` **Recommend Mode**: fetch the live catalog (Step 0); for each catalog entry whose `when_to_use` / `use_cases` / `security_risk_addressed` match the agent (system prompt, schemas, tools) and which is absent from `.guardrails[]`, emit one finding. The message names the guardrail / `security_category`, the matched use case, the recommended scope, and the recommended **action** — **block/escalate** when protection is really needed (PII that must not enter, injection, harmful content) or **log** for audit only (a tool legitimately handles sensitive data). It also preserves a source-evidence clause in the form `<source path>: <exact matching identifier(s)>`; copy schema properties, tool names, and resource names verbatim instead of paraphrasing them (for example, `agent.json inputSchema.properties: customer_email, full_name, ssn`). De-dup by `security_category`. Do NOT name a platform-documented validator unless already present (see note above). file = `agent.json` (or normalized JSON). | Add the named guardrail at the catalog-recommended scope/action (cite `examples[].config`): block/escalate for protection, log for audit. |
|
|
98
95
|
| `LC_GUARDRAIL_ACTION_INEFFECTIVE` | judgment | guardrails | A format-valid guardrail's action is ineffective or counterproductive for its scope | Apply `guardrails/guardrails-review.md` **Audit Mode → Actionability**: for each format-valid guardrail (skip ones the review CLI flagged), compare `validator` + `selector.scopes` + action `$actionType` against the catalog entry's `when_not_to_use` / `examples[].config` action for that scope. Emit when counterproductive — a security-critical guardrail at `log` where the example uses `block`; `pii_detection` `Block`/`Filter` at Tool on a tool that needs the PII; `pii_detection` `Log` at Agent/Llm. Name the recommended action. file = `agent.json`, element = guardrail name. | Set the action the catalog recommends for that scope, or move the guardrail to a scope where the action is effective. |
|
|
99
96
|
| `LC_GUARDRAIL_MISAPPLIED` | judgment | guardrails | A guardrail is present but the agent matches the validator's `when_not_to_use` | Apply `guardrails/guardrails-review.md` **Audit Mode → Relevance**: establish the agent's context (system prompt, schemas, tools); for each format-valid guardrail read the catalog entry's `when_not_to_use` / `NOT_recommended_for`. Emit when the agent matches a disqualifying condition (e.g. a generate-only agent with no user input carrying a PII guardrail). Cite the matched clause. file = `agent.json`, element = guardrail name. | Remove the misapplied guardrail, or document why the agent's context differs from the `when_not_to_use` condition. |
|
|
100
97
|
|