docs(uipath-troubleshoot): add Word COM-start background/Session-0 playbook#1606
Open
Stefan-Virgil wants to merge 54 commits into
Open
Conversation
…ow Bedrock path [RE-12529] (#1560) The task's run_limits.task_timeout (900s) sits below its own ~882-905s runtime, so on the slow eu.anthropic.claude-sonnet-4-6 Bedrock path the run is wall-clock-killed before finishing (Task timed out after 900s, score 0.0, ~80% of run-days). Raise task_timeout 900->1500 (modal connector/e2e budget, ~600s headroom over the 882s fast baseline) and max_turns 80->120 (completed run used 71/80). turn_timeout unchanged; task_timeout >= turn_timeout preserved. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…bs) (#1580) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…1570) Four guardrail eval failures, all grader/test bugs — the skill produced valid code in each case: - recommend_all / recommend_scoped: narrow the uipath.platform.guardrails import guard to flag only wrapping symbols (the guardrail decorator and *Middleware classes), not bare validators like CustomValidator that uipath_langchain.guardrails re-exports — so a valid mixed import no longer fails with a false "silently no-ops" verdict. - recommend_all / recommend_scoped / pii_middleware: accept the valid variable-then-spread middleware form (m = Foo(...); middleware=[*m]) in addition to the inline [*Foo(...)] form, via a new shared AST helper (_shared/guardrail_middleware.py). The old regexes matched only the inline spread and rejected functionally-identical code. - user_prompt_attacks_decorator: anchor the prompt to UiPath and add a skill_triggered guard so the agent routes to uipath-agents instead of the globally-installed claude-api skill (which led it to hand-roll an Anthropic-SDK guardrail). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 4 planner tests that inherited the 900s default (3 smoke + the skipped bpmn classifier) now pin turn_timeout: 1800, matching the 5 SDD-generation tests already at 30 minutes. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…1507) * docs: document object-repository read commands in rpa cli reference * docs: correct library-paths flag to comma-separated not repeatable * docs(rpa): route Finding Descriptors to object-repository read commands Wire the new `uip rpa object-repository get` / `get-library` read commands (documented in cli-reference.md by this branch) into the UI Automation guide's Finding Descriptors decision tree: - Step 1: use `object-repository get` to enumerate the project's OR as JSON when ObjectRepository.cs is missing or stale (no Studio Desktop regen). - Step 2: use `object-repository get-library` to list a referenced library's exposed apps/screens/elements instead of only `packages inspect`. Both link to cli-reference.md rather than restating flags. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…es (#1589) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…bs) (#1595) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Adds the required mode:* and lifecycle:* tags to the 5 IS smoke tasks so the Coding Agents Scorecard B/O/T automation can classify them (removes the asterisk on the IS row of the scorecard). Mode/lifecycle values match what tests/reports/uipath-platform.md already inferred per row. Also drops the invented leaf tags (integration-service, activities, connections, connectors, resources, describe, execute) — these duplicate the file path or fall outside the closed tag vocabulary in tests/README.md §Tag Taxonomy. Promotes connections/activities to the proper feature: namespace and adds the flat connector marker where the task exercises a connector. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add back the integration-service marker on the 5 IS smoke tasks so the scorecard / filtering can slice on it. Required mode:* + lifecycle:* tags from the previous commit are preserved. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The task prompt forbids connections create/edit and the criteria only require connections list + ping, so it does not mutate tenant state. Tagging it lifecycle:setup inflated the scorecard's setup coverage and hid a real gap in IS connection setup tests. Drop mode:build for the same reason — list+ping is closer to operate (verifying a live connector's health) than build (creating/editing/deploying). A genuine setup-mode test for IS connections is still missing and should be added separately if browser-driven create/edit can be exercised in the sandbox. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Closes 4 missing uip is verbs (run get/update/replace/delete) in a single e2e walk. Adds the first lifecycle:setup test on the IS axis, filling the gap exposed when connection_lifecycle was retagged to discover. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
First lifecycle:setup test on the Integration Service axis. Exercises uip is connections create with a placeholder PAT/API-key so the create path is shaped correctly even in a sandboxed tenant. Pairs with the existing connection_lifecycle (discover) to give the scorecard genuine coverage of both lifecycle phases. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
First mode:diagnose test on the Integration Service axis. Exercises uip is triggers describe and uip is webhooks config in a "non-firing trigger" diagnostic walk against the Outlook365 EMAIL_RECEIVED trigger. Closes the diagnose-mode gap exposed by the coder-coverage IS capability inventory. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…i-workflow The smoke prompt 'create a Contact in Salesforce' was auto-triggering uipath-api-workflow (which legitimately matches Salesforce/API phrasing) after PR #1518 stripped the explicit skill-load directive. The agent then walked the api-workflow registry resolve/stub path and skipped the required `uip is connectors list --filter` and `uip is resources describe --operation` commands, failing 2 criteria. Nudge the prompt to the raw IS resource execute path and explicitly exclude `uip api-workflow`, matching the pattern PR #1518 used for the maestro-bpmn and platform tasks that mistriggered after the directive removal. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…mmand-path validation (#1585)
…bs) (#1597) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- Add steps subcommand group (list, get, add, update, move, delete) - Note list-steps alias still works alongside steps list - Update testcases update to mention pre/post-condition support - Add --step-id to identifier flag shapes callout - Move --yes requirement to Critical Rule 6 (applies to all deletes) - Trim optional flag lists from rows; agent uses -h for those
…1600) Both skill-sdd-e2e-rpa-process and skill-sdd-integration-constraint-gate overrode turn_timeout: 1800 but left task_timeout unset, so it inherited the experiment default of 1200s. The whole-task wall-clock cap fired before the SDD landed regardless of the per-turn budget. Set task_timeout: 2700 on both so the end-to-end run has headroom across setup turns and grading. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#1583) * docs(uipath-data-fabric): document folder scope, FILE-write silent-strip, and mandatory scope-prompt flow - SKILL.md Rule 6: rewrite FILE-write rule — platform silently strips FILE values from records insert/update/import payloads (Result: Success, column unchanged). receipt:null does NOT clear; receipt:"<uuid>" does NOT swap. - SKILL.md Rule 19: add Mandatory scope-prompt flow — when scope is unspecified, ask via AskUserQuestion with two dropdowns (tenant vs folder; then accessible folders pre-fetched from `uip or folders list`). Never default silently. - entity-schema.md / file-attachments.md / records-query.md: align FILE-write wording with the rule-shaped phrasing in SKILL.md ("Never put FILE-typed key in payload. Expected behavior: silently stripped. Use files upload to attach or replace; files delete to clear.") - file-attachments.md: new section documenting what records get returns for a FILE field — stable per-record-per-field UUID handle, not a content id; filename is not in any read response. - choice-sets.md / bulk-import.md / records-query.md: --folder-key fan-out across every records / files / choice-set verb (CLI ≥ 1.197.0), and --yes/--reason gating with --confirm as deprecated alias. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(uipath-data-fabric): align skill with live CLI response shapes; trim noise Empirically verified every entity / records / files / choice-set CRUD against the live tenant and corrected stale claims in the skill. Response shapes corrected: - entities create: Data.Id (was: Data.ID) - entities list rows: EntityType field ("Entity" / "SystemEntity" / federated), no Source field exists (was: Source: Native / Federated) - entities get fields: Name / Id / FieldDataType.Name / FieldDataType.{Length Limit,MaxValue,MinValue,DecimalPrecision} (was: FieldName / ID / Type) - records list / query: Data.Items (was: Data.Records); NextCursor is an object {Value: "..."} — pass the inner Value to --cursor, not the wrapper - Aggregate alias is PascalCased in the response regardless of how it was sent (verified: total -> Total, my_total_count -> MyTotalCount) - files delete response includes Reason field CLI gating updated for recent server changes: - entities delete, field removal, records delete, files delete all require --yes --reason (was: --confirm). records delete IDs are positional varargs. - choice-sets update requires BOTH --display-name AND --description on every call; sending only one fails (DisplayName required / Internal Server Error) Rule 19 bypass clauses added so the mandatory scope-prompt flow does not block non-interactive contexts: agent proceeds without AskUserQuestion when the prompt explicitly says "do not ask" / names a folder inline / states tenant scope / supplies folder GUIDs, or for pure tenant-wide discovery reads. FILE field binding clarified: bind referenceFieldId to EntityAttachment's Name (NVARCHAR) field. Removed the "attachment-id field" misnomer. Trimmed unnecessary content per the same-pass review: - Dropped the "Relationship violation" troubleshooting row (unverified error string, fix lives in entity-schema.md > FILE Fields) - Dropped PascalCase / camelCase meta-narration where examples already convey the case; kept short footgun notes for genuine subtle traps (id-body vs Id-response on updateFields; type-enum UPPERCASE-only) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(tests): correct DF smoke tasks — files upload is supported; raise complex-fields turn cap * docs(uipath-data-fabric): address PR review + verified FILE-read shape and upload-replace semantics - file-attachments.md: correct FILE-read shape (live-verified against codereval/DefaultTenant). At expansionLevel:0 the field is a UUID string; at expansionLevel:1+ it is an object with Id/Name/Size/Type/Path/EntityId/FieldId/RecordId/CreatedBy/UpdatedBy/CreateTime/UpdateTime. Drops the prior false claim that the filename is unreadable via records verbs. - file-attachments.md: rename "Upload a File" → "Upload or Replace a File"; explicitly document that files upload both attaches (empty field) and replaces in place (existing file) — no files delete needed first. UUID handle is preserved across replace. - file-attachments.md: restructure Prerequisites as numbered list; add explicit "record must already exist" prereq. - records-query.md: tag FILE-write section as Anti-pattern, add inline link to file-attachments.md, and fix wrong "files delete then files upload to replace" guidance (live test proves upload alone replaces). - entity-schema.md: drop record-level FILE-write row from Not Supported table; this file covers schema only — record-level FILE behavior lives in Rule 6 and records-query.md. - SKILL.md Rule 17: fold PascalCase aggregate-alias gotcha into the existing rule (alias: "total" → response key "Total") instead of adding a new critical rule. Live verification on codereval/DefaultTenant covered Rule 5, Rule 6 (insert/update silent-strip), Rule 17 (PascalCase alias, like rejected, Data.Items shape), Rule 19 (--folder-key / --include-folders surface across all verbs, mutually exclusive), Rule 20 (records import drops FILE columns), and files upload response shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…aybook Word Application Scope can fault on COM start (WordAppHelpers.StartNewApplication via ComAppReferenceCountManager.StartOrAttach) with UiPath.Word.WordException "Error opening document, make sure Word application is installed. If already installed, an Office Repair may be required." on an unattended robot — even though Word opens fine interactively. Primary cause: the process is a Background Process (runtimeOptions.requiresUserInteraction: false) running in Session 0 under LOCAL SERVICE with no interactive session, so Office COM cannot start. Modern project.json has no "background": true key — requiresUserInteraction is the flag, which is easy to miss. Adds playbook word-com-start-background-session0.md covering the three causes (background/Session-0, not-installed, broken-registration) with the opens-interactively-but-fails-headless discriminator and the foreground / interactive-session / Use Foreground fix (explicitly: do NOT run Office Repair when Word opens cleanly interactively). Extends the package investigation guide with a faulting-frame routing rule and the requiresUserInteraction run-surface check. Registered in the package summary. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a third playbook to the
word-activitiespackage: the COM-start failure whereWord Application Scopefaults launching Word (WordAppHelpers.StartNewApplication) withUiPath.Word.WordException: "Error opening document, make sure Word application is installed. If already installed, an Office Repair may be required."on an unattended robot.Primary cause this covers: the process is a Background Process (
runtimeOptions.requiresUserInteraction: false) running in Session 0 underLOCAL SERVICEwith no interactive session, so the Office COM server can't start — Word opens fine interactively but the headless robot fails. The playbook also covers Word-not-installed and broken-registration, with the "opens interactively but fails headless" discriminator.Why this one matters
Modern
project.jsonhas no"background": truekey — the flag isrequiresUserInteraction: false, which is easy to miss (a live investigation initially looked for the wrong key and wrongly concluded the project was fine). The playbook and the package investigation guide now encode the correct check.What's included
playbooks/word-com-start-background-session0.md— signature, three causes, host-side discriminators, and the foreground / interactive-session /Use Foregroundfix (explicitly: do not run Office Repair when Word opens cleanly interactively).investigation_guide.md— faulting-frame routing rule (start vs open vs cast) +requiresUserInteractionrun-surface check.summary.md— registers the playbook.Stacking
Sourced from a live troubleshooting investigation of a faulted unattended job (UiPath.Word.Activities 2.6.0-alpha; product 25.10).
🤖 Generated with Claude Code