Skip to content

feat(maestro-case): build missing API workflows inline during planning#1802

Draft
song-zhao-25 wants to merge 2 commits into
mainfrom
feat/case-create-missing-api-workflow
Draft

feat(maestro-case): build missing API workflows inline during planning#1802
song-zhao-25 wants to merge 2 commits into
mainfrom
feat/case-create-missing-api-workflow

Conversation

@song-zhao-25

Copy link
Copy Markdown
Contributor

Summary

Third creatable kind at the Rule 17 empty-lookup gate (after agent #1622, agentic process #1723): a missing API workflow can now be built inline as an in-solution sibling by a sub-agent invoking uipath-api-workflow, then registered (uip solution project add), rediscovered offline (registry search --type api --local), I/O-verified from the sibling's entry-points.json, and bound (resource:"process" / resourceSubType:"Api" / resourceKey="solution_folder.<name>" / runtime folderPath:"").

Docs-only: 2 commits, 13+9 files. All shared Create-on-Missing machinery ships with #1622 (merged) — this PR adds only the per-type surface + enum widenings, the same delta shape as the agentic leg.

What changed

  • plugins/tasks/api-workflow/planning.md — match-priority ladder, pre-gate in-solution sibling check (--type api --local), and a full ## Creating an API workflow inline section: pinned-I/O contract, SDD-composed Purpose, the builder brief, binding ("Api", folderPath:""), runtime blockquote, failure contract.
  • plugins/tasks/api-workflow/impl-json.md — Built-inline sibling notes (skip tenant tasks describe; I/O from raw entry-points.json; folderPath exception).
  • ~35 enum/label/link widenings across SKILL.md Rule 17 + 9 references (gate label, creatable set agent | api-workflow, routing, --type <agent|api> unions, report shapes, anti-pattern carve-out).
  • Second commit applies a full skill-review pass (13 findings): rule-19a override in the brief (C1), null-guard for user-built siblings' null entry-point I/O (F1), AskUserQuestion consent bridges on the deploy-verification notes (F2), cross-kind name-collision kind-check in both residuals (F5), dedup/pointer compressions, and consistency nits.

api-workflow-specific contract (vs the agent leg)

  • No build-kind choice (JSON-DSL only) — §1b skip clause.
  • Dual-file I/O back-fill clause in the brief: uip api-workflow init leaves entryPoints[0].input/output as null and no CLI verb fills them; the brief mandates back-filling consistently with the Workflow.json root schemas and explicitly overrides uipath-api-workflow rule 19a ("Then edit Workflow.json only") for this deliverable — otherwise a rule-abiding builder skips it and the warn-only verify binds an empty contract.
  • Never uip api-workflow run (real vendor side effects with auth); offline validate is the completion bar. Compute-only in v1 (no IS connector activities).

Runtime evidence (e2e on alpha, 2026-07-01)

  • Full deploy provisions + invokes: solution pack → publish → deploy run (DeploymentSucceeded+SuccessfulActivate) provisioned the Api sibling as a runnable process (<Pkg>.Api.ClassifyApi) in the case's folder; starting the case via or jobs start ran the api-workflow child job to Successful through the folderPath:"" binding. Tenant cleaned after (uninstall + package delete).
  • case debug does NOT provision Api siblings (agents do): the task faults incident 170007 by design. Documented in the plugin, phased-execution.md § Debug notes, and implementation.md Step 13a (consent-gated deploy alternative; declined → report debug-unverifiable and continue).

Relationship to #1723

Independent by design (no stacking): agentic processes stay non-creatable here. Textual overlap only — ~15 one-line enum widenings touch the same lines #1723 widens; whichever merges second resolves mechanical conflicts.

Tests

External L4 suite (manual/interactive — the gate is an AskUserQuestion and the build spawns an Agent-tool sub-agent, which the default coder-eval experiment cannot drive; same rationale as #1622/#1723): case_coding_agent_tests/create-on-missing-api-workflow-test/ — T1 single build/bind/validate (incl. the rule-19a-override back-fill proof), T2/T2b idempotency + on-disk-unregistered residual, T3 mixed agent+api-workflow select-and-skip routing, T4 I/O reconcile mismatch warn-not-block. Draft until the suite is recorded. In-repo coder-eval task deferred, matching both prior legs.

🤖 Generated with Claude Code

song-zhao-25 and others added 2 commits July 2, 2026 09:46
Third creatable kind at the Rule 17 gate (after agent #1622, agentic #1723):
a missing api-workflow can now be built as an in-solution sibling by a
sub-agent invoking uipath-api-workflow, then registered, rediscovered via
--type api --local, and bound (resource process / resourceSubType Api /
resourceKey solution_folder.<name> / runtime folderPath "").

api-workflow specifics vs the agent leg: no build-kind choice; builder brief
mandates back-filling entry-points.json entryPoints[0].input/output.properties
consistently with the Workflow.json root schemas (init scaffolds them null, no
CLI verb syncs them); uip api-workflow run forbidden (vendor side effects) —
offline validate is the completion bar; compute-only (no IS connectors).

Runtime contract (e2e-verified on alpha 2026-07-01): full solution
pack/publish/deploy run provisions the Api sibling as a runnable process and
the case invokes it successfully; case debug does NOT provision Api siblings —
the task faults incident 170007 by design. Caveat carried in the plugin,
phased-execution debug notes, and implementation Step 13a triage.

Independent of PR #1723 by design — agentic processes stay non-creatable here;
whichever merges second resolves ~15 one-line enum conflicts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
C1  brief now declares the entry-points back-fill a sanctioned exception to
    uipath-api-workflow rule 19a ('Then edit Workflow.json only' / 'input/output
    may be null') — without it a rule-abiding builder skips the back-fill and the
    warn-only verify binds an empty contract that only surfaces post-deploy.
F1  null-guard when reading a USER-built sibling's entry-points.json (pre-gate
    check + placeholder upgrade path): fall back to Workflow.json root schemas
    and warn — nothing CLI-syncs that file for Api projects.
F2  both 170007 debug notes now route the full-deploy verification through
    AskUserQuestion (Orchestrator install; Phase 6 no-deploy default), else
    report debug-unverifiable and continue — no autonomous deploy.
F5  cross-kind name collisions: kind-check (registry list --local Category)
    before the 'already exists' adopt path in BOTH residuals; §1 rename check
    extended to existing siblings of any kind.
F3/F6/F8  dedup: sibling-check body and already-exists blockquote compressed to
    pointer+api-specifics; planning.md §3.1 trimmed to identity+links.
F9  split the double 'step 4/5' referent in both match-priority ladders; no-match
    flow ordered: in-solution check → Rule 17 gate → sdd-folder fallback.
F10/F12/F13/F14  get --local example --type <agent|api>; restore --output json
    at registry-discovery §3; text language tags on both briefs; 'the one case'.
F7  skipped — reviewer's materiality judge ruled the impl-json point-of-use
    repetition deliberate (mirrors merged agent baseline).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@song-zhao-25 song-zhao-25 force-pushed the feat/case-create-missing-api-workflow branch from e9c1bf7 to 4c9800b Compare July 2, 2026 16:47
song-zhao-25 added a commit that referenced this pull request Jul 2, 2026
…adopt contract; fix two live-run gaps

Surfaced by the api-workflow L4 suite (T2b, on-disk-unregistered residual) and
verified live on CLI 1.198; both gaps also affect the merged agent leg:
1. registry list --local enumerates only .uipx-registered projects — an
   unregistered on-disk residual is invisible to it, so the adopt path's
   kind-check is now two-step (registered name -> list --local Category;
   unregistered dir -> on-disk project.uiproj ProjectType).
2. uip solution project add refuses 'Project name already exists' even when the
   name is absent from .uipx Projects[] — the collision check keys on stale
   resource declaration files left by a prior registration. Remediation: delete
   resources/solution_folder/package/<Name>.json + the kind's
   process/<category>/<Name>.json, re-run project add (verified: 'Added
   successfully'), then resources refresh regenerates them.

The corrected contract now lives ONCE, kind-agnostically, in
registry-discovery.md § Create-on-Missing 3b; agent/planning.md's residual
blockquote shrinks to a pointer + agent-specific tokens. Open create-on-missing
legs (#1802 api-workflow, #1803 rpa, #1723 agentic) inherit on their next
rebase and should slim their per-type blockquotes to the same pointer shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
song-zhao-25 added a commit that referenced this pull request Jul 2, 2026
…adopt contract; fix two live-run gaps

Surfaced by the api-workflow L4 suite (T2b, on-disk-unregistered residual) and
verified live on CLI 1.198; both gaps also affect the merged agent leg:
1. registry list --local enumerates only .uipx-registered projects — an
   unregistered on-disk residual is invisible to it, so the adopt path's
   kind-check is now two-step (registered name -> list --local Category;
   unregistered dir -> on-disk project.uiproj ProjectType).
2. uip solution project add refuses 'Project name already exists' even when the
   name is absent from .uipx Projects[] — the collision check keys on stale
   resource declaration files left by a prior registration. Remediation: delete
   resources/solution_folder/package/<Name>.json + the kind's
   process/<category>/<Name>.json, re-run project add (verified: 'Added
   successfully'), then resources refresh regenerates them.

The corrected contract now lives ONCE, kind-agnostically, in
registry-discovery.md § Create-on-Missing 3b; agent/planning.md's residual
blockquote shrinks to a pointer + agent-specific tokens. Open create-on-missing
legs (#1802 api-workflow, #1803 rpa, #1723 agentic) inherit on their next
rebase and should slim their per-type blockquotes to the same pointer shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant