Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "3.2.0"
".": "3.3.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 104
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-9c5542353ace880640fb7e8946c5c8d008480abb8d1952595ba2ee9323aed724.yml
openapi_spec_hash: afa528f0921063291f66c56c6093f2ab
config_hash: 27cfddf59d8227e89667fa012952335c
configured_endpoints: 166
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/droidrun/droidrun-cloud-4e32174d9764ddeec31db33c46c772c4ac06eb72aa399445f79283b35c57e37d.yml
openapi_spec_hash: b2b7096b8e12f79a52ad303aa9b21dea
config_hash: 7eee71321886b0cd05bdbd017f9d06ec
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 3.3.0 (2026-06-09)

Full Changelog: [v3.2.0...v3.3.0](https://github.com/droidrun/mobilerun-sdk-python/compare/v3.2.0...v3.3.0)

### Features

* **api:** add agents-api ([ec80ec3](https://github.com/droidrun/mobilerun-sdk-python/commit/ec80ec35e333e302f8b09cd8ddf81d69d297f027))
* **api:** api update ([080b0a8](https://github.com/droidrun/mobilerun-sdk-python/commit/080b0a8a668e792ddfc8f2ceacb30ca59ac0f45a))
* **api:** api update ([13645e2](https://github.com/droidrun/mobilerun-sdk-python/commit/13645e2290241b8930ad56231b0aac9ffb0d8b9d))
* **api:** api update ([472689f](https://github.com/droidrun/mobilerun-sdk-python/commit/472689f40d0225edcedb331fabda5d9b5ddbe390))
* **api:** api update ([b58be1c](https://github.com/droidrun/mobilerun-sdk-python/commit/b58be1c00be168f8719a56d2ce5c1806ac30ef92))
* **api:** api update ([2add42e](https://github.com/droidrun/mobilerun-sdk-python/commit/2add42ec33a0accad90ab5afe8d27ce22629b871))
* **api:** enable workflows ([b01d496](https://github.com/droidrun/mobilerun-sdk-python/commit/b01d4969bea4f20289720122c261a9897af656f2))
* **api:** manual updates ([16e622e](https://github.com/droidrun/mobilerun-sdk-python/commit/16e622e471e8043c80c30f9904eb74bd168f1b00))
* **api:** manual updates ([1b32b0d](https://github.com/droidrun/mobilerun-sdk-python/commit/1b32b0daa46383c045df0b9ec5e8903d0c6b8808))
* **api:** manual updates ([7fa7979](https://github.com/droidrun/mobilerun-sdk-python/commit/7fa7979dda9d7827014ec82d390c622c3f096929))
* **api:** manual updates ([1a4d40d](https://github.com/droidrun/mobilerun-sdk-python/commit/1a4d40df9fc939af3fc0c1cd7885b450821b7ce2))
* **api:** manual updates ([88c9ae0](https://github.com/droidrun/mobilerun-sdk-python/commit/88c9ae09fe4979789e30e859bf9f7d57f39887c2))
* **api:** mobilerun connect endpoints ([7856951](https://github.com/droidrun/mobilerun-sdk-python/commit/785695138d9ad132ef6ea86802c6b26d89ed9337))

## 3.2.0 (2026-05-21)

Full Changelog: [v3.1.0...v3.2.0](https://github.com/droidrun/mobilerun-sdk-python/compare/v3.1.0...v3.2.0)
Expand Down
379 changes: 355 additions & 24 deletions api.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "mobilerun-sdk"
version = "3.2.0"
version = "3.3.0"
description = "The official Python library for the mobilerun API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
97 changes: 89 additions & 8 deletions src/mobilerun_sdk/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,31 @@
)

if TYPE_CHECKING:
from .resources import apps, hooks, tasks, agents, models, devices, proxies, carriers, profiles, credentials
from .resources import (
apps,
hooks,
tasks,
agents,
models,
connect,
devices,
proxies,
carriers,
profiles,
workflows,
credentials,
)
from .resources.apps import AppsResource, AsyncAppsResource
from .resources.hooks import HooksResource, AsyncHooksResource
from .resources.agents import AgentsResource, AsyncAgentsResource
from .resources.models import ModelsResource, AsyncModelsResource
from .resources.proxies import ProxiesResource, AsyncProxiesResource
from .resources.carriers import CarriersResource, AsyncCarriersResource
from .resources.profiles import ProfilesResource, AsyncProfilesResource
from .resources.tasks.tasks import TasksResource, AsyncTasksResource
from .resources.agents.agents import AgentsResource, AsyncAgentsResource
from .resources.connect.connect import ConnectResource, AsyncConnectResource
from .resources.devices.devices import DevicesResource, AsyncDevicesResource
from .resources.workflows.workflows import WorkflowsResource, AsyncWorkflowsResource
from .resources.credentials.credentials import CredentialsResource, AsyncCredentialsResource

__all__ = [
Expand Down Expand Up @@ -122,7 +137,6 @@ def __init__(

@cached_property
def agents(self) -> AgentsResource:
"""Agents API"""
from .resources.agents import AgentsResource

return AgentsResource(self)
Expand Down Expand Up @@ -180,13 +194,25 @@ def proxies(self) -> ProxiesResource:

return ProxiesResource(self)

@cached_property
def connect(self) -> ConnectResource:
from .resources.connect import ConnectResource

return ConnectResource(self)

@cached_property
def tasks(self) -> TasksResource:
"""Tasks API"""
from .resources.tasks import TasksResource

return TasksResource(self)

@cached_property
def workflows(self) -> WorkflowsResource:
from .resources.workflows import WorkflowsResource

return WorkflowsResource(self)

@cached_property
def with_raw_response(self) -> MobilerunWithRawResponse:
return MobilerunWithRawResponse(self)
Expand Down Expand Up @@ -373,7 +399,6 @@ def __init__(

@cached_property
def agents(self) -> AsyncAgentsResource:
"""Agents API"""
from .resources.agents import AsyncAgentsResource

return AsyncAgentsResource(self)
Expand Down Expand Up @@ -431,13 +456,25 @@ def proxies(self) -> AsyncProxiesResource:

return AsyncProxiesResource(self)

@cached_property
def connect(self) -> AsyncConnectResource:
from .resources.connect import AsyncConnectResource

return AsyncConnectResource(self)

@cached_property
def tasks(self) -> AsyncTasksResource:
"""Tasks API"""
from .resources.tasks import AsyncTasksResource

return AsyncTasksResource(self)

@cached_property
def workflows(self) -> AsyncWorkflowsResource:
from .resources.workflows import AsyncWorkflowsResource

return AsyncWorkflowsResource(self)

@cached_property
def with_raw_response(self) -> AsyncMobilerunWithRawResponse:
return AsyncMobilerunWithRawResponse(self)
Expand Down Expand Up @@ -570,7 +607,6 @@ def __init__(self, client: Mobilerun) -> None:

@cached_property
def agents(self) -> agents.AgentsResourceWithRawResponse:
"""Agents API"""
from .resources.agents import AgentsResourceWithRawResponse

return AgentsResourceWithRawResponse(self._client.agents)
Expand Down Expand Up @@ -628,13 +664,25 @@ def proxies(self) -> proxies.ProxiesResourceWithRawResponse:

return ProxiesResourceWithRawResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.ConnectResourceWithRawResponse:
from .resources.connect import ConnectResourceWithRawResponse

return ConnectResourceWithRawResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.TasksResourceWithRawResponse:
"""Tasks API"""
from .resources.tasks import TasksResourceWithRawResponse

return TasksResourceWithRawResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.WorkflowsResourceWithRawResponse:
from .resources.workflows import WorkflowsResourceWithRawResponse

return WorkflowsResourceWithRawResponse(self._client.workflows)


class AsyncMobilerunWithRawResponse:
_client: AsyncMobilerun
Expand All @@ -644,7 +692,6 @@ def __init__(self, client: AsyncMobilerun) -> None:

@cached_property
def agents(self) -> agents.AsyncAgentsResourceWithRawResponse:
"""Agents API"""
from .resources.agents import AsyncAgentsResourceWithRawResponse

return AsyncAgentsResourceWithRawResponse(self._client.agents)
Expand Down Expand Up @@ -702,13 +749,25 @@ def proxies(self) -> proxies.AsyncProxiesResourceWithRawResponse:

return AsyncProxiesResourceWithRawResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.AsyncConnectResourceWithRawResponse:
from .resources.connect import AsyncConnectResourceWithRawResponse

return AsyncConnectResourceWithRawResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.AsyncTasksResourceWithRawResponse:
"""Tasks API"""
from .resources.tasks import AsyncTasksResourceWithRawResponse

return AsyncTasksResourceWithRawResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.AsyncWorkflowsResourceWithRawResponse:
from .resources.workflows import AsyncWorkflowsResourceWithRawResponse

return AsyncWorkflowsResourceWithRawResponse(self._client.workflows)


class MobilerunWithStreamedResponse:
_client: Mobilerun
Expand All @@ -718,7 +777,6 @@ def __init__(self, client: Mobilerun) -> None:

@cached_property
def agents(self) -> agents.AgentsResourceWithStreamingResponse:
"""Agents API"""
from .resources.agents import AgentsResourceWithStreamingResponse

return AgentsResourceWithStreamingResponse(self._client.agents)
Expand Down Expand Up @@ -776,13 +834,25 @@ def proxies(self) -> proxies.ProxiesResourceWithStreamingResponse:

return ProxiesResourceWithStreamingResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.ConnectResourceWithStreamingResponse:
from .resources.connect import ConnectResourceWithStreamingResponse

return ConnectResourceWithStreamingResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.TasksResourceWithStreamingResponse:
"""Tasks API"""
from .resources.tasks import TasksResourceWithStreamingResponse

return TasksResourceWithStreamingResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.WorkflowsResourceWithStreamingResponse:
from .resources.workflows import WorkflowsResourceWithStreamingResponse

return WorkflowsResourceWithStreamingResponse(self._client.workflows)


class AsyncMobilerunWithStreamedResponse:
_client: AsyncMobilerun
Expand All @@ -792,7 +862,6 @@ def __init__(self, client: AsyncMobilerun) -> None:

@cached_property
def agents(self) -> agents.AsyncAgentsResourceWithStreamingResponse:
"""Agents API"""
from .resources.agents import AsyncAgentsResourceWithStreamingResponse

return AsyncAgentsResourceWithStreamingResponse(self._client.agents)
Expand Down Expand Up @@ -850,13 +919,25 @@ def proxies(self) -> proxies.AsyncProxiesResourceWithStreamingResponse:

return AsyncProxiesResourceWithStreamingResponse(self._client.proxies)

@cached_property
def connect(self) -> connect.AsyncConnectResourceWithStreamingResponse:
from .resources.connect import AsyncConnectResourceWithStreamingResponse

return AsyncConnectResourceWithStreamingResponse(self._client.connect)

@cached_property
def tasks(self) -> tasks.AsyncTasksResourceWithStreamingResponse:
"""Tasks API"""
from .resources.tasks import AsyncTasksResourceWithStreamingResponse

return AsyncTasksResourceWithStreamingResponse(self._client.tasks)

@cached_property
def workflows(self) -> workflows.AsyncWorkflowsResourceWithStreamingResponse:
from .resources.workflows import AsyncWorkflowsResourceWithStreamingResponse

return AsyncWorkflowsResourceWithStreamingResponse(self._client.workflows)


Client = Mobilerun

Expand Down
2 changes: 1 addition & 1 deletion src/mobilerun_sdk/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "mobilerun_sdk"
__version__ = "3.2.0" # x-release-please-version
__version__ = "3.3.0" # x-release-please-version
28 changes: 28 additions & 0 deletions src/mobilerun_sdk/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@
ModelsResourceWithStreamingResponse,
AsyncModelsResourceWithStreamingResponse,
)
from .connect import (
ConnectResource,
AsyncConnectResource,
ConnectResourceWithRawResponse,
AsyncConnectResourceWithRawResponse,
ConnectResourceWithStreamingResponse,
AsyncConnectResourceWithStreamingResponse,
)
from .devices import (
DevicesResource,
AsyncDevicesResource,
Expand Down Expand Up @@ -72,6 +80,14 @@
ProfilesResourceWithStreamingResponse,
AsyncProfilesResourceWithStreamingResponse,
)
from .workflows import (
WorkflowsResource,
AsyncWorkflowsResource,
WorkflowsResourceWithRawResponse,
AsyncWorkflowsResourceWithRawResponse,
WorkflowsResourceWithStreamingResponse,
AsyncWorkflowsResourceWithStreamingResponse,
)
from .credentials import (
CredentialsResource,
AsyncCredentialsResource,
Expand Down Expand Up @@ -136,10 +152,22 @@
"AsyncProxiesResourceWithRawResponse",
"ProxiesResourceWithStreamingResponse",
"AsyncProxiesResourceWithStreamingResponse",
"ConnectResource",
"AsyncConnectResource",
"ConnectResourceWithRawResponse",
"AsyncConnectResourceWithRawResponse",
"ConnectResourceWithStreamingResponse",
"AsyncConnectResourceWithStreamingResponse",
"TasksResource",
"AsyncTasksResource",
"TasksResourceWithRawResponse",
"AsyncTasksResourceWithRawResponse",
"TasksResourceWithStreamingResponse",
"AsyncTasksResourceWithStreamingResponse",
"WorkflowsResource",
"AsyncWorkflowsResource",
"WorkflowsResourceWithRawResponse",
"AsyncWorkflowsResourceWithRawResponse",
"WorkflowsResourceWithStreamingResponse",
"AsyncWorkflowsResourceWithStreamingResponse",
]
47 changes: 47 additions & 0 deletions src/mobilerun_sdk/resources/agents/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from .chat import (
ChatResource,
AsyncChatResource,
ChatResourceWithRawResponse,
AsyncChatResourceWithRawResponse,
ChatResourceWithStreamingResponse,
AsyncChatResourceWithStreamingResponse,
)
from .files import (
FilesResource,
AsyncFilesResource,
FilesResourceWithRawResponse,
AsyncFilesResourceWithRawResponse,
FilesResourceWithStreamingResponse,
AsyncFilesResourceWithStreamingResponse,
)
from .agents import (
AgentsResource,
AsyncAgentsResource,
AgentsResourceWithRawResponse,
AsyncAgentsResourceWithRawResponse,
AgentsResourceWithStreamingResponse,
AsyncAgentsResourceWithStreamingResponse,
)

__all__ = [
"ChatResource",
"AsyncChatResource",
"ChatResourceWithRawResponse",
"AsyncChatResourceWithRawResponse",
"ChatResourceWithStreamingResponse",
"AsyncChatResourceWithStreamingResponse",
"FilesResource",
"AsyncFilesResource",
"FilesResourceWithRawResponse",
"AsyncFilesResourceWithRawResponse",
"FilesResourceWithStreamingResponse",
"AsyncFilesResourceWithStreamingResponse",
"AgentsResource",
"AsyncAgentsResource",
"AgentsResourceWithRawResponse",
"AsyncAgentsResourceWithRawResponse",
"AgentsResourceWithStreamingResponse",
"AsyncAgentsResourceWithStreamingResponse",
]
Loading