diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e8285b71..4f9005ea 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.1.0-alpha.5" + ".": "0.1.0-alpha.6" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 3a087b17..26d5f8ee 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 34 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sgp%2Fagentex-sdk-1d08fb2290b5310c91801d7575d356628d372fd5434e15d3b9cead48eadb893f.yml -openapi_spec_hash: c07c588fb8429fbf024189df62f20fa4 -config_hash: 2e4b423af3db79ebd8170c401ea9093a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/sgp%2Fagentex-sdk-62a09183a027c64707ad1b9d7a5ccc66c8abf3965e6075282cb5ab72f742a2b3.yml +openapi_spec_hash: 47f43703822077a82e2edf82d4b7e0e5 +config_hash: e9fb383df76f572ee9aefe7b876adc2f diff --git a/CHANGELOG.md b/CHANGELOG.md index 14160687..a0496b29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.1.0-alpha.6 (2025-07-23) + +Full Changelog: [v0.1.0-alpha.5...v0.1.0-alpha.6](https://github.com/scaleapi/agentex-python/compare/v0.1.0-alpha.5...v0.1.0-alpha.6) + +### Features + +* **api:** api update ([af18034](https://github.com/scaleapi/agentex-python/commit/af18034e4173794ebf42eff688f26d64caca4e64)) +* **api:** api update ([be9b603](https://github.com/scaleapi/agentex-python/commit/be9b60326817566d5c5edcbd7b7babb6db07e539)) +* **api:** manual updates ([bbe3be3](https://github.com/scaleapi/agentex-python/commit/bbe3be30aa9fb8d7a677f0e9f0be4dd565563d6e)) + ## 0.1.0-alpha.5 (2025-07-23) Full Changelog: [v0.1.0-alpha.4...v0.1.0-alpha.5](https://github.com/scaleapi/agentex-python/compare/v0.1.0-alpha.4...v0.1.0-alpha.5) diff --git a/README.md b/README.md index 588fc8cc..f0cdff86 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Agentex Python API library -[![PyPI version](https://img.shields.io/pypi/v/agentex.svg?label=pypi%20(stable))](https://pypi.org/project/agentex/) +[![PyPI version](https://img.shields.io/pypi/v/agentex-sdk.svg?label=pypi%20(stable))](https://pypi.org/project/agentex-sdk/) The Agentex Python library provides convenient access to the Agentex REST API from any Python 3.8+ application. The library includes type definitions for all request params and response fields, @@ -21,7 +21,7 @@ pip install git+ssh://git@github.com/scaleapi/agentex-python.git ``` > [!NOTE] -> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install --pre agentex` +> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install --pre agentex-sdk` ## Usage @@ -78,7 +78,7 @@ You can enable this by installing `aiohttp`: ```sh # install from the production repo -pip install 'agentex[aiohttp] @ git+ssh://git@github.com/scaleapi/agentex-python.git' +pip install 'agentex-sdk[aiohttp] @ git+ssh://git@github.com/scaleapi/agentex-python.git' ``` Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`: diff --git a/api.md b/api.md index f0754dd0..223b095e 100644 --- a/api.md +++ b/api.md @@ -42,15 +42,15 @@ Methods: Types: ```python -from agentex.types import Task, TaskListResponse +from agentex.types import Task, TaskListResponse, TaskDeleteResponse, TaskDeleteByNameResponse ``` Methods: - client.tasks.retrieve(task_id) -> Task - client.tasks.list() -> TaskListResponse -- client.tasks.delete(task_id) -> Task -- client.tasks.delete_by_name(task_name) -> Task +- client.tasks.delete(task_id) -> TaskDeleteResponse +- client.tasks.delete_by_name(task_name) -> TaskDeleteByNameResponse - client.tasks.retrieve_by_name(task_name) -> Task - client.tasks.stream_events(task_id) -> object - client.tasks.stream_events_by_name(task_name) -> object diff --git a/pyproject.toml b/pyproject.toml index 168acc46..31d2a656 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] -name = "agentex" -version = "0.1.0-alpha.5" +name = "agentex-sdk" +version = "0.1.0-alpha.6" description = "The official Python library for the agentex API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/requirements-dev.lock b/requirements-dev.lock index f82de72c..56a38441 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -13,14 +13,14 @@ aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.12.8 - # via agentex + # via agentex-sdk # via httpx-aiohttp aiosignal==1.3.2 # via aiohttp annotated-types==0.6.0 # via pydantic anyio==4.4.0 - # via agentex + # via agentex-sdk # via httpx argcomplete==3.1.2 # via nox @@ -37,7 +37,7 @@ dirty-equals==0.6.0 distlib==0.3.7 # via virtualenv distro==1.8.0 - # via agentex + # via agentex-sdk exceptiongroup==1.2.2 # via anyio # via pytest @@ -53,11 +53,11 @@ h11==0.16.0 httpcore==1.0.9 # via httpx httpx==0.28.1 - # via agentex + # via agentex-sdk # via httpx-aiohttp # via respx httpx-aiohttp==0.1.8 - # via agentex + # via agentex-sdk idna==3.4 # via anyio # via httpx @@ -90,7 +90,7 @@ propcache==0.3.1 # via aiohttp # via yarl pydantic==2.10.3 - # via agentex + # via agentex-sdk pydantic-core==2.27.1 # via pydantic pygments==2.18.0 @@ -113,14 +113,14 @@ setuptools==68.2.2 six==1.16.0 # via python-dateutil sniffio==1.3.0 - # via agentex + # via agentex-sdk # via anyio time-machine==2.9.0 tomli==2.0.2 # via mypy # via pytest typing-extensions==4.12.2 - # via agentex + # via agentex-sdk # via anyio # via multidict # via mypy diff --git a/requirements.lock b/requirements.lock index a6d3556d..a4e7e943 100644 --- a/requirements.lock +++ b/requirements.lock @@ -13,14 +13,14 @@ aiohappyeyeballs==2.6.1 # via aiohttp aiohttp==3.12.8 - # via agentex + # via agentex-sdk # via httpx-aiohttp aiosignal==1.3.2 # via aiohttp annotated-types==0.6.0 # via pydantic anyio==4.4.0 - # via agentex + # via agentex-sdk # via httpx async-timeout==5.0.1 # via aiohttp @@ -30,7 +30,7 @@ certifi==2023.7.22 # via httpcore # via httpx distro==1.8.0 - # via agentex + # via agentex-sdk exceptiongroup==1.2.2 # via anyio frozenlist==1.6.2 @@ -41,10 +41,10 @@ h11==0.16.0 httpcore==1.0.9 # via httpx httpx==0.28.1 - # via agentex + # via agentex-sdk # via httpx-aiohttp httpx-aiohttp==0.1.8 - # via agentex + # via agentex-sdk idna==3.4 # via anyio # via httpx @@ -56,14 +56,14 @@ propcache==0.3.1 # via aiohttp # via yarl pydantic==2.10.3 - # via agentex + # via agentex-sdk pydantic-core==2.27.1 # via pydantic sniffio==1.3.0 - # via agentex + # via agentex-sdk # via anyio typing-extensions==4.12.2 - # via agentex + # via agentex-sdk # via anyio # via multidict # via pydantic diff --git a/src/agentex/_version.py b/src/agentex/_version.py index 6c4f3e31..a4a7b2ff 100644 --- a/src/agentex/_version.py +++ b/src/agentex/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "agentex" -__version__ = "0.1.0-alpha.5" # x-release-please-version +__version__ = "0.1.0-alpha.6" # x-release-please-version diff --git a/src/agentex/resources/tasks.py b/src/agentex/resources/tasks.py index 936ee66c..6c6ce9d0 100644 --- a/src/agentex/resources/tasks.py +++ b/src/agentex/resources/tasks.py @@ -17,6 +17,8 @@ from ..types.task import Task from .._base_client import make_request_options from ..types.task_list_response import TaskListResponse +from ..types.task_delete_response import TaskDeleteResponse +from ..types.task_delete_by_name_response import TaskDeleteByNameResponse __all__ = ["TasksResource", "AsyncTasksResource"] @@ -103,7 +105,7 @@ def delete( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> Task: + ) -> TaskDeleteResponse: """ Delete a task by its unique ID. @@ -123,7 +125,7 @@ def delete( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=Task, + cast_to=TaskDeleteResponse, ) def delete_by_name( @@ -136,7 +138,7 @@ def delete_by_name( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> Task: + ) -> TaskDeleteByNameResponse: """ Delete a task by its unique name. @@ -156,7 +158,7 @@ def delete_by_name( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=Task, + cast_to=TaskDeleteByNameResponse, ) def retrieve_by_name( @@ -345,7 +347,7 @@ async def delete( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> Task: + ) -> TaskDeleteResponse: """ Delete a task by its unique ID. @@ -365,7 +367,7 @@ async def delete( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=Task, + cast_to=TaskDeleteResponse, ) async def delete_by_name( @@ -378,7 +380,7 @@ async def delete_by_name( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> Task: + ) -> TaskDeleteByNameResponse: """ Delete a task by its unique name. @@ -398,7 +400,7 @@ async def delete_by_name( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=Task, + cast_to=TaskDeleteByNameResponse, ) async def retrieve_by_name( diff --git a/src/agentex/types/__init__.py b/src/agentex/types/__init__.py index f021a20d..5623fb8a 100644 --- a/src/agentex/types/__init__.py +++ b/src/agentex/types/__init__.py @@ -40,6 +40,7 @@ from .state_update_params import StateUpdateParams as StateUpdateParams from .tool_response_delta import ToolResponseDelta as ToolResponseDelta from .tracker_list_params import TrackerListParams as TrackerListParams +from .task_delete_response import TaskDeleteResponse as TaskDeleteResponse from .task_message_content import TaskMessageContent as TaskMessageContent from .tool_request_content import ToolRequestContent as ToolRequestContent from .message_create_params import MessageCreateParams as MessageCreateParams @@ -52,3 +53,4 @@ from .task_message_content_param import TaskMessageContentParam as TaskMessageContentParam from .tool_request_content_param import ToolRequestContentParam as ToolRequestContentParam from .tool_response_content_param import ToolResponseContentParam as ToolResponseContentParam +from .task_delete_by_name_response import TaskDeleteByNameResponse as TaskDeleteByNameResponse diff --git a/src/agentex/types/task_delete_by_name_response.py b/src/agentex/types/task_delete_by_name_response.py new file mode 100644 index 00000000..bea61633 --- /dev/null +++ b/src/agentex/types/task_delete_by_name_response.py @@ -0,0 +1,8 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Dict +from typing_extensions import TypeAlias + +__all__ = ["TaskDeleteByNameResponse"] + +TaskDeleteByNameResponse: TypeAlias = Dict[str, str] diff --git a/src/agentex/types/task_delete_response.py b/src/agentex/types/task_delete_response.py new file mode 100644 index 00000000..62104057 --- /dev/null +++ b/src/agentex/types/task_delete_response.py @@ -0,0 +1,8 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Dict +from typing_extensions import TypeAlias + +__all__ = ["TaskDeleteResponse"] + +TaskDeleteResponse: TypeAlias = Dict[str, str] diff --git a/tests/api_resources/test_tasks.py b/tests/api_resources/test_tasks.py index 0c9af1b4..97f20453 100644 --- a/tests/api_resources/test_tasks.py +++ b/tests/api_resources/test_tasks.py @@ -9,7 +9,7 @@ from agentex import Agentex, AsyncAgentex from tests.utils import assert_matches_type -from agentex.types import Task, TaskListResponse +from agentex.types import Task, TaskListResponse, TaskDeleteResponse, TaskDeleteByNameResponse base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -93,7 +93,7 @@ def test_method_delete(self, client: Agentex) -> None: task = client.tasks.delete( "task_id", ) - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -105,7 +105,7 @@ def test_raw_response_delete(self, client: Agentex) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -117,7 +117,7 @@ def test_streaming_response_delete(self, client: Agentex) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) assert cast(Any, response.is_closed) is True @@ -135,7 +135,7 @@ def test_method_delete_by_name(self, client: Agentex) -> None: task = client.tasks.delete_by_name( "task_name", ) - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -147,7 +147,7 @@ def test_raw_response_delete_by_name(self, client: Agentex) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -159,7 +159,7 @@ def test_streaming_response_delete_by_name(self, client: Agentex) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) assert cast(Any, response.is_closed) is True @@ -377,7 +377,7 @@ async def test_method_delete(self, async_client: AsyncAgentex) -> None: task = await async_client.tasks.delete( "task_id", ) - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -389,7 +389,7 @@ async def test_raw_response_delete(self, async_client: AsyncAgentex) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = await response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -401,7 +401,7 @@ async def test_streaming_response_delete(self, async_client: AsyncAgentex) -> No assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = await response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteResponse, task, path=["response"]) assert cast(Any, response.is_closed) is True @@ -419,7 +419,7 @@ async def test_method_delete_by_name(self, async_client: AsyncAgentex) -> None: task = await async_client.tasks.delete_by_name( "task_name", ) - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -431,7 +431,7 @@ async def test_raw_response_delete_by_name(self, async_client: AsyncAgentex) -> assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = await response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) @pytest.mark.skip() @parametrize @@ -443,7 +443,7 @@ async def test_streaming_response_delete_by_name(self, async_client: AsyncAgente assert response.http_request.headers.get("X-Stainless-Lang") == "python" task = await response.parse() - assert_matches_type(Task, task, path=["response"]) + assert_matches_type(TaskDeleteByNameResponse, task, path=["response"]) assert cast(Any, response.is_closed) is True