@uipath/skills 1.197.0-preview.0 → 1.197.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +5 -2
  3. package/CODEOWNERS +5 -3
  4. package/README.md +1 -0
  5. package/assets/skill-status.json +5 -0
  6. package/hooks/send-telemetry.sh +42 -18
  7. package/hooks/suggest-permissions.sh +0 -0
  8. package/hooks/validate-skill-descriptions.sh +0 -0
  9. package/package.json +1 -1
  10. package/skills/uipath-agents/SKILL.md +7 -6
  11. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -3
  12. package/skills/uipath-agents/references/coded/lifecycle/build.md +1 -0
  13. package/skills/uipath-agents/references/coded/lifecycle/setup.md +1 -1
  14. package/skills/uipath-agents/references/coded/quickstart.md +7 -6
  15. package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +3 -1
  16. package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails.md +16 -16
  17. package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +23 -3
  18. package/skills/uipath-agents/references/lowcode/critical-rules/conversational-critical-rules.md +2 -2
  19. package/skills/uipath-agents/references/lowcode/project-lifecycle.md +9 -0
  20. package/skills/uipath-agents/references/lowcode/prompting/conversational-agent-prompting-guide.md +2 -2
  21. package/skills/uipath-api-workflow/SKILL.md +31 -11
  22. package/skills/uipath-api-workflow/references/cli-reference.md +102 -17
  23. package/skills/uipath-api-workflow/references/troubleshooting.md +16 -5
  24. package/skills/uipath-api-workflow/references/workflow-file-format.md +25 -7
  25. package/skills/uipath-coded-apps/SKILL.md +53 -13
  26. package/skills/uipath-coded-apps/assets/fixtures/governance-dashboard-starter-kit.tar.gz +0 -0
  27. package/skills/uipath-coded-apps/assets/scripts/dashboards/build-dashboard.mjs +1371 -0
  28. package/skills/uipath-coded-apps/assets/scripts/dashboards/capability-registry.json +845 -0
  29. package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/build.mjs +338 -0
  30. package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/edit.mjs +248 -0
  31. package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/template.mjs +82 -0
  32. package/skills/uipath-coded-apps/assets/scripts/dashboards/flows/upgrade.mjs +73 -0
  33. package/skills/uipath-coded-apps/assets/scripts/dashboards/lifecycle.mjs +207 -0
  34. package/skills/uipath-coded-apps/assets/scripts/dashboards/setup-admin-folder.mjs +146 -0
  35. package/skills/uipath-coded-apps/assets/scripts/dashboards/tests/regime-eject.test.mjs +124 -0
  36. package/skills/uipath-coded-apps/assets/scripts/dashboards/tests/resolution.test.mjs +1635 -0
  37. package/skills/uipath-coded-apps/assets/templates/web-app-template.md +255 -78
  38. package/skills/uipath-coded-apps/references/create-web-app.md +63 -27
  39. package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +179 -0
  40. package/skills/uipath-coded-apps/references/dashboards/aesthetic/charting.md +138 -0
  41. package/skills/uipath-coded-apps/references/dashboards/aesthetic/layout-patterns.md +152 -0
  42. package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +423 -0
  43. package/skills/uipath-coded-apps/references/dashboards/plugins/deploy/impl.md +322 -0
  44. package/skills/uipath-coded-apps/references/dashboards/primitives/customization.md +66 -0
  45. package/skills/uipath-coded-apps/references/dashboards/primitives/detail-views.md +64 -0
  46. package/skills/uipath-coded-apps/references/dashboards/primitives/incremental-editor.md +92 -0
  47. package/skills/uipath-coded-apps/references/dashboards/primitives/state-file.md +64 -0
  48. package/skills/uipath-coded-apps/references/dashboards/primitives/tier-resolution.md +474 -0
  49. package/skills/uipath-coded-apps/references/debug.md +15 -21
  50. package/skills/uipath-coded-apps/references/oauth-client-setup.md +5 -5
  51. package/skills/uipath-coded-apps/references/oauth-scopes.md +44 -2
  52. package/skills/uipath-coded-apps/references/pack-publish-deploy.md +10 -5
  53. package/skills/uipath-coded-apps/references/patterns.md +10 -5
  54. package/skills/uipath-coded-apps/references/sdk/agents.md +241 -0
  55. package/skills/uipath-coded-apps/references/sdk/governance-traces.md +186 -0
  56. package/skills/uipath-coded-apps/references/sdk/governance.md +72 -0
  57. package/skills/uipath-coded-apps/references/sdk/imports.md +4 -0
  58. package/skills/uipath-coded-apps/references/sdk/maestro.md +114 -0
  59. package/skills/uipath-coded-apps/references/sdk/orchestrator.md +74 -2
  60. package/skills/uipath-coded-apps/references/sdk/pagination.md +2 -0
  61. package/skills/uipath-coded-apps/references/sdk/traces.md +89 -0
  62. package/skills/uipath-coded-apps/references/widgets/validation-station.md +1 -1
  63. package/skills/{uipath-agents/references/coded/frameworks/coded-functions.md → uipath-functions/SKILL.md} +36 -23
  64. package/skills/uipath-governance/SKILL.md +37 -8
  65. package/skills/uipath-governance/references/auth-context.md +101 -0
  66. package/skills/uipath-governance/references/cli-cheatsheet.md +207 -0
  67. package/skills/uipath-governance/references/compliance-pack/catalog/impl.md +79 -0
  68. package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +141 -0
  69. package/skills/uipath-governance/references/compliance-pack/disable/impl.md +39 -0
  70. package/skills/uipath-governance/references/compliance-pack/full-apply/impl.md +164 -0
  71. package/skills/uipath-governance/references/compliance-pack/partial-apply/impl.md +266 -0
  72. package/skills/uipath-governance/references/compliance-pack/partial-apply/merge-overrides-guide.md +28 -0
  73. package/skills/uipath-governance/references/compliance-pack/partial-apply/planning.md +82 -0
  74. package/skills/uipath-governance/references/compliance-pack/partial-apply/synthesize-formdata-guide.md +22 -0
  75. package/skills/uipath-governance/references/compliance-pack/preview-gate.md +43 -0
  76. package/skills/uipath-governance/references/compliance-pack/query/impl.md +75 -0
  77. package/skills/uipath-governance/references/disambiguation-guide.md +15 -0
  78. package/skills/uipath-governance/scripts/merge-overrides.mjs +81 -0
  79. package/skills/uipath-governance/scripts/synthesize-formdata.mjs +86 -0
  80. package/skills/uipath-human-in-the-loop/SKILL.md +30 -25
  81. package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +38 -4
  82. package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +2 -3
  83. package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +92 -34
  84. package/skills/uipath-ixp/SKILL.md +3 -2
  85. package/skills/uipath-ixp/references/label-documents-guide.md +4 -2
  86. package/skills/uipath-maestro-bpmn/validator/bpmn-spec.json +6 -2
  87. package/skills/uipath-maestro-flow/.maintenance/check-all.sh +0 -0
  88. package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +0 -0
  89. package/skills/uipath-maestro-flow/.maintenance/check-depth.sh +0 -0
  90. package/skills/uipath-maestro-flow/.maintenance/check-link-text.sh +0 -0
  91. package/skills/uipath-maestro-flow/.maintenance/check-links.sh +0 -0
  92. package/skills/uipath-maestro-flow/.maintenance/check-orphans.sh +0 -0
  93. package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +0 -0
  94. package/skills/uipath-maestro-flow/.maintenance/check-template.sh +0 -0
  95. package/skills/uipath-maestro-flow/.maintenance/check-uip-commands.sh +0 -0
  96. package/skills/uipath-maestro-flow/.maintenance/check-versions.sh +0 -0
  97. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -1
  98. package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +2 -2
  99. package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/impl.md +11 -11
  100. package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/planning.md +6 -6
  101. package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +88 -78
  102. package/skills/uipath-maestro-flow/references/shared/cli-commands.md +1 -1
  103. package/skills/uipath-planner/SKILL.md +3 -1
  104. package/skills/uipath-planner/assets/templates/rpa-sdd-template.md +15 -0
  105. package/skills/uipath-planner/references/asdd-crosswalk-guide.md +55 -0
  106. package/skills/uipath-planner/references/attended-reauth-pattern-guide.md +43 -0
  107. package/skills/uipath-planner/references/multi-skill-patterns-guide.md +2 -0
  108. package/skills/uipath-planner/references/pdd-analysis-guide.md +1 -0
  109. package/skills/uipath-planner/references/platform-availability-guide.md +2 -3
  110. package/skills/uipath-planner/references/product-selection-guide.md +1 -1
  111. package/skills/uipath-planner/references/sdd-generation-guide.md +11 -5
  112. package/skills/uipath-planner/scripts/docx-extract.sh +0 -0
  113. package/skills/uipath-planner/scripts/sdd-to-docx.sh +2 -3
  114. package/skills/uipath-platform/SKILL.md +3 -4
  115. package/skills/uipath-platform/references/data-fabric/bulk-import.md +4 -2
  116. package/skills/uipath-platform/references/data-fabric/choice-sets.md +8 -3
  117. package/skills/uipath-platform/references/data-fabric/data-fabric.md +74 -25
  118. package/skills/uipath-platform/references/data-fabric/entity-schema.md +90 -94
  119. package/skills/uipath-platform/references/data-fabric/file-attachments.md +1 -1
  120. package/skills/uipath-platform/references/data-fabric/filter-platform-contract.md +1 -1
  121. package/skills/uipath-platform/references/uip-commands.md +0 -1
  122. package/skills/uipath-review/SKILL.md +21 -10
  123. package/skills/uipath-review/references/api-workflows/api-workflow-review-checklist.md +72 -0
  124. package/skills/uipath-review/references/bpmn/bpmn-review-checklist.md +92 -0
  125. package/skills/uipath-review/references/coded-apps/coded-app-review-checklist.md +16 -15
  126. package/skills/uipath-review/references/flows/flow-common-issues.md +1 -25
  127. package/skills/uipath-review/references/flows/flow-review-checklist.md +12 -67
  128. package/skills/uipath-review/references/rpa/long-running-workflow-issues.md +2 -2
  129. package/skills/uipath-review/references/rpa/modern-studio-issues.md +2 -2
  130. package/skills/uipath-review/references/rpa/rpa-common-issues.md +15 -59
  131. package/skills/uipath-review/references/rpa/rpa-review-checklist.md +17 -16
  132. package/skills/uipath-review/references/solution-review-guide.md +1 -1
  133. package/skills/uipath-rpa/SKILL.md +18 -10
  134. package/skills/uipath-rpa/references/cli-reference.md +35 -8
  135. package/skills/uipath-rpa/references/common-activity-card.md +1 -1
  136. package/skills/uipath-rpa/references/debugging.md +117 -56
  137. package/skills/uipath-rpa/references/environment-setup.md +2 -2
  138. package/skills/uipath-rpa/references/error-handling-guide.md +381 -0
  139. package/skills/uipath-rpa/references/reframework-guide.md +2 -0
  140. package/skills/uipath-rpa/references/testing-guide.md +19 -0
  141. package/skills/uipath-rpa/references/ui-automation-guide.md +2 -2
  142. package/skills/uipath-rpa/references/validation-guide.md +9 -12
  143. package/skills/uipath-troubleshoot/SKILL.md +67 -136
  144. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-action-failed-after-find.md +1 -1
  145. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-cell-targeting-failures.md +1 -1
  146. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-element-not-found.md +1 -1
  147. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-get-text-empty-or-wrong-result.md +2 -1
  148. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-invalid-descriptor.md +1 -1
  149. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scroll-search-failures.md +1 -1
  150. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-silent-failures-and-false-results.md +1 -1
  151. package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/delete-range-failures.md +2 -1
  152. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/investigation_guide.md +1 -1
  153. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/connection-and-auth-failures.md +3 -1
  154. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/investigation_guide.md +1 -0
  155. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/authentication-token-invalid.md +1 -1
  156. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/email-trigger-connection-event-failure.md +2 -2
  157. package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +1 -1
  158. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/application-not-found.md +2 -2
  159. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-coordinate-off-screen.md +2 -2
  160. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-disabled.md +3 -3
  161. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-fix.md +3 -3
  162. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/investigation_guide.md +1 -1
  163. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-silent-no-substitution.md +2 -0
  164. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/overview.md +26 -0
  165. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/app-request-trigger-connection-lost.md +40 -0
  166. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/handle-app-request-null-reference.md +34 -0
  167. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/initialize-hub-connection-aggregate-failure.md +40 -0
  168. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/summary.md +9 -0
  169. package/skills/uipath-troubleshoot/references/escalation.md +98 -0
  170. package/skills/uipath-troubleshoot/references/investigation_guide.md +41 -1
  171. package/skills/uipath-troubleshoot/references/knowledge-base-guide.md +22 -24
  172. package/skills/uipath-troubleshoot/references/presenting.md +143 -0
  173. package/skills/uipath-troubleshoot/references/products/integration-service/cns-error-codes-reference.md +91 -0
  174. package/skills/uipath-troubleshoot/references/products/integration-service/dap-error-codes-reference.md +109 -0
  175. package/skills/uipath-troubleshoot/references/products/integration-service/overview.md +9 -3
  176. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/activity-configuration-corrupt.md +52 -0
  177. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-invalid.md +2 -2
  178. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-not-resolved.md +47 -0
  179. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-general-exception.md +2 -2
  180. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-authenticated.md +46 -0
  181. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-found.md +53 -0
  182. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connector-unavailable.md +48 -0
  183. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-dependency-unavailable.md +59 -0
  184. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-events-callback-failed.md +55 -0
  185. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-operation-conflict.md +41 -0
  186. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-permission-denied.md +54 -0
  187. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-solutions-install-failed.md +66 -0
  188. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-trigger-operation-failed.md +48 -0
  189. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/http-client-exception.md +44 -0
  190. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/missing-required-input.md +38 -0
  191. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/request-failed.md +49 -0
  192. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-mapping-mismatch.md +43 -0
  193. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/token-refresh-failed.md +42 -0
  194. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/trigger-execution-failed.md +47 -0
  195. package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +43 -0
  196. package/skills/uipath-troubleshoot/references/products/maestro/investigation_guide.md +4 -4
  197. package/skills/uipath-troubleshoot/references/products/orchestrator/investigation_guide.md +13 -27
  198. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-pending-stale-dispatch.md +2 -2
  199. package/skills/uipath-troubleshoot/references/runtime-exceptions/playbooks/argument-null-exception.md +1 -1
  200. package/skills/uipath-troubleshoot/references/summary.md +33 -12
  201. package/skills/uipath-troubleshoot/references/templates/playbook-template.md +1 -1
  202. package/version-manifest.json +1 -1
  203. package/skills/uipath-troubleshoot/agents/depth-verifier.md +0 -164
  204. package/skills/uipath-troubleshoot/agents/hypothesis-generator.md +0 -42
  205. package/skills/uipath-troubleshoot/agents/hypothesis-tester.md +0 -103
  206. package/skills/uipath-troubleshoot/agents/presenter.md +0 -160
  207. package/skills/uipath-troubleshoot/agents/scope-checker.md +0 -42
  208. package/skills/uipath-troubleshoot/agents/shared.md +0 -97
  209. package/skills/uipath-troubleshoot/agents/triage.md +0 -148
  210. package/skills/uipath-troubleshoot/schemas/evidence.schema.md +0 -118
  211. package/skills/uipath-troubleshoot/schemas/hypotheses.schema.md +0 -71
  212. package/skills/uipath-troubleshoot/schemas/scope-check.schema.md +0 -27
  213. package/skills/uipath-troubleshoot/schemas/state.schema.md +0 -145
  214. /package/{agents → skills/uipath-rpa/agents}/uipath-project-discovery-agent.md +0 -0
@@ -9,7 +9,7 @@
9
9
  "name": "uipath",
10
10
  "source": "./",
11
11
  "description": "UiPath plugin for Claude Code — custom skills, agents, hooks, and MCP servers for UiPath workflows, UI automation, UI testing and UiPath troubleshoot",
12
- "version": "1.197.0",
12
+ "version": "1.197.1",
13
13
  "author": {
14
14
  "name": "UiPath"
15
15
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uipath",
3
- "version": "1.197.0",
3
+ "version": "1.197.1",
4
4
  "description": "UiPath plugin for Claude Code — custom skills, agents, hooks, and MCP servers for UiPath RPA workflows, UI automation, UI testing, Python coded agents and UiPath troubleshoot",
5
5
  "author": {
6
6
  "name": "UiPath"
@@ -30,5 +30,8 @@
30
30
  "openai-agents",
31
31
  "troubleshoot"
32
32
  ],
33
- "skills": "./skills/"
33
+ "skills": "./skills/",
34
+ "agents": [
35
+ "./skills/uipath-rpa/agents/uipath-project-discovery-agent.md"
36
+ ]
34
37
  }
package/CODEOWNERS CHANGED
@@ -8,9 +8,6 @@
8
8
  # Hooks
9
9
  /hooks/ @DragosUnguru @RaduAna-Maria
10
10
 
11
- # Plugin agents
12
- /agents/ @RaduAna-Maria
13
-
14
11
  # Plugin-namespaced slash commands (e.g., /uipath:install-permissions)
15
12
  /commands/ @DragosUnguru @tmatup
16
13
 
@@ -66,6 +63,11 @@
66
63
  /tests/tasks/uipath-agents/lowcode/guardrails/ @apetraru-uipath @valentinabojan @ctiliescuuipath
67
64
  /tests/tasks/uipath-agents/coded/guardrails/ @apetraru-uipath @valentinabojan @ctiliescuuipath
68
65
 
66
+ # Functions skill (Python Coded Functions — Phase 1; JS HTTP/background Phase 2/3)
67
+ /skills/uipath-functions/ @AlexBizon @UiPath/team-coded-agents
68
+ /tests/tasks/uipath-functions/ @AlexBizon @UiPath/team-coded-agents
69
+ /tests/tasks/activation/uipath-functions.jsonl @AlexBizon @UiPath/team-coded-agents
70
+
69
71
  # Planner skill (PDD → SDD design + multi-skill task planning)
70
72
  /skills/uipath-planner/ @RaduAna-Maria
71
73
  /tests/tasks/uipath-planner/ @RaduAna-Maria
package/README.md CHANGED
@@ -95,6 +95,7 @@ Every skill's maturity is tracked in [`assets/skill-status.json`](assets/skill-s
95
95
  | `uipath-coded-apps` | Preview |
96
96
  | `uipath-connector-builder` | In-development |
97
97
  | `uipath-feedback` | Stable |
98
+ | `uipath-functions` | Preview |
98
99
  | `uipath-governance` | In-development |
99
100
  | `uipath-human-in-the-loop` | In-development |
100
101
  | `uipath-ixp` | In-development |
@@ -73,6 +73,11 @@
73
73
  },
74
74
  "last_synced": null
75
75
  },
76
+ "uipath-functions": {
77
+ "status": "preview",
78
+ "confluence": { "page_id": null, "url": null },
79
+ "last_synced": null
80
+ },
76
81
  "uipath-governance": {
77
82
  "status": "in-development",
78
83
  "confluence": {
@@ -11,8 +11,8 @@
11
11
  # The CLI (see UiPath/cli#2600) owns transport, the App Insights connection,
12
12
  # the event name, the authenticated cloud identity, and the `source:
13
13
  # "skills-plugin"` dimension. This hook only derives + sanitizes fields and
14
- # gates on opt-in; value sanitization stays the hook's responsibility because
15
- # the CLI and skills ship co-versioned.
14
+ # gates on the opt-out flag; value sanitization stays the hook's responsibility
15
+ # because the CLI and skills ship co-versioned.
16
16
  #
17
17
  # REGION-SCOPED EXTRACTION (see extract_fields): the payload embeds free-form
18
18
  # customer content (prompts, command lines, stdout/stderr, file contents). A
@@ -23,9 +23,20 @@
23
23
  # ENVELOPE (top-level) -> toolName, toolUseId, sessionId, permissionMode,
24
24
  # durationMs, effortLevel (effort.level), agentType
25
25
  # tool_input -> skillName, uipSubcommand (command), fileExtension
26
- # (file_path), subagentType
26
+ # (file_path), subagentType (subagent_type, or
27
+ # agent_type for a Codex spawn_agent call)
27
28
  # tool_response -> outcome (interrupted/success), subagentModel
28
29
  # (resolvedModel)
30
+ #
31
+ # CROSS-AGENT: registered as a PostToolUse hook, this also runs under other
32
+ # coding agents that honor hooks.json (e.g. Codex). Codex's envelope matches
33
+ # Claude's (hook_event_name, tool_name, tool_use_id, session_id,
34
+ # permission_mode, tool_input/{command,file_path}), so Bash-`uip` and file
35
+ # attribution work unchanged. Differences handled / accepted: agent spawns use
36
+ # `spawn_agent` + tool_input.agent_type (see is_uipath_call + outkey); Codex
37
+ # omits duration_ms / effort.level (-> durationMs null, effortLevel "") and
38
+ # serializes tool_response as a JSON STRING, not an object, so success /
39
+ # interrupted / resolvedModel are absent and outcome is ok|unknown only.
29
40
  # Only derived, low-cardinality, PII-free values ever leave the machine.
30
41
  #
31
42
  # Non-blocking by contract: registered as an async hook in hooks.json
@@ -37,9 +48,9 @@
37
48
  # Structure: pure helpers + side-effecting procedures (below), driven by main()
38
49
  # (bottom). Configuration is env only:
39
50
  # UIPATH_TELEMETRY_DISABLED Gate. Reuses the uip CLI's variable name.
40
- # Send ONLY when explicitly set to "0". Unset
41
- # (default) or "1" -> do not send. Privacy-first
42
- # default-off; absent is treated as disabled.
51
+ # Opt-out: send by DEFAULT. Skip ONLY when set to
52
+ # "1". Unset (default) or "0" -> send. Absent is
53
+ # treated as enabled.
43
54
 
44
55
  set +e
45
56
 
@@ -64,13 +75,22 @@ extract_fields() {
64
75
  k=="permission_mode"||k=="duration_ms"||k=="agent_type"|| \
65
76
  k=="hook_event_name")
66
77
  if (d == 2 && c == "input")
67
- return (k=="skill"||k=="command"||k=="file_path"||k=="subagent_type")
78
+ return (k=="skill"||k=="command"||k=="file_path"||k=="subagent_type"|| \
79
+ k=="agent_type")
68
80
  if (d == 2 && c == "response")
69
81
  return (k=="interrupted"||k=="success"||k=="resolvedModel")
70
82
  if (d == 2 && c == "effort")
71
83
  return (k=="level")
72
84
  return 0
73
85
  }
86
+ # outkey: remap a JSON key to the field name read_fields expects. Codex
87
+ # spawn_agent carries the spawned type in tool_input.agent_type; normalize
88
+ # it to subagent_type so it lands in the same field as Claude (tool_input.
89
+ # subagent_type) and never collides with the envelope agent_type (agentType).
90
+ function outkey(k, d, c) {
91
+ if (d == 2 && c == "input" && k == "agent_type") return "subagent_type"
92
+ return k
93
+ }
74
94
  { buf = buf $0 "\n" }
75
95
  END {
76
96
  n = length(buf)
@@ -88,7 +108,7 @@ extract_fields() {
88
108
  if (c == "\"") {
89
109
  instr = 0
90
110
  if (isval) {
91
- if (buffering) print pkey "\t" cur
111
+ if (buffering) print outkey(pkey, pdepth, ctx) "\t" cur
92
112
  pend = 0; isval = 0
93
113
  } else {
94
114
  laststr = cur
@@ -137,7 +157,7 @@ extract_fields() {
137
157
  if (c==","||c=="}"||c=="]"||c==" "||c=="\t"||c=="\n"||c=="\r") break
138
158
  lit = lit c; i++
139
159
  }
140
- if (interesting(pkey, pdepth, ctx)) print pkey "\t" lit
160
+ if (interesting(pkey, pdepth, ctx)) print outkey(pkey, pdepth, ctx) "\t" lit
141
161
  pend = 0; continue # leave delimiter for the main loop
142
162
  }
143
163
  i++
@@ -190,12 +210,15 @@ is_uipath_call() {
190
210
  Skill)
191
211
  case "$skill" in uipath:*|uipath-*) return 0 ;; esac
192
212
  ;;
193
- Agent)
194
- # UiPath agents or Claude's built-in agent types only — NOT custom agents
195
- # from other plugins (`<plugin>:<name>`) or user-defined ones.
213
+ Agent|spawn_agent)
214
+ # UiPath agents, or a built-in/generic agent type — NOT custom agents from
215
+ # other plugins (`<plugin>:<name>`) or user-defined ones. Claude Code spawns
216
+ # via `Agent` + tool_input.subagent_type; Codex via `spawn_agent` +
217
+ # tool_input.agent_type (the awk normalizes that to subagent_type). `default`
218
+ # is Codex's generic agent — the equivalent of Claude's general-purpose/claude.
196
219
  case "$subagent_type" in
197
220
  uipath:*|uipath-*) return 0 ;;
198
- general-purpose|Explore|Plan|claude|claude-code-guide|statusline-setup|fork) return 0 ;;
221
+ general-purpose|Explore|Plan|claude|claude-code-guide|statusline-setup|fork|default) return 0 ;;
199
222
  esac
200
223
  ;;
201
224
  Bash|PowerShell)
@@ -366,9 +389,10 @@ EOF
366
389
 
367
390
  # --- main ------------------------------------------------------------------
368
391
  main() {
369
- # Send only when telemetry is explicitly NOT disabled (=0). `uip track`
370
- # enforces the same gate on its side; we short-circuit here too.
371
- [ "${UIPATH_TELEMETRY_DISABLED:-1}" = "0" ] || exit 0
392
+ # Opt-out: send by default; skip only when telemetry is explicitly disabled
393
+ # (UIPATH_TELEMETRY_DISABLED=1 or =true). Matches the CLI's isTelemetryDisabled()
394
+ # gate, so `uip track` and this hook short-circuit on the same values.
395
+ case "${UIPATH_TELEMETRY_DISABLED:-0}" in 1|true) exit 0 ;; esac
372
396
 
373
397
  payload="$(cat)"
374
398
  read_fields "$(printf '%s' "$payload" | extract_fields)"
@@ -411,8 +435,8 @@ main() {
411
435
  # `event` key, no envelope, and no `source` (the CLI overrides it).
412
436
  #
413
437
  # Detached subshell ( cmd & ) survives this hook's exit so the agent never
414
- # waits. `uip track` is opt-in and never-fail (exits 0, emits nothing when
415
- # telemetry is off); piping to it is harmless even if the CLI is absent.
438
+ # waits. `uip track` is never-fail (exits 0, emits nothing when telemetry is
439
+ # opted out); piping to it is harmless even if the CLI is absent.
416
440
  ( printf '%s' "$(build_event_json)" | uip track >/dev/null 2>&1 & )
417
441
 
418
442
  exit 0
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/skills",
3
- "version": "1.197.0-preview.0",
3
+ "version": "1.197.1",
4
4
  "description": "UiPath agent skills for Claude Code, Codex, Cursor, Copilot, Gemini and OpenCode — RPA, UI automation, UI testing, coded agents/apps/workflows, and troubleshooting. Distributed as the UiPath Claude Code plugin.",
5
5
  "author": {
6
6
  "name": "UiPath"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: uipath-agents
3
- description: "End-to-end work with UiPath Agents of all types: build, integrate with UiPath Products (e.g., Orchestrator, Flow, Maestro), design with UiPath Tools (e.g., Agent Builder/Studio Web), deploy, and configure/validate. Covers Coded Agents (e.g., LangGraph, LlamaIndex, OpenAI Agents) and Low-Code Agents (`agent.json` / Agent Builder). Excludes coded functions / Functions SDK (separate skill)."
3
+ description: "End-to-end work with UiPath Agents of all types: build, integrate with UiPath Products (e.g., Orchestrator, Flow, Maestro), design with UiPath Tools (e.g., Agent Builder/Studio Web), deploy, and configure/validate. Covers Coded Agents (e.g., LangGraph, LlamaIndex, OpenAI Agents) and Low-Code Agents (`agent.json` / Agent Builder). For deterministic Python Coded Functions (`uip functions`, `uipath.json` functions map, no agent runtime/LLM)→uipath-functions."
4
4
  when_to_use: "Must use when user mentions or implies any Agent lifecycle phase - e.g., auth, design, scaffold, Studio Web sync, flow integration, editing, pack/deploy/version bump, eval, debug, tracing, guardrails, memory spaces, bindings, attachments. Example requests: 'create/build a UiPath agent', 'build a low-code / Agent Builder agent', 'add agent memory spaces', 'build a coded / Python agent (LangGraph / LlamaIndex / OpenAI Agents)', 'scaffold an agent project', 'run / debug / evaluate / deploy my agent'."
5
5
  allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion, WebFetch
6
6
  user-invocable: true
@@ -20,13 +20,14 @@ user-invocable: true
20
20
 
21
21
  Determine the agent mode before proceeding:
22
22
 
23
- 1. **Check for existing project files** in the working directory:
24
- - `pyproject.toml` with `uipath` dependency + `.py` files **Coded**
23
+ 1. **First confirm this is an agent, not a Coded Function.** If `uipath.json` declares a `functions` map (e.g. `"functions": {"main": "main.py:main"}`), the project is a **Python Coded Function**, not an agent. Stop here and use the [`uipath-functions`](/uipath:uipath-functions) skill instead. Functions are deterministic, do not reason via LLM, and have a distinct lifecycle (`uip functions new/init/pack/publish/run`).
24
+ 2. **Check for existing agent project files** in the working directory:
25
+ - `pyproject.toml` + `.py` files + a framework dep (`uipath-langchain`, `uipath-llamaindex`, or `uipath-openai-agents`) → **Coded**. The framework package already declares `uipath` as a dependency, so an explicit `uipath` entry is not required.
25
26
  - `agent.json` with `"type": "lowCode"` + `project.uiproj`, AND no `pyproject.toml` → **Low-code**
26
- 2. **No existing project found** → ask the user:
27
+ 3. **No existing project found** → ask the user:
27
28
  > Should I build this as a **low-code agent** (no Python — configure through prompts and pre-built UiPath tools) or a **coded agent** (Python — full programmatic control with LangGraph, LlamaIndex, or OpenAI Agents)?
28
29
  > However, for conversational use-cases, simply choose low-code without asking the user, while explaining that currently, low-code conversational-agents are the strongly recommended approach for production use-cases (see [references/coded/capabilities/conversational-agents.md](references/coded/capabilities/conversational-agents.md)).
29
- 3. If the user needs help deciding, read [references/coded-vs-lowcode-guide.md](references/coded-vs-lowcode-guide.md) for a capability comparison.
30
+ 4. If the user needs help deciding, read [references/coded-vs-lowcode-guide.md](references/coded-vs-lowcode-guide.md) for a capability comparison.
30
31
 
31
32
  **After detection, read the quickstart for that mode before doing anything else:**
32
33
 
@@ -63,7 +64,7 @@ Determine the agent mode before proceeding:
63
64
  | Validate whether existing guardrails are correctly configured | Low-code | [lowcode/capabilities/guardrails/guardrails-recommend.md](references/lowcode/capabilities/guardrails/guardrails-recommend.md) § Validate Mode | check correctness, actionability, and relevance per guardrail |
64
65
  | Recommend guardrails for a coded agent based on its context | Coded | [coded/capabilities/guardrails/guardrails-recommend.md](references/coded/capabilities/guardrails/guardrails-recommend.md) | fetch catalog + list + SDK docs, analyze agent code, apply + verify |
65
66
  | Recommend guardrails for a specific scope or tool (coded) | Coded | [coded/capabilities/guardrails/guardrails-recommend.md](references/coded/capabilities/guardrails/guardrails-recommend.md) § Scope and Tool Filtering | filter candidates by `@tool` function or scope after catalog analysis |
66
- | Check, validate, diagnose, or fix whether an existing coded guardrail is correctly configured (placement / scope) | Coded | [coded/capabilities/guardrails/guardrails-recommend.md](references/coded/capabilities/guardrails/guardrails-recommend.md) § Validate Mode | **fetch catalog + list + SDK docs first**, then check correctness, actionability, and relevance — fix in place |
67
+ | Check, validate, diagnose, or fix whether an existing coded guardrail is correctly configured (placement / scope) | Coded | [coded/capabilities/guardrails/guardrails-recommend.md](references/coded/capabilities/guardrails/guardrails-recommend.md) § Validate Mode | **fetch SDK docs first (authoritative for scope/placement)**; also fetch catalog + list for relevance/entitlement then check correctness, actionability, and relevance — fix in place |
67
68
  | Embed a low-code agent inline in a flow, or wire a multi-agent solution | Low-code | [lowcode/lowcode.md](references/lowcode/lowcode.md) § Capability Registry | `lowcode/capabilities/inline-in-flow/inline-in-flow.md`, `lowcode/capabilities/process/solution-agent.md` |
68
69
  | Run low-code evaluations | Low-code | [lowcode/evaluations/evaluate.md](references/lowcode/evaluations/evaluate.md) | `lowcode/evaluations/evaluators.md`, `lowcode/evaluations/evaluation-sets.md`, `lowcode/evaluations/running-evaluations.md` |
69
70
  | Run offline evals for a published Orchestrator package | Low-code | [lowcode/evaluations/orchestrator-eval-run.md](references/lowcode/evaluations/orchestrator-eval-run.md) | Use `uip or eval run-offline-evals` (requires package published to Orchestrator) |
@@ -12,6 +12,8 @@ Both workflows are driven by live data — the catalog (`uip agent guardrails ca
12
12
 
13
13
  ## Step 0 — Fetch Catalog, Available Validators, and SDK Docs (MANDATORY — do this before any analysis)
14
14
 
15
+ > Full three-fetch mandate applies to **Recommend mode**. In **Validate mode** of an existing guardrail the SDK docs are the authoritative, sufficient source for a validator's scope/stage — `catalog` (relevance metadata) and `list` (tenant entitlement) are recommended cross-checks, not a hard prerequisite for a scope/placement fix. See [Validate Mode](#validate-mode).
16
+
15
17
  ### Catalog (cacheable — 30-minute TTL)
16
18
 
17
19
  The catalog is the same for all tenants (authored metadata, rarely changes). Cache it locally for 30 minutes to avoid redundant calls.
@@ -219,7 +221,7 @@ Report to the user:
219
221
 
220
222
  Use when the agent already has guardrails and the user asks whether they are correctly configured or appropriate.
221
223
 
222
- **Before any validation, run all three Step 0 fetches** (catalog with cache, guardrails list without cache, SDK docs via WebFetch). The SDK docs are the authoritative source for which Python class corresponds to which `validator_id` and which scopes/stages each class supports.
224
+ **Fetch the SDK docs first (WebFetch) they are the authoritative source** for which Python class corresponds to which `validator_id` and which scopes/stages each class supports; a scope/placement diagnosis is grounded there. Also run the `catalog` and `list` fetches to support the Relevance (`when_not_to_use`) and entitlement checks below — recommended, but not a hard prerequisite once the SDK docs settle the scope question.
223
225
 
224
226
  For each existing guardrail discovered in the Python file (Step 1 from Recommend Mode):
225
227
 
@@ -238,7 +240,7 @@ From the SDK docs and the catalog, look up the validator class referenced in the
238
240
 
239
241
  ### Actionability Check
240
242
 
241
- 1. From the catalog entry, read `allowed_scopes` and the per-scope allowed stages.
243
+ 1. Read the validator's allowed scopes and per-scope stages from the **SDK docs** (authoritative for coded); cross-check against the `catalog` entry's `allowed_scopes` when it was fetched.
242
244
  2. Confirm the in-code scope is permitted:
243
245
  - Middleware — every `GuardrailScope` in the `scopes=[...]` argument is in `allowed_scopes`.
244
246
  - Decorator — the function the `@guardrail` decorates matches the implied scope: `@tool` for Tool scope, LLM factory for LLM scope, agent factory for Agent scope.
@@ -270,7 +272,7 @@ python3 -c "import ast; ast.parse(open('graph.py').read())"
270
272
 
271
273
  ## Critical Rules
272
274
 
273
- 1. **Always fetch catalog first** (use cache if fresh); **always fetch guardrails list second** (no cache); **always fetch the two SDK doc pages via WebFetch third** (no cache). All three are required before any analysis or code edit.
275
+ 1. **Recommend mode / net-new adds:** fetch catalog first (use cache if fresh), guardrails list second (no cache), and the two SDK doc pages via WebFetch third (no cache) all three required before any analysis or code edit. **Validate mode of an existing guardrail:** the SDK docs are the authoritative, sufficient grounding for a scope/placement fix; still fetch catalog + list for the Relevance and entitlement checks, but they are not a hard prerequisite.
274
276
  2. **If `GuardrailCatalogUnavailable`** → surface the message and stop. Do not fall back to guessing or hardcoded recommendations.
275
277
  3. **Only recommend `Available` validators**. Mention `Unauthorised` ones to the user so they can contact their administrator.
276
278
  4. **Every recommendation must cite** the catalog entry's `when_to_use` or a specific `use_cases` item that matched the agent's context. Do not recommend a guardrail without explaining why it applies.
@@ -45,6 +45,7 @@ Load capability references **only if the task requires them** — do not preload
45
45
 
46
46
  ## Additional Instructions
47
47
 
48
+ - **File/document input → `Attachment`, never a filesystem path string.** If the prompt says the agent "takes a CSV/PDF/file as input" (or similar), read `../capabilities/file-attachments.md` before defining the `Input` model. A `str` path field runs locally with `uip codedagent run` but breaks on Studio Web/Orchestrator, where no such path exists in the container.
48
49
  - **Select a framework before writing any code.** Infer from the prompt if possible (tools/orchestration → LangGraph, RAG → LlamaIndex, simple LLM → OpenAI Agents, no LLM → Coded Function). If ambiguous, ask the user to choose.
49
50
  - **Structured input contract → not OpenAI Agents.** OpenAI Agents always require a `messages` input field and cannot express an input contract without it (see `../frameworks/openai-agents-integration.md` § Input). When the user needs a strict typed/structured input (e.g. a single named field, no `messages`), choose LangGraph (custom `StateGraph` with arbitrary input state) instead. Do NOT silently fall back to a Coded Function to satisfy the input shape — a Coded Function produces `ProjectType: Function`, not a coded agent, so it does not fulfill a request for an agent.
50
51
  - **Read ONLY the single framework reference** for the selected framework before writing code. Do NOT read other framework references or capability references unless the task explicitly requires that capability.
@@ -94,7 +94,7 @@ Edit the scaffolded `main.py`'s `Input` / `Output` models and `async def main` t
94
94
  ```
95
95
 
96
96
  **Key fields:**
97
- - **`runtimeOptions.isConversational`** - Set `true` for conversational/chat agents
97
+ - **`runtimeOptions.isConversational`** - scaffold defaults to `false` (single-shot). Building a chat/conversational agent? Flip to `true` BEFORE `uip codedagent init` so `entry-points.json` gets the chat shape. See [conversational-agents](../capabilities/conversational-agents.md).
98
98
  - **`packOptions`** - Control which files are included when packaging for deployment
99
99
  - **`functions`** - Entrypoint mappings (format: `"file_path:function_name"`)
100
100
 
@@ -313,14 +313,15 @@ Execute the following in order, end-to-end, in one pass — do not pause for con
313
313
 
314
314
  ## Framework Selection
315
315
 
316
- Infer the framework from the user's prompt when possible. If ambiguous, ask them to choose:
316
+ > **First is this an agent at all?** If the task is deterministic logic with no LLM reasoning (validate data, call an API with custom auth, transform records, upload/download files), it's a **Python Coded Function** — not an agent. Use the [`uipath-functions`](/uipath:uipath-functions) skill instead of this one. Coded Functions use typed I/O (`@dataclass`, Pydantic `BaseModel`, or a thin Python class with typed annotations) and a `functions` map in `uipath.json`; what distinguishes an agent is LLM reasoning and a framework graph.
317
317
 
318
- 1. **Coded Function** Plain Python with `Input`/`Output` models. No LLM. Best for deterministic logic.
319
- 2. **LangGraph** — StateGraph with conditional routing, tool use, interrupts. Best for complex LLM agents.
320
- 3. **LlamaIndex** — Workflow with events and RAG support. Best for knowledge retrieval.
321
- 4. **OpenAI Agents** — Lightweight agent with tools and handoffs. Best for simple LLM agents; lacks HITL, process invocation, and state persistence.
318
+ If the task needs LLM reasoning, infer the framework from the user's prompt when possible. If ambiguous, ask them to choose:
322
319
 
323
- **Inference hints:** mentions of tools/tool calling, multi-step, or orchestration → LangGraph. RAG or knowledge retrieval LlamaIndex. Simple handoffs or lightweight LLM OpenAI Agents. No LLM needed → Coded Function. Summarize / research / synthesize over PDF or TXT (incl. bucket files, attachments) → not a framework choice — see [capabilities/deeprag/planning.md](capabilities/deeprag/planning.md). Per-row CSV extraction see [capabilities/batch-transform/planning.md](capabilities/batch-transform/planning.md). When in doubt, ask.
320
+ 1. **LangGraph** (recommended best integrated with the UiPath ecosystem) StateGraph with conditional routing, tool use, interrupts. Best for complex LLM agents.
321
+ 2. **LlamaIndex** — Workflow with events and RAG support. Most complete LangGraph alternative.
322
+ 3. **OpenAI Agents** — Lightweight agent with tools and handoffs. Best for simple LLM agents; lacks HITL, process invocation, and state persistence.
323
+
324
+ **Inference hints:** mentions of tools/tool calling, multi-step, or orchestration → LangGraph. Simple handoffs or lightweight LLM → OpenAI Agents. No LLM needed → not an agent — use [`uipath-functions`](/uipath:uipath-functions). Summarize / research / synthesize over PDF or TXT (incl. bucket files, attachments) → not a framework choice — see [capabilities/deeprag/planning.md](capabilities/deeprag/planning.md). Per-row CSV extraction → see [capabilities/batch-transform/planning.md](capabilities/batch-transform/planning.md). When in doubt, ask.
324
325
 
325
326
  **Always tell the user which framework you selected and why** before proceeding to build. Example: "I'll use **LangGraph** for this agent since it involves tool calling and multi-step orchestration."
326
327
 
@@ -119,6 +119,8 @@ When a validator supports **more than one scope** (e.g. `pii_detection` allows A
119
119
 
120
120
  Concretely: **PII detection meant to stop the agent handling personal data goes at `selector.scopes: ["Agent"]`, not `["Llm"]`** — both are listed in `AllowedScopes` for `pii_detection`, but Agent · PRE blocks the run earlier (before the LLM call) and covers the whole agent, not just one model invocation. Only drop to a narrower scope when the validator does not support the broader one (`prompt_injection` and `user_prompt_attacks` are Llm-only, so Llm · PRE is the earliest available for them) or when the user explicitly asks for a narrower scope.
121
121
 
122
+ > **Conversational agents: this entire table is autonomous-only.** Built-in validators (any `$guardrailType: "builtInValidator"` — the validators returned by `uip agent guardrails list`) are **not usable on conversational agents** (`agent.json` → `metadata.isConversational: true` / `settings.engine: "conversational-v1"`). Do NOT recommend or author any `builtInValidator` for a conversational agent. The only guardrails that run are `$guardrailType: "custom"` deterministic rules (word/number/boolean/always) scoped to a `Tool`. If the user asks for built-in-style detection (PII, harmful content, injection) on a conversational agent, explain it is autonomous-only and offer a Custom deterministic Tool guardrail or an autonomous agent. Detect `isConversational` before applying the preference table. See [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1.
123
+
122
124
  Always confirm the chosen scope is in the validator's `AllowedScopes` from the guardrails list — never assume a scope the catalog/SDK does not permit.
123
125
 
124
126
  ### Step 5 — Choose the Action
@@ -218,7 +220,7 @@ If the user asks to fix identified issues: apply corrections to `agent.json`, ru
218
220
  4. **Every recommendation must cite** the catalog entry's `when_to_use` or a specific `use_cases` item that matched the agent's context. Do not recommend a guardrail without explaining why it applies.
219
221
  5. **Never recommend two validators with the same `security_category` at the same scope and stage** (e.g. `prompt_injection` + `user_prompt_attacks` at Llm PRE). De-duplicate per Step 3: drop catalog-deprecated entries, keep the best fit, mention the alternative. Derive the grouping and deprecation from the catalog's own fields — do not hardcode validator names.
220
222
  6. **Default the action to the catalog example's `action_type`; never silently downgrade `block` → `log`.** Security-critical guardrails (`adversarial_input`, `content_safety`) default to `{"$actionType": "block"}`. If you use `{"$actionType": "log"}` for a guardrail whose catalog default is `block`, state it and the reason in the report (Step 5).
221
- 7. **Block as early as possible — pick the outermost scope the validator allows.** For input protection (PII, jailbreak, injection) prefer `selector.scopes: ["Agent"]` over `["Llm"]` over `["Tool"]`, so the run halts before the LLM call. PII meant to stop the agent handling personal data goes at **Agent**, not Llm. Only narrow when the validator is scope-restricted (e.g. `prompt_injection` / `user_prompt_attacks` are Llm-only) or the user asks for a narrower scope. See Step 4.
223
+ 7. **Block as early as possible — pick the outermost scope the validator allows.** For input protection (PII, jailbreak, injection) prefer `selector.scopes: ["Agent"]` over `["Llm"]` over `["Tool"]`, so the run halts before the LLM call. PII meant to stop the agent handling personal data goes at **Agent**, not Llm. Only narrow when the validator is scope-restricted (e.g. `prompt_injection` / `user_prompt_attacks` are Llm-only) or the user asks for a narrower scope. See Step 4. **Exception — conversational agents: built-in validators are NOT usable at all** (Critical Rule 1); this whole preference is autonomous-only. Detect `isConversational` first — if true, do not author any `builtInValidator`; conversational agents run only Custom deterministic `Tool` guardrails.
222
224
  8. **For Tool scope**: verify the tool exists in `resources/` before writing `matchNames`. If the agent has no tool resources, do not add a Tool-scoped guardrail.
223
225
  9. **Correctness validation uses `uip agent guardrails list` output** — `Parameters[].Type`, `Options`, `KeySource`, `Min`, `Max`, `Step` are the authoritative source for all parameter rules. Do not hardcode validator-specific knowledge.
224
226
  10. **The cache file is `.guardrails-catalog-cache.json`** in the working directory. Add it to `.gitignore` if one exists.
@@ -8,11 +8,11 @@ Two types exist:
8
8
  - **`custom`** — deterministic rules you define (word matching, number comparison, boolean checks, universal triggers)
9
9
  - **`builtInValidator`** — UiPath Guardrails API validators (PII detection, harmful content, prompt injection, IP protection, user prompt attacks)
10
10
 
11
- > **Autonomous agents:** All guardrails are configured at the `agent.json` root `guardrails` array. **Conversational agents:** see § Conversational Support below the runtime-effective location is each tool's `resources/<Tool>/resource.json` → `guardrail.policies[]`.
11
+ > **Autonomous agents:** All guardrails are configured at the `agent.json` root `guardrails` array. **Conversational agents:** the `agent.json` root `guardrails[]` is **authoritative** (source for the Studio Web UI and both runtimes); each Tool-scoped guardrail is also mirrored into the tool's `resources/<Tool>/resource.json` → `guardrail.policies[]` — see § Conversational Support below.
12
12
 
13
13
  ## Conversational Support
14
14
 
15
- **Status: Tool-scoped only, per-tool resource files are authoritative.** Conversational agents support guardrails with `selector.scopes: ["Tool"]` onlyDO NOT use `"Agent"` or `"Llm"`.
15
+ **Status: Custom (deterministic) `Tool`-scoped guardrails ONLY. No built-in validators.** Built-in validators (any `$guardrailType: "builtInValidator"` — the validators returned by `uip agent guardrails list`; see the [Validators Quick Reference](#validators-quick-reference)) are autonomous-only the conversational runtime never runs them, at any scope. The only guardrails that run are `$guardrailType: "custom"` deterministic rules (word/number/boolean/always) with `selector.scopes: ["Tool"]`. Write each as the **same object (same `id`) in two places** the `agent.json` root `guardrails[]` is **authoritative** (source for the Studio Web UI and both runtimes); the tool's `resources/<Tool>/resource.json` → `guardrail.policies[]` is its **mirror**. Write both (the CLI doesn't auto-sync), but a guardrail present only in the tool resource is invisible in Studio Web and does not run on the Unified (Python) runtime. `"Agent"` and `"Llm"` scopes are not available. If asked for PII / harmful-content / injection detection, explain built-in validators are autonomous-only and offer a Custom Tool guardrail or an autonomous agent instead.
16
16
 
17
17
  This restriction is enforced as [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1.
18
18
 
@@ -34,7 +34,7 @@ Every guardrail object in the `guardrails` array shares these base fields:
34
34
 
35
35
  The `selector` field controls where the guardrail applies.
36
36
 
37
- > **Conversational agents — use `["Tool"]` ONLY. `"Agent"` and `"Llm"` are NOT available; DO NOT use them.** (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Rule 1).
37
+ > **Conversational agents — Custom (deterministic) `Tool` guardrails ONLY; no `builtInValidator` at all. `"Agent"`/`"Llm"` scopes are NOT available.** (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Rule 1).
38
38
 
39
39
  ```json
40
40
  "selector": {
@@ -102,7 +102,7 @@ Each entry in the `Data` array contains:
102
102
 
103
103
  Do not hardcode assumptions about scope/stage support or availability.
104
104
 
105
- > **Conversational override** (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1)**.** `AllowedScopes` describes what the validator's schema accepts — it is **not** the set of scopes valid for the runtime you're targeting. For low-code conversational agents, **intersect `AllowedScopes` with `["Tool"]`** before writing `selector.scopes`. If the validator does not list `"Tool"` in `AllowedScopes`, it cannot be used in a conversational agent do not substitute `"Agent"` or `"Llm"` as a workaround those scopes are not available for conversational agents.
105
+ > **Conversational override** (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1)**.** `AllowedScopes` describes what a **built-in validator's** schema accepts — but built-in validators are **not usable at all** on conversational agents (they are autonomous-only). Do NOT author any `builtInValidator` guardrail for a conversational agent, at any scope. The only guardrails the conversational runtime runs are `$guardrailType: "custom"` deterministic rules scoped to `Tool`.
106
106
 
107
107
  ## Actions
108
108
 
@@ -569,24 +569,24 @@ Built-in validators call the UiPath Guardrails API. They have a `validatorType`
569
569
 
570
570
  ### Validators Quick Reference
571
571
 
572
- > **For conversational agents (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1): use `"Tool"` only DO NOT use the `Agent` and `Llm` entries below.** The Scopes column is the validator's schema-level support, not the conversational runtime's support: `Agent`/`Llm` are not available for conversational agents.
572
+ > **These are all `builtInValidator` guardrails — autonomous-only. NONE are usable on conversational agents** (see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1); the conversational runtime runs only Custom deterministic `Tool` guardrails. The table below describes autonomous support.
573
573
 
574
574
  | Validator | Scopes (autonomous) | Conversational | Stages | Supported Actions |
575
575
  |-----------|---------------------|----------------|--------|-------------------|
576
- | `pii_detection` | Agent, Llm, Tool | **Tool only** | Pre + Post | Block, Log, Escalate |
577
- | `prompt_injection` | Llm | **Not usable** (no Tool scope) | Pre only | Block, Log, Escalate |
578
- | `harmful_content` | Agent, Llm, Tool | **Tool only** | Pre + Post | Block, Log, Escalate |
579
- | `intellectual_property` | Llm, Agent | **Not usable** (no Tool scope) | Post only | Block, Log, Escalate |
580
- | `user_prompt_attacks` | Llm | **Not usable** (no Tool scope) | Pre only | Block, Log, Escalate |
576
+ | `pii_detection` | Agent, Llm, Tool | **Not usable** (autonomous-only) | Pre + Post | Block, Log, Escalate |
577
+ | `prompt_injection` | Llm | **Not usable** (autonomous-only) | Pre only | Block, Log, Escalate |
578
+ | `harmful_content` | Agent, Llm, Tool | **Not usable** (autonomous-only) | Pre + Post | Block, Log, Escalate |
579
+ | `intellectual_property` | Llm, Agent | **Not usable** (autonomous-only) | Post only | Block, Log, Escalate |
580
+ | `user_prompt_attacks` | Llm | **Not usable** (autonomous-only) | Pre only | Block, Log, Escalate |
581
581
 
582
- Run `uip agent guardrails list --output json` to get the authoritative list. Only use validators where `Status` is `"Available"`. Use the output to populate `validatorType`, `selector.scopes`, and `validatorParameters` fields. **For conversational agents, intersect `AllowedScopes` with `["Tool"]` if `"Tool"` is not in the validator's `AllowedScopes`, the validator cannot be used in a conversational agent.**
582
+ Run `uip agent guardrails list --output json` to get the authoritative list. Only use validators where `Status` is `"Available"`. Use the output to populate `validatorType`, `selector.scopes`, and `validatorParameters` fields. **These built-in validators are autonomous-only do NOT author any of them on a conversational agent (they will not run at any scope). Conversational agents use Custom deterministic `Tool` guardrails only.**
583
583
  **How to map `uip agent guardrails list` output to guardrail JSON:**
584
584
 
585
585
  | CLI field | Maps to |
586
586
  |-----------|---------|
587
587
  | `Status` | Gate check — only proceed if `"Available"` |
588
588
  | `Validator` | `validatorType` value |
589
- | `AllowedScopes` | Valid values for `selector.scopes` (autonomous). **Conversational: intersect with `["Tool"]`** see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1. |
589
+ | `AllowedScopes` | Valid values for `selector.scopes` (autonomous only built-in validators are not usable on conversational agents; see [../../critical-rules/conversational-critical-rules.md](../../critical-rules/conversational-critical-rules.md) Critical Rule 1). |
590
590
  | `GuardrailStages[scope]` | Valid execution stages for that scope |
591
591
  | `Parameters[].Id` | `validatorParameters[].id` |
592
592
  | `Parameters[].Type` | `validatorParameters[].$parameterType` |
@@ -981,7 +981,7 @@ Add the `guardrails` array at the agent.json root level alongside `settings`, `m
981
981
  4. **Do not add `intellectual_property` to Tool scope** — only `"Llm"` and `"Agent"` scopes are supported.
982
982
  5. **Do not add `intellectual_property` to PreExecution stage** — PostExecution only.
983
983
  6. **Do not omit `matchNames` when `Tool` is in `scopes`** — always explicitly list the target tool names. See [matchNames — "All Tools" Behavior](#matchnames--all-tools-behavior).
984
- 7. **Do not use `filter` action on built-in validators** — `"$actionType": "filter"` is only supported on deterministic rules. All built-in validators (`pii_detection`, `intellectual_property`, `prompt_injection`, `user_prompt_attacks`, `harmful_content`) support only `block`, `log`, and `escalate`.
984
+ 7. **Do not use `filter` action on built-in validators** — `"$actionType": "filter"` is only supported on deterministic (`custom`) rules. Every built-in validator (`$guardrailType: "builtInValidator"`) supports only `block`, `log`, and `escalate` (see the [Validators Quick Reference](#validators-quick-reference) § Supported Actions).
985
985
  8. **Do not use odd numbers or floats for `harmfulContentEntityThresholds`** — only `0`, `2`, `4`, `6` are valid severity values. Values like `3` or `2.5` cause validation errors.
986
986
  9. **Do not add a built-in validator without first running `uip agent guardrails list --output json`** — always fetch the list, verify the validator exists, and confirm `Status` is `"Available"`. Adding an `Unauthorised` or non-existent validator causes runtime failures.
987
987
  10. **Do not use Action Center apps with `Type: "VB Action"` or `Type: "Coded"` as escalation targets** — only entries with `Type: "Workflow Action"` can back a guardrail escalation. Always filter `uip solution resources list --kind App` results by this type.
@@ -1002,15 +1002,15 @@ Use when adding input/output safeguards (PII detection, harmful content blocking
1002
1002
 
1003
1003
  > **MANDATORY: Read this file BEFORE writing any guardrail JSON.** The guardrail schema uses discriminator fields (`$actionType`, `$parameterType`, `$ruleType`, `$selectorType`) that cannot be guessed. PII detection uses `$guardrailType: "builtInValidator"` with `validatorType: "pii_detection"` — NOT `$guardrailType: "pii"`. Parameters use `id` (not `name`) and require `$parameterType`. Actions use `$actionType` (not `type`). PII entities are PascalCase (`"Email"`, not `"email_address"`). There is no `pattern`, `target`, or `message` field.
1004
1004
  >
1005
- > **MANDATORY: Run `uip agent guardrails list --output json` before writing any guardrail**, regardless of type. The command gives you the exact `$parameterType` values, parameter `id` names, and allowed scopes — values you cannot safely derive from the type name alone. Skipping it leads to invalid parameter shapes that fail schema validation.
1005
+ > **MANDATORY for `builtInValidator` guardrails: run `uip agent guardrails list --output json` before writing one.** The command gives you the exact `$parameterType` values, parameter `id` names, and allowed scopes — values you cannot safely derive from the type name alone. Skipping it leads to invalid parameter shapes that fail schema validation. **Custom guardrails (`$guardrailType: "custom"`) do NOT need this step** — their rules (word/number/boolean/always), operators, and actions are fully specified here in this reference and use no validator catalog. Only run `guardrails list` for a custom guardrail if you are unsure whether the request should instead use a built-in validator.
1006
1006
 
1007
- ### Step 0 — Fetch available validators (mandatory for ALL guardrail types)
1007
+ ### Step 0 — Fetch available validators (mandatory for `builtInValidator` guardrails; skip for custom-only)
1008
1008
 
1009
1009
  ```bash
1010
1010
  uip agent guardrails list --output json
1011
1011
  ```
1012
1012
 
1013
- Build a lookup of `{ validatorId: status }` from `Data`. Required for both custom and built-in guardrails — confirms the correct parameter shapes and scope/stage constraints for the guardrail you are about to write.
1013
+ Build a lookup of `{ validatorId: status }` from `Data`. Required before adding any built-in validator — confirms the correct parameter shapes and scope/stage constraints. Skip this step when the guardrail is purely custom (deterministic rules); the validator catalog does not apply to custom rules.
1014
1014
 
1015
1015
  ### Step 1 — Verify existing agent
1016
1016
 
@@ -73,8 +73,8 @@ Generate a unique UUID (e.g., `5029c8a8-799b-426a-803f-c4ec75255439`). Create a
73
73
 
74
74
  Same schema as a standalone agent (see [../../agent-definition.md](../../agent-definition.md)), with these conventions:
75
75
  - `projectId` matches the folder name UUID
76
- - `inputSchema.properties` stays empty `{}` for prompt-only flow-data references. Prompts reference upstream flow nodes directly via `{{ $vars.<flowNodeId>.output[.<field>] }}` in `messages[].content`, mirrored in `contentTokens[]` as `{ "type": "variable", "rawString": " $vars.<flowNodeId>.output[.<field>] " }` (leading and trailing space inside `rawString`). See the `uipath-maestro-flow` skill's [inline-agent prompt-wiring guide](../../../../../uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md#wiring-flow-variables-into-agent-prompts).
77
- - `messages` have empty `content` and `contentTokens` initially. Set prompts in `messages[].content`, then build `messages[].contentTokens[]` as a parallel list: one `{ "type": "simpleText", "rawString": "..." }` per literal text segment, one `{ "type": "variable", "rawString": " $vars.<flowNodeId>.output[.<field>] " }` per `{{ ... }}` reference.
76
+ - `inputSchema.properties`: one `<triggerNodeId>__output__<global>` key per flow input **mandatory**. See [§ Wiring Flow Inputs Into an Inline Agent](#wiring-flow-inputs-into-an-inline-agent-required).
77
+ - `messages[].content`: reference inputs as `{{input.<triggerNodeId>__output__<global>}}` (the `input.` form). Then run `uip agent refresh` to regenerate `contentTokens` from `content` don't hand-author them. See [§ Wiring Flow Inputs Into an Inline Agent](#wiring-flow-inputs-into-an-inline-agent-required).
78
78
  - `guardrails: []` at root level — can be populated with guardrail objects. See [../guardrails/guardrails.md](../guardrails/guardrails.md)
79
79
  - No `metadata.targetRuntime` field
80
80
 
@@ -126,6 +126,24 @@ features/
126
126
  resources/
127
127
  ```
128
128
 
129
+ ## Wiring Flow Inputs Into an Inline Agent (required)
130
+
131
+ **The CLI does not derive the input wiring** — you author it; `refresh` only regenerates `contentTokens` from `content` (it does not fill `inputSchema` or `agentInputVariables`). `flow validate` *does* catch a prompt↔schema mismatch (a `{{input.K}}` that's malformed or names a key not in `inputSchema`), but **not** a missing/wrong node `agentInputVariables` binding — that delivery gap surfaces only at `flow debug`.
132
+
133
+ This skill authors the **`agent.json` side** (flatten rule: `$vars.<trigger>.output.<var>` → `<trigger>__output__<var>`):
134
+ - `inputSchema.properties` — one `<trigger>__output__<var>` key per input (mandatory; binds the delivered `JobArguments` into the agent's `input`). Empty schema → the agent sees the literal `input.<key>` token even when the value arrived.
135
+ - `messages[].content` — reference each input as `{{input.<trigger>__output__<var>}}` (the `input.` form, **not** `$vars`), plus a real system prompt. `content` is the source of truth; run `uip agent refresh` to generate the matching `contentTokens` from it (don't hand-author them).
136
+
137
+ ```json
138
+ "inputSchema": { "properties": {
139
+ "start__output__disputeSummary": { "type": "string", "description": "Bound from $vars.start.output.disputeSummary" }
140
+ } },
141
+ "messages": [{ "role": "user",
142
+ "content": "Write a billing resolution email for this dispute:\n{{input.start__output__disputeSummary}}" }]
143
+ ```
144
+
145
+ The **flow side** — the trigger global and the node `agentInputVariables[]` binding (the only thing the converter turns into `JobArguments`) — is authored through the `uipath-maestro-flow` skill (Critical Rule 15). The full four-piece contract, the converter behavior, and the `content`↔`contentTokens` invariant + validator errors all live there: [inline-agent prompt-wiring guide § Wiring Flow Variables into Agent Prompts](../../../../../uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md#wiring-flow-variables-into-agent-prompts).
146
+
129
147
  ## Refresh and Validate Inline Agent
130
148
 
131
149
  ```bash
@@ -133,7 +151,9 @@ uip agent refresh "<FlowProjectDir>/<projectId>" --inline-in-flow --output json
133
151
  uip agent validate "<FlowProjectDir>/<projectId>" --inline-in-flow --output json
134
152
  ```
135
153
 
136
- `--inline-in-flow` skips `entry-points.json` and `project.uiproj` checks. Refresh regenerates `entry-points.json` and `bindings_v2.json`; validate is read-only.
154
+ `--inline-in-flow` skips the `entry-points.json` / `project.uiproj` checks. In inline mode `refresh` regenerates `messages[].contentTokens` (from `content`) and `bindings_v2.json` — **not** `entry-points.json` (standalone only). `validate` is read-only (it flags `contentTokens` drift but doesn't repair it — fix by re-running `refresh`).
155
+
156
+ **Verify at `flow debug`, not after refresh:** `refresh` never fills `inputSchema` — it is non-empty only because you authored it (`DerivedFiles: 0` is normal and does **not** mean input is missing). The end-to-end check (run `uip maestro flow debug` and confirm the agent resolves the input rather than echoing the literal `input.<key>` token) is owned by the `uipath-maestro-flow` skill — see its [inline-agent guide § Debug](../../../../../uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md#debug).
137
157
 
138
158
  For inline agents with external capabilities (tools, contexts, memory spaces, or escalations), pass `--bindings-target` to **`refresh`** after all flow graph edits:
139
159
 
@@ -4,13 +4,13 @@ These rules are the canonical source for rules specific to low-code conversation
4
4
 
5
5
  ## Critical Rules
6
6
 
7
- 1. **Conversational agents support only Tool-scoped guardrails.** `selector.scopes` for conversational must be `["Tool"]` only `"Agent"` and `"Llm"` scopes are not available. Author conversational guardrails in each affected tool's `resources/<Tool>/resource.json` under `guardrail.policies[]` (runtime-effective) AND mirror them at `agent.json` root `guardrails[]` (Studio Web display). See [../capabilities/guardrails/guardrails.md § Conversational Support](../capabilities/guardrails/guardrails.md#conversational-support).
7
+ 1. **Conversational agents support ONLY Custom (deterministic) guardrails scoped to a Tool.** Built-in validators (any `$guardrailType: "builtInValidator"` — the validators returned by `uip agent guardrails list`) are **autonomous-only**. Author only `$guardrailType: "custom"` deterministic rules (word/number/boolean/always) with `selector.scopes: ["Tool"]` at the `agent.json` root `guardrails[]` (authoritative for UI + runtime), mirrored into each affected tool's `resources/<Tool>/resource.json` `guardrail.policies[]`. Write both (the CLI doesn't auto-sync), but treat the root as the source of truth — a guardrail only in the tool resource is invisible in Studio Web and does not run on the Unified (Python) runtime. `"Agent"` and `"Llm"` scopes are not available. If asked for PII / harmful-content / injection detection on a conversational agent, explain built-in validators are autonomous-only and offer a Custom deterministic Tool guardrail. See [../capabilities/guardrails/guardrails.md § Conversational Support](../capabilities/guardrails/guardrails.md#conversational-support).
8
8
 
9
9
  ## What NOT to Do
10
10
 
11
11
  1. **Do not add properties to the `outputSchema` of a conversational agent.** After initialization, leave `outputSchema` empty. The conversational agent runtime streams responses/tool-call events during the execution, so the final output is not relevant for the end-user in the conversation.
12
12
 
13
- 2. **Do not set `selector.scopes` to anything other than `["Tool"]` for guardrails on a conversational agent, and do not put the guardrail only in `agent.json` root `guardrails[]`** Agent- and Llm-scoped guardrails are not honored by the conversational runtime. The runtime reads guardrails from each tool's `resources/<Tool>/resource.json` → `guardrail.policies[]`; the `agent.json` root array is a Studio Web display mirror. Write to the tool resource (and mirror to agent.json root), per Critical Rule 1.
13
+ 2. **Do not author any `builtInValidator` guardrail on a conversational agent, and do not set `selector.scopes` to anything other than `["Tool"]`.** Built-in validators (any `$guardrailType: "builtInValidator"`) are autonomous-only; Agent- and Llm-scoped guardrails are likewise not honored. Author the Custom `Tool` guardrail at the `agent.json` root `guardrails[]` (authoritative for UI + runtime) and mirror it into the tool's `resources/<Tool>/resource.json` → `guardrail.policies[]`; a guardrail only in the tool resource is invisible in Studio Web and does not run on the Unified (Python) runtime, per Critical Rule 1.
14
14
 
15
15
  3. **Do not remove the user-message `messages[1]`, despite it being irrelevant for Conversational Agents.** Simply leave the message content fields blank. The runtime or other APIs may currently require its presence, so it should be simply left untouched with empty content after the conversational agent project is initialized.
16
16
 
@@ -115,6 +115,15 @@ uip agent refresh [path] --output json
115
115
 
116
116
  **Workflow:** run `uip agent refresh` to apply writes and regenerate derived files, then `uip agent validate` to verify the project is clean. For routine edits with no schema migration pending, refresh is still needed to keep `entry-points.json` and `bindings_v2.json` in sync.
117
117
 
118
+ ### Common refresh / validate errors
119
+
120
+ `refresh` and `validate` share the same static checks. Two errors are easy to misread — resolve at the source, do not spelunk the CLI schema:
121
+
122
+ | Error (in `Data.Errors[]`) | Cause | Fix |
123
+ |---|---|---|
124
+ | `resources/<Folder>/resource.json: folder must be named after the resource name "<Name>" (found "<Folder>")` | Resource folder name must exactly equal the resource's `name` field — case- and whitespace-sensitive (`Count Sources`, not `CountSources`). | Rename the folder to match `name` verbatim, spaces included. |
125
+ | `resources/<Name>/resource.json: Invalid input` (no field path) | A required field on that tool resource is missing or malformed. The path-less message does not name it. Most common cause: the required `guardrail` object is absent (every tool resource requires it, schema V21+). | Add `"guardrail": { "policies": [] }` to the resource. If already present, diff the resource against a CLI-generated one (`uip agent tool add`) for the missing/mistyped field. |
126
+
118
127
  ### `uip agent memory`
119
128
 
120
129
  Manage low-code agent memory space features and seed items. These commands write `features/{FeatureName}/feature.json`; run refresh and validate afterwards to regenerate bindings.
@@ -108,7 +108,7 @@ User message: `""` — left blank. The Conversational Service injects the user t
108
108
  | `settings.temperature` | `0` | Raise for open-ended brainstorming or casual chats. Keep `0` for factual support flows. |
109
109
  | `settings.maxTokens` | `64000` | Set ≤ the model's `MaxTokens` cap — see [model-selection-guide.md](../model-selection-guide.md#1-discover-primary-path). |
110
110
  | `settings.model` | `anthropic.claude-sonnet-4-5-20250929-v1:0` | **Always verify** — discover + select per [model-selection-guide.md](../model-selection-guide.md). |
111
- | `guardrails` | `[]` | Tool-scope only; mirror in tool `resource.json`. See [capabilities/guardrails/guardrails.md](../capabilities/guardrails/guardrails.md) ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Critical Rule 1). |
111
+ | `guardrails` | `[]` | Custom (deterministic) Tool guardrails only — no built-in validators; mirror in tool `resource.json`. See [capabilities/guardrails/guardrails.md](../capabilities/guardrails/guardrails.md) ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Critical Rule 1). |
112
112
 
113
113
  ## Anti-patterns
114
114
 
@@ -118,6 +118,6 @@ User message: `""` — left blank. The Conversational Service injects the user t
118
118
  - **Populating `outputSchema`** — runtime streams events; populated schemas never get filled and confuse the agent ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Anti-pattern 1).
119
119
  - **Templating data into the user message** — the user message content stays blank; per-exchange context goes into the **system prompt** via `inputSchema` templating.
120
120
  - **Adding `messages` or `uipath__*` to `inputSchema`** — reserved names; runtime injects ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Anti-patterns 4 and 5).
121
- - **Using `Agent` or `Llm` guardrail scopes** — silently ignored; only Tool-scope guardrails apply ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Critical Rule 1).
121
+ - **Using built-in validator guardrails (PII, harmful content, etc.) or `Agent`/`Llm` scopes** — built-in validators are autonomous-only and silently ignored; conversational agents support only Custom deterministic `Tool`-scoped guardrails ([critical-rules/conversational-critical-rules.md](../critical-rules/conversational-critical-rules.md) Critical Rule 1).
122
122
  - **Defining citation-generation format in the system prompt** — agent runtime wraps citation formatting around the prompt; redefining it conflicts or confuses citation generation (see § 1 callout).
123
123
  - **Cargo-culted `temperature`** — copying a nonzero temperature into a deterministic, factual-based conversation task.