feat: add uipath-claude-sdk integration package#364
Open
radu-mocanu wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new uipath-claude-sdk integration package that allows running agents built with Anthropic’s claude-agent-sdk on the UiPath runtime, including schema/graph extraction, standard + conversational execution modes, and default routing of LLM traffic through the UiPath LLM Gateway via a local proxy.
Changes:
- Implement Claude SDK runtimes (standard + conversational) with schema/graph reporting and resumable conversation support.
- Add a local gateway proxy translating Anthropic SSE ↔ AWS Bedrock event stream for UiPath LLM Gateway routing.
- Add CLI scaffolding templates, samples, and a full test suite for config loading, runtime behavior, and proxy transformations.
Reviewed changes
Copilot reviewed 37 out of 40 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/uipath-claude-sdk/tests/test_schema.py | Tests schema/graph extraction |
| packages/uipath-claude-sdk/tests/test_runtime.py | Tests standard runtime execution |
| packages/uipath-claude-sdk/tests/test_gateway_proxy.py | Tests proxy transforms/headers |
| packages/uipath-claude-sdk/tests/test_factory.py | Tests factory + registration |
| packages/uipath-claude-sdk/tests/test_conversational.py | Tests conversational suspend/resume |
| packages/uipath-claude-sdk/tests/test_config_and_loader.py | Tests config parsing + loader |
| packages/uipath-claude-sdk/tests/conftest.py | Shared fixtures + fake client |
| packages/uipath-claude-sdk/tests/init.py | Marks tests package |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/storage.py | Sqlite resumable storage adapter |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/session_store.py | Persist Claude session id |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/schema.py | Entrypoint schema + graph builder |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/runtime.py | Standard runtime implementation |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/loader.py | Dynamic agent loader |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/instrumentor.py | LLMOps span instrumentor |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/gateway_proxy.py | Local LLM Gateway proxy |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/factory.py | Runtime factory from claude.json |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/errors.py | Runtime error types/codes |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/conversational_runtime.py | Conversational runtime implementation |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/config.py | claude.json config loader |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/runtime/init.py | Runtime exports + registration |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/middlewares.py | CLI middleware registration |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/agent.py | Public ClaudeAgent definition |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/_cli/cli_new.py | uipath new scaffolding logic |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/_cli/_templates/main.py.template | Scaffolded agent template |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/_cli/_templates/claude.json.template | Scaffolded config template |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/_cli/init.py | Marks CLI module |
| packages/uipath-claude-sdk/src/uipath_claude_sdk/init.py | Package exports + lazy attrs |
| packages/uipath-claude-sdk/samples/quickstart-agent/uipath.json | Quickstart pack config |
| packages/uipath-claude-sdk/samples/quickstart-agent/README.md | Quickstart instructions |
| packages/uipath-claude-sdk/samples/quickstart-agent/pyproject.toml | Quickstart dependencies |
| packages/uipath-claude-sdk/samples/quickstart-agent/main.py | Quickstart structured agent sample |
| packages/uipath-claude-sdk/samples/quickstart-agent/claude.json | Quickstart entrypoint config |
| packages/uipath-claude-sdk/samples/conversational-agent/uipath.json | Conversational pack config |
| packages/uipath-claude-sdk/samples/conversational-agent/README.md | Conversational instructions |
| packages/uipath-claude-sdk/samples/conversational-agent/pyproject.toml | Conversational dependencies |
| packages/uipath-claude-sdk/samples/conversational-agent/main.py | Conversational agent sample |
| packages/uipath-claude-sdk/samples/conversational-agent/claude.json | Conversational entrypoint config |
| packages/uipath-claude-sdk/README.md | Package documentation |
| packages/uipath-claude-sdk/pyproject.toml | Package build/deps/test config |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+111
to
+112
| module_name = Path(abs_file_path).stem | ||
| spec = importlib.util.spec_from_file_location(module_name, abs_file_path) |
Comment on lines
+159
to
+160
| except Exception as e: | ||
| print(f"Error during agent cleanup: {e}") |
Comment on lines
+169
to
+181
| runtime = UiPathClaudeSDKConversationalRuntime( | ||
| agent=agent, | ||
| session_store=ClaudeSessionStore(storage, runtime_id), | ||
| workspace_root=workspace_root, | ||
| runtime_id=runtime_id, | ||
| entrypoint=entrypoint, | ||
| ) | ||
| return UiPathResumableRuntime( | ||
| delegate=runtime, | ||
| storage=storage, | ||
| trigger_manager=UiPathResumeTriggerHandler(), | ||
| runtime_id=runtime_id, | ||
| ) |
Comment on lines
+64
to
+67
| def _gateway_url(base_url: str, model_id: str) -> str: | ||
| return ( | ||
| f"{base_url}/agenthub_/llm/raw/vendor/awsbedrock/model/{model_id}/completions" | ||
| ) |
704fcab to
ea4262f
Compare
ea4262f to
6d6a598
Compare
|
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
uipath-claude-sdkpackage: run agents built with Anthropic's claude-agent-sdk on the UiPath platform via aclaude.jsonentrypoint configjson_schemaoutput) with prompt templatingresume=session_id) with a stable per-conversation workspaceANTHROPIC_API_KEYbypasses it for direct accessuipath newscaffolding, quickstart and conversational samplesWhy
developers building agents directly with the claude agent sdk currently have no way to deploy them to UiPath. this adds the same integration surface the other framework bridges (pydantic-ai, openai-agents, ...) provide, without depending on uipath-agents or uipath-langchain internals.