@uipath/skills 1.201.0-preview.621 → 1.202.0-preview.635
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/.cursor-plugin/plugin.json +1 -1
- package/CODEOWNERS +41 -29
- package/README.md +1 -0
- package/assets/skill-status.json +13 -2
- package/assets/uip-catalog-snapshot.json +95 -46
- package/package.json +2 -1
- package/skills/uipath-admin/SKILL.md +107 -197
- package/skills/uipath-admin/references/audit-commands.md +69 -120
- package/skills/uipath-admin/references/audit-workflow-guide.md +101 -152
- package/skills/uipath-admin/references/authorization/authorization-commands.md +121 -210
- package/skills/uipath-admin/references/authorization/check-access.md +39 -63
- package/skills/uipath-admin/references/authorization/grant-permissions.md +38 -49
- package/skills/uipath-admin/references/authorization/permission-catalog.md +32 -34
- package/skills/uipath-admin/references/authorization/role-assignment-management.md +96 -99
- package/skills/uipath-admin/references/authorization/role-management.md +113 -142
- package/skills/uipath-admin/references/diagnose/CAPABILITY.md +13 -14
- package/skills/uipath-admin/references/diagnose/{references/failure-modes.md → failure-modes.md} +90 -46
- package/skills/uipath-admin/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +21 -14
- package/skills/uipath-admin/references/external-app-management.md +42 -39
- package/skills/uipath-admin/references/identity-commands.md +72 -625
- package/skills/uipath-admin/references/identity-troubleshoot-guide.md +73 -95
- package/skills/uipath-admin/references/ip-restriction/bypass-rule-management.md +25 -54
- package/skills/uipath-admin/references/ip-restriction/enforcement-management.md +19 -31
- package/skills/uipath-admin/references/ip-restriction/ip-range-management.md +48 -45
- package/skills/uipath-admin/references/ip-restriction/ip-restriction-commands.md +89 -146
- package/skills/uipath-admin/references/key-concepts.md +24 -0
- package/skills/uipath-admin/references/organization-management.md +49 -70
- package/skills/uipath-admin/references/organizations-commands.md +39 -74
- package/skills/uipath-admin/references/pat-management.md +25 -38
- package/skills/uipath-admin/references/robot-account-management.md +16 -14
- package/skills/uipath-admin/references/smtp-management.md +19 -14
- package/skills/uipath-admin/references/tenant-management.md +1 -1
- package/skills/uipath-admin/references/tenants-commands.md +82 -148
- package/skills/uipath-admin/references/user-management.md +70 -56
- package/skills/uipath-agents/SKILL.md +4 -3
- package/skills/uipath-agents/references/authentication.md +4 -3
- package/skills/uipath-agents/references/coded/capabilities/datafabric.md +465 -0
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -0
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +2 -0
- package/skills/uipath-agents/references/coded/capabilities/human-in-the-loop.md +12 -6
- package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
- package/skills/uipath-agents/references/coded/frameworks/langgraph-integration.md +48 -16
- package/skills/uipath-agents/references/coded/frameworks/openai-agents-integration.md +1 -1
- package/skills/uipath-agents/references/coded/lifecycle/deployment.md +11 -1
- package/skills/uipath-agents/references/coded/quickstart.md +11 -8
- package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +3 -3
- package/skills/uipath-agents/references/lowcode/capabilities/memory/memory.md +19 -2
- package/skills/uipath-agents/references/lowcode/evaluations/evaluate.md +2 -2
- package/skills/uipath-agents/references/lowcode/evaluations/orchestrator-eval-run.md +409 -155
- package/skills/uipath-agents/references/lowcode/evaluations/running-evaluations.md +2 -2
- package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
- package/skills/uipath-aops/SKILL.md +313 -0
- package/skills/uipath-aops/assets/templates/pipeline-dto-template.json +15 -0
- package/skills/uipath-aops/references/discovery-flow.md +312 -0
- package/skills/uipath-aops/references/migration-guide.md +146 -0
- package/skills/uipath-aops/references/pipeline-dto-guide.md +276 -0
- package/skills/uipath-aops/references/save-and-run-guide.md +156 -0
- package/skills/uipath-api-workflow/SKILL.md +48 -6
- package/skills/uipath-api-workflow/assets/templates/file-base64-roundtrip-example.json +154 -0
- package/skills/uipath-api-workflow/assets/templates/nested-control-flow-example.json +0 -1
- package/skills/uipath-api-workflow/references/cli-reference.md +20 -1
- package/skills/uipath-api-workflow/references/expressions-and-context.md +19 -0
- package/skills/uipath-api-workflow/references/files-and-base64.md +153 -0
- package/skills/uipath-api-workflow/references/operating-published-workflows.md +3 -2
- package/skills/uipath-api-workflow/references/task-types.md +89 -3
- package/skills/uipath-api-workflow/references/testing-and-evals.md +224 -0
- package/skills/uipath-api-workflow/references/troubleshooting.md +124 -4
- package/skills/uipath-coded-apps/SKILL.md +4 -2
- package/skills/uipath-coded-apps/assets/scripts/dashboards/build-dashboard.mjs +1 -1
- package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +11 -1
- package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +5 -3
- package/skills/uipath-coded-apps/references/dashboards/plugins/deploy/impl.md +1 -0
- package/skills/uipath-coded-apps/references/oauth-client-setup.md +2 -0
- package/skills/uipath-coded-apps/references/pack-publish-deploy.md +18 -0
- package/skills/uipath-coded-apps/references/sdk/orchestrator.md +4 -0
- package/skills/uipath-connector-builder/SKILL.md +7 -5
- package/skills/uipath-connector-builder/references/debugging.md +5 -1
- package/skills/uipath-connector-builder/references/element-json.md +3 -1
- package/skills/uipath-connector-builder/references/standard-resources.md +37 -6
- package/skills/uipath-functions/SKILL.md +134 -222
- package/skills/uipath-functions/references/js/authoring-guide.md +141 -0
- package/skills/uipath-functions/references/js/bindings-guide.md +120 -0
- package/skills/uipath-functions/references/js/calling-uipath-apis-guide.md +112 -0
- package/skills/uipath-functions/references/js/coded-app-wiring-guide.md +103 -0
- package/skills/uipath-functions/references/js/deployment-guide.md +109 -0
- package/skills/uipath-functions/references/js/http-semantics-guide.md +80 -0
- package/skills/uipath-functions/references/js/job-mode-guide.md +114 -0
- package/skills/uipath-functions/references/js/local-dev-guide.md +107 -0
- package/skills/uipath-functions/references/python/workflow-guide.md +224 -0
- package/skills/uipath-governance/SKILL.md +9 -8
- package/skills/uipath-governance/references/compliance-pack/catalog/impl.md +36 -8
- package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +14 -12
- package/skills/uipath-governance/references/compliance-pack/disable/impl.md +5 -3
- package/skills/uipath-governance/references/compliance-pack/full-apply/impl.md +7 -5
- package/skills/uipath-governance/references/compliance-pack/partial-apply/impl.md +14 -7
- package/skills/uipath-governance/references/compliance-pack/partial-apply/planning.md +3 -1
- package/skills/uipath-governance/references/compliance-pack/preview-gate.md +1 -1
- package/skills/uipath-governance/references/compliance-pack/query/impl.md +4 -2
- package/skills/uipath-governance/references/diagnose/CAPABILITY.md +12 -12
- package/skills/uipath-governance/references/diagnose/{references/failure-modes.md → failure-modes.md} +5 -5
- package/skills/uipath-governance/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +2 -2
- package/skills/uipath-governance/references/disambiguation-guide.md +15 -7
- package/skills/uipath-human-in-the-loop/SKILL.md +107 -9
- package/skills/uipath-human-in-the-loop/references/hitl-casetask-action.md +413 -0
- package/skills/uipath-insights/SKILL.md +21 -14
- package/skills/uipath-insights/references/alerts-reads-guide.md +242 -0
- package/skills/uipath-insights/references/filter-discovery-guide.md +1 -1
- package/skills/uipath-insights/references/jobs-commands-guide.md +2 -2
- package/skills/uipath-ixp/references/cli-reference.md +1 -1
- package/skills/uipath-ixp/references/improve-prompts-guide.md +5 -6
- package/skills/uipath-maestro-bpmn/SKILL.md +87 -15
- package/skills/uipath-maestro-bpmn/references/diagnose/CAPABILITY.md +10 -10
- package/skills/uipath-maestro-bpmn/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +1 -1
- package/skills/uipath-maestro-bpmn/references/expression-authoring.md +12 -2
- package/skills/uipath-maestro-bpmn/references/operate/CAPABILITY.md +12 -12
- package/skills/uipath-maestro-bpmn/references/operate/{references/run.md → run.md} +2 -2
- package/skills/uipath-maestro-bpmn/references/operate/{references/ship.md → ship.md} +3 -3
- package/skills/uipath-maestro-bpmn/references/patterns/ai-decision-review-guide.md +138 -0
- package/skills/uipath-maestro-bpmn/references/patterns/approval-chain-guide.md +136 -0
- package/skills/uipath-maestro-bpmn/references/patterns/composing-guide.md +113 -0
- package/skills/uipath-maestro-bpmn/references/patterns/external-wait-guide.md +145 -0
- package/skills/uipath-maestro-bpmn/references/patterns/failure-escalation-guide.md +103 -0
- package/skills/uipath-maestro-bpmn/references/patterns/high-volume-batch-guide.md +107 -0
- package/skills/uipath-maestro-bpmn/references/patterns/queue-distribution-guide.md +129 -0
- package/skills/uipath-maestro-bpmn/references/patterns/smart-triage-guide.md +129 -0
- package/skills/uipath-maestro-bpmn/references/registry-workflow.md +15 -0
- package/skills/uipath-maestro-bpmn/references/shared/local-metadata-regeneration-guide.md +67 -36
- package/skills/uipath-maestro-bpmn/references/shared/project-layout.md +6 -5
- package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +23 -5
- package/skills/uipath-maestro-bpmn/validator/bpmn-spec.json +101 -53
- package/skills/uipath-maestro-case/SKILL.md +23 -24
- package/skills/uipath-maestro-case/references/bindings-and-expressions.md +30 -17
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -5
- package/skills/uipath-maestro-case/references/brownfield.md +3 -3
- package/skills/uipath-maestro-case/references/case-commands.md +8 -4
- package/skills/uipath-maestro-case/references/case-editing-operations.md +19 -19
- package/skills/uipath-maestro-case/references/case-schema.md +17 -3
- package/skills/uipath-maestro-case/references/connector-integration.md +25 -16
- package/skills/uipath-maestro-case/references/connector-trigger-impl.md +15 -15
- package/skills/uipath-maestro-case/references/connector-trigger-planning.md +32 -29
- package/skills/uipath-maestro-case/references/entry-points-sync.md +2 -1
- package/skills/uipath-maestro-case/references/evals/evals.json +11 -11
- package/skills/uipath-maestro-case/references/implementation.md +74 -44
- package/skills/uipath-maestro-case/references/phased-execution.md +23 -21
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +28 -23
- package/skills/uipath-maestro-case/references/planning.md +37 -252
- package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +8 -6
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/planning.md +11 -10
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +6 -6
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +12 -12
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +4 -4
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +10 -9
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +5 -5
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +16 -14
- package/skills/uipath-maestro-case/references/plugins/logging/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +15 -15
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +20 -21
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +6 -6
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +9 -9
- package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +9 -9
- package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +38 -38
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +24 -20
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +24 -20
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +4 -4
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +25 -21
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +30 -22
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +44 -28
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +10 -10
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +27 -23
- package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +25 -22
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +25 -21
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -4
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +5 -4
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +9 -9
- package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +30 -19
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +4 -4
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/planning.md +8 -7
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +3 -3
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +5 -4
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +5 -5
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +7 -7
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +21 -17
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +29 -21
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +23 -21
- package/skills/uipath-maestro-case/references/registry-discovery.md +5 -5
- package/skills/uipath-maestro-flow/.maintenance/README.md +35 -28
- package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +19 -1
- package/skills/uipath-maestro-flow/.maintenance/check-links.sh +3 -0
- package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +2 -2
- package/skills/uipath-maestro-flow/SKILL.md +66 -76
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +75 -72
- package/skills/uipath-maestro-flow/references/author/brownfield.md +90 -0
- package/skills/uipath-maestro-flow/references/author/{references/editing-operations-cli.md → editing-operations-cli.md} +9 -4
- package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +373 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations.md +103 -0
- package/skills/uipath-maestro-flow/references/author/{references/greenfield.md → greenfield.md} +32 -20
- package/skills/uipath-maestro-flow/references/author/planning-arch.md +342 -0
- package/skills/uipath-maestro-flow/references/author/planning-impl.md +283 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +227 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agent/planning.md +2 -2
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/impl.md +2 -2
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/impl.md +2 -2
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/batch-transform/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +449 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector/planning.md +3 -3
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/impl.md +20 -18
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/planning.md +2 -2
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +427 -0
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +185 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/impl.md +5 -0
- package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
- package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/impl.md +2 -2
- package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +178 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/hitl/planning.md +14 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/impl-connector.md +4 -4
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/planning.md +3 -3
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/impl.md +6 -6
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/impl.md +4 -4
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/impl.md +8 -8
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/impl.md +1 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
- package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
- package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/rpa/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/impl.md +6 -8
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/impl.md +5 -5
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/subflow/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
- package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
- package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
- package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +241 -0
- package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/transform/planning.md +1 -1
- package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +39 -37
- package/skills/uipath-maestro-flow/references/diagnose/{references/failure-modes.md → failure-modes.md} +22 -22
- package/skills/uipath-maestro-flow/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +60 -1
- package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +27 -25
- package/skills/uipath-maestro-flow/references/evaluate/{references/commands-reference.md → commands-reference.md} +58 -7
- package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
- package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
- package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +21 -21
- package/skills/uipath-maestro-flow/references/operate/{references/manage.md → manage.md} +4 -4
- package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
- package/skills/uipath-maestro-flow/references/operate/{references/ship.md → ship.md} +5 -5
- package/skills/uipath-maestro-flow/references/shared/action-nodes.md +30 -22
- package/skills/uipath-maestro-flow/references/shared/cli-commands.md +76 -184
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +49 -60
- package/skills/uipath-maestro-flow/references/shared/file-format.md +32 -11
- package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +49 -104
- package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +66 -103
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +4 -4
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-planner/assets/templates/case/case-sdd-template.md +5 -3
- package/skills/uipath-planner/references/case/case-design-lane-guide.md +1 -1
- package/skills/uipath-planner/references/case/case-design-layers-guide.md +2 -2
- package/skills/uipath-planner/references/non-pdd-lane-guide.md +2 -1
- package/skills/uipath-planner/references/pdd-driven-lane-guide.md +3 -2
- package/skills/uipath-planner/references/sdd-generation-guide.md +1 -0
- package/skills/uipath-planner/scripts/case/audit_sdd.py +77 -1
- package/skills/uipath-platform/SKILL.md +6 -4
- package/skills/uipath-platform/references/integration-service/activities.md +7 -4
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +28 -0
- package/skills/uipath-platform/references/integration-service/resources.md +11 -0
- package/skills/uipath-platform/references/integration-service/triggers.md +2 -2
- package/skills/uipath-platform/references/licensing/diagnose/CAPABILITY.md +80 -0
- package/skills/uipath-platform/references/licensing/diagnose/references/failure-modes.md +147 -0
- package/skills/uipath-platform/references/licensing/diagnose/references/troubleshooting-guide.md +125 -0
- package/skills/uipath-platform/references/licensing/licensing.md +3 -0
- package/skills/uipath-platform/references/licensing/user-licenses-allocations.md +5 -0
- package/skills/uipath-platform/references/orchestrator/run-jobs.md +11 -2
- package/skills/uipath-platform/references/traces/feedback.md +4 -4
- package/skills/uipath-platform/references/traces/traces.md +1 -1
- package/skills/uipath-process-mining/SKILL.md +6 -6
- package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +10 -8
- package/skills/uipath-process-mining/references/model-editing.md +1 -1
- package/skills/uipath-process-mining/references/querying.md +4 -3
- package/skills/uipath-review/SKILL.md +171 -541
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +73 -92
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +4 -0
- package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +73 -180
- package/skills/uipath-review/references/architecture-assessment-guide.md +93 -105
- package/skills/uipath-review/references/review-workflow-guide.md +1 -1
- package/skills/uipath-review/references/rpa/modern-studio-issues.md +44 -44
- package/skills/uipath-review/references/rpa/rpa-common-issues.md +251 -321
- package/skills/uipath-review/references/rpa/rpa-review-checklist.md +1 -1
- package/skills/uipath-review/references/rule-catalog-workflow.md +25 -45
- package/skills/uipath-review/references/rule-format.md +21 -21
- package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +1 -1
- package/skills/uipath-rpa/CLAUDE.md +4 -5
- package/skills/uipath-rpa/SKILL.md +40 -246
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/FindText.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetColorAtPosition.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetCursorPosition.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetField.md +13 -13
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetFieldAtPosition.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetScreenArea.md +27 -8
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetText.md +2 -14
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetTextAtPosition.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursor.md +3 -11
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursorToText.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendControlKey.md +2 -8
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeys.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeysSecure.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetField.md +14 -13
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetFieldAtPosition.md +4 -7
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/_common-options.md +29 -0
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/authoring-paths.md +58 -0
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession.md +197 -11
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitFieldText.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenReady.md +9 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenText.md +2 -14
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitTextAtPosition.md +2 -10
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities.json +271 -0
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/coded/coded-api.md +61 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/overview.md +76 -0
- package/skills/uipath-rpa/references/cli-reference.md +63 -29
- package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +59 -1
- package/skills/uipath-rpa/references/coded/operations-guide.md +2 -1
- package/skills/uipath-rpa/references/debugging.md +29 -12
- package/skills/uipath-rpa/references/environment-setup.md +54 -1
- package/skills/uipath-rpa/references/execution-maps-guide.md +10 -9
- package/skills/uipath-rpa/references/legacy/activity-docs/_INVOKE-CODE.md +1 -1
- package/skills/uipath-rpa/references/uia-starter-guide.md +46 -8
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +3 -4
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +7 -8
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +132 -42
- package/skills/uipath-solution/SKILL.md +9 -6
- package/skills/uipath-solution/references/activate-and-manage.md +11 -6
- package/skills/uipath-solution/references/develop-solution.md +39 -28
- package/skills/uipath-solution/references/pack-and-deploy.md +49 -1
- package/skills/uipath-solution/references/scenarios/failure-modes.md +1 -1
- package/skills/uipath-solution/references/scenarios/intra-solution-references.md +3 -3
- package/skills/uipath-solution/references/scenarios/manual-edits.md +1 -1
- package/skills/uipath-solution/references/scenarios.md +2 -2
- package/skills/uipath-solution/references/solution-overview.md +15 -6
- package/skills/uipath-tasks/SKILL.md +11 -6
- package/skills/uipath-tasks/references/task-assignment.md +5 -0
- package/skills/uipath-tasks/references/task-catalogs.md +7 -4
- package/skills/uipath-tasks/references/task-completion.md +3 -1
- package/skills/uipath-tasks/references/task-data.md +3 -3
- package/skills/uipath-tasks/references/task-lifecycle.md +11 -0
- package/skills/uipath-tasks/references/task-metadata.md +4 -3
- package/skills/uipath-test/SKILL.md +13 -28
- package/skills/uipath-test/references/failure-triage-guide.md +90 -0
- package/skills/uipath-test/references/playwright-first-mile-guide.md +2 -2
- package/skills/uipath-test/references/publish-and-link-guide.md +0 -1
- package/skills/uipath-test/references/test-result-report-guide.md +1 -2
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/interpretations/healing-agent-data.md +1 -1
- package/skills/uipath-troubleshoot/references/presenting.md +1 -1
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/folder-not-accessible.md +1 -1
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/generic-error-400.md +4 -4
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/integration-service-400.md +2 -2
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/job-operation-timeout.md +1 -1
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/no-suitable-runtime-machine.md +1 -1
- package/version-manifest.json +2 -2
- package/skills/uipath-maestro-case/scripts/audit_plan.py +0 -231
- package/skills/uipath-maestro-flow/references/author/references/brownfield.md +0 -93
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +0 -545
- package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +0 -131
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -638
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -306
- package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +0 -229
- package/skills/uipath-maestro-flow/references/author/references/plugins/batch-transform/impl.md +0 -174
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +0 -741
- package/skills/uipath-maestro-flow/references/author/references/plugins/delay/impl.md +0 -75
- package/skills/uipath-maestro-flow/references/author/references/plugins/end/impl.md +0 -65
- package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/impl.md +0 -204
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-manual.md +0 -65
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl.md +0 -201
- package/skills/uipath-maestro-flow/references/author/references/plugins/merge/impl.md +0 -43
- package/skills/uipath-maestro-flow/references/author/references/plugins/merge/planning.md +0 -29
- package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +0 -121
- package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +0 -230
- package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/impl.md +0 -198
- package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/planning.md +0 -71
- package/skills/uipath-maestro-flow/references/author/references/plugins/switch/planning.md +0 -38
- package/skills/uipath-maestro-flow/references/author/references/plugins/terminate/impl.md +0 -48
- package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +0 -287
- package/skills/uipath-maestro-flow/references/evaluate/references/eval-sets-guide.md +0 -226
- package/skills/uipath-maestro-flow/references/evaluate/references/upload-safety.md +0 -82
- package/skills/uipath-maestro-flow/references/operate/references/run.md +0 -99
- /package/skills/uipath-maestro-bpmn/references/diagnose/{references/failure-modes.md → failure-modes.md} +0 -0
- /package/skills/uipath-maestro-bpmn/references/operate/{references/manage.md → manage.md} +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/delay/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/end/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/impl.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/switch/impl.md +0 -0
- /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/terminate/planning.md +0 -0
- /package/skills/uipath-maestro-flow/references/evaluate/{references/evaluators-guide.md → evaluators-guide.md} +0 -0
- /package/skills/uipath-maestro-flow/references/evaluate/{references/running-guide.md → running-guide.md} +0 -0
|
@@ -1,264 +1,176 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: uipath-functions
|
|
3
|
-
description: "UiPath Coded Functions — deterministic Python units built
|
|
3
|
+
description: "UiPath Coded Functions — deterministic Python or TypeScript/JavaScript units built with the `uip function` CLI (`new -l py|ts|js`, `init`, `serve`, `run`, `pack`, `publish`); the `functions` map in `uipath.json` marks the project. Python: Pydantic Input/Output models, lazy `UiPath()` SDK singleton. JS/TS: `defineFunction` + `defineSchema<T>()` contracts, HTTP endpoints for Coded App backends or run-as-job, `FunctionError`. Rule-based logic, data transforms, ERP/Integration Service calls — invoked as Maestro Service Tasks, from agents, via Orchestrator `POST /Jobs/StartJobs`, or HTTP triggers; no LLM reasoning or agent loop. For LLM/agentic projects (LangGraph, LlamaIndex, OpenAI Agents, `agent.json`)→uipath-agents. For the Coded App frontend itself (React app code, PKCE setup, app deploy)→uipath-coded-apps."
|
|
4
4
|
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# UiPath
|
|
7
|
+
# UiPath Coded Functions
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Atomic, deterministic units of business logic — no LLM reasoning, no agent loop — written in **Python** or **TypeScript/JavaScript** and shipped as first-class UiPath artifacts. One `uip function` CLI drives both languages. A Coded Function takes typed input, executes deterministic code, and returns typed output; use one when generic activities don't cover the required logic (custom-auth API calls, domain rules, ERP queries via Integration Service, data transforms).
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## When to Use This Skill
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
- Scaffold, author, or modify a coded function in either language (`uip function new <NAME> -l py|ts|js`)
|
|
14
|
+
- Declare typed contracts — Pydantic Input/Output (Python) or `defineSchema<T>()` / JSON Schema literals (JS/TS)
|
|
15
|
+
- Test locally: `uip function run` (both languages), `uip function serve` + curl (JS/TS HTTP endpoints)
|
|
16
|
+
- Error handling: returned error fields (Python), `FunctionError`/status codes and job fault semantics (JS/TS)
|
|
17
|
+
- Call UiPath platform APIs from inside a function (Python SDK; `@uipath/uipath-typescript` with `ctx` tokens)
|
|
18
|
+
- Wire a Coded App frontend to a JS/TS function backend (tokens, CORS, timeout budget, local dev loop)
|
|
19
|
+
- Pack, publish, invoke in production; register in a solution; resource bindings
|
|
20
|
+
- Debug deployed failures: cold-start hangs, errorCode 4801/4804/1623, missing tokens, entrypoint errors
|
|
14
21
|
|
|
15
|
-
|
|
22
|
+
Do NOT use this skill for:
|
|
23
|
+
- LLM/agentic projects (`agent.json`, LangGraph, LlamaIndex, OpenAI Agents, agent loop) → `uipath-agents`
|
|
24
|
+
- The Coded App frontend itself (React/Vite app code, PKCE setup, app deploy) → `uipath-coded-apps`
|
|
16
25
|
|
|
17
|
-
|
|
26
|
+
## Language Split
|
|
18
27
|
|
|
19
|
-
|
|
20
|
-
|---|---|
|
|
21
|
-
| Maestro BPMN | Service Task node |
|
|
22
|
-
| Maestro Flow | Coded Agent node or Service Task |
|
|
23
|
-
| Coded Agents (LangGraph / LlamaIndex / OpenAI Agents) | Called as a tool or step |
|
|
24
|
-
| Other Coded Functions | Direct Python call or Orchestrator job |
|
|
25
|
-
| Orchestrator API | `POST /Jobs/StartJobs` |
|
|
26
|
-
| CLI | `uip function pack` → `uip function publish` |
|
|
27
|
-
|
|
28
|
-
### Python Functions vs JS Functions
|
|
28
|
+
Detect an existing project by its signals before doing anything; for a new project the language follows the caller's stack.
|
|
29
29
|
|
|
30
|
-
| | Python
|
|
30
|
+
| | Python | JS/TS |
|
|
31
31
|
|---|---|---|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
| **Best for** | Agentic process steps, ERP integration, document AI, data pipelines | Backend-for-Frontend for Coded Apps |
|
|
32
|
+
| Scaffold | `uip function new <NAME> -l py` (`-l py` required) | `uip function new <NAME> -l ts` / `-l js` (ts is the CLI default) |
|
|
33
|
+
| Project signals | `pyproject.toml` + `uipath.json` functions map | `package.json` + `uipath.json` functions map |
|
|
34
|
+
| Contracts | Pydantic `BaseModel` / `@dataclass` Input/Output | `defineSchema<T>()` (TS) / JSON Schema literal (JS) |
|
|
35
|
+
| Entrypoints | `"main": "main.py:<fn>"`, generated by `uip function init` | `functions/<FILE>.ts:default`, auto-synced; no `init` |
|
|
36
|
+
| Calling mode | run-as-job (Maestro, agents, Orchestrator API) | one declared mode: HTTP endpoint or run-as-job — never both |
|
|
37
|
+
| Local dev | `uip function run` | `uip function serve` (HTTP on :7070) / `uip function run` (one-shot job) |
|
|
38
|
+
| References | [references/python/](references/python/workflow-guide.md) | [references/js/](references/js/authoring-guide.md) |
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
Job-startable functions are invoked from Maestro BPMN/Flow (Service Task), coded agents (as a tool or step), other functions, the Orchestrator API (`POST /Jobs/StartJobs`), or schedules/triggers. A JS/TS **HTTP-mode** function is instead called synchronously through its Orchestrator HTTP trigger ([references/js/http-semantics-guide.md](references/js/http-semantics-guide.md)).
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
## Critical Rules
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
### Both languages
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
uip function new <name> -l py # scaffold a new Python Functions project (--language py required)
|
|
51
|
-
uip function init # Python only — generate entry-points.json, bindings.json, project.uiproj
|
|
52
|
-
uip function pack # pack to .nupkg for deployment
|
|
53
|
-
uip function publish # upload .nupkg to Orchestrator (prompts for feed, or use --feed-id)
|
|
54
|
-
uip function push # sync project to Studio Web
|
|
55
|
-
```
|
|
46
|
+
1. **No LLM calls inside a Coded Function.** LLM reasoning breaks the deterministic contract — that project is an agent → `uipath-agents`.
|
|
47
|
+
2. **The `functions` map in `uipath.json` identifies the project as a Coded Function** — it is the marker every tool reads.
|
|
48
|
+
3. **Cloud-backed work needs auth**: `uip login --organization "<ORG>" --tenant "<TENANT>" --output json`.
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## Workflow
|
|
62
|
-
|
|
63
|
-
### Step 1: Scaffold
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
uip function new <name> --language py # Python Coded Function
|
|
67
|
-
uip function new <name> --language ts # TypeScript Function (JS/TS, no job semantics)
|
|
68
|
-
uip function new <name> --language js # JavaScript Function (JS/TS, no job semantics)
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**`--language py` is required for Python.** The default language is TypeScript — omitting `--language` scaffolds a JS/TS project. Always pass `-l py` or `--language py` when building a Python Coded Function.
|
|
72
|
-
|
|
73
|
-
`--empty` skips the hello-world function (JS/TS only).
|
|
74
|
-
|
|
75
|
-
**The scaffold follows the installed packages.** With a framework package present in the environment (`uipath-langchain`, `llama-index`, `openai-agents`), `uip function new -l py` emits that framework's **agent** scaffold — `langgraph.json` plus an LLM `main.py` — not a function scaffold. Expected behaviour, not a broken flag. Recovery, in one pass:
|
|
76
|
-
|
|
77
|
-
1. Delete the framework config (`langgraph.json` and equivalents).
|
|
78
|
-
2. Replace `main.py` with the function template (Step 3).
|
|
79
|
-
3. Keep `pyproject.toml`'s `[project]` metadata (Step 5) — swap `dependencies` for what the function needs.
|
|
80
|
-
|
|
81
|
-
Do not re-run `new` with different flag spellings, and do not read CLI or SDK internals to explain the scaffold. Reshape the project and move on.
|
|
82
|
-
|
|
83
|
-
### Step 2: Define Function Schema
|
|
84
|
-
|
|
85
|
-
Use typed I/O. The SDK accepts pydantic `BaseModel`, `pydantic.dataclasses.dataclass`, a stdlib `@dataclass`, or a thin class with typed annotations. The shipped samples favor **pydantic** (`BaseModel` in csv-processor, `pydantic.dataclasses.dataclass` in calculator/greeter):
|
|
86
|
-
|
|
87
|
-
```python
|
|
88
|
-
from pydantic import BaseModel
|
|
89
|
-
|
|
90
|
-
class Input(BaseModel):
|
|
91
|
-
document_id: str = ""
|
|
92
|
-
|
|
93
|
-
class Output(BaseModel):
|
|
94
|
-
vendor_name: str = ""
|
|
95
|
-
total_amount: float = 0.0
|
|
96
|
-
error_type: str = "" # populated on failure, empty on success
|
|
97
|
-
error_message: str = "" # human-readable error detail
|
|
98
|
-
```
|
|
50
|
+
### Python
|
|
99
51
|
|
|
100
|
-
|
|
52
|
+
1. **`UiPath()` must never be instantiated at module level** — lazy singleton inside a getter.
|
|
53
|
+
2. **Errors are returned, not raised**: populate `error_type`/`error_message` output fields; never let exceptions bubble out of the entrypoint.
|
|
54
|
+
3. **`uip function init` must run before `pack` or `push`** — it generates `entry-points.json`, `bindings.json`, `project.uiproj`; re-run after any schema or entrypoint change.
|
|
55
|
+
4. **Typed I/O is mandatory** — Pydantic `BaseModel`, `pydantic.dataclasses.dataclass`, stdlib `@dataclass`, or a thin typed class; apply `@traced(name=..., run_type="uipath")` to the entrypoint for LLM Ops Traces.
|
|
56
|
+
5. **`pyproject.toml` needs `authors`** (else `pack` rejects: `Project authors cannot be empty`) and no `[build-system]` section.
|
|
57
|
+
6. **The scaffold follows installed packages**: with an agent framework present, `uip function new -l py` emits an agent scaffold — reshape it (see [references/python/workflow-guide.md](references/python/workflow-guide.md) Step 1), don't re-run `new`.
|
|
101
58
|
|
|
102
|
-
|
|
59
|
+
### JS/TS
|
|
103
60
|
|
|
104
|
-
|
|
61
|
+
1. **Throw `FunctionError`, never plain `Error`.** A plain throw is always a generic 500 (`JsCodedFunction.HandlerError`) that leaks the raw stack; `FunctionError(message, status)` carries an author-controlled status (pass `errorCode` in options to set the job error code). Argument order is `(message, status)`. See [error handling](references/js/authoring-guide.md#errors).
|
|
62
|
+
2. **Contracts are schema-first.** `defineSchema<T>()` over interfaces (TS, lowered at build time) or a bare JSON Schema literal (JS). Do not use zod/arktype/valibot for new functions — they break static contract extraction and add a runtime dependency. No `$ref`, `any`, `bigint`, or tuples; the schema literal must be static.
|
|
63
|
+
3. **One default-exported `defineFunction` per file, directly under `functions/`.** Helper modules are `_`-prefixed (`functions/_helpers.ts`). `method` + `path` together or neither — the pair selects the function's single calling mode: HTTP endpoint or plain run-as-job, never both. Logic needed on both surfaces gets two thin functions sharing a `_`-helper.
|
|
64
|
+
4. **Intra-project imports carry the `.ts` extension** (`./_helpers.ts`). Extensionless imports resolve in local dev but hang the whole runtime at production cold start, with no logs.
|
|
65
|
+
5. **Runtime deps go in `dependencies`, public npm only; the SDK stays in `devDependencies`.** Production runs `npm install --omit=dev` at cold start — a runtime import from `devDependencies` or a private registry crashes/hangs the function. Regenerate the lockfile after any dependency change; a stale `package-lock.json` fails every route with errorCode 4801.
|
|
66
|
+
6. **Finish in <20 s — the gateway times out at 25 s** and returns a `303` to a polling URL without CORS: a browser caller loses the result permanently, and recovering it server-side via the redirect is undocumented. Use `AbortSignal.timeout(...)` on every external call; move longer work to a run-as-job function.
|
|
67
|
+
7. **Deployed POST with empty input still needs `body: '{}'`** — the gateway rejects an empty body with `400 errorCode 4804` (local serve does not, so the bug only appears in production).
|
|
68
|
+
8. **Two tokens, two identities.** `ctx.user.accessToken` = the caller's token (delegated, caller's folder permissions); `ctx.robot.accessToken` = the function's own robot identity (S2S, privileged reads). `ctx.robot` is always null under local serve (`ctx.user` only when no Bearer token is sent) — fall back to `process.env["UIPATH_ACCESS_TOKEN"]`.
|
|
69
|
+
9. **Read platform coordinates from `ctx.platform`** (`baseUrl`, `orgId`, `tenantId`, `folderKey`), never from input fields — caller-controlled URLs are a redirect risk. Env vars (`UIPATH_BASE_URL`, `UIPATH_ORG_ID`, `UIPATH_TENANT_ID`) are the local-only fallback.
|
|
70
|
+
10. **Only the SDK `logger.*` reaches Orchestrator job logs.** `console.*` prints locally and is not forwarded.
|
|
71
|
+
11. **No `Buffer`.** Use `Uint8Array`, `TextEncoder`, `TextDecoder`.
|
|
72
|
+
12. **After `uip function publish`, manually update the Function Release** in Orchestrator (Automations → Processes) — triggers only sync to the new version once the release is updated.
|
|
73
|
+
13. **`uip function run` is a one-shot job execution, not an HTTP call.** To exercise the HTTP surface locally, curl/fetch against the `serve` server — no CLI subcommand invokes a route for you.
|
|
105
74
|
|
|
106
|
-
|
|
107
|
-
from __future__ import annotations
|
|
75
|
+
## Quick Start
|
|
108
76
|
|
|
109
|
-
|
|
110
|
-
from uipath.tracing import traced
|
|
111
|
-
from uipath.platform import UiPath
|
|
77
|
+
### Python
|
|
112
78
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
error_message: str = ""
|
|
120
|
-
|
|
121
|
-
# Lazy SDK singleton — never instantiate UiPath() at module level
|
|
122
|
-
_sdk: UiPath | None = None
|
|
123
|
-
|
|
124
|
-
def sdk() -> UiPath:
|
|
125
|
-
global _sdk
|
|
126
|
-
if _sdk is None:
|
|
127
|
-
_sdk = UiPath()
|
|
128
|
-
return _sdk
|
|
129
|
-
|
|
130
|
-
@traced(name="my_function", run_type="uipath")
|
|
131
|
-
def my_function(input: Input) -> Output:
|
|
132
|
-
out = Output()
|
|
133
|
-
try:
|
|
134
|
-
# SDK calls, data processing, rule-based logic only
|
|
135
|
-
asset = sdk().assets.retrieve("MY_ASSET", folder_path="Shared")
|
|
136
|
-
out.result = str(asset.value)
|
|
137
|
-
except Exception as exc:
|
|
138
|
-
out.error_type = "FAILED"
|
|
139
|
-
out.error_message = str(exc)
|
|
140
|
-
return out
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
Key rules:
|
|
144
|
-
- **Typed I/O** — pydantic `BaseModel`, `pydantic.dataclasses.dataclass`, stdlib `@dataclass`, or a thin class with typed annotations; samples favor pydantic
|
|
145
|
-
- **`def` or `async def`** — both supported (csv-processor uses `async def main`); the function name is arbitrary
|
|
146
|
-
- **Lazy SDK init** — instantiate `UiPath()` inside a getter, never at module level
|
|
147
|
-
- **Errors returned, not raised** — populate `error_type`/`error_message` output fields and return; never let exceptions bubble out of the entrypoint
|
|
148
|
-
- **`@traced(name=..., run_type="uipath")`** — apply to the entrypoint and any sub-functions you want visible in LLM Ops Traces
|
|
149
|
-
|
|
150
|
-
### Step 4: Register in `uipath.json`
|
|
151
|
-
|
|
152
|
-
```json
|
|
153
|
-
{
|
|
154
|
-
"runtimeOptions": { "isConversational": false },
|
|
155
|
-
"functions": {
|
|
156
|
-
"main": "main.py:my_function"
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
The key is the entrypoint name — it can be any string and marks this as the callable entrypoint. The value is `"<file>:<function_name>"`. Both the key and the function name are arbitrary.
|
|
162
|
-
|
|
163
|
-
**This `functions` map is what identifies the project as a Coded Function** — the runtime's `determine_project_type()` reads the entrypoint type from `uipath.json`.
|
|
164
|
-
|
|
165
|
-
### Step 5: Declare dependencies in `pyproject.toml`
|
|
166
|
-
|
|
167
|
-
```toml
|
|
168
|
-
[project]
|
|
169
|
-
name = "my-function"
|
|
170
|
-
version = "0.1.0"
|
|
171
|
-
description = "..."
|
|
172
|
-
authors = [{ name = "Your Name", email = "you@example.com" }]
|
|
173
|
-
requires-python = ">=3.11"
|
|
174
|
-
dependencies = [
|
|
175
|
-
"uipath",
|
|
176
|
-
"httpx>=0.28", # if making HTTP calls
|
|
177
|
-
"pydantic-settings>=2", # if using Settings for env/asset config
|
|
178
|
-
]
|
|
79
|
+
```bash
|
|
80
|
+
uip function new <NAME> -l py # scaffold (agent-framework packages hijack the scaffold — see workflow guide Step 1)
|
|
81
|
+
# author: Pydantic Input/Output + @traced entrypoint, lazy UiPath() singleton, errors returned not raised
|
|
82
|
+
uip function init # generate entry-points.json / bindings.json / project.uiproj
|
|
83
|
+
uip function run <ENTRYPOINT> '{"document_id": "42"}'
|
|
84
|
+
uip function pack && uip function publish
|
|
179
85
|
```
|
|
180
86
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
No `[build-system]` section. The project is identified as a Coded Function by the `functions` map in `uipath.json` (Step 4).
|
|
87
|
+
Full workflow (schema, template, `uipath.json` registration, `pyproject.toml`, SDK capabilities, attachments, packOptions): [references/python/workflow-guide.md](references/python/workflow-guide.md).
|
|
184
88
|
|
|
185
|
-
###
|
|
89
|
+
### JS/TS
|
|
186
90
|
|
|
187
91
|
```bash
|
|
188
|
-
uip function
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
### Step 7: SDK Capabilities
|
|
194
|
-
|
|
195
|
-
Full SDK reference: https://uipath.github.io/uipath-python/
|
|
196
|
-
|
|
197
|
-
Access UiPath platform resources via `sdk()`:
|
|
198
|
-
|
|
199
|
-
```python
|
|
200
|
-
from uipath.platform import UiPath
|
|
201
|
-
from uipath.platform.connections.connections import ActivityMetadata, ActivityParameterLocationInfo
|
|
202
|
-
|
|
203
|
-
# Assets — retrieve named credentials or config values
|
|
204
|
-
asset = sdk().assets.retrieve("ASSET_NAME", folder_path="Shared")
|
|
205
|
-
value = asset.string_value # or credential_username / credential_password
|
|
206
|
-
|
|
207
|
-
# Buckets — download files for processing
|
|
208
|
-
sdk().buckets.download(
|
|
209
|
-
name="BucketName",
|
|
210
|
-
blob_file_path="relative/path/file.pdf",
|
|
211
|
-
destination_path="/tmp/local.pdf",
|
|
212
|
-
folder_path="Shared",
|
|
213
|
-
)
|
|
214
|
-
|
|
215
|
-
# Integration Service connections — invoke connector activities (ERP, CRM, etc.)
|
|
216
|
-
result = sdk().connections.invoke_activity(
|
|
217
|
-
activity_metadata=ActivityMetadata(
|
|
218
|
-
object_path="/executeSuiteQL",
|
|
219
|
-
method_name="POST",
|
|
220
|
-
content_type="application/json",
|
|
221
|
-
parameter_location_info=ActivityParameterLocationInfo(body_fields=["q"]),
|
|
222
|
-
),
|
|
223
|
-
connection_id="<connection-uuid>",
|
|
224
|
-
activity_input={"q": "SELECT id FROM vendor WHERE ..."},
|
|
225
|
-
)
|
|
92
|
+
uip function new <NAME> -l ts # or -l js; --empty for no sample
|
|
93
|
+
# author: one default-exported defineFunction per functions/ file — method+path for HTTP, neither for run-as-job
|
|
94
|
+
uip function serve # HTTP on :7070, hot reload; test with curl
|
|
95
|
+
uip function run --function <NAME> --input '{}' # one-shot local job execution
|
|
96
|
+
uip function pack && uip function publish # then update the Function Release in Orchestrator
|
|
226
97
|
```
|
|
227
98
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
99
|
+
```ts
|
|
100
|
+
// functions/invoice.ts
|
|
101
|
+
import { defineFunction, defineSchema, FunctionError } from "@uipath/coded-functions-js-sdk";
|
|
231
102
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
103
|
+
interface Input {
|
|
104
|
+
invoiceId: string;
|
|
105
|
+
/** @default 0 */
|
|
106
|
+
amount?: number;
|
|
107
|
+
}
|
|
108
|
+
interface Output {
|
|
109
|
+
approved: boolean;
|
|
110
|
+
}
|
|
235
111
|
|
|
236
|
-
|
|
237
|
-
|
|
112
|
+
export default defineFunction({
|
|
113
|
+
name: "approve-invoice",
|
|
114
|
+
method: "POST",
|
|
115
|
+
path: "/invoice", // omit method+path entirely for a run-as-job function
|
|
116
|
+
input: defineSchema<Input>(),
|
|
117
|
+
output: defineSchema<Output>(),
|
|
118
|
+
handler: async (input, ctx) => {
|
|
119
|
+
if (!ctx.user?.accessToken) throw new FunctionError("Unauthorized", 401);
|
|
120
|
+
return { approved: input.amount! < 10_000 }; // success data only — errors are thrown
|
|
121
|
+
},
|
|
122
|
+
});
|
|
238
123
|
```
|
|
239
124
|
|
|
240
|
-
|
|
125
|
+
Authoring detail, local dev, HTTP semantics, deployment, bindings, Coded App wiring: [references/js/](references/js/authoring-guide.md) (navigation below).
|
|
241
126
|
|
|
242
|
-
|
|
127
|
+
## CLI Reference
|
|
243
128
|
|
|
244
129
|
```bash
|
|
245
|
-
uip function
|
|
246
|
-
uip function
|
|
247
|
-
uip function
|
|
130
|
+
uip function new <NAME> -l py|ts|js [--empty] # scaffold (TypeScript default; --empty is JS/TS only)
|
|
131
|
+
uip function init # Python only — entry-points.json, bindings.json, project.uiproj
|
|
132
|
+
uip function serve [--port 7070] [--runtime node|deno] # JS/TS only — local HTTP server, hot reload
|
|
133
|
+
uip function run # both languages — one-shot local execution
|
|
134
|
+
uip function pack [--nolock] # build the .nupkg
|
|
135
|
+
uip function publish [--feed-id <FEED_ID>] # upload package to a process feed
|
|
136
|
+
uip function push --project-id <PROJECT_ID> # sync sources to a Studio Web project
|
|
137
|
+
uip function runtime-install # JS/TS — one-time runtime pre-install (otherwise downloaded on first serve/run)
|
|
248
138
|
```
|
|
249
139
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
```bash
|
|
253
|
-
uip function push
|
|
254
|
-
```
|
|
140
|
+
> The retired plural spelling (`functions`) is not available — always write the singular `uip function`.
|
|
255
141
|
|
|
256
|
-
##
|
|
142
|
+
## Reference Navigation
|
|
257
143
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
144
|
+
| I need to… | Read |
|
|
145
|
+
|---|---|
|
|
146
|
+
| Python: full workflow — scaffold, schema, template, registration, dependencies, init, SDK calls, attachments, pack | [python/workflow-guide.md](references/python/workflow-guide.md) |
|
|
147
|
+
| JS/TS: write handlers, contracts, ctx, errors, logging | [js/authoring-guide.md](references/js/authoring-guide.md) |
|
|
148
|
+
| JS/TS: run and test locally (serve, run, env, tokens) | [js/local-dev-guide.md](references/js/local-dev-guide.md) |
|
|
149
|
+
| JS/TS: routing, status codes, deployed limits | [js/http-semantics-guide.md](references/js/http-semantics-guide.md) |
|
|
150
|
+
| JS/TS: run-as-job mode, fault semantics | [js/job-mode-guide.md](references/js/job-mode-guide.md) |
|
|
151
|
+
| JS/TS: pack, publish, invoke in prod, solutions, cold start | [js/deployment-guide.md](references/js/deployment-guide.md) |
|
|
152
|
+
| JS/TS: bindings — entry-points.json, bindings_v2.json, overrides | [js/bindings-guide.md](references/js/bindings-guide.md) |
|
|
153
|
+
| JS/TS: call UiPath APIs from a function (uipath-typescript, IS) | [js/calling-uipath-apis-guide.md](references/js/calling-uipath-apis-guide.md) |
|
|
154
|
+
| JS/TS: wire a Coded App frontend to a function backend | [js/coded-app-wiring-guide.md](references/js/coded-app-wiring-guide.md) |
|
|
155
|
+
|
|
156
|
+
## Anti-patterns
|
|
157
|
+
|
|
158
|
+
### Python
|
|
159
|
+
|
|
160
|
+
1. **Instantiating `UiPath()` at module level** — always a lazy singleton inside a getter (Python Rule 1).
|
|
161
|
+
2. **Raising exceptions from the entrypoint** — populate the error output fields and return (Python Rule 2).
|
|
162
|
+
3. **Skipping `uip function init` after a schema change** — stale `entry-points.json` ships wrong contracts (Python Rule 3).
|
|
163
|
+
|
|
164
|
+
### JS/TS
|
|
165
|
+
|
|
166
|
+
1. **`throw new Error("…")`** — generic 500, raw stack leaked, no author-controlled status — JS Rule 1.
|
|
167
|
+
2. **Returning an `errors[]` array inside a 200.** Output schemas carry success data only; a function throws one error at a time.
|
|
168
|
+
3. **zod/arktype contracts on new functions** — break static extraction, drag a runtime dependency — JS Rule 2.
|
|
169
|
+
4. **Extensionless relative imports** — work locally, hang production cold start — JS Rule 4.
|
|
170
|
+
5. **Runtime dependency in `devDependencies` or on a private registry** — skipped or unfetchable at cold start — JS Rule 5.
|
|
171
|
+
6. **Adding `server.proxy` to the Coded App's Vite config to reach the function** — it breaks the app's OAuth callback; fetch `http://localhost:7070/<PATH>` directly (serve sends CORS `*`).
|
|
172
|
+
7. **Accepting `baseUrl`/`orgId`/`tenantId` as function input** — redirect risk; use `ctx.platform` — JS Rule 9.
|
|
173
|
+
8. **Calling the portal domain from a browser** — no CORS there; browsers must call the `api.<HOST>` subdomain.
|
|
174
|
+
9. **`console.log` for production diagnostics** — never reaches job logs — JS Rule 10.
|
|
175
|
+
10. **Building the invoke URL from the trigger's own Id** — 404 errorCode 1623; the URL takes the folder Key GUID + package id + slug.
|
|
176
|
+
11. **Expecting a caller to recover a result after 25 s** — keep HTTP functions under 20 s, move longer work to a run-as-job function — JS Rule 6.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Authoring Guide — defineFunction, Contracts, Context, Errors
|
|
2
|
+
|
|
3
|
+
Field-level reference for writing JS/TS coded functions: `defineFunction` options, schema-first contracts, `FunctionContext`, error handling, logging. Running locally → [local-dev-guide.md](local-dev-guide.md); routing and deployed status codes → [http-semantics-guide.md](http-semantics-guide.md).
|
|
4
|
+
|
|
5
|
+
## File Layout and Manifest Sync
|
|
6
|
+
|
|
7
|
+
- One default-exported `defineFunction` per file, directly in `functions/` — discovery is top-level only, not recursive.
|
|
8
|
+
- Helper modules: `_`-prefix them (`functions/_helpers.ts`) and import with the `.ts` extension ([SKILL.md](../../SKILL.md) JS Rules 3-4). Discovery skips `_`-prefixed files and `.d.ts`. Sharp edge (current behavior): a helper file WITHOUT the `_` prefix breaks function discovery silently — always prefix.
|
|
9
|
+
- `uipath.json` `functions` map auto-syncs on every `serve`/`pack`/`push`: keyed by filename, values `functions/<FILE>:default`, entries pointing outside `functions/` pruned. Never hand-edit it.
|
|
10
|
+
|
|
11
|
+
## defineFunction Options
|
|
12
|
+
|
|
13
|
+
| Field | Type | Required | Notes |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| `name` | `string` | yes | Logical name — manifest + Studio |
|
|
16
|
+
| `method` | `GET\|POST\|PUT\|PATCH\|DELETE` | no* | Only together with `path` |
|
|
17
|
+
| `path` | `string` | no* | Must start `/`; `:param` segments supported ([routing](http-semantics-guide.md)) |
|
|
18
|
+
| `input` / `output` | contract schema | no | See [Contracts](#contracts) |
|
|
19
|
+
| `handler` | `(input, ctx) => result` | yes | Sync or async |
|
|
20
|
+
| `description` | `string` | no | Shown in Studio |
|
|
21
|
+
| `tags` | `string[]` | no | Studio grouping |
|
|
22
|
+
|
|
23
|
+
*`method` + `path` together or both omitted. `defineFunction` throws at module load on: one of the pair alone, a method outside the five verbs, a path not starting `/`.
|
|
24
|
+
|
|
25
|
+
**One calling mode per function.** `method` + `path` make it an HTTP-semantics function, invoked through its Orchestrator HTTP trigger — the Coded Apps backend case (the trigger executes each call as a job under the hood). Omitting both makes it a plain run-as-job function. On a job run there is no HTTP request: `ctx.user` carries no caller identity (may hold a legacy compat object — test `ctx.user?.accessToken`, not `!ctx.user`), `ctx.params`/`ctx.headers` empty. The runtime does not yet enforce the split — an HTTP function can currently be started as a plain job; treat that as an enforcement gap, never a design pattern. Details → [job-mode-guide.md](job-mode-guide.md).
|
|
26
|
+
|
|
27
|
+
## Handler Return Forms
|
|
28
|
+
|
|
29
|
+
| Return | Result |
|
|
30
|
+
|---|---|
|
|
31
|
+
| Plain value | JSON body, status 200 |
|
|
32
|
+
| `FunctionResponse` `{status, body?, headers?}` | Full control; `204` or undefined body → empty response |
|
|
33
|
+
| Raw `Response` | Passed through untouched |
|
|
34
|
+
| `void` | Empty 200 |
|
|
35
|
+
|
|
36
|
+
Return success data only — errors are thrown ([Errors](#errors)). A returned response with status >= 400 faults the job when run as one.
|
|
37
|
+
|
|
38
|
+
## Contracts
|
|
39
|
+
|
|
40
|
+
A contract is a curated JSON Schema subset — inert data, statically extractable without executing your code (what Studio Web reads).
|
|
41
|
+
|
|
42
|
+
**TypeScript** — `defineSchema<T>()` over an interface. Inert at runtime; lowered to the equivalent JSON Schema literal at build (`pack`/`serve`/`run`). A deprecated `type` alias of `defineSchema` exists — write `defineSchema`.
|
|
43
|
+
|
|
44
|
+
**JavaScript** — write the JSON Schema literal directly; the handler's input type derives from the literal (add `// @ts-check` for editor typing):
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
export default defineFunction({
|
|
48
|
+
name: "hello",
|
|
49
|
+
method: "POST",
|
|
50
|
+
path: "/hello",
|
|
51
|
+
input: {
|
|
52
|
+
type: "object",
|
|
53
|
+
properties: { name: { type: "string", default: "World" } },
|
|
54
|
+
additionalProperties: false,
|
|
55
|
+
},
|
|
56
|
+
handler: async (input) => ({ message: `Hello, ${input.name}!` }),
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### TS type → schema mapping
|
|
61
|
+
|
|
62
|
+
| TypeScript | JSON Schema |
|
|
63
|
+
|---|---|
|
|
64
|
+
| `string` / `number` / `boolean` | Same-type schema |
|
|
65
|
+
| Literal union, TS `enum` | `enum` |
|
|
66
|
+
| `T[]` | `array` + `items` |
|
|
67
|
+
| Interface / object type | Closed object: `additionalProperties: false`, non-optional props in `required` |
|
|
68
|
+
| `foo?: T` | Property present, not in `required` |
|
|
69
|
+
| `Record<string, T>` | `additionalProperties: <schema of T>` |
|
|
70
|
+
| `unknown` (value position) | `{}` — any JSON value |
|
|
71
|
+
| `Date` | `string`, `format: date-time` |
|
|
72
|
+
| Non-literal union `A \| B` | `anyOf` |
|
|
73
|
+
| `any`, `bigint`, tuples, functions, top-level `unknown` | **Rejected at build with a diagnostic** |
|
|
74
|
+
|
|
75
|
+
### Defaults via JSDoc
|
|
76
|
+
|
|
77
|
+
TS types cannot express defaults — put `@default` in JSDoc on an optional property (`/** @default "World" */` above `name?: string;`); tag text parses as JSON (`"World"` → string, `3` → number, `true` → boolean). Lowers to schema `default`; the runtime fills the field when the caller omits it.
|
|
78
|
+
|
|
79
|
+
### Allowed keywords (hand-written literals)
|
|
80
|
+
|
|
81
|
+
`type` (string/number/integer/boolean/object/array/null), `title`/`description`/`default`, `const`/`enum`, `format` (date-time/date/time/email/uri/uuid), `minLength`/`maxLength`/`pattern`, `minimum`/`maximum`/`exclusiveMinimum`/`exclusiveMaximum`/`multipleOf`, `items`/`minItems`/`maxItems`/`uniqueItems`, `properties`/`required`/`additionalProperties`, `anyOf`/`oneOf`/`allOf`. No `$ref`/`$defs`, no custom keywords or format functions. The literal must be static: no spreads, computed keys, or identifier references.
|
|
82
|
+
|
|
83
|
+
### Validator libraries (zod/arktype/valibot)
|
|
84
|
+
|
|
85
|
+
Standard Schema objects (zod >= 4.2, arktype >= 2.1.28, valibot >= 1.2 + `@valibot/to-json-schema` >= 1.5) still work, but obtaining the contract requires executing the module — Studio Web static extraction breaks — and the validator becomes a runtime dependency. Do not use for new functions. On the run path an existing validator is preserved as-is (refinements and coercions intact, never replaced by a derived schema), so migrating old functions is about extraction and dependency weight, not correctness.
|
|
86
|
+
|
|
87
|
+
### Runtime validation
|
|
88
|
+
|
|
89
|
+
ajv compiles the contract inside the runtime — it is never a project dependency. Full pipeline (400 `ValidationFailed`, GET coercion, defaults, invalid output → 500) → [http-semantics-guide.md](http-semantics-guide.md).
|
|
90
|
+
|
|
91
|
+
## FunctionContext
|
|
92
|
+
|
|
93
|
+
Second handler argument. Import the `FunctionContext` type from the SDK to type `_`-helper signatures with the same interface.
|
|
94
|
+
|
|
95
|
+
| Field | Shape | Null / empty when |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| `user` | `{sub, name?, email?, accessToken?}` — caller identity; `accessToken` = the caller's Bearer token (delegated calls) | Unauthenticated HTTP; carries no caller identity on job runs (may hold a legacy compat object — test `ctx.user?.accessToken`, not `!ctx.user`; → [job-mode-guide.md](job-mode-guide.md)) |
|
|
98
|
+
| `robot` | `{key, accessToken}` — the function's own serverless-robot identity | Local serve — fall back per [SKILL.md](../../SKILL.md) JS Rule 8 |
|
|
99
|
+
| `platform` | `{baseUrl, orgId, tenantId, folderKey}` | All-or-nothing: null unless baseUrl + orgId + tenantId all present; `folderKey` independently nullable. Local fallback: `UIPATH_BASE_URL`/`UIPATH_ORG_ID`/`UIPATH_TENANT_ID` |
|
|
100
|
+
| `params` | Strings bound from `:param` path segments | Empty on job runs |
|
|
101
|
+
| `headers` | Request headers, keys lowercased — job key at `ctx.headers["x-uipath-jobkey"]` | Empty on job runs |
|
|
102
|
+
|
|
103
|
+
Using the tokens against UiPath APIs → [calling-uipath-apis-guide.md](calling-uipath-apis-guide.md).
|
|
104
|
+
|
|
105
|
+
## Errors
|
|
106
|
+
|
|
107
|
+
Throw `FunctionError` — argument order is `(message, status)`, never `(status, message)`. In JS (and transpile-only TS runs) the wrong order slips through and misbehaves at runtime.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
throw new FunctionError("Invoice not found", 404); // HTTP form
|
|
111
|
+
throw new FunctionError("Invoice not found", 404, "NOT_FOUND", { id }); // + errorCode + details
|
|
112
|
+
throw new FunctionError("Already renewed", { errorCode: "ALREADY_RENEWED" }); // status-less — job-only functions (a job fault has no HTTP status)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
- Over HTTP: response status = thrown `status` (500 when omitted); body `{error: <MESSAGE>, details?}`. `errorCode` is job-surface only ([http-semantics-guide.md](http-semantics-guide.md)); fault mapping → [job-mode-guide.md](job-mode-guide.md).
|
|
116
|
+
- Plain `Error` or any other throw: 500, generic code `JsCodedFunction.HandlerError`, message as `error`, stack as `details` (customer-owned code is not sanitized).
|
|
117
|
+
- Custom error classes: extend `FunctionError` and pass status/errorCode through `super` — e.g. to carry a downstream API's status. Do not reassign `this.name`: the runtime identifies a `FunctionError` structurally by `name === "FunctionError"`, not by `instanceof FunctionError`.
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
class UpstreamError extends FunctionError {
|
|
121
|
+
constructor(message: string, downstreamStatus: number) {
|
|
122
|
+
super(message, downstreamStatus, "UPSTREAM_API_ERROR");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Response helpers
|
|
128
|
+
|
|
129
|
+
Helpers **return** a `FunctionResponse` — execution continues; use in conditional branches. `FunctionError` **throws** — execution halts; use for auth failures and conditions that invalidate the rest of the handler.
|
|
130
|
+
|
|
131
|
+
| Helper | Status / body |
|
|
132
|
+
|---|---|
|
|
133
|
+
| `ok(body)` / `created(body)` / `accepted(body?)` | 200 / 201 / 202, `body` |
|
|
134
|
+
| `noContent()` | 204, no body |
|
|
135
|
+
| `badRequest(msg?, details?)` | 400, `{error, details?}` |
|
|
136
|
+
| `unauthorized(msg?)` / `forbidden(msg?)` / `notFound(msg?)` / `conflict(msg?)` | 401 / 403 / 404 / 409, `{error}` |
|
|
137
|
+
| `response(status, body?, headers?)` | Any status, full control |
|
|
138
|
+
|
|
139
|
+
## Logging
|
|
140
|
+
|
|
141
|
+
Only the SDK `logger.*` (exported by `@uipath/coded-functions-js-sdk`) is forwarded to Orchestrator job logs — scoped per job key, flushed before the response. `console.*` prints to the local/server console only and is never forwarded.
|