test(uipath-agents): coded HITL / process / RAG / tracing tests (PR 4/5)#475
Conversation
|
Claude finished @radugheo's task in 2m 34s —— View job PR Review: test(uipath-agents): coded HITL / process / RAG / tracing tests
SummaryAdds four new coded-agent e2e test tasks covering human-in-the-loop ( Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | N/A | No skill SKILL.md changes |
| E2E Tests | ✅ OK | Four well-structured e2e tasks with shape checks |
| Skill Body | N/A | No skill content changes |
| References & Assets | N/A | No reference changes |
| Repo Hygiene | ✅ OK | No secrets, no cross-skill refs, CODEOWNERS covers parent path |
Issues for Manual Review
- Verify that the
bindings.jsonresource shapes asserted in the check scripts (e.g.,appwithActivityName=create_async,processwithActivityName=invoke_async,indexwithActivityName=retrieve_async) match the current UiPath SDK binding spec. The check scripts encode specific field names and values that could drift if the SDK changes. - Confirm
ContextGroundingRetrieveris still importable fromuipath_langchain.agent.toolsand/oruipath_langchain.retrievers— the RAG check accepts both paths.
Conclusion
Clean PR. The four test tasks are well-structured, consistent with existing coded tests, and make good use of shared utilities. The check scripts are thorough — especially the tracing script's AST-based decorator validation and the HITL script's checkpointer assertion.
Three Low items worth addressing:
- Remove unused
import jsonincheck_hitl_create_task.py:24 - Consider
\bnameanchor incheck_process_invoke.py:54for regex precision - Consider tightening the string-containment import check in
check_tracing_redaction.py:49to a regex for consistency
None are blockers. Approve.
ac9ed4a to
bfc8136
Compare
15da95f to
4aa145b
Compare
bfc8136 to
737e97b
Compare
4aa145b to
23b712b
Compare
737e97b to
fc46782
Compare
23b712b to
2a98b40
Compare
fc46782 to
10872ad
Compare
2a98b40 to
d949d53
Compare
10872ad to
f5c690d
Compare
d949d53 to
9ed1291
Compare
f5c690d to
891fc53
Compare
9ed1291 to
fa8bc6b
Compare
891fc53 to
052970a
Compare
fa8bc6b to
a2b7c01
Compare
1d918e1 to
57c0f60
Compare
a2b7c01 to
d168789
Compare
57c0f60 to
945bcb6
Compare
d168789 to
59ee4c3
Compare
945bcb6 to
bc8ac53
Compare
86bfe71 to
72a8cc6
Compare
bc8ac53 to
bd7c69b
Compare
72a8cc6 to
23543b3
Compare
bd7c69b to
2ea8a8d
Compare
23543b3 to
e3cfe5b
Compare
2ea8a8d to
9aaa640
Compare
e3cfe5b to
f48ca21
Compare
b759597 to
c77a1bc
Compare
9aaa640 to
95d6283
Compare
- skill-agent-coded-hitl-create-task (e2e) — LangGraph agent with interrupt(CreateTask(app_name="ExpenseReview", app_folder_path="Finance", ...)) and a MemorySaver checkpointer. Asserts the imports, the call shape, the checkpointer wiring, and the `app` binding for ExpenseReview/Finance. - skill-agent-coded-process-invoke (e2e) — LangGraph agent with interrupt(InvokeProcess(name="DataScraper", process_folder_path="Workflows", ...)). Asserts the call shape and the `process` binding. - skill-agent-coded-rag-langgraph (e2e) — LangGraph RAG agent with ContextGroundingRetriever(index_name="company_docs", folder_path="Shared") inside a node. Asserts the import path, retriever args, lazy-init, and the `index` binding. - skill-agent-coded-tracing-redaction (e2e) — Simple Function agent whose `main` is decorated with @Traced(name=..., input_processor=..., output_processor=...). Asserts all three kwargs are present and rejects the conflicting hide_input/ hide_output combo.
c77a1bc to
6924bbd
Compare
Summary
Adds four coded-agent tests for the platform capabilities the existing suite never exercised — human-in-the-loop, process invocation, RAG via Context Grounding, and
@tracedredaction.skill-agent-coded-hitl-create-taskinterrupt(CreateTask(app_name="ExpenseReview", app_folder_path="Finance", ...)), compiled with aMemorySavercheckpointer so the interrupt can pause/resume.skill-agent-coded-process-invokeinterrupt(InvokeProcess(name="DataScraper", process_folder_path="Workflows", ...)).skill-agent-coded-rag-langgraphcompany_docsContext Grounding index (ContextGroundingRetriever(index_name=..., folder_path="Shared")) and composes the answer withUiPathChat.skill-agent-coded-tracing-redactionmainis decorated with@traced(name=..., input_processor=..., output_processor=...)to redact passwords and tokens before they reach the trace store.What each check script asserts
interruptandCreateTask;interrupt(CreateTask(app_name="ExpenseReview", app_folder_path="Finance", ...))call shape;.compile(checkpointer=MemorySaver())(orInMemorySaver);bindings.jsondeclares theappresource withActivityName=create_asyncandDisplayLabel=ExpenseReview. Negative case verified: removing the checkpointer makes the check fail.interrupt(InvokeProcess(name="DataScraper", process_folder_path="Workflows", ...))call shape;bindings.jsonprocessresource withActivityName=invoke_async.ContextGroundingRetrieverimported fromuipath_langchain.*and constructed withindex_name="company_docs"/folder_path="Shared";bindings.jsonindexresource withActivityName=retrieve_async; both retriever andUiPathChatare lazy (no module-level construction).maincarries exactly one@traced(...)decorator with all three kwargs:name,input_processor,output_processor. Rejects the conflictinghide_input=True/hide_output=Trueon the same call site (the skill recommends processors overhide_*for partial visibility). Negative case verified.Stacked on #474.
Test plan
check_*.pydry-run green against synthetic well-formed projects.hide_input=Truealongside processors fails.coded/parse and tag lists are consistent.