From c1ac08e2d7b9eac8e70bffb22332b09fa805ee9f Mon Sep 17 00:00:00 2001 From: Cristian Pufu Date: Tue, 3 Feb 2026 11:40:06 +0200 Subject: [PATCH] fix: update deep agent sample --- .../simple-deepagent/.agent/CLI_REFERENCE.md | 58 ++++ .../.agent/REQUIRED_STRUCTURE.md | 4 +- .../simple-deepagent/.agent/SDK_REFERENCE.md | 89 ++++- samples/simple-deepagent/agent.mermaid | 30 +- samples/simple-deepagent/entry-points.json | 303 +++++++++++------- samples/simple-deepagent/graph.py | 16 - samples/simple-deepagent/langgraph.json | 6 +- samples/simple-deepagent/pyproject.toml | 16 +- samples/simple-deepagent/uv.lock | 227 +++++++++---- 9 files changed, 512 insertions(+), 237 deletions(-) diff --git a/samples/simple-deepagent/.agent/CLI_REFERENCE.md b/samples/simple-deepagent/.agent/CLI_REFERENCE.md index e6d38342..065b31a7 100644 --- a/samples/simple-deepagent/.agent/CLI_REFERENCE.md +++ b/samples/simple-deepagent/.agent/CLI_REFERENCE.md @@ -59,8 +59,10 @@ uv run uipath init --infer-bindings | `--input-file` | value | `Sentinel.UNSET` | Alias for '-f/--file' arguments | | `--output-file` | value | `Sentinel.UNSET` | File path where the output will be written | | `--trace-file` | value | `Sentinel.UNSET` | File path where the trace spans will be written (JSON Lines format) | +| `--state-file` | value | `Sentinel.UNSET` | File path where the state file is stored for persisting execution state. If not provided, a temporary file will be used. | | `--debug` | flag | false | Enable debugging with debugpy. The process will wait for a debugger to attach. | | `--debug-port` | value | `5678` | Port for the debug server (default: 5678) | +| `--keep-state-file` | flag | false | Keep the temporary state file even when not resuming and no job id is provided | **Usage Examples:** @@ -98,6 +100,11 @@ uv run uipath run --resume no_report: Do not report the evaluation results enable_mocker_cache: Enable caching for LLM mocker responses report_coverage: Report evaluation coverage + model_settings_id: Model settings ID to override agent settings + trace_file: File path where traces will be written in JSONL format + max_llm_concurrency: Maximum concurrent LLM requests + input_overrides: Input field overrides mapping (direct field override with deep merge) + resume: Resume execution from a previous suspended state **Arguments:** @@ -117,6 +124,10 @@ uv run uipath run --resume | `--output-file` | value | `Sentinel.UNSET` | File path where the output will be written | | `--enable-mocker-cache` | flag | false | Enable caching for LLM mocker responses | | `--report-coverage` | flag | false | Report evaluation coverage | +| `--model-settings-id` | value | `"default"` | Model settings ID from evaluation set to override agent settings (default: 'default') | +| `--trace-file` | value | `Sentinel.UNSET` | File path where traces will be written in JSONL format | +| `--max-llm-concurrency` | value | `20` | Maximum concurrent LLM requests (default: 20) | +| `--resume` | flag | false | Resume execution from a previous suspended state | **Usage Examples:** @@ -223,6 +234,53 @@ The `uipath.json` file is automatically generated by `uipath init` and defines y The UiPath CLI provides commands for interacting with UiPath platform services. These commands allow you to manage buckets, assets, jobs, and other resources. +### `uipath assets` + +Manage UiPath assets. + + Assets are key-value pairs that store configuration data, credentials, + and settings used by automation processes. + + \b + Examples: + # List all assets in a folder + uipath assets list --folder-path "Shared" + + # List with filter + uipath assets list --filter "ValueType eq 'Text'" + + # List with ordering + uipath assets list --orderby "Name asc" + + +**Subcommands:** + +**`uipath assets list`** + +List assets in a folder. + + \b + Examples: + uipath assets list + uipath assets list --folder-path "Shared" + uipath assets list --filter "ValueType eq 'Text'" + uipath assets list --filter "Name eq 'MyAsset'" + uipath assets list --orderby "Name asc" + uipath assets list --top 50 --skip 100 + + +Options: +- `--filter`: OData $filter expression (default: `Sentinel.UNSET`) +- `--orderby`: OData $orderby expression (default: `Sentinel.UNSET`) +- `--top`: Maximum number of items to return (default: 100, max: 1000) (default: `100`) +- `--skip`: Number of items to skip (default: `0`) +- `--folder-path`: Folder path (e.g., "Shared"). Can also be set via UIPATH_FOLDER_PATH environment variable. (default: `Sentinel.UNSET`) +- `--folder-key`: Folder key (UUID) (default: `Sentinel.UNSET`) +- `--format`: Output format (overrides global) (default: `Sentinel.UNSET`) +- `--output`, `-o`: Output file (overrides global) (default: `Sentinel.UNSET`) + +--- + ### `uipath buckets` Manage UiPath storage buckets and files. diff --git a/samples/simple-deepagent/.agent/REQUIRED_STRUCTURE.md b/samples/simple-deepagent/.agent/REQUIRED_STRUCTURE.md index d568f424..a8d24512 100644 --- a/samples/simple-deepagent/.agent/REQUIRED_STRUCTURE.md +++ b/samples/simple-deepagent/.agent/REQUIRED_STRUCTURE.md @@ -32,7 +32,7 @@ Unless the user explicitly requests a different LLM provider, always use `UiPath ```python from uipath_langchain.chat import UiPathChat -llm = UiPathChat(model="gpt-4o-2024-08-06", temperature=0.7) +llm = UiPathChat(model="gpt-4.1-mini-2025-04-14", temperature=0.7) ``` **Alternative LLMs** (only use if explicitly requested): @@ -62,7 +62,7 @@ class Output(BaseModel): result: str # 2. Initialize UiPathChat LLM -llm = UiPathChat(model="gpt-4o-2024-08-06", temperature=0.7) +llm = UiPathChat(model="gpt-4.1-mini-2025-04-14", temperature=0.7) # 3. Define agent nodes (async functions) async def process_node(state: State) -> State: diff --git a/samples/simple-deepagent/.agent/SDK_REFERENCE.md b/samples/simple-deepagent/.agent/SDK_REFERENCE.md index 499faab4..45e12636 100644 --- a/samples/simple-deepagent/.agent/SDK_REFERENCE.md +++ b/samples/simple-deepagent/.agent/SDK_REFERENCE.md @@ -16,6 +16,25 @@ sdk = UiPath() sdk = UiPath(base_url="https://cloud.uipath.com/...", secret="your_token") ``` +### Agenthub + +Agenthub service + +```python +# Fetch available models from LLM Gateway discovery endpoint. +sdk.agenthub.get_available_llm_models(headers: dict[str, Any] | None=None) -> list[uipath.platform.agenthub.agenthub.LlmModel] + +# Asynchronously fetch available models from LLM Gateway discovery endpoint. +sdk.agenthub.get_available_llm_models_async(headers: dict[str, Any] | None=None) -> list[uipath.platform.agenthub.agenthub.LlmModel] + +# Start a system agent job. +sdk.agenthub.invoke_system_agent(agent_name: str, entrypoint: str, input_arguments: dict[str, Any] | None=None, folder_key: str | None=None, folder_path: str | None=None, headers: dict[str, Any] | None=None) -> str + +# Asynchronously start a system agent and return the job. +sdk.agenthub.invoke_system_agent_async(agent_name: str, entrypoint: str, input_arguments: dict[str, Any] | None=None, folder_key: str | None=None, folder_path: str | None=None, headers: dict[str, Any] | None=None) -> str + +``` + ### Api Client Api Client service @@ -31,6 +50,12 @@ service = sdk.api_client Assets service ```python +# List assets using OData API with offset-based pagination. +sdk.assets.list(folder_path: Optional[str]=None, folder_key: Optional[str]=None, filter: Optional[str]=None, orderby: Optional[str]=None, skip: int=0, top: int=100) -> uipath.platform.common.paging.PagedResult[uipath.platform.orchestrator.assets.Asset] + +# Asynchronously list assets using OData API with offset-based pagination. +sdk.assets.list_async(folder_path: Optional[str]=None, folder_key: Optional[str]=None, filter: Optional[str]=None, orderby: Optional[str]=None, skip: int=0, top: int=100) -> uipath.platform.common.paging.PagedResult[uipath.platform.orchestrator.assets.Asset] + # Retrieve an asset by its name. sdk.assets.retrieve(name: str, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.platform.orchestrator.assets.UserAsset | uipath.platform.orchestrator.assets.Asset @@ -68,6 +93,12 @@ sdk.attachments.download(key: uuid.UUID, destination_path: str, folder_key: str # Download an attachment asynchronously. sdk.attachments.download_async(key: uuid.UUID, destination_path: str, folder_key: str | None=None, folder_path: str | None=None) -> str +# Get the BlobFileAccess information for an attachment. +sdk.attachments.get_blob_file_access_uri(key: uuid.UUID, folder_key: str | None=None, folder_path: str | None=None) -> uipath.platform.attachments.attachments.BlobFileAccessInfo + +# Get the BlobFileAccess information for an attachment asynchronously. +sdk.attachments.get_blob_file_access_uri_async(key: uuid.UUID, folder_key: str | None=None, folder_path: str | None=None) -> uipath.platform.attachments.attachments.BlobFileAccessInfo + # Open an attachment. sdk.attachments.open(attachment: uipath.platform.attachments.attachments.Attachment, mode: typing.Iterator[typing.Tuple[uipath.platform.attachments.attachments.Attachment, httpx.Response]] @@ -209,6 +240,12 @@ sdk.context_grounding.add_to_index(name: str, blob_file_path: str, content_type: # Asynchronously add content to the index. sdk.context_grounding.add_to_index_async(name: str, blob_file_path: str, content_type: Optional[str]=None, content: Union[str, bytes, NoneType]=None, source_path: Optional[str]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None, ingest_data: bool=True) -> None +# Create a new ephemeral context grounding index. +sdk.context_grounding.create_ephemeral_index(usage: uipath.platform.context_grounding.context_grounding_index.ContextGroundingIndex + +# Create a new ephemeral context grounding index. +sdk.context_grounding.create_ephemeral_index_async(usage: uipath.platform.context_grounding.context_grounding_index.ContextGroundingIndex + # Create a new context grounding index. sdk.context_grounding.create_index(name: str, source: Union[uipath.platform.context_grounding.context_grounding_payloads.BucketSourceConfig, uipath.platform.context_grounding.context_grounding_payloads.GoogleDriveSourceConfig, uipath.platform.context_grounding.context_grounding_payloads.DropboxSourceConfig, uipath.platform.context_grounding.context_grounding_payloads.OneDriveSourceConfig, uipath.platform.context_grounding.context_grounding_payloads.ConfluenceSourceConfig], description: Optional[str]=None, advanced_ingestion: Optional[bool]=True, preprocessing_request: Optional[str]="#UiPath.Vdbs.Domain.Api.V20Models.LLMV4PreProcessingRequest", folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.platform.context_grounding.context_grounding_index.ContextGroundingIndex @@ -299,16 +336,16 @@ sdk.documents.classify(project_type: typing.List[uipath.platform.documents.documents.ClassificationResult] # Create a validate classification action for a document based on the classification results. More details about validation actions can be found in the [official documentation](https://docs.uipath.com/ixp/automation-cloud/latest/user-guide/validating-classifications). -sdk.documents.create_validate_classification_action(action_title: str, action_priority: uipath.platform.documents.documents.ValidateClassificationAction +sdk.documents.create_validate_classification_action(classification_results: List[uipath.platform.documents.documents.ClassificationResult], action_title: str, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_catalog: Optional[str]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.ValidateClassificationAction # Asynchronous version of the [`create_validation_action`][uipath.platform.documents._documents_service.DocumentsService.create_validate_classification_action] method. -sdk.documents.create_validate_classification_action_async(action_title: str, action_priority: uipath.platform.documents.documents.ValidateClassificationAction +sdk.documents.create_validate_classification_action_async(classification_results: List[uipath.platform.documents.documents.ClassificationResult], action_title: str, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_catalog: Optional[str]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.ValidateClassificationAction # Create a validate extraction action for a document based on the extraction response. More details about validation actions can be found in the [official documentation](https://docs.uipath.com/ixp/automation-cloud/latest/user-guide/validating-extractions). -sdk.documents.create_validate_extraction_action(action_title: str, action_priority: uipath.platform.documents.documents.ValidateExtractionAction +sdk.documents.create_validate_extraction_action(extraction_response: uipath.platform.documents.documents.ExtractionResponse, action_title: str, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_catalog: Optional[str]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.ValidateExtractionAction # Asynchronous version of the [`create_validation_action`][uipath.platform.documents._documents_service.DocumentsService.create_validate_extraction_action] method. -sdk.documents.create_validate_extraction_action_async(action_title: str, action_priority: uipath.platform.documents.documents.ValidateExtractionAction +sdk.documents.create_validate_extraction_action_async(extraction_response: uipath.platform.documents.documents.ExtractionResponse, action_title: str, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_catalog: Optional[str]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.ValidateExtractionAction # Extract predicted data from a document using an DU Modern/IXP project. sdk.documents.extract(tag: Optional[str]=None, project_name: Optional[str]=None, file: Union[IO[bytes], bytes, str, NoneType]=None, file_path: Optional[str]=None, classification_result: Optional[uipath.platform.documents.documents.ClassificationResult]=None, project_type: Optional[uipath.platform.documents.documents.ProjectType]=None, document_type_name: Optional[str]=None) -> typing.Union[uipath.platform.documents.documents.ExtractionResponse, uipath.platform.documents.documents.ExtractionResponseIXP] @@ -328,6 +365,30 @@ sdk.documents.get_validate_extraction_result(validation_action: uipath.platform. # Asynchronous version of the [`get_validation_result`][uipath.platform.documents._documents_service.DocumentsService.get_validate_extraction_result] method. sdk.documents.get_validate_extraction_result_async(validation_action: uipath.platform.documents.documents.ValidateExtractionAction) -> typing.Union[uipath.platform.documents.documents.ExtractionResponse, uipath.platform.documents.documents.ExtractionResponseIXP] +# Retrieve the result of an IXP extraction operation (single-shot, non-blocking). +sdk.documents.retrieve_ixp_extraction_result(project_id: str, tag: str, operation_id: str) -> uipath.platform.documents.documents.ExtractionResponseIXP + +# Asynchronous version of the [`retrieve_ixp_extraction_result`][uipath.platform.documents._documents_service.DocumentsService.retrieve_ixp_extraction_result] method. +sdk.documents.retrieve_ixp_extraction_result_async(project_id: str, tag: str, operation_id: str) -> uipath.platform.documents.documents.ExtractionResponseIXP + +# Retrieve the result of an IXP create validate extraction action operation (single-shot, non-blocking). +sdk.documents.retrieve_ixp_extraction_validation_result(project_id: str, tag: str, operation_id: str) -> uipath.platform.documents.documents.ValidateExtractionAction + +# Asynchronous version of the [`retrieve_ixp_extraction_validation_result`][uipath.platform.documents._documents_service.DocumentsService.retrieve_ixp_extraction_validation_result] method. +sdk.documents.retrieve_ixp_extraction_validation_result_async(project_id: str, tag: str, operation_id: str) -> uipath.platform.documents.documents.ValidateExtractionAction + +# Start an IXP extraction process without waiting for results (non-blocking). +sdk.documents.start_ixp_extraction(project_name: str, tag: str, file: Union[IO[bytes], bytes, str, NoneType]=None, file_path: Optional[str]=None) -> uipath.platform.documents.documents.StartExtractionResponse + +# Asynchronous version of the [`start_ixp_extraction`][uipath.platform.documents._documents_service.DocumentsService.start_ixp_extraction] method. +sdk.documents.start_ixp_extraction_async(project_name: str, tag: str, file: Union[IO[bytes], bytes, str, NoneType]=None, file_path: Optional[str]=None) -> uipath.platform.documents.documents.StartExtractionResponse + +# Start an IXP extraction validation action without waiting for results (non-blocking). +sdk.documents.start_ixp_extraction_validation(extraction_response: uipath.platform.documents.documents.ExtractionResponseIXP, action_title: str, action_catalog: Optional[str]=None, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.StartOperationResponse + +# Asynchronous version of the [`start_ixp_extraction_validation`][uipath.platform.documents._documents_service.DocumentsService.start_ixp_extraction_validation] method. +sdk.documents.start_ixp_extraction_validation_async(extraction_response: uipath.platform.documents.documents.ExtractionResponseIXP, action_title: str, action_catalog: Optional[str]=None, action_priority: Optional[uipath.platform.documents.documents.ActionPriority]=None, action_folder: Optional[str]=None, storage_bucket_name: Optional[str]=None, storage_bucket_directory_path: Optional[str]=None) -> uipath.platform.documents.documents.StartOperationResponse + ``` ### Entities @@ -347,7 +408,7 @@ sdk.entities.insert_records(entity_key: str, records: List[Any], schema: Optiona # Asynchronously insert multiple records into an entity in a single batch operation. sdk.entities.insert_records_async(entity_key: str, records: List[Any], schema: Optional[Type[Any]]=None) -> uipath.platform.entities.entities.EntityRecordsBatchResponse -# List all entities in the Data Service. +# List all entities in Data Service. sdk.entities.list_entities() -> typing.List[uipath.platform.entities.entities.Entity] # Asynchronously list all entities in the Data Service. @@ -378,6 +439,12 @@ sdk.entities.update_records_async(entity_key: str, records: List[Any], schema: O Folders service ```python +# Retrieve the personal workspace folder for the current user. +sdk.folders.get_personal_workspace() -> uipath.platform.orchestrator.folder.PersonalWorkspace + +# Asynchronously retrieve the personal workspace folder for the current user. +sdk.folders.get_personal_workspace_async() -> uipath.platform.orchestrator.folder.PersonalWorkspace + # Resolve a folder path to its corresponding folder key. sdk.folders.retrieve_folder_key(folder_path: str | None) -> str | None @@ -481,7 +548,7 @@ Llm service ```python # Generate chat completions using UiPath's normalized LLM Gateway API. -sdk.llm.chat_completions(messages: list[dict[str, str]] | list[tuple[str, str]], model: str="gpt-4o-mini-2024-07-18", max_tokens: int=4096, temperature: float=0, n: int=1, frequency_penalty: float=0, presence_penalty: float=0, top_p: float | None=1, top_k: int | None=None, tools: list[uipath.platform.chat.llm_gateway.ToolDefinition] | None=None, tool_choice: Union[uipath.platform.chat.llm_gateway.AutoToolChoice, uipath.platform.chat.llm_gateway.RequiredToolChoice, uipath.platform.chat.llm_gateway.SpecificToolChoice, Literal['auto', 'none'], NoneType]=None, response_format: dict[str, Any] | type[pydantic.main.BaseModel] | None=None, api_version: str="2024-08-01-preview") +sdk.llm.chat_completions(messages: list[dict[str, str]] | list[tuple[str, str]], model: str="gpt-4.1-mini-2025-04-14", max_tokens: int=4096, temperature: float=0, n: int=1, frequency_penalty: float=0, presence_penalty: float=0, top_p: float | None=1, top_k: int | None=None, tools: list[uipath.platform.chat.llm_gateway.ToolDefinition] | None=None, tool_choice: Union[uipath.platform.chat.llm_gateway.AutoToolChoice, uipath.platform.chat.llm_gateway.RequiredToolChoice, uipath.platform.chat.llm_gateway.SpecificToolChoice, Literal['auto', 'none'], NoneType]=None, response_format: dict[str, Any] | type[pydantic.main.BaseModel] | None=None, api_version: str="2024-08-01-preview") ``` @@ -491,7 +558,7 @@ Llm Openai service ```python # Generate chat completions using UiPath's LLM Gateway service. -sdk.llm_openai.chat_completions(messages: list[dict[str, str]], model: str="gpt-4o-mini-2024-07-18", max_tokens: int=4096, temperature: float=0, response_format: dict[str, Any] | type[pydantic.main.BaseModel] | None=None, api_version: str="2024-10-21") +sdk.llm_openai.chat_completions(messages: list[dict[str, str]], model: str="gpt-4.1-mini-2025-04-14", max_tokens: int=4096, temperature: float=0, response_format: dict[str, Any] | type[pydantic.main.BaseModel] | None=None, api_version: str="2024-10-21") # Generate text embeddings using UiPath's LLM Gateway service. sdk.llm_openai.embeddings(input: str, embedding_model: str="text-embedding-ada-002", openai_api_version: str="2024-10-21") @@ -523,10 +590,10 @@ Processes service ```python # Start execution of a process by its name. -sdk.processes.invoke(name: str, input_arguments: Optional[Dict[str, Any]]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.platform.orchestrator.job.Job +sdk.processes.invoke(name: str, input_arguments: Optional[Dict[str, Any]]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None, attachments: Optional[list[uipath.platform.attachments.attachments.Attachment]]=None) -> uipath.platform.orchestrator.job.Job # Asynchronously start execution of a process by its name. -sdk.processes.invoke_async(name: str, input_arguments: Optional[Dict[str, Any]]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None) -> uipath.platform.orchestrator.job.Job +sdk.processes.invoke_async(name: str, input_arguments: Optional[Dict[str, Any]]=None, folder_key: Optional[str]=None, folder_path: Optional[str]=None, attachments: Optional[list[uipath.platform.attachments.attachments.Attachment]]=None) -> uipath.platform.orchestrator.job.Job ``` @@ -604,10 +671,10 @@ Tasks service ```python # Creates a new task synchronously. -sdk.tasks.create(title: str, data: Optional[Dict[str, Any]]=None, app_name: Optional[str]=None, app_key: Optional[str]=None, app_folder_path: Optional[str]=None, app_folder_key: Optional[str]=None, assignee: Optional[str]=None) -> uipath.platform.action_center.tasks.Task +sdk.tasks.create(title: str, data: Optional[Dict[str, Any]]=None, app_name: Optional[str]=None, app_key: Optional[str]=None, app_folder_path: Optional[str]=None, app_folder_key: Optional[str]=None, assignee: Optional[str]=None, recipient: Optional[uipath.platform.action_center.tasks.TaskRecipient]=None, priority: Optional[str]=None, labels: Optional[List[str]]=None, is_actionable_message_enabled: Optional[bool]=None, actionable_message_metadata: Optional[Dict[str, Any]]=None, source_name: str="Agent") -> uipath.platform.action_center.tasks.Task # Creates a new action asynchronously. -sdk.tasks.create_async(title: str, data: Optional[Dict[str, Any]]=None, app_name: Optional[str]=None, app_key: Optional[str]=None, app_folder_path: Optional[str]=None, app_folder_key: Optional[str]=None, assignee: Optional[str]=None) -> uipath.platform.action_center.tasks.Task +sdk.tasks.create_async(title: str, data: Optional[Dict[str, Any]]=None, app_name: Optional[str]=None, app_key: Optional[str]=None, app_folder_path: Optional[str]=None, app_folder_key: Optional[str]=None, assignee: Optional[str]=None, recipient: Optional[uipath.platform.action_center.tasks.TaskRecipient]=None, priority: Optional[str]=None, labels: Optional[List[str]]=None, is_actionable_message_enabled: Optional[bool]=None, actionable_message_metadata: Optional[Dict[str, Any]]=None, source_name: str="Agent") -> uipath.platform.action_center.tasks.Task # Retrieves a task by its key synchronously. sdk.tasks.retrieve(action_key: str, app_folder_path: str="", app_folder_key: str="", app_name: str | None=None) -> uipath.platform.action_center.tasks.Task diff --git a/samples/simple-deepagent/agent.mermaid b/samples/simple-deepagent/agent.mermaid index fee7f32d..ad2c0bca 100644 --- a/samples/simple-deepagent/agent.mermaid +++ b/samples/simple-deepagent/agent.mermaid @@ -1,20 +1,16 @@ flowchart TB __start__(__start__) + model(model) + tools(tools) + TodoListMiddleware.after_model(TodoListMiddleware.after_model) + SummarizationMiddleware.before_model(SummarizationMiddleware.before_model) + PatchToolCallsMiddleware.before_agent(PatchToolCallsMiddleware.before_agent) __end__(__end__) - __start__ --> agent - agent --> __end__ - subgraph agent [agent] - direction LR - __start__(__start__) - model(model) - tools(tools) - SummarizationMiddleware.before_model(SummarizationMiddleware.before_model) - PatchToolCallsMiddleware.before_agent(PatchToolCallsMiddleware.before_agent) - __end__(__end__) - PatchToolCallsMiddleware.before_agent --> SummarizationMiddleware.before_model - SummarizationMiddleware.before_model --> model - __start__ --> PatchToolCallsMiddleware.before_agent - model --> __end__ - model --> tools - tools --> SummarizationMiddleware.before_model - end + PatchToolCallsMiddleware.before_agent --> SummarizationMiddleware.before_model + SummarizationMiddleware.before_model --> model + TodoListMiddleware.after_model --> SummarizationMiddleware.before_model + TodoListMiddleware.after_model --> __end__ + TodoListMiddleware.after_model --> tools + __start__ --> PatchToolCallsMiddleware.before_agent + model --> TodoListMiddleware.after_model + tools --> SummarizationMiddleware.before_model diff --git a/samples/simple-deepagent/entry-points.json b/samples/simple-deepagent/entry-points.json index ffa9aa0e..08d2c2a0 100644 --- a/samples/simple-deepagent/entry-points.json +++ b/samples/simple-deepagent/entry-points.json @@ -4,7 +4,7 @@ "entryPoints": [ { "filePath": "agent", - "uniqueId": "d770033b-53dc-4b15-9ebd-eaf8cdc03825", + "uniqueId": "a73409e9-1978-4873-bf9f-457c1b1b201d", "type": "agent", "input": { "type": "object", @@ -61,10 +61,9 @@ "type": "string" }, "tool_calls": { - "default": [], "items": { "additionalProperties": true, - "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.", + "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.\n\n!!! note \"Factory function\"\n\n `tool_call` may also be used as a factory to create a `ToolCall`. Benefits\n include:\n\n * Required arguments strictly validated at creation time", "properties": { "name": { "title": "Name", @@ -96,7 +95,6 @@ "type": "array" }, "invalid_tool_calls": { - "default": [], "items": { "additionalProperties": true, "description": "Allowance for errors made by LLM.\n\nHere we add an `error` key to surface errors made during generation\n(e.g., invalid JSON arguments.)", @@ -565,10 +563,9 @@ "type": "string" }, "tool_calls": { - "default": [], "items": { "additionalProperties": true, - "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.", + "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.\n\n!!! note \"Factory function\"\n\n `tool_call` may also be used as a factory to create a `ToolCall`. Benefits\n include:\n\n * Required arguments strictly validated at creation time", "properties": { "name": { "title": "Name", @@ -600,7 +597,6 @@ "type": "array" }, "invalid_tool_calls": { - "default": [], "items": { "additionalProperties": true, "description": "Allowance for errors made by LLM.\n\nHere we add an `error` key to surface errors made during generation\n(e.g., invalid JSON arguments.)", @@ -714,10 +710,9 @@ "type": "object" }, "tool_call_chunks": { - "default": [], "items": { "additionalProperties": true, - "description": "A chunk of a tool call (yielded when streaming).\n\nWhen merging `ToolCallChunk`s (e.g., via `AIMessageChunk.__add__`),\nall string attributes are concatenated. Chunks are only merged if their\nvalues of `index` are equal and not None.\n\nExample:\n```python\nleft_chunks = [ToolCallChunk(name=\"foo\", args='{\"a\":', index=0)]\nright_chunks = [ToolCallChunk(name=None, args=\"1}\", index=0)]\n\n(\n AIMessageChunk(content=\"\", tool_call_chunks=left_chunks)\n + AIMessageChunk(content=\"\", tool_call_chunks=right_chunks)\n).tool_call_chunks == [ToolCallChunk(name=\"foo\", args='{\"a\":1}', index=0)]\n```", + "description": "A chunk of a tool call (yielded when streaming).\n\nWhen merging `ToolCallChunk` objects (e.g., via `AIMessageChunk.__add__`), all\nstring attributes are concatenated. Chunks are only merged if their values of\n`index` are equal and not `None`.\n\nExample:\n```python\nleft_chunks = [ToolCallChunk(name=\"foo\", args='{\"a\":', index=0)]\nright_chunks = [ToolCallChunk(name=None, args=\"1}\", index=0)]\n\n(\n AIMessageChunk(content=\"\", tool_call_chunks=left_chunks)\n + AIMessageChunk(content=\"\", tool_call_chunks=right_chunks)\n).tool_call_chunks == [ToolCallChunk(name=\"foo\", args='{\"a\":1}', index=0)]\n```", "properties": { "name": { "type": "string" @@ -1064,6 +1059,37 @@ }, "title": "Messages", "type": "array" + }, + "files": { + "additionalProperties": { + "description": "Data structure for storing file contents with metadata.", + "properties": { + "content": { + "items": { + "type": "string" + }, + "title": "Content", + "type": "array" + }, + "created_at": { + "title": "Created At", + "type": "string" + }, + "modified_at": { + "title": "Modified At", + "type": "string" + } + }, + "required": [ + "content", + "created_at", + "modified_at" + ], + "title": "FileData", + "type": "object" + }, + "title": "Files", + "type": "object" } }, "required": [ @@ -1074,7 +1100,6 @@ "type": "object", "properties": { "messages": { - "default": null, "items": { "oneOf": [ { @@ -1126,10 +1151,9 @@ "type": "string" }, "tool_calls": { - "default": [], "items": { "additionalProperties": true, - "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.", + "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.\n\n!!! note \"Factory function\"\n\n `tool_call` may also be used as a factory to create a `ToolCall`. Benefits\n include:\n\n * Required arguments strictly validated at creation time", "properties": { "name": { "title": "Name", @@ -1161,7 +1185,6 @@ "type": "array" }, "invalid_tool_calls": { - "default": [], "items": { "additionalProperties": true, "description": "Allowance for errors made by LLM.\n\nHere we add an `error` key to surface errors made during generation\n(e.g., invalid JSON arguments.)", @@ -1630,10 +1653,9 @@ "type": "string" }, "tool_calls": { - "default": [], "items": { "additionalProperties": true, - "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.", + "description": "Represents an AI's request to call a tool.\n\nExample:\n ```python\n {\"name\": \"foo\", \"args\": {\"a\": 1}, \"id\": \"123\"}\n ```\n\n This represents a request to call the tool named `'foo'` with arguments\n `{\"a\": 1}` and an identifier of `'123'`.\n\n!!! note \"Factory function\"\n\n `tool_call` may also be used as a factory to create a `ToolCall`. Benefits\n include:\n\n * Required arguments strictly validated at creation time", "properties": { "name": { "title": "Name", @@ -1665,7 +1687,6 @@ "type": "array" }, "invalid_tool_calls": { - "default": [], "items": { "additionalProperties": true, "description": "Allowance for errors made by LLM.\n\nHere we add an `error` key to surface errors made during generation\n(e.g., invalid JSON arguments.)", @@ -1779,10 +1800,9 @@ "type": "object" }, "tool_call_chunks": { - "default": [], "items": { "additionalProperties": true, - "description": "A chunk of a tool call (yielded when streaming).\n\nWhen merging `ToolCallChunk`s (e.g., via `AIMessageChunk.__add__`),\nall string attributes are concatenated. Chunks are only merged if their\nvalues of `index` are equal and not None.\n\nExample:\n```python\nleft_chunks = [ToolCallChunk(name=\"foo\", args='{\"a\":', index=0)]\nright_chunks = [ToolCallChunk(name=None, args=\"1}\", index=0)]\n\n(\n AIMessageChunk(content=\"\", tool_call_chunks=left_chunks)\n + AIMessageChunk(content=\"\", tool_call_chunks=right_chunks)\n).tool_call_chunks == [ToolCallChunk(name=\"foo\", args='{\"a\":1}', index=0)]\n```", + "description": "A chunk of a tool call (yielded when streaming).\n\nWhen merging `ToolCallChunk` objects (e.g., via `AIMessageChunk.__add__`), all\nstring attributes are concatenated. Chunks are only merged if their values of\n`index` are equal and not `None`.\n\nExample:\n```python\nleft_chunks = [ToolCallChunk(name=\"foo\", args='{\"a\":', index=0)]\nright_chunks = [ToolCallChunk(name=None, args=\"1}\", index=0)]\n\n(\n AIMessageChunk(content=\"\", tool_call_chunks=left_chunks)\n + AIMessageChunk(content=\"\", tool_call_chunks=right_chunks)\n).tool_call_chunks == [ToolCallChunk(name=\"foo\", args='{\"a\":1}', index=0)]\n```", "properties": { "name": { "type": "string" @@ -2129,9 +2149,73 @@ }, "title": "Messages", "type": "array" + }, + "structured_response": { + "title": "Structured Response" + }, + "todos": { + "items": { + "description": "A single todo item with content and status.", + "properties": { + "content": { + "title": "Content", + "type": "string" + }, + "status": { + "enum": [ + "pending", + "in_progress", + "completed" + ], + "title": "Status", + "type": "string" + } + }, + "required": [ + "content", + "status" + ], + "title": "Todo", + "type": "object" + }, + "title": "Todos", + "type": "array" + }, + "files": { + "additionalProperties": { + "description": "Data structure for storing file contents with metadata.", + "properties": { + "content": { + "items": { + "type": "string" + }, + "title": "Content", + "type": "array" + }, + "created_at": { + "title": "Created At", + "type": "string" + }, + "modified_at": { + "title": "Modified At", + "type": "string" + } + }, + "required": [ + "content", + "created_at", + "modified_at" + ], + "title": "FileData", + "type": "object" + }, + "title": "Files", + "type": "object" } }, - "required": [] + "required": [ + "messages" + ] }, "graph": { "nodes": [ @@ -2143,104 +2227,55 @@ "metadata": {} }, { - "id": "agent", - "name": "agent", - "type": "node", - "subgraph": { - "nodes": [ - { - "id": "__start__", - "name": "__start__", - "type": "__start__", - "subgraph": null, - "metadata": {} - }, - { - "id": "model", - "name": "model", - "type": "model", - "subgraph": null, - "metadata": { - "model_name": "claude-haiku-4-5", - "max_tokens": 4096 - } - }, - { - "id": "tools", - "name": "tools", - "type": "tool", - "subgraph": null, - "metadata": { - "tool_names": [ - "write_todos", - "ls", - "read_file", - "write_file", - "edit_file", - "glob", - "grep", - "execute", - "task", - "tavily_search" - ], - "tool_count": 10 - } - }, - { - "id": "SummarizationMiddleware.before_model", - "name": "SummarizationMiddleware.before_model", - "type": "node", - "subgraph": null, - "metadata": {} - }, - { - "id": "PatchToolCallsMiddleware.before_agent", - "name": "PatchToolCallsMiddleware.before_agent", - "type": "node", - "subgraph": null, - "metadata": {} - }, - { - "id": "__end__", - "name": "__end__", - "type": "__end__", - "subgraph": null, - "metadata": {} - } + "id": "model", + "name": "model", + "type": "model", + "subgraph": null, + "metadata": { + "model_name": "claude-haiku-4-5", + "max_tokens": 64000 + } + }, + { + "id": "tools", + "name": "tools", + "type": "tool", + "subgraph": null, + "metadata": { + "tool_names": [ + "write_todos", + "ls", + "read_file", + "write_file", + "edit_file", + "glob", + "grep", + "execute", + "task", + "tavily_search" ], - "edges": [ - { - "source": "PatchToolCallsMiddleware.before_agent", - "target": "SummarizationMiddleware.before_model", - "label": null - }, - { - "source": "SummarizationMiddleware.before_model", - "target": "model", - "label": null - }, - { - "source": "__start__", - "target": "PatchToolCallsMiddleware.before_agent", - "label": null - }, - { - "source": "model", - "target": "__end__", - "label": null - }, - { - "source": "model", - "target": "tools", - "label": null - }, - { - "source": "tools", - "target": "SummarizationMiddleware.before_model", - "label": null - } - ] - }, + "tool_count": 10 + } + }, + { + "id": "TodoListMiddleware.after_model", + "name": "TodoListMiddleware.after_model", + "type": "node", + "subgraph": null, + "metadata": {} + }, + { + "id": "SummarizationMiddleware.before_model", + "name": "SummarizationMiddleware.before_model", + "type": "node", + "subgraph": null, + "metadata": {} + }, + { + "id": "PatchToolCallsMiddleware.before_agent", + "name": "PatchToolCallsMiddleware.before_agent", + "type": "node", + "subgraph": null, "metadata": {} }, { @@ -2253,14 +2288,44 @@ ], "edges": [ { - "source": "__start__", - "target": "agent", + "source": "PatchToolCallsMiddleware.before_agent", + "target": "SummarizationMiddleware.before_model", + "label": null + }, + { + "source": "SummarizationMiddleware.before_model", + "target": "model", "label": null }, { - "source": "agent", + "source": "TodoListMiddleware.after_model", + "target": "SummarizationMiddleware.before_model", + "label": null + }, + { + "source": "TodoListMiddleware.after_model", "target": "__end__", "label": null + }, + { + "source": "TodoListMiddleware.after_model", + "target": "tools", + "label": null + }, + { + "source": "__start__", + "target": "PatchToolCallsMiddleware.before_agent", + "label": null + }, + { + "source": "model", + "target": "TodoListMiddleware.after_model", + "label": null + }, + { + "source": "tools", + "target": "SummarizationMiddleware.before_model", + "label": null } ] } diff --git a/samples/simple-deepagent/graph.py b/samples/simple-deepagent/graph.py index d2aaa847..2356417e 100644 --- a/samples/simple-deepagent/graph.py +++ b/samples/simple-deepagent/graph.py @@ -2,7 +2,6 @@ from langchain_anthropic import ChatAnthropic from langchain_tavily import TavilySearch -from langgraph.graph import START, END, StateGraph, MessagesState from deepagents import create_deep_agent # Initialize tools @@ -71,18 +70,3 @@ tools=[tavily_tool], subagents=[research_subagent, critique_subagent] ) - -# Wrap the deep agent in a StateGraph with a simple schema for compatibility -async def agent_node(state: MessagesState) -> MessagesState: - """Node that runs the deep agent.""" - result = await deep_agent.ainvoke(state) - return result - -# Build wrapper graph with standard MessagesState -builder = StateGraph(MessagesState) -builder.add_node("agent", agent_node) -builder.add_edge(START, "agent") -builder.add_edge("agent", END) - -# Compile the wrapper graph -graph = builder.compile() diff --git a/samples/simple-deepagent/langgraph.json b/samples/simple-deepagent/langgraph.json index c465a881..514f9b4c 100644 --- a/samples/simple-deepagent/langgraph.json +++ b/samples/simple-deepagent/langgraph.json @@ -1,7 +1,5 @@ { - "dependencies": ["."], "graphs": { - "agent": "./graph.py:graph" - }, - "env": ".env" + "agent": "./graph.py:deep_agent" + } } diff --git a/samples/simple-deepagent/pyproject.toml b/samples/simple-deepagent/pyproject.toml index e9270baf..e86a8cf1 100644 --- a/samples/simple-deepagent/pyproject.toml +++ b/samples/simple-deepagent/pyproject.toml @@ -5,16 +5,16 @@ description = "Simple DeepAgent for research tasks using Tavily search" authors = [{ name = "John Doe", email = "john.doe@myemail.com" }] requires-python = ">=3.11" dependencies = [ - "deepagents>=0.3.0", - "langchain-anthropic>=1.2.0", - "langchain-tavily>=0.2.13", - "langgraph>=1.0.4", - "tavily-python>=0.7.13", - "uipath>=2.3.0, <2.4.0", - "uipath-langchain>=0.2.0, <0.3.0", + "deepagents>=0.3.9", + "langchain-anthropic>=1.3.1", + "langchain-tavily>=0.2.17", + "langgraph>=1.0.7", + "tavily-python>=0.7.21", + "uipath>=2.6.0, <2.7.0", + "uipath-langchain>=0.5.19, <0.6.0", ] [dependency-groups] dev = [ - "uipath-dev>=0.0.14", + "uipath-dev>=0.0.20", ] diff --git a/samples/simple-deepagent/uv.lock b/samples/simple-deepagent/uv.lock index 908c9e20..7ca27124 100644 --- a/samples/simple-deepagent/uv.lock +++ b/samples/simple-deepagent/uv.lock @@ -184,6 +184,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/15/b3/9b1a8074496371342ec1e796a96f99c82c945a339cd81a8e73de28b4cf9e/anyio-4.11.0-py3-none-any.whl", hash = "sha256:0287e96f4d26d4149305414d4e3bc32f0dcd0862365a4bddea19d7a1ec38c4fc", size = 109097, upload-time = "2025-09-23T09:19:10.601Z" }, ] +[[package]] +name = "applicationinsights" +version = "0.11.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/f2/46a75ac6096d60da0e71a068015b610206e697de01fa2fb5bba8564b0798/applicationinsights-0.11.10.tar.gz", hash = "sha256:0b761f3ef0680acf4731906dfc1807faa6f2a57168ae74592db0084a6099f7b3", size = 44722, upload-time = "2021-04-22T23:22:45.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/0d/cb6b23164eb55eebaa5f9f302dfe557cfa751bd7b2779863f1abd0343b6b/applicationinsights-0.11.10-py2.py3-none-any.whl", hash = "sha256:e89a890db1c6906b6a7d0bcfd617dac83974773c64573147c8d6654f9cf2a6ea", size = 55068, upload-time = "2021-04-22T23:22:44.451Z" }, +] + [[package]] name = "attrs" version = "25.4.0" @@ -535,17 +544,18 @@ wheels = [ [[package]] name = "deepagents" -version = "0.3.0" +version = "0.3.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain" }, { name = "langchain-anthropic" }, { name = "langchain-core" }, + { name = "langchain-google-genai" }, { name = "wcmatch" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cc/c7/d3c2840bd0e66b6cd5948aa69625e129328ad261308e18fcb9a9420709da/deepagents-0.3.0.tar.gz", hash = "sha256:3dd4d2ed53efb1ef78aeb1020a5696c0ec7e58e627b305a6665d33fe6fbdedff", size = 51387, upload-time = "2025-12-08T21:38:44.077Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/88/ea165f1cfcdb4cdc83cd7c6ac004fc9d199648f74c523404decf3fa99cbc/deepagents-0.3.9.tar.gz", hash = "sha256:186ed813268bb8d13ca2fbd45863d3e8b926118818326ba680b5b45c5f3661bf", size = 74944, upload-time = "2026-01-28T20:02:47.786Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/e9/60bab7f37ff38bf982ea578e457ed1878ded613a3425462bcd07b00487e9/deepagents-0.3.0-py3-none-any.whl", hash = "sha256:9e23532d8d535dc2b0b4e0834453a1223a6a8f81b77947c0faf54537d05ce89a", size = 54065, upload-time = "2025-12-08T21:38:42.956Z" }, + { url = "https://files.pythonhosted.org/packages/48/09/8f732d04000d3c6ed1379a35b9daa1eeb227263b624604976904451adb86/deepagents-0.3.9-py3-none-any.whl", hash = "sha256:dc1af5882918c0a20f090e4d7ea0cf8322df026189f6fe5efddd943730b63f81", size = 80173, upload-time = "2026-01-28T20:02:46.8Z" }, ] [[package]] @@ -566,6 +576,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, ] +[[package]] +name = "filetype" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/29/745f7d30d47fe0f251d3ad3dc2978a23141917661998763bebb6da007eb1/filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb", size = 998020, upload-time = "2022-11-02T17:34:04.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/79/1b8fa1bb3568781e84c9200f951c735f3f157429f44be0495da55894d620/filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25", size = 19970, upload-time = "2022-11-02T17:34:01.425Z" }, +] + [[package]] name = "frozenlist" version = "1.8.0" @@ -671,6 +690,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, ] +[[package]] +name = "google-auth" +version = "2.48.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/41/242044323fbd746615884b1c16639749e73665b718209946ebad7ba8a813/google_auth-2.48.0.tar.gz", hash = "sha256:4f7e706b0cd3208a3d940a19a822c37a476ddba5450156c3e6624a71f7c841ce", size = 326522, upload-time = "2026-01-26T19:22:47.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/1d/d6466de3a5249d35e832a52834115ca9d1d0de6abc22065f049707516d47/google_auth-2.48.0-py3-none-any.whl", hash = "sha256:2e2a537873d449434252a9632c28bfc268b0adb1e53f9fb62afc5333a975903f", size = 236499, upload-time = "2026-01-26T19:22:45.099Z" }, +] + +[package.optional-dependencies] +requests = [ + { name = "requests" }, +] + +[[package]] +name = "google-genai" +version = "1.61.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "google-auth", extra = ["requests"] }, + { name = "httpx" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "sniffio" }, + { name = "tenacity" }, + { name = "typing-extensions" }, + { name = "websockets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/38/421cd7e70952a536be87a0249409f87297d84f523754a25b08fe94b97e7f/google_genai-1.61.0.tar.gz", hash = "sha256:5773a4e8ad5b2ebcd54a633a67d8e9c4f413032fef07977ee47ffa34a6d3bbdf", size = 489672, upload-time = "2026-01-30T20:50:27.177Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/87/78dd70cb59f7acf3350f53c5144a7aa7bc39c6f425cd7dc1224b59fcdac3/google_genai-1.61.0-py3-none-any.whl", hash = "sha256:cb073ef8287581476c1c3f4d8e735426ee34478e500a56deef218fa93071e3ca", size = 721948, upload-time = "2026-01-30T20:50:25.551Z" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -873,14 +932,14 @@ wheels = [ [[package]] name = "jsonschema-pydantic-converter" -version = "0.1.6" +version = "0.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/27/3c6cd4e59cb9a2e91979ec5eb8408a2bfca0a40e0055ee4603e59ae1aa3d/jsonschema_pydantic_converter-0.1.6.tar.gz", hash = "sha256:15bde9fe9ea4a720b082ba334391bae90a21432cafbf9b6a80dc804823201e0d", size = 58756, upload-time = "2025-12-18T16:28:55.322Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/d3/3fca297bdafe160447ab7f7a280169004c8dc7999184783248a2b2c9a116/jsonschema_pydantic_converter-0.1.8.tar.gz", hash = "sha256:2ddab279685e66057bba493fa00c1510d3c9d091ebd8bb0bb67fc911040432fe", size = 61937, upload-time = "2026-01-29T19:25:46.793Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/36/52c517c8d3f5196ad5096b559f97c5bd489b80d48a8af95c1af327cbda20/jsonschema_pydantic_converter-0.1.6-py3-none-any.whl", hash = "sha256:49011eb29a119fa12cf28295116ae31ba50eb7e94abfc0767949ab5cb970a5b4", size = 18041, upload-time = "2025-12-18T16:28:53.97Z" }, + { url = "https://files.pythonhosted.org/packages/90/ff/253518364c2f63f42666a695731787a8e6ad8608211ee57f0d36c8fbd317/jsonschema_pydantic_converter-0.1.8-py3-none-any.whl", hash = "sha256:f7609e52f23664ae0d08b3c94ccd5e0b80bfd1e47a6085dd22cb81e5d92b173a", size = 18069, upload-time = "2026-01-29T19:25:45.769Z" }, ] [[package]] @@ -897,35 +956,35 @@ wheels = [ [[package]] name = "langchain" -version = "1.1.3" +version = "1.2.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e3/5b/7c1d6fd075bdfd45ac5ff6fef2a5d2380ffb7988fc9cdd7a37b036744fe4/langchain-1.1.3.tar.gz", hash = "sha256:8c641a750a4277d948c3836529f31de496e7ed4ea9f1c77f66f1845cb586987d", size = 531368, upload-time = "2025-12-08T19:31:48.733Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/b7/a1d95dbb58e5e82dbd05e3730e2d4b99f784a4c6d39435579a1c2b8a8d12/langchain-1.2.8.tar.gz", hash = "sha256:d2bc45f8279f6291b152f28df3bb060b27c9a71163fe2e2a1ac878bd314d0dec", size = 558326, upload-time = "2026-02-02T15:51:59.425Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/39/ed3121ea3a0c60a0cda6ea5c4c1cece013e8bbc9b18344ff3ae507728f98/langchain-1.1.3-py3-none-any.whl", hash = "sha256:e5b208ed93e553df4087117a40bd0d450f9095030a843cad35c53ff2814bf731", size = 102227, upload-time = "2025-12-08T19:31:47.246Z" }, + { url = "https://files.pythonhosted.org/packages/66/1a/e1cabc08d8b12349fa6a898f033cc6b00a9a031b470582f4a9eb4cf8e55b/langchain-1.2.8-py3-none-any.whl", hash = "sha256:74a9595420b90e2fd6dc42e323e5e6c9f2a5d059b0ab51e4ad383893b86f8fbe", size = 108986, upload-time = "2026-02-02T15:51:58.465Z" }, ] [[package]] name = "langchain-anthropic" -version = "1.2.0" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anthropic" }, { name = "langchain-core" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/f2/717dcadf0c96960154594409b68bdd5953ab95439e0b65de13cdd5c08785/langchain_anthropic-1.2.0.tar.gz", hash = "sha256:3f3cfad8c519ead2deb21c30dc538b18f4c094704c7874784320cbed7a199453", size = 688803, upload-time = "2025-11-24T14:17:17.424Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/b6/ac5ee84e15bf79844c9c791f99a614c7ec7e1a63c2947e55977be01a81b4/langchain_anthropic-1.3.1.tar.gz", hash = "sha256:4f3d7a4a7729ab1aeaf62d32c87d4d227c1b5421668ca9e3734562b383470b07", size = 708940, upload-time = "2026-01-05T21:07:19.345Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/f4/f684725bd375208130ff3e9878ff3e671d888eec89a834617f3d7bcc14c9/langchain_anthropic-1.2.0-py3-none-any.whl", hash = "sha256:f489df97833e12ca0360a098eb9d04e410752840416be87ab60b0a3e120a99fe", size = 49512, upload-time = "2025-11-24T14:17:16.048Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4f/7a5b32764addf4b757545b89899b9d76688176f19e4ee89868e3b8bbfd0f/langchain_anthropic-1.3.1-py3-none-any.whl", hash = "sha256:1fc28cf8037c30597ee6172fc2ff9e345efe8149a8c2a39897b1eebba2948322", size = 46328, upload-time = "2026-01-05T21:07:18.261Z" }, ] [[package]] name = "langchain-core" -version = "1.2.5" +version = "1.2.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonpatch" }, @@ -937,9 +996,24 @@ dependencies = [ { name = "typing-extensions" }, { name = "uuid-utils" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c8/86/bd678d69341ae4178bc8dfa04024d63636e5d580ff03d4502c8bc2262917/langchain_core-1.2.5.tar.gz", hash = "sha256:d674f6df42f07e846859b9d3afe547cad333d6bf9763e92c88eb4f8aaedcd3cc", size = 820445, upload-time = "2025-12-22T23:45:32.041Z" } +sdist = { url = "https://files.pythonhosted.org/packages/75/cc/55bf57b83cbc164cbf84cbf0c5e4fb640d673546af131db70797b97b125b/langchain_core-1.2.8.tar.gz", hash = "sha256:76d933c3f4cfd8484d8131c39bf25f562e2df4d0d5fe3218e05ff773210713b6", size = 814506, upload-time = "2026-02-02T15:35:33.056Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/83/bd/9df897cbc98290bf71140104ee5b9777cf5291afb80333aa7da5a497339b/langchain_core-1.2.5-py3-none-any.whl", hash = "sha256:3255944ef4e21b2551facb319bfc426057a40247c0a05de5bd6f2fc021fbfa34", size = 484851, upload-time = "2025-12-22T23:45:30.525Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d4/37fef9639b701c1fb1eea9e68447b72d86852ca3dc3253cdfd9c0afe228d/langchain_core-1.2.8-py3-none-any.whl", hash = "sha256:c732301272d63cfbcd75d114540257678627878f11b87046241272a25ba12ea7", size = 495753, upload-time = "2026-02-02T15:35:31.284Z" }, +] + +[[package]] +name = "langchain-google-genai" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filetype" }, + { name = "google-genai" }, + { name = "langchain-core" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/0b/eae2305e207574dc633983a8a82a745e0ede1bce1f3a9daff24d2341fadc/langchain_google_genai-4.2.0.tar.gz", hash = "sha256:9a8d9bfc35354983ed29079cefff53c3e7c9c2a44b6ba75cc8f13a0cf8b55c33", size = 277361, upload-time = "2026-01-13T20:41:17.63Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/51/39942c0083139652494bb354dddf0ed397703a4882302f7b48aeca531c96/langchain_google_genai-4.2.0-py3-none-any.whl", hash = "sha256:856041aaafceff65a4ef0d5acf5731f2db95229ff041132af011aec51e8279d9", size = 66452, upload-time = "2026-01-13T20:41:16.296Z" }, ] [[package]] @@ -972,7 +1046,7 @@ wheels = [ [[package]] name = "langchain-tavily" -version = "0.2.13" +version = "0.2.17" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -980,14 +1054,14 @@ dependencies = [ { name = "langchain-core" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/75/a08ff73441fdaaef6e1ed83ee3b6747fd7c562ff772a09ebf5fe8fb252d3/langchain_tavily-0.2.13.tar.gz", hash = "sha256:97752167225b1459ffd2055bc8ffcec30658ff808dd5f7f9b2efa85ebbc7895a", size = 21842, upload-time = "2025-11-04T15:30:32.756Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/32/f7b5487efbcd5fca5d4095f03dce7dcf0301ed81b2505d9888427c03619b/langchain_tavily-0.2.17.tar.gz", hash = "sha256:738abd790c50f19565023ad279c8e47e87e1aeb971797fec30a614b418ae6503", size = 25298, upload-time = "2026-01-18T13:09:04.112Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/a2/7de8e9071b6a60cf9fe974744a2961e2dc77492d0ac29285a70b465cdb57/langchain_tavily-0.2.13-py3-none-any.whl", hash = "sha256:aa5b445c336f5f9314ab00f348554a42316af75ac839a0016442e382dd2cb1cb", size = 26025, upload-time = "2025-11-04T15:30:31.679Z" }, + { url = "https://files.pythonhosted.org/packages/35/f9/bb6f1cea2a19215e4169a3bcec3af707ff947cf62f6ef7d28e7280f03e29/langchain_tavily-0.2.17-py3-none-any.whl", hash = "sha256:da4e5e7e328d054dc70a9c934afa1d1e62038612106647ff81ad8bfbe3622256", size = 30734, upload-time = "2026-01-18T13:09:03.1Z" }, ] [[package]] name = "langgraph" -version = "1.0.4" +version = "1.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, @@ -997,9 +1071,9 @@ dependencies = [ { name = "pydantic" }, { name = "xxhash" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/3c/af87902d300c1f467165558c8966d8b1e1f896dace271d3f35a410a5c26a/langgraph-1.0.4.tar.gz", hash = "sha256:86d08e25d7244340f59c5200fa69fdd11066aa999b3164b531e2a20036fac156", size = 484397, upload-time = "2025-11-25T20:31:48.608Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/5b/f72655717c04e33d3b62f21b166dc063d192b53980e9e3be0e2a117f1c9f/langgraph-1.0.7.tar.gz", hash = "sha256:0cfdfee51e6e8cfe503ecc7367c73933437c505b03fa10a85c710975c8182d9a", size = 497098, upload-time = "2026-01-22T16:57:47.303Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/52/4eb25a3f60399da34ba34adff1b3e324cf0d87eb7a08cebf1882a9b5e0d5/langgraph-1.0.4-py3-none-any.whl", hash = "sha256:b1a835ceb0a8d69b9db48075e1939e28b1ad70ee23fa3fa8f90149904778bacf", size = 157271, upload-time = "2025-11-25T20:31:47.518Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0e/fe80144e3e4048e5d19ccdb91ac547c1a7dc3da8dbd1443e210048194c14/langgraph-1.0.7-py3-none-any.whl", hash = "sha256:9d68e8f8dd8f3de2fec45f9a06de05766d9b075b78fb03171779893b7a52c4d2", size = 157353, upload-time = "2026-01-22T16:57:45.997Z" }, ] [[package]] @@ -1017,42 +1091,42 @@ wheels = [ [[package]] name = "langgraph-checkpoint-sqlite" -version = "3.0.0" +version = "3.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiosqlite" }, { name = "langgraph-checkpoint" }, { name = "sqlite-vec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6e/d0/fd3e4a00cdde6aaeb3e4115e3d2e0e54a48b74cca873823a0fa6979a9b84/langgraph_checkpoint_sqlite-3.0.0.tar.gz", hash = "sha256:1b190ca6b4fd2bf70c0310896fd4240200ff54d3ee9b5ab7e7c05edfc824df72", size = 106005, upload-time = "2025-10-20T18:42:25.277Z" } +sdist = { url = "https://files.pythonhosted.org/packages/04/61/40b7f8f29d6de92406e668c35265f409f57064907e31eae84ab3f2a3e3e1/langgraph_checkpoint_sqlite-3.0.3.tar.gz", hash = "sha256:438c234d37dabda979218954c9c6eb1db73bee6492c2f1d3a00552fe23fa34ed", size = 123876, upload-time = "2026-01-19T00:38:44.473Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/c2/6249a5fd0a204594995a4f29988a036d29d736cb87df2aebbbd08467475c/langgraph_checkpoint_sqlite-3.0.0-py3-none-any.whl", hash = "sha256:219c8ab974a69954fde7e3aa3cc2112f58b8fe5e1449293b32b344fa2dee110d", size = 32039, upload-time = "2025-10-20T18:42:23.998Z" }, + { url = "https://files.pythonhosted.org/packages/a3/d8/84ef22ee1cc485c4910df450108fd5e246497379522b3c6cfba896f71bf6/langgraph_checkpoint_sqlite-3.0.3-py3-none-any.whl", hash = "sha256:02eb683a79aa6fcda7cd4de43861062a5d160dbbb990ef8a9fd76c979998a952", size = 33593, upload-time = "2026-01-19T00:38:43.288Z" }, ] [[package]] name = "langgraph-prebuilt" -version = "1.0.2" +version = "1.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph-checkpoint" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/2f/b940590436e07b3450fe6d791aad5e581363ad536c4f1771e3ba46530268/langgraph_prebuilt-1.0.2.tar.gz", hash = "sha256:9896dbabf04f086eb59df4294f54ab5bdb21cd78e27e0a10e695dffd1cc6097d", size = 142075, upload-time = "2025-10-29T18:29:00.401Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/59/711aecd1a50999456850dc328f3cad72b4372d8218838d8d5326f80cb76f/langgraph_prebuilt-1.0.7.tar.gz", hash = "sha256:38e097e06de810de4d0e028ffc0e432bb56d1fb417620fb1dfdc76c5e03e4bf9", size = 163692, upload-time = "2026-01-22T16:45:22.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/2f/9a7d00d4afa036e65294059c7c912002fb72ba5dbbd5c2a871ca06360278/langgraph_prebuilt-1.0.2-py3-none-any.whl", hash = "sha256:d9499f7c449fb637ee7b87e3f6a3b74095f4202053c74d33894bd839ea4c57c7", size = 34286, upload-time = "2025-10-29T18:28:59.26Z" }, + { url = "https://files.pythonhosted.org/packages/47/49/5e37abb3f38a17a3487634abc2a5da87c208cc1d14577eb8d7184b25c886/langgraph_prebuilt-1.0.7-py3-none-any.whl", hash = "sha256:e14923516504405bb5edc3977085bc9622c35476b50c1808544490e13871fe7c", size = 35324, upload-time = "2026-01-22T16:45:21.784Z" }, ] [[package]] name = "langgraph-sdk" -version = "0.2.9" +version = "0.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, { name = "orjson" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/d8/40e01190a73c564a4744e29a6c902f78d34d43dad9b652a363a92a67059c/langgraph_sdk-0.2.9.tar.gz", hash = "sha256:b3bd04c6be4fa382996cd2be8fbc1e7cc94857d2bc6b6f4599a7f2a245975303", size = 99802, upload-time = "2025-09-20T18:49:14.734Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/0f/ed0634c222eed48a31ba48eab6881f94ad690d65e44fe7ca838240a260c1/langgraph_sdk-0.3.3.tar.gz", hash = "sha256:c34c3dce3b6848755eb61f0c94369d1ba04aceeb1b76015db1ea7362c544fb26", size = 130589, upload-time = "2026-01-13T00:30:43.894Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/05/b2d34e16638241e6f27a6946d28160d4b8b641383787646d41a3727e0896/langgraph_sdk-0.2.9-py3-none-any.whl", hash = "sha256:fbf302edadbf0fb343596f91c597794e936ef68eebc0d3e1d358b6f9f72a1429", size = 56752, upload-time = "2025-09-20T18:49:13.346Z" }, + { url = "https://files.pythonhosted.org/packages/6e/be/4ad511bacfdd854afb12974f407cb30010dceb982dc20c55491867b34526/langgraph_sdk-0.3.3-py3-none-any.whl", hash = "sha256:a52ebaf09d91143e55378bb2d0b033ed98f57f48c9ad35c8f81493b88705fc7b", size = 67021, upload-time = "2026-01-13T00:30:42.264Z" }, ] [[package]] @@ -1701,6 +1775,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/5a/bc7b4a4ef808fa59a816c17b20c4bef6884daebbdf627ff2a161da67da19/propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237", size = 13305, upload-time = "2025-10-08T19:49:00.792Z" }, ] +[[package]] +name = "pyasn1" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/b6/6e630dff89739fcd427e3f72b3d905ce0acb85a45d4ec3e2678718a3487f/pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b", size = 146586, upload-time = "2026-01-16T18:04:18.534Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf", size = 83371, upload-time = "2026-01-16T18:04:17.174Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + [[package]] name = "pycparser" version = "2.23" @@ -2266,6 +2361,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/b7/b95708304cd49b7b6f82fdd039f1748b66ec2b21d6a45180910802f1abf1/rpds_py-0.30.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ac37f9f516c51e5753f27dfdef11a88330f04de2d564be3991384b2f3535d02e", size = 562191, upload-time = "2025-11-30T20:24:36.853Z" }, ] +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + [[package]] name = "simple-deepagent" version = "0.0.1" @@ -2287,17 +2394,17 @@ dev = [ [package.metadata] requires-dist = [ - { name = "deepagents", specifier = ">=0.3.0" }, - { name = "langchain-anthropic", specifier = ">=1.2.0" }, - { name = "langchain-tavily", specifier = ">=0.2.13" }, - { name = "langgraph", specifier = ">=1.0.4" }, - { name = "tavily-python", specifier = ">=0.7.13" }, - { name = "uipath", specifier = ">=2.3.0,<2.4.0" }, - { name = "uipath-langchain", specifier = ">=0.2.0,<0.3.0" }, + { name = "deepagents", specifier = ">=0.3.9" }, + { name = "langchain-anthropic", specifier = ">=1.3.1" }, + { name = "langchain-tavily", specifier = ">=0.2.17" }, + { name = "langgraph", specifier = ">=1.0.7" }, + { name = "tavily-python", specifier = ">=0.7.21" }, + { name = "uipath", specifier = ">=2.6.0,<2.7.0" }, + { name = "uipath-langchain", specifier = ">=0.5.19,<0.6.0" }, ] [package.metadata.requires-dev] -dev = [{ name = "uipath-dev", specifier = ">=0.0.14" }] +dev = [{ name = "uipath-dev", specifier = ">=0.0.20" }] [[package]] name = "simple-websocket" @@ -2360,16 +2467,16 @@ wheels = [ [[package]] name = "tavily-python" -version = "0.7.13" +version = "0.7.21" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, { name = "requests" }, { name = "tiktoken" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/fb/b6d6327a78b9107681701d56b3a2dda48dc5420a6ee8b33a147d87bfba60/tavily_python-0.7.13.tar.gz", hash = "sha256:347f92402331d071557f6dd6680f813a7d484b4ba7240905cc397cd192d1355c", size = 17237, upload-time = "2025-11-13T18:53:03.998Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/1f/9d5c4ca7034754d1fc232af64638b905162bdf3012e9629030e3d755856f/tavily_python-0.7.21.tar.gz", hash = "sha256:897bedf9b1c2fad8605be642e417d6c7ec1b79bf6199563477cf69c4313f824a", size = 21813, upload-time = "2026-01-30T16:57:33.186Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/55/4d/e5e4c65cd66144ac3d0d5a6a2bbfba22eb6a63e6e450beba10ee8413b86d/tavily_python-0.7.13-py3-none-any.whl", hash = "sha256:911825467f2bb19b8162b4766d3e81081160a7c0fb8a15c7c716b2bef73e6296", size = 15484, upload-time = "2025-11-13T18:53:02.821Z" }, + { url = "https://files.pythonhosted.org/packages/3a/39/85e5be4e9a912022f86f38288d1f4dd2d100b60ec75ebf3da37ca0122375/tavily_python-0.7.21-py3-none-any.whl", hash = "sha256:acfb5b62f2d1053d56321b4fb1ddfd2e98bb975cc4446b86b3fe2d3dd0850288", size = 17957, upload-time = "2026-01-30T16:57:32.278Z" }, ] [[package]] @@ -2383,7 +2490,7 @@ wheels = [ [[package]] name = "textual" -version = "6.11.0" +version = "7.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py", extra = ["linkify"] }, @@ -2393,9 +2500,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/06/906f86bbc59ec7cd3fb424250e19ce670406d1f28e49e86c2221e9fd7ed2/textual-6.11.0.tar.gz", hash = "sha256:08237ebda0cfbbfd1a4e2fd3039882b35894a73994f6f0fcc12c5b0d78acf3cc", size = 1584292, upload-time = "2025-12-18T10:48:38.033Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/38/7d169a765993efde5095c70a668bf4f5831bb7ac099e932f2783e9b71abf/textual-7.5.0.tar.gz", hash = "sha256:c730cba1e3d704e8f1ca915b6a3af01451e3bca380114baacf6abf87e9dac8b6", size = 1592319, upload-time = "2026-01-30T13:46:39.881Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/fc/5e2988590ff2e0128eea6446806c904445a44e17256c67141573ea16b5a5/textual-6.11.0-py3-none-any.whl", hash = "sha256:9e663b73ed37123a9b13c16a0c85e09ef917a4cfded97814361ed5cccfa40f89", size = 714886, upload-time = "2025-12-18T10:48:36.269Z" }, + { url = "https://files.pythonhosted.org/packages/9c/78/96ddb99933e11d91bc6e05edae23d2687e44213066bcbaca338898c73c47/textual-7.5.0-py3-none-any.whl", hash = "sha256:849dfee9d705eab3b2d07b33152b7bd74fb1f5056e002873cc448bce500c6374", size = 718164, upload-time = "2026-01-30T13:46:37.635Z" }, ] [[package]] @@ -2505,9 +2612,10 @@ wheels = [ [[package]] name = "uipath" -version = "2.3.0" +version = "2.6.29" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "applicationinsights" }, { name = "click" }, { name = "coverage" }, { name = "httpx" }, @@ -2525,45 +2633,44 @@ dependencies = [ { name = "uipath-core" }, { name = "uipath-runtime" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/b6/10e30406786dce197d1f7235811ff19440793c835097376606c6500b3242/uipath-2.3.0.tar.gz", hash = "sha256:f46f034d5c29dd86240324118e2ebe51c48bd6bf393081e2ed3c6015963a7d2b", size = 3431649, upload-time = "2025-12-26T10:22:00.273Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/0c/7c029f7835ce25bb17a86b71e04bfc90140fb242f900c841a558d063cc37/uipath-2.6.29.tar.gz", hash = "sha256:c072be5f25f2cc4149f96eecdf7d6743d0711fe945310e43c227692e81b40ebd", size = 3932018, upload-time = "2026-02-02T23:58:36.03Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/46/b77126a490a47251ac3deff0a88cbdf8c5ac1c69ebf2c71649e25b0999c1/uipath-2.3.0-py3-none-any.whl", hash = "sha256:3df06dca5ffc6304a3a5c61d128ea3c07e39267d2dd515b68c39f145b209aa26", size = 398558, upload-time = "2025-12-26T10:21:58.154Z" }, + { url = "https://files.pythonhosted.org/packages/c2/de/376bd51d7e599f7ad6b8e886980d88ab3ffe9c47d8d4acf4a77e715bde14/uipath-2.6.29-py3-none-any.whl", hash = "sha256:1f1fb10e6d74eaffd4fbc4482860bc6db66bf6c2ccafa880308732f093180acd", size = 464724, upload-time = "2026-02-02T23:58:34.304Z" }, ] [[package]] name = "uipath-core" -version = "0.1.4" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-instrumentation" }, { name = "opentelemetry-sdk" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/db/ef/44b9b0adb378e0e988b621b72af55008dbfb166179412cba1fe54ab4b692/uipath_core-0.1.4.tar.gz", hash = "sha256:6100eb5299b30b145e557e3dbc716141bbaa92cd37633d36257c7e3f90ce578f", size = 96025, upload-time = "2025-12-16T14:25:01.62Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c2/b9/36aa58515a024f672666e85b66ac1a4ab10343cb308c25b978a9b7c6c5f9/uipath_core-0.2.3.tar.gz", hash = "sha256:8c85281e4d93efc89080dc6764e58ca1fbf914d67cd6c51f5bcb95fd562d0b56", size = 107516, upload-time = "2026-02-02T09:48:20.287Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/c3/e64ea37ba8aa56cfae4a15589652a9dc4f66889e4d19788ca5e1b034b46f/uipath_core-0.1.4-py3-none-any.whl", hash = "sha256:574d6fe0314f70c12de8b6a3c5ab05a6191f6a8b9087c1d1a6352e67765f2f72", size = 30431, upload-time = "2025-12-16T14:25:00.174Z" }, + { url = "https://files.pythonhosted.org/packages/c4/05/2ca2be071109fa35f3fdb6235ce0315ee9f598e21f7640e878971492d389/uipath_core-0.2.3-py3-none-any.whl", hash = "sha256:3a14b9c930dd1137e19fe58d9042c855796ae5a20216d092adf4feab457fd0f5", size = 34311, upload-time = "2026-02-02T09:48:18.809Z" }, ] [[package]] name = "uipath-dev" -version = "0.0.14" +version = "0.0.20" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyperclip" }, { name = "textual" }, { name = "uipath-runtime" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/7c/665a6b34e7af68092c01ddc5e828b083e25ea1cbb5dfc4880bfe71b828c9/uipath_dev-0.0.14.tar.gz", hash = "sha256:233165aba235516dff30a852bc5d179eec34c90dd6574274ff24c56962fac593", size = 7584306, upload-time = "2025-12-20T18:10:29.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dd/3b/d5907494992c993b5741d8c03ea9e1cad79ef105e03dd23d9405b5abb197/uipath_dev-0.0.20.tar.gz", hash = "sha256:3a0cdf6737cccb8c71f0f0606c546346f07eda86b6c81161c2aec18531b23395", size = 7585136, upload-time = "2026-01-25T15:39:37.705Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/7b/d01754abc89c2d83b63a5506af672ec45eb3e1a01b11e09b4ad7d5cf29a8/uipath_dev-0.0.14-py3-none-any.whl", hash = "sha256:b3c2042cd8bc92116bd3da84fb0672b584dc1958e22e97f422958d44865153f8", size = 33702, upload-time = "2025-12-20T18:10:27.962Z" }, + { url = "https://files.pythonhosted.org/packages/01/ea/02ce65bb24a8d5edec4155bd3d3f7aac72be1c44f091c4fbddad862c7da1/uipath_dev-0.0.20-py3-none-any.whl", hash = "sha256:9cfd58df9d38778deb417906af04bb281cbf2fdd33572be14638a4736504aa12", size = 34500, upload-time = "2026-01-25T15:39:35.615Z" }, ] [[package]] name = "uipath-langchain" -version = "0.2.0" +version = "0.5.19" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "aiosqlite" }, { name = "httpx" }, { name = "jsonpath-ng" }, { name = "jsonschema-pydantic-converter" }, @@ -2580,21 +2687,21 @@ dependencies = [ { name = "uipath" }, { name = "uipath-runtime" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/26/0e3417f43c9f9d40ff9ba92cd183744ad44adce74830dcda39284c9f62e7/uipath_langchain-0.2.0.tar.gz", hash = "sha256:c6745cae550d0af649913ddf89f5bc4178fd6b1969c8a49bde6e4748084304b9", size = 7357857, upload-time = "2025-12-26T13:48:26.66Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/f9/163f01dfbdb53f174222c961048c0fef0ac4295097211f706b2744ca3e4e/uipath_langchain-0.5.19.tar.gz", hash = "sha256:73f69ede53947a658caf2ba6e6f54701669897fe35f53011b070c9b6b9696584", size = 8727148, upload-time = "2026-02-03T09:37:46.088Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/02/a7b21e8aae5ba940ce6300c9d4c6599aa8835dac269875553965dfd419db/uipath_langchain-0.2.0-py3-none-any.whl", hash = "sha256:ccb29c4dbd31c5bd2f13dad11b9a9e657d49f0625a7a0e1ad3878c6d849d247a", size = 112858, upload-time = "2025-12-26T13:48:24.624Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1f/3e59ee9949ba0190fddb56a6e05bef6bf7f2246edd69e22e193543adda0a/uipath_langchain-0.5.19-py3-none-any.whl", hash = "sha256:8673a12a250a9d318faab6450d4623f80c8168c6e3380823ceff2fc36d31129d", size = 167455, upload-time = "2026-02-03T09:37:44.316Z" }, ] [[package]] name = "uipath-runtime" -version = "0.3.2" +version = "0.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "uipath-core" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4c/c1/3ebede98a90e5fc761bacbca65960238062a515efcdac78d7e862d5a3e07/uipath_runtime-0.3.2.tar.gz", hash = "sha256:16c07626c656f0db70dd0c4d3b9b8c58b9eda38af4d29309e5bfd11533b77b96", size = 99557, upload-time = "2025-12-26T13:37:31.061Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/74/d141f84d845a6ecc8ede56ca1ce7aca5f56031895be9e6546c6ffd046ce3/uipath_runtime-0.6.2.tar.gz", hash = "sha256:f838e1e5e20cc7c070475c8f839ba6d0615a2e12750a7275bc4669fed15c26c6", size = 103641, upload-time = "2026-01-27T12:48:41.039Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/ab/92b79fc1e2422a123ae80cced3c5f46ef9c21674498fad60fd4b284dc2d7/uipath_runtime-0.3.2-py3-none-any.whl", hash = "sha256:e30d250e80789a5f4ca62322d6d8574d0a4a4fd1610ed754a07296b0d96b7452", size = 38319, upload-time = "2025-12-26T13:37:29.432Z" }, + { url = "https://files.pythonhosted.org/packages/4d/1c/20f1aa6a194c1e21557943d08c1a23dc3d55558d4f69644ccbfa62ddbc43/uipath_runtime-0.6.2-py3-none-any.whl", hash = "sha256:b33511f9a29269677049ab5dd54419aab302a5ae3a5820d8a86c7f060bd9fc62", size = 40770, upload-time = "2026-01-27T12:48:38.674Z" }, ] [[package]]