Skip to content

credentials: Add AI-generated XAML activity docs for Credentials package [STUD-79292]#530

Merged
AlexMarinescuUiPath merged 2 commits intodevelopfrom
feature/credentials/xaml-ai-docs
Mar 30, 2026
Merged

credentials: Add AI-generated XAML activity docs for Credentials package [STUD-79292]#530
AlexMarinescuUiPath merged 2 commits intodevelopfrom
feature/credentials/xaml-ai-docs

Conversation

@AlexMarinescuUiPath
Copy link
Copy Markdown
Contributor

@AlexMarinescuUiPath AlexMarinescuUiPath commented Mar 20, 2026

What changed?

Added structured markdown documentation for all four activities in the UiPath Credentials package, plus a package overview:

  • \AddCredential.md\ - inputs, outputs, configuration, and XAML example
  • \DeleteCredential.md\ - inputs, outputs, configuration, and XAML example
  • \GetSecureCredential.md\ - inputs, outputs, configuration, and XAML example
  • \RequestCredential.md\ - inputs, outputs, configuration, and XAML example
  • \overview.md\ - package-level summary and activity index

All files follow the per-activity reference format: property tables (type, default, description), valid combinations, and copy-paste XAML snippets.

Why?

These docs are generated to support LLM CLI tooling (Claude Code and similar agents) that need structured, machine-readable activity references to assist with automation authoring. Covers the full Credentials package surface area.

Jira Link

STUD-79292

Dependencies

  • None

@AlexMarinescuUiPath AlexMarinescuUiPath enabled auto-merge (squash) March 25, 2026 07:19
@AlexMarinescuUiPath AlexMarinescuUiPath requested a review from a team March 25, 2026 12:21
@viogroza
Copy link
Copy Markdown
Collaborator

claude has found some potential issue (at least one - missing doc for GetCredential - seems valid)
review-e6f0dff.md

@AlexMarinescuUiPath
Copy link
Copy Markdown
Contributor Author

@viogroza Thanks for the review. Reviewed the Claude findings:

  • The missing GetCredential doc is intentional: GetCredential.cs carries [Browsable(false)], meaning it is hidden from the designer and should not appear in public docs. The review confirms this is the right call.
  • No other blocking issues were found. The docs are accurate and ready to ship.

No changes were needed for this PR.

@alexandru-petre
Copy link
Copy Markdown
Collaborator

Documentation Accuracy Review

Cross-verified the 5 doc files against the activity source code, ViewModels, and metadata JSON using two independent analysis passes (one treating docs as source of truth, one treating code as source of truth).

Confirmed Accurate

All property tables, types, kinds (InArgument vs Property), defaults, required/optional markers, XAML examples, and enum references check out across all 4 activities and the overview. The omission of GetCredential ([Browsable(false)]) is correct.

Issues Found

1. DeleteCredential.md — unverifiable behavioral claim

"If no credential with the specified Target exists, the activity returns false without throwing an exception."

The code at DeleteCredential.cs:30-34 simply calls credential.Delete() and returns its result. Whether Delete() returns false vs. throws when the target doesn't exist depends entirely on the external CredentialManagement library — this repo's code doesn't catch or convert that. This claim should be verified with a test, or qualified with "behavior depends on the CredentialManagement library."

2. AddCredential.md — password mutual exclusion edge case

The "neither provided" check uses string.IsNullOrWhiteSpace(password) but the "both provided" check uses password != null. This means:

  • Password = "" + PasswordSecureString = null → treated as neither provided (throws ArgumentNullException)
  • Password = "" + PasswordSecureString = <value> → treated as both provided (throws ArgumentException, because "" != null)

The docs say "Provide exactly one of Password or PasswordSecureString" without noting that empty/whitespace strings are treated as unprovided for one check but as provided for the other. Minor, but could confuse someone passing an empty string.

Not doc bugs, but noticed in passing — metadata JSON issues

ActivitiesMetadataWindows.json has a few copy-paste artifacts:

  • shortName is "AddCredential" for DeleteCredential (line 101), GetSecureCredential (line 137), and RequestCredential (line 221)
  • GetSecureCredential's CredentialType uses "Activity_AddCredential_Property_CredentialType_Name" instead of its own key (line 160)
  • Typo "Outpu" instead of "Output" in GetSecureCredential's Password category (line 190)

Summary

Activity Verdict Notes
AddCredential ✅ Good Minor: empty-string edge case in mutual exclusion
DeleteCredential ⚠️ Good with caveat "Returns false" claim is unverifiable from code
GetSecureCredential ✅ Excellent
RequestCredential ✅ Excellent
overview.md ✅ Excellent

@viogroza
Copy link
Copy Markdown
Collaborator

viogroza commented Mar 30, 2026

my local claude says we are (almost) good
image

Documentation changes:
- DeleteCredential.md: Qualify the 'returns false' behavior claim by noting it depends on external CredentialManagement library
- AddCredential.md: Document empty string edge case in password mutual-exclusion validation

Metadata JSON fixes in ActivitiesMetadataWindows.json:
- Fix shortName copy-paste for DeleteCredential (was 'AddCredential')
- Fix shortName copy-paste for GetSecureCredential (was 'AddCredential')
- Fix shortName copy-paste for RequestCredential (was 'AddCredential')
- Fix GetSecureCredential CredentialType displayNameKey (was using AddCredential key)
- Fix GetSecureCredential CredentialType tooltipKey (was using AddCredential key)
- Fix typo in GetSecureCredential Password category name ('Outpu' -> 'Output')
@AlexMarinescuUiPath
Copy link
Copy Markdown
Contributor Author

Fixed all issues from the documentation accuracy review:

Documentation updates:

  • DeleteCredential.md: Qualified the 'returns false' claim — now notes that behavior depends on the external CredentialManagement library and is not guaranteed by code in this package
  • AddCredential.md: Documented the empty string edge case in password validation — explains how empty strings are treated inconsistently between the mutual-exclusion and neither-nor checks

Metadata JSON corrections (ActivitiesMetadataWindows.json):

  • Fixed shortName for DeleteCredential (was 'AddCredential')
  • Fixed shortName for GetSecureCredential (was 'AddCredential')
  • Fixed shortName for RequestCredential (was 'AddCredential')
  • Fixed GetSecureCredential CredentialType displayNameKey and tooltipKey (were using AddCredential keys)
  • Fixed typo in GetSecureCredential Password category ('Outpu' → 'Output')

Commit: f38b1c1

@sonarqubecloud
Copy link
Copy Markdown

@AlexMarinescuUiPath AlexMarinescuUiPath merged commit 3f4c036 into develop Mar 30, 2026
9 checks passed
@AlexMarinescuUiPath AlexMarinescuUiPath deleted the feature/credentials/xaml-ai-docs branch March 30, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants