Skip to content

fix(hitl): document node.outputs block with per-field custom outputs#641

Merged
dushyant-uipath merged 1 commit intomainfrom
fix/hitl-skill-node-outputs
May 7, 2026
Merged

fix(hitl): document node.outputs block with per-field custom outputs#641
dushyant-uipath merged 1 commit intomainfrom
fix/hitl-skill-node-outputs

Conversation

@dushyant-uipath
Copy link
Copy Markdown
Collaborator

Summary

  • Add outputs block to the Full Node JSON in hitl-node-quickform.md showing base output/status entries plus per-field custom: true entries for schema output/inOut fields
  • Extend the variables.nodes example to include binding entries for per-field outputs
  • Add note explaining when to add per-field globals to variables.globals
  • Extend the Runtime Variables table with $vars.<nodeId>.<variable> and $vars.<variable> rows

Background

Corresponds to uipcli PR #1894 which fixed addHitlNode() to set node.outputs with per-field outputs (custom: true). flow-core uses node.outputs to generate $vars paths visible on the canvas — without these entries, any custom output variable declared in the schema was invisible to downstream nodes.

Without this doc update, agents writing the node JSON directly would omit the outputs block, causing the same bug.

Test plan

  • Full Node JSON in hitl-node-quickform.md now includes outputs block matching CLI output
  • variables.nodes example shows per-field binding entries
  • Runtime Variables table documents $vars.<variable> path for workflow-global custom outputs

Add outputs block to the Full Node JSON example showing:
- base output and status entries
- per-field custom: true entries for schema output/inOut fields
  (source: =result.<fieldId>, var: <variable>)

Also update variables.nodes example to include per-field binding entries,
add note explaining when to add per-field globals, and extend the Runtime
Variables table with $vars.<nodeId>.<variable> and $vars.<variable> rows.

Aligns with CLI fix in uipcli#1894 which made addHitlNode() set node.outputs
with per-field outputs. flow-core uses node.outputs to expose $vars paths on
the canvas; missing outputs caused custom output variables to be invisible.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

Claude finished @dushyant-uipath's task in 2m 7s —— View job


Reviewing PR #641

  • Read review criteria and project conventions
  • Read PR diff and full changed file
  • Check for cross-skill references, broken links, secrets
  • Post review feedback

Summary

Adds node.outputs block documentation to the HITL QuickForm reference, showing base output/status entries plus per-field custom: true entries for schema output/inOut fields. Also extends the variables.nodes example and Runtime Variables table with per-field output entries. This fills a real gap — without it, agents writing node JSON directly would omit the outputs block entirely.

Change-by-Change Review

1. skills/uipath-human-in-the-loop/references/hitl-node-quickform.mdoutputs block addition (lines 153–158)

Severity: OK

The outputs block is correctly placed in the Full Node JSON example, matching the two base entries (output, status) from the outputDefinition plus per-field custom entries for the notes and decision fields. The source values (=result.notes, =result.decision) use field IDs consistently, and custom: true is present on per-field entries. Structurally sound.

2. variables.nodes example extension (lines 258–267)

Severity: OK

Per-field binding entries for notes and decision are correctly added with matching outputId values. Consistent with the outputs block keys.

3. Per-field outputs paragraph (line 274)

Severity: Low

The paragraph says "the variable property value, or the camelCase-derived name when variable is omitted". "CamelCase-derived" from what — the field label? the field id? The schema rules table (line 290) says variable "defaults to id if not specified", and field id is lowercase-with-hyphens per the id rule. The two descriptions are slightly inconsistent. Consider aligning: either say "defaults to id" here too, or clarify the derivation source if the runtime actually does camelCase conversion.

4. Runtime Variables table rows (lines 371–372)

Severity: OK

Two new rows cleanly document $vars.<nodeId>.<variable> (per-field named variable) and $vars.<variable> (workflow-global). Descriptions are concise and accurate.

5. Stale intro text at line 243

Severity: Medium

Line 243 still reads:

"The HITL node exposes two outputs (output, status)."

The example now shows four outputs, and the whole point of this PR is documenting that per-field outputs exist. An agent reading this sentence first might only generate two entries in variables.nodes and skip the per-field ones. Suggest updating to something like:

"The HITL node always exposes output and status. When the schema has output or inOut fields, per-field outputs are added — see the outputs block above."

Fix this →

What's Missing

  • Line 243 update — the intro sentence for variables.nodes is now stale (see finding feat(CodedAgents): group skill by functionality #5 above). Without updating it, the prescriptive text ("exposes two outputs") contradicts the example and could cause agents to omit per-field entries.

Area Ratings

Area Status Notes
Frontmatter OK Not modified; SKILL.md frontmatter unchanged
E2E Tests OK Not a new skill; changes are additive documentation, no new CLI workflows
Skill Body OK SKILL.md not modified
References & Assets Issue One stale sentence (Medium), one minor ambiguity (Low)
Repo Hygiene OK No secrets, no new cross-skill refs, changes scoped to single file

Issues for Manual Review

  • Verify the source pattern for custom outputs (=result.notes, =result.decision) matches what flow-core actually emits. The standard entries use =result and =result.Action — the per-field entries use =result.<fieldId>, which is plausible but should be confirmed against the CLI output from uipcli PR #1894.
  • Confirm whether "camelCase-derived name" (line 274) accurately describes the fallback when variable is omitted, or if the runtime just uses the field id verbatim.

Conclusion

Solid documentation addition that fills a real gap. One Medium issue: the intro text at line 243 still says "two outputs" which now contradicts the example and could mislead agents. Recommend fixing that sentence before merge. The Low-severity ambiguity in line 274 is worth clarifying but not blocking.


@dushyant-uipath dushyant-uipath merged commit e25691b into main May 7, 2026
9 checks passed
@dushyant-uipath dushyant-uipath deleted the fix/hitl-skill-node-outputs branch May 7, 2026 20:50
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.

2 participants