Skip to content

feat: add uipath-claude-sdk integration package#364

Open
radu-mocanu wants to merge 1 commit into
mainfrom
feat/claude-sdk-integration
Open

feat: add uipath-claude-sdk integration package#364
radu-mocanu wants to merge 1 commit into
mainfrom
feat/claude-sdk-integration

Conversation

@radu-mocanu

Copy link
Copy Markdown
Collaborator

Summary

  • new uipath-claude-sdk package: run agents built with Anthropic's claude-agent-sdk on the UiPath platform via a claude.json entrypoint config
  • standard agents support structured input/output (pydantic models, native json_schema output) with prompt templating
  • conversational agents stream UiPath conversation events, suspend with an API trigger per exchange and resume the same claude session (resume=session_id) with a stable per-conversation workspace
  • LLM calls route through the UiPath LLM Gateway via a local proxy (anthropic SSE <-> bedrock event stream), ANTHROPIC_API_KEY bypasses it for direct access
  • uipath new scaffolding, quickstart and conversational samples

Why

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.

Copilot AI review requested due to automatic review settings July 8, 2026 15:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"
)
@radu-mocanu radu-mocanu force-pushed the feat/claude-sdk-integration branch from 704fcab to ea4262f Compare July 8, 2026 15:28
@radu-mocanu radu-mocanu force-pushed the feat/claude-sdk-integration branch from ea4262f to 6d6a598 Compare July 8, 2026 15:37
@sonarqubecloud

sonarqubecloud Bot commented Jul 8, 2026

Copy link
Copy Markdown

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.

2 participants