Skip to content
4 changes: 4 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@
/skills/uipath-maestro-flow/references/plugins/connector-trigger/ @baishalighosh @chandusailella @bai-uipath @rockymadden
/tests/tasks/uipath-maestro-flow/connector_features/ @baishalighosh

# IXP
/skills/uipath-maestro-flow/references/author/references/plugins/ixp/ @jcalero @constantinmuraru @scallaway-uipath @tommilligan @joe-prosser @vlad-crisan @richsilv @AWilcke
/tests/tasks/uipath-maestro-flow/ixp/ @jcalero @constantinmuraru @scallaway-uipath @tommilligan @joe-prosser @vlad-crisan @richsilv @AWilcke

# Review skill
/skills/uipath-review/ @AlvinStanescu @gabrielavaduva @roalexandru

Expand Down
2 changes: 1 addition & 1 deletion skills/uipath-maestro-flow/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: uipath-maestro-flow
description: "Always invoke for `.flow` files. UiPath Maestro Flow (.flow) — build, edit, run, debug, fix, evaluate. Create, connect nodes; connector, approval, script, subflow; triggers, schedules; validate. Upload, publish, manage runs, instances. Diagnose errors, incidents, traces. Design eval sets, evaluators, run Studio Web evals via `uip maestro flow eval`. `uip maestro flow` CLI. For C#/XAML→uipath-rpa. For agents→uipath-agents."
description: "Always invoke for `.flow` files. UiPath Maestro Flow (.flow) — build, edit, run, debug, fix, evaluate. Create, connect nodes; connector, approval, script, subflow, ixp; triggers, schedules; validate. Upload, publish, manage runs, instances. Diagnose errors, incidents, traces. Design eval sets, evaluators, run Studio Web evals via `uip maestro flow eval`. `uip maestro flow` CLI. For C#/XAML→uipath-rpa. For agents→uipath-agents."
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
---

Expand Down
3 changes: 3 additions & 0 deletions skills/uipath-maestro-flow/references/author/CAPABILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ Capability index for building new flows (greenfield) and editing existing flows
| **Wire one node's output into another node's input** | [shared/node-output-wiring.md](../shared/node-output-wiring.md) |
| **Orchestrate RPA, agents, apps** | Relevant resource plugin: [rpa](references/plugins/rpa/), [agent](references/plugins/agent/), [agentic-process](references/plugins/agentic-process/), [flow](references/plugins/flow/), [api-workflow](references/plugins/api-workflow/), [hitl](references/plugins/hitl/) |
| **Embed an AI agent tightly coupled to this flow** | [plugins/inline-agent/](references/plugins/inline-agent/) |
| **Extract structured fields from documents** | [plugins/ixp/](references/plugins/ixp/) — IxP extraction models for PDFs, scanned forms, receipts, invoices, contracts |
| **List IxP models / runtime projects available in flow** | [plugins/ixp/impl.md — Listing Published Models](references/plugins/ixp/impl.md#listing-published-models) — read-only registry search, no `.flow` scaffold or edits |
| **Create a resource that doesn't exist yet** | Use `core.logic.mock` placeholder — see [Edit/Write: Replace a mock](references/editing-operations-json.md#replace-a-mock-with-a-real-resource-node) + relevant plugin's `impl.md` |
| **Add data transform nodes** | [plugins/transform/impl.md](references/plugins/transform/impl.md) |
| **Add an LLM batch transform over CSV rows** | [plugins/batch-transform/impl.md](references/plugins/batch-transform/impl.md) — `uipath.pattern.batch-transform`, gated by tenant flag `canvas.nodes.batch-transform` |
Expand Down Expand Up @@ -131,6 +133,7 @@ Capability index for building new flows (greenfield) and editing existing flows
- [hitl](references/plugins/hitl/) — human input via UiPath Apps
- [agent](references/plugins/agent/) — published AI agent resources
- [inline-agent](references/plugins/inline-agent/) — autonomous agent embedded in flow
- [ixp](references/plugins/ixp/) — published IxP document-extraction models (PDFs, scanned forms, receipts, invoices, contracts)
- [queue](references/plugins/queue/) — Orchestrator queue item creation

### Cross-capability (shared)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,9 @@ Resource nodes invoke published UiPath automations. They are tenant-specific and
| Flow | `uipath.core.flow.{key}` | [flow](plugins/flow/planning.md) |
| API Workflow | `uipath.core.api-workflow.{key}` | [api-workflow](plugins/api-workflow/planning.md) |
| Human Task (app-based) | `uipath.core.human-task.{key}` | [hitl](plugins/hitl/planning.md) |
| Document Extraction | `uipath.ixp.{modelName}.{fullyQualifiedName}` | [ixp](plugins/ixp/planning.md) |

> The IxP entry uses a **two-segment tail** (`{modelName}.{fullyQualifiedName}`), unlike the other resource nodes which use a single-segment `{key}` tail. Both segments are sanitized at registry-emit time. See [plugins/ixp/planning.md](plugins/ixp/planning.md) for the sanitization rule.

### Placeholders

Expand Down Expand Up @@ -202,6 +205,7 @@ Use this when defining edges. Every edge requires a `sourcePort` and `targetPort
| `uipath.core.flow.*` | `input` | `output`, `error` |
| `uipath.core.agentic-process.*` | `input` | `output`, `error` |
| `uipath.core.api-workflow.*` | `input` | `output`, `error` |
| `uipath.ixp.*` | `input` | `success`, `error` |
| `uipath.connector.*` (activities) | `input` | `output`, `error` |
| `core.action.queue.create` | `input` | `success` |
| `core.action.queue.create-and-wait` | `input` | `success` |
Expand Down Expand Up @@ -514,6 +518,13 @@ Quick decision guide. For full details, read the linked plugin's `planning.md`.
- Small ad-hoc reshaping (map/filter/groupBy) without an LLM -> [transform](plugins/transform/planning.md)
- Multi-step reasoning with tool use -> [inline-agent](plugins/inline-agent/planning.md) or [agent](plugins/agent/planning.md)

### "I need to extract structured fields from documents"

- Source is a PDF, scanned form, photo, or email attachment with **variable layout** across inputs (invoices from many vendors, receipts, contracts, forms) -> [ixp](plugins/ixp/planning.md) (`uipath.ixp.{modelName}.{fullyQualifiedName}`)
- Source is already structured (CSV, JSON, database row) -> [script](plugins/script/planning.md) or [transform](plugins/transform/planning.md)
- Need free-form summarization, classification, or open-ended reasoning -> [agent](plugins/agent/planning.md) or [inline-agent](plugins/inline-agent/planning.md)
- IxP model not yet trained -> use `core.logic.mock` and surface in Open Questions

### "The flow needs something outside flow capabilities"

1. Add a `core.logic.mock` placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ uip maestro flow registry get <nodeType> --output json
| `uipath.core.api-workflow.*` | [api-workflow/impl.md](plugins/api-workflow/impl.md) |
| `uipath.core.hitl.*` | [hitl/impl.md](plugins/hitl/impl.md) |
| `uipath.connector.uipath-uipath-dataservice.*` | [connector/data-fabric/impl.md](plugins/connector/data-fabric/impl.md) |
| `uipath.ixp.*` | [ixp/impl.md](plugins/ixp/impl.md) |
| `uipath.connector.*` | [connector/impl.md](plugins/connector/impl.md) |
| `uipath.connector.trigger.*` | [connector-trigger/impl.md](plugins/connector-trigger/impl.md) |

Expand Down Expand Up @@ -101,6 +102,15 @@ uip maestro flow registry search "<resource-name>" --output json

If found in neither, keep the `core.logic.mock` placeholder and note the gap.

#### IxP nodes — context-dispatched, no bindings

IxP extraction nodes (`uipath.ixp.*`) skip binding resolution. Design-time configuration (`folderKey`, `modelName`) is emitted into the BPMN `model.context[]` array at build time (the serializer also pins `digitizationMode` to `"fileUpload"` internally), not into a separate `bindings_v2.json` file or a top-level `bindings[]` entry. Consequence for Phase 2:

- No connection ID to bind — the node carries its tenant context inline.
- `inputs.*` is the source of truth for runtime values; validate against `registry get` `inputDefinition.properties` rather than against a binding schema.
- The node instance also carries a structured `inputs.model` blob (extraction-model metadata) that the property panel's `ixp-model-taxonomy` component reads. Copy `inputDefaults.model` verbatim — omitting it crashes the panel with `Cannot destructure property 'modelName' of 't' as it is undefined`.
- See [plugins/ixp/impl.md](plugins/ixp/impl.md) for the full JSON shape.

### Step 4 — Replace Mock Nodes

For each `core.logic.mock` node in the architectural plan:
Expand Down
Loading
Loading