Skip to content

🍒 [v1.201] feat(uipath-functions): teach JS/TS Coded Functions in the one functions skill (references/js + references/python) - #2996

Open
github-actions[bot] wants to merge 3 commits into
release/v1.201from
feat-add-uipath-functions-js-CP-to-release-v1-201
Open

🍒 [v1.201] feat(uipath-functions): teach JS/TS Coded Functions in the one functions skill (references/js + references/python)#2996
github-actions[bot] wants to merge 3 commits into
release/v1.201from
feat-add-uipath-functions-js-CP-to-release-v1-201

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

What

Teach JS/TS Coded Functions in the one uipath-functions skill. Per review feedback, the skill keeps a single identity with language subfolders:

  • skills/uipath-functions/SKILL.md — merged entry point: language split (project signals, contracts, calling modes), shared + per-language Critical Rules, per-language Quick Starts, merged CLI reference, anti-patterns
  • skills/uipath-functions/references/js/ — 8 guides: authoring (defineFunction, schema-first contracts, ctx, errors), local dev, HTTP semantics + deployed limits, job mode, deployment/cold start, bindings, calling UiPath APIs in-function, Coded App FE↔BE wiring
  • skills/uipath-functions/references/python/ — the Python workflow (scaffold → schema → logic → registration → deps → init → SDK → pack/publish, packOptions), moved out of SKILL.md verbatim

Why: the skill was Python-only and its JS claims went stale when run-as-job shipped (HDENS-7342). HDENS-7284. The invoice-processing vertical is waiting to adopt this in place of their custom skill. (The PR's first commits built this as a sibling uipath-functions-js skill; restructured to one skill per @gabrielavaduva's review — which also eliminates the sibling cross-activation problem entirely.)

Calling-mode model (per platform owner): a JS/TS function declares exactly one calling mode — method + path → HTTP endpoint; omitted → plain run-as-job. Today's permissiveness (an HTTP function can be started as a plain job) is an enforcement gap, documented as such, never a pattern. Dual-surface logic = two thin entries sharing a _-helper.

Also in this PR

  • Stale JS claims removed from the Python content ("JS has no job semantics / cannot be started as jobs" was false)
  • Fact fixes on routing surfaces (single-target routing to uipath-functions is unchanged): uipath-agents Rule 1 + quickstart now show both entrypoint shapes and note init is Python-only; uipath-coded-apps gets an explicit JS-function-backend redirect; uipath-planner capability row covers both languages + a package.json+uipath.json[functions] detection row; uipath-review detection row for JS function projects; uipath-solution init-prerequisite corrected (JS has no uip function init — the uipath.json map is the marker)
  • Activation: 25 JS-signal positives appended to uipath-functions.jsonl (rows 026–050, ids renumbered), 2 adversarial negatives (Azure Function TS, AWS Lambda). The original 25 Python rows are byte-for-byte untouched. @AlexBizon: the gate now measures recall over 50 rows against the 25-row-era baseline of 95 — call out if you'd rather baseline the JS rows separately.
  • Evals: js_smoke (5 JS-signal rows, recall-rate graded) + js_http_author authoring e2e (fixture seeds an exact uip function new scaffold; offline by design — the SDK package is still private, HDENS-7283)
  • function_redirect eval prompt pinned to Python (its graders are Python-only; the skill now legitimately covers JS too)

Passing-run claims (local coder-eval 0.11.5, agent claude-code / claude-sonnet-5, 2026-09-01, against the merged skill)

  • tests/tasks/uipath-functions/js_smoke/js_smoke_trigger.yamlPASSED 5/5 rows, recall.yes 1.0 (threshold 0.66): every JS-signal prompt triggered the merged uipath-functions.
  • tests/tasks/uipath-functions/js_http_author/js_http_author.yamlPASSED 3/3 criteria, weighted 1.0: compliant defineFunction (schema-first contracts, FunctionError 422, hand-synced uipath.json, SDK kept in devDependencies), zero install attempts, checker exit 0. Windows-local caveat, disclosed: $SKILLS_REPO_PATH/$TASK_DIR don't expand under cmd.exe, so the local run inlined those two paths; the committed YAML uses the canonical vars CI's Linux shell expands.

Notes for reviewers

  • Every factual claim in the JS guides was adversarially verified against UiPath/coded-functions-js and UiPath/cli sources (file:line), including corrections to folklore (the 303 long-poll recovery is undocumented; ctx.user IS decoded from a Bearer JWT under local serve; job runs may set a legacy ctx.user compat object — test ctx.user?.accessToken, never !ctx.user).
  • Python content is moved, not rewritten — references/python/workflow-guide.md is the former SKILL.md Workflow section verbatim.
  • Flavors: studioweb inherits all edits; skills:validate + skills:build pass for both trees (27 skills each).
  • Out of scope: Flow-caller use cases from the 2026-08-31 ticket comment that depend on unshipped platform surface (attachments in JS functions, env-var→asset convention, VS Code in-solution lifecycle) — proposed for HDENS-7525.

🤖 Generated with Claude Code


Automatically cherry-picked from #2951 to release/v1.201 by @lucarachiteanu.

⚠️ This cherry-pick has merge conflicts. Conflict markers were committed as-is. Resolve them locally and push to this branch before merging.

Conflicted files:

  • skills/uipath-functions/SKILL.md
  • skills/uipath-review/SKILL.md

@lucarachiteanu lucarachiteanu changed the title 🍒 [CONFLICTS][v1.201] feat(uipath-functions): teach JS/TS Coded Functions in the one functions skill (references/js + references/python) 🍒 [v1.201] feat(uipath-functions): teach JS/TS Coded Functions in the one functions skill (references/js + references/python) Sep 2, 2026
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