diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e2f90fb..700c64d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: lint: timeout-minutes: 10 name: lint - runs-on: ${{ github.repository == 'stainless-sdks/warp-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: 'ubuntu-latest' if: (github.event_name == 'push' || github.event.pull_request.head.repo.fork) && (github.event_name != 'push' || github.event.head_commit.message != 'codegen metadata') steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -41,7 +41,7 @@ jobs: permissions: contents: read id-token: write - runs-on: ${{ github.repository == 'stainless-sdks/warp-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 @@ -58,7 +58,7 @@ jobs: - name: Get GitHub OIDC Token if: |- - github.repository == 'stainless-sdks/warp-api-python' && + github.repository == 'warpdotdev/oz-sdk-python-staging' && !startsWith(github.ref, 'refs/heads/stl/') id: github-oidc uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 @@ -67,7 +67,7 @@ jobs: - name: Upload tarball if: |- - github.repository == 'stainless-sdks/warp-api-python' && + github.repository == 'warpdotdev/oz-sdk-python-staging' && !startsWith(github.ref, 'refs/heads/stl/') env: URL: https://pkg.stainless.com/s @@ -78,7 +78,7 @@ jobs: test: timeout-minutes: 10 name: test - runs-on: ${{ github.repository == 'stainless-sdks/warp-api-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} + runs-on: 'ubuntu-latest' if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 diff --git a/.release-please-manifest.json b/.release-please-manifest.json index d52d2b9..a26ebfc 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.13.0" + ".": "0.14.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index e679286..362b175 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 23 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/warp-bnavetta/warp-api-964f646a32c318735de7673531a12788aede1840f7ab4893f2efa31c83440837.yml -openapi_spec_hash: 30f07ff0bfb491efb11cd88fce79968a -config_hash: 236823a4936c76818117c16aa5c188df +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/warp-bnavetta/warp-api-0f3dae898b870134848191cdbb5e698902865948eb4639be341112c80a6c9e42.yml +openapi_spec_hash: 64c7e9657b989779d463734cacf11bfb +config_hash: 619fb7e70fce0afe18d08987282fce4e diff --git a/CHANGELOG.md b/CHANGELOG.md index e741eb1..4d3dcc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## 0.14.0 (2026-06-09) + +Full Changelog: [v0.13.0...v0.14.0](https://github.com/warpdotdev/oz-sdk-python/compare/v0.13.0...v0.14.0) + +### Features + +* Add server run runtime to agent API ([85d7ef8](https://github.com/warpdotdev/oz-sdk-python/commit/85d7ef8e6cc1380deed30f8efd6e75f062b3fa53)) +* Allow for empty-prompt cloud-agent handoff ([2542fa3](https://github.com/warpdotdev/oz-sdk-python/commit/2542fa3058b5feead7f46fe5255665ef5c36528e)) +* **api:** api update ([8d4b77c](https://github.com/warpdotdev/oz-sdk-python/commit/8d4b77c936054c5c125fa0747a298a64ed349a48)) +* **api:** api update ([a03690f](https://github.com/warpdotdev/oz-sdk-python/commit/a03690f7a25a0887c60981a53a2224c5ba1cc26a)) +* **api:** api update ([7ef54cc](https://github.com/warpdotdev/oz-sdk-python/commit/7ef54ccc0ad281b27a2e0db5cac2956bef2b93e1)) +* **api:** api update ([d25946f](https://github.com/warpdotdev/oz-sdk-python/commit/d25946f832fe901339b42dcf8842a17d20b57634)) +* **api:** api update ([d59deee](https://github.com/warpdotdev/oz-sdk-python/commit/d59deee2f15baa213eaa694b1bf71f94330b9d89)) +* Followups for docs-syncing workflow ([4697ddc](https://github.com/warpdotdev/oz-sdk-python/commit/4697ddc9625dd3bcdcc756af1da2e2ba0fc5fff0)) + + +### Bug Fixes + +* update aiohttp to resolve CVE-2026-22815 ([#25](https://github.com/warpdotdev/oz-sdk-python/issues/25)) ([03d6bc4](https://github.com/warpdotdev/oz-sdk-python/commit/03d6bc4d2253f820aa5b1fa842d382b20f2d681d)) + ## 0.13.0 (2026-05-21) Full Changelog: [v0.12.0...v0.13.0](https://github.com/warpdotdev/oz-sdk-python/compare/v0.12.0...v0.13.0) diff --git a/pyproject.toml b/pyproject.toml index 533a8e4..e798041 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "oz-agent-sdk" -version = "0.13.0" +version = "0.14.0" description = "The official Python library for the oz-api API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/scripts/utils/upload-artifact.sh b/scripts/utils/upload-artifact.sh index 9f6eb1f..4ce1bc0 100755 --- a/scripts/utils/upload-artifact.sh +++ b/scripts/utils/upload-artifact.sh @@ -20,7 +20,7 @@ UPLOAD_RESPONSE=$(curl -v -X PUT \ if echo "$UPLOAD_RESPONSE" | grep -q "HTTP/[0-9.]* 200"; then echo -e "\033[32mUploaded build to Stainless storage.\033[0m" - echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/warp-api-python/$SHA/$FILENAME'\033[0m" + echo -e "\033[32mInstallation: pip install 'https://pkg.stainless.com/s/oz-sdk-python-staging/$SHA/$FILENAME'\033[0m" else echo -e "\033[31mFailed to upload artifact.\033[0m" exit 1 diff --git a/src/oz_agent_sdk/_version.py b/src/oz_agent_sdk/_version.py index 1762ab1..0909eaa 100644 --- a/src/oz_agent_sdk/_version.py +++ b/src/oz_agent_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "oz_agent_sdk" -__version__ = "0.13.0" # x-release-please-version +__version__ = "0.14.0" # x-release-please-version diff --git a/src/oz_agent_sdk/resources/agent/agent.py b/src/oz_agent_sdk/resources/agent/agent.py index af2411c..6910539 100644 --- a/src/oz_agent_sdk/resources/agent/agent.py +++ b/src/oz_agent_sdk/resources/agent/agent.py @@ -275,10 +275,10 @@ def run( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> AgentRunResponse: - """Alias for POST /agent/run. + """Spawn a cloud agent with a prompt and optional configuration. - This is the preferred endpoint for creating new agent - runs. Behavior is identical to POST /agent/run. + The agent will be + queued for execution and assigned a unique run ID. Args: agent_identity_uid: Optional agent identity UID to use as the execution principal for the run. This @@ -302,7 +302,8 @@ def run( hierarchies. prompt: The prompt/instruction for the agent to execute. Required unless a skill is - specified via the skill field, config.skill_spec, or config.skills. + specified via the skill field, config.skill_spec, or config.skills. Handoff + requests may omit prompt when conversation_id is set. skill: Skill specification to use as the base prompt for the agent. Supported formats: @@ -566,10 +567,10 @@ async def run( extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> AgentRunResponse: - """Alias for POST /agent/run. + """Spawn a cloud agent with a prompt and optional configuration. - This is the preferred endpoint for creating new agent - runs. Behavior is identical to POST /agent/run. + The agent will be + queued for execution and assigned a unique run ID. Args: agent_identity_uid: Optional agent identity UID to use as the execution principal for the run. This @@ -593,7 +594,8 @@ async def run( hierarchies. prompt: The prompt/instruction for the agent to execute. Required unless a skill is - specified via the skill field, config.skill_spec, or config.skills. + specified via the skill field, config.skill_spec, or config.skills. Handoff + requests may omit prompt when conversation_id is set. skill: Skill specification to use as the base prompt for the agent. Supported formats: diff --git a/src/oz_agent_sdk/resources/agent/agent_.py b/src/oz_agent_sdk/resources/agent/agent_.py index f79333c..65eb4d5 100644 --- a/src/oz_agent_sdk/resources/agent/agent_.py +++ b/src/oz_agent_sdk/resources/agent/agent_.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Dict, Iterable, Optional import httpx @@ -19,6 +19,7 @@ from ...types.agent import agent_create_params, agent_update_params from ..._base_client import make_request_options from ...types.agent.agent_response import AgentResponse +from ...types.mcp_server_config_param import McpServerConfigParam from ...types.agent.list_agent_identities_response import ListAgentIdentitiesResponse __all__ = ["AgentResource", "AsyncAgentResource"] @@ -56,6 +57,7 @@ def create( environment_id: Optional[str] | Omit = omit, harness_auth_secrets: agent_create_params.HarnessAuthSecrets | Omit = omit, inference_providers: agent_create_params.InferenceProviders | Omit = omit, + mcp_servers: Dict[str, McpServerConfigParam] | Omit = omit, memory_stores: Iterable[agent_create_params.MemoryStore] | Omit = omit, prompt: Optional[str] | Omit = omit, secrets: Iterable[agent_create_params.Secret] | Omit = omit, @@ -89,6 +91,9 @@ def create( inference_providers: Inference provider settings used for LLM calls. + mcp_servers: Optional map of MCP server configurations by name to attach to runs executed by + this agent. Run-level MCP config takes precedence over this agent-level default. + memory_stores: Optional list of memory stores to attach to the agent. Each store must be team-owned by the same team as the agent. Duplicate UIDs within a single request are rejected. @@ -125,6 +130,7 @@ def create( "environment_id": environment_id, "harness_auth_secrets": harness_auth_secrets, "inference_providers": inference_providers, + "mcp_servers": mcp_servers, "memory_stores": memory_stores, "prompt": prompt, "secrets": secrets, @@ -148,6 +154,7 @@ def update( environment_id: Optional[str] | Omit = omit, harness_auth_secrets: Optional[agent_update_params.HarnessAuthSecrets] | Omit = omit, inference_providers: Optional[agent_update_params.InferenceProviders] | Omit = omit, + mcp_servers: Dict[str, McpServerConfigParam] | Omit = omit, memory_stores: Optional[Iterable[agent_update_params.MemoryStore]] | Omit = omit, name: str | Omit = omit, prompt: Optional[str] | Omit = omit, @@ -182,6 +189,10 @@ def update( inference_providers: Inference provider settings used for LLM calls. + mcp_servers: Replacement map of MCP server configurations by name. Omit to leave unchanged, + pass an empty object to clear, or pass a non-empty object to replace. Run-level + MCP config takes precedence over this agent-level default. + memory_stores: Replacement list of memory stores. Omit to leave unchanged, pass an empty array to clear, or pass a non-empty array to replace. @@ -216,6 +227,7 @@ def update( "environment_id": environment_id, "harness_auth_secrets": harness_auth_secrets, "inference_providers": inference_providers, + "mcp_servers": mcp_servers, "memory_stores": memory_stores, "name": name, "prompt": prompt, @@ -357,6 +369,7 @@ async def create( environment_id: Optional[str] | Omit = omit, harness_auth_secrets: agent_create_params.HarnessAuthSecrets | Omit = omit, inference_providers: agent_create_params.InferenceProviders | Omit = omit, + mcp_servers: Dict[str, McpServerConfigParam] | Omit = omit, memory_stores: Iterable[agent_create_params.MemoryStore] | Omit = omit, prompt: Optional[str] | Omit = omit, secrets: Iterable[agent_create_params.Secret] | Omit = omit, @@ -390,6 +403,9 @@ async def create( inference_providers: Inference provider settings used for LLM calls. + mcp_servers: Optional map of MCP server configurations by name to attach to runs executed by + this agent. Run-level MCP config takes precedence over this agent-level default. + memory_stores: Optional list of memory stores to attach to the agent. Each store must be team-owned by the same team as the agent. Duplicate UIDs within a single request are rejected. @@ -426,6 +442,7 @@ async def create( "environment_id": environment_id, "harness_auth_secrets": harness_auth_secrets, "inference_providers": inference_providers, + "mcp_servers": mcp_servers, "memory_stores": memory_stores, "prompt": prompt, "secrets": secrets, @@ -449,6 +466,7 @@ async def update( environment_id: Optional[str] | Omit = omit, harness_auth_secrets: Optional[agent_update_params.HarnessAuthSecrets] | Omit = omit, inference_providers: Optional[agent_update_params.InferenceProviders] | Omit = omit, + mcp_servers: Dict[str, McpServerConfigParam] | Omit = omit, memory_stores: Optional[Iterable[agent_update_params.MemoryStore]] | Omit = omit, name: str | Omit = omit, prompt: Optional[str] | Omit = omit, @@ -483,6 +501,10 @@ async def update( inference_providers: Inference provider settings used for LLM calls. + mcp_servers: Replacement map of MCP server configurations by name. Omit to leave unchanged, + pass an empty object to clear, or pass a non-empty object to replace. Run-level + MCP config takes precedence over this agent-level default. + memory_stores: Replacement list of memory stores. Omit to leave unchanged, pass an empty array to clear, or pass a non-empty array to replace. @@ -517,6 +539,7 @@ async def update( "environment_id": environment_id, "harness_auth_secrets": harness_auth_secrets, "inference_providers": inference_providers, + "mcp_servers": mcp_servers, "memory_stores": memory_stores, "name": name, "prompt": prompt, diff --git a/src/oz_agent_sdk/resources/agent/runs.py b/src/oz_agent_sdk/resources/agent/runs.py index c2d5075..fa745d3 100644 --- a/src/oz_agent_sdk/resources/agent/runs.py +++ b/src/oz_agent_sdk/resources/agent/runs.py @@ -301,7 +301,7 @@ def submit_followup( self, run_id: str, *, - message: str, + message: str | Omit = omit, mode: Literal["normal", "plan", "orchestrate"] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -621,7 +621,7 @@ async def submit_followup( self, run_id: str, *, - message: str, + message: str | Omit = omit, mode: Literal["normal", "plan", "orchestrate"] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. diff --git a/src/oz_agent_sdk/types/agent/agent_create_params.py b/src/oz_agent_sdk/types/agent/agent_create_params.py index 9de0a64..798e05d 100644 --- a/src/oz_agent_sdk/types/agent/agent_create_params.py +++ b/src/oz_agent_sdk/types/agent/agent_create_params.py @@ -2,10 +2,11 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Dict, Iterable, Optional from typing_extensions import Literal, Required, TypedDict from ..._types import SequenceNotStr +from ..mcp_server_config_param import McpServerConfigParam __all__ = [ "AgentCreateParams", @@ -45,6 +46,12 @@ class AgentCreateParams(TypedDict, total=False): inference_providers: InferenceProviders """Inference provider settings used for LLM calls.""" + mcp_servers: Dict[str, McpServerConfigParam] + """ + Optional map of MCP server configurations by name to attach to runs executed by + this agent. Run-level MCP config takes precedence over this agent-level default. + """ + memory_stores: Iterable[MemoryStore] """ Optional list of memory stores to attach to the agent. Each store must be diff --git a/src/oz_agent_sdk/types/agent/agent_response.py b/src/oz_agent_sdk/types/agent/agent_response.py index db0b1bf..37d13b9 100644 --- a/src/oz_agent_sdk/types/agent/agent_response.py +++ b/src/oz_agent_sdk/types/agent/agent_response.py @@ -1,10 +1,11 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import List, Optional +from typing import Dict, List, Optional from datetime import datetime from typing_extensions import Literal from ..._models import BaseModel +from ..mcp_server_config import McpServerConfig __all__ = [ "AgentResponse", @@ -108,6 +109,9 @@ class AgentResponse(BaseModel): uid: str """Unique identifier for the agent""" + updated_at: datetime + """When the agent was last updated (RFC3339)""" + base_harness: Optional[str] = None """Default harness for runs executed by this agent. @@ -150,5 +154,11 @@ class AgentResponse(BaseModel): inference_providers: Optional[InferenceProviders] = None """Inference provider settings used for LLM calls.""" + mcp_servers: Optional[Dict[str, McpServerConfig]] = None + """ + MCP server configurations attached to this agent by default. Run-level MCP + config takes precedence over this agent-level default. + """ + prompt: Optional[str] = None """Optional base prompt for this agent""" diff --git a/src/oz_agent_sdk/types/agent/agent_update_params.py b/src/oz_agent_sdk/types/agent/agent_update_params.py index fb1e36c..19082d4 100644 --- a/src/oz_agent_sdk/types/agent/agent_update_params.py +++ b/src/oz_agent_sdk/types/agent/agent_update_params.py @@ -2,10 +2,11 @@ from __future__ import annotations -from typing import Iterable, Optional +from typing import Dict, Iterable, Optional from typing_extensions import Literal, Required, TypedDict from ..._types import SequenceNotStr +from ..mcp_server_config_param import McpServerConfigParam __all__ = [ "AgentUpdateParams", @@ -51,6 +52,14 @@ class AgentUpdateParams(TypedDict, total=False): inference_providers: Optional[InferenceProviders] """Inference provider settings used for LLM calls.""" + mcp_servers: Dict[str, McpServerConfigParam] + """Replacement map of MCP server configurations by name. + + Omit to leave unchanged, pass an empty object to clear, or pass a non-empty + object to replace. Run-level MCP config takes precedence over this agent-level + default. + """ + memory_stores: Optional[Iterable[MemoryStore]] """Replacement list of memory stores. diff --git a/src/oz_agent_sdk/types/agent/run_item.py b/src/oz_agent_sdk/types/agent/run_item.py index 4293ce2..6181203 100644 --- a/src/oz_agent_sdk/types/agent/run_item.py +++ b/src/oz_agent_sdk/types/agent/run_item.py @@ -182,6 +182,12 @@ class RunItem(BaseModel): request_usage: Optional[RequestUsage] = None """Resource usage information for the run""" + run_time: Optional[str] = None + """Total runtime as an ISO 8601 duration (e.g. + + "PT2M30S"), computed server-side from run executions. + """ + schedule: Optional[Schedule] = None """ Information about the schedule that triggered this run (only present for diff --git a/src/oz_agent_sdk/types/agent/run_submit_followup_params.py b/src/oz_agent_sdk/types/agent/run_submit_followup_params.py index 004341f..abc435b 100644 --- a/src/oz_agent_sdk/types/agent/run_submit_followup_params.py +++ b/src/oz_agent_sdk/types/agent/run_submit_followup_params.py @@ -2,13 +2,13 @@ from __future__ import annotations -from typing_extensions import Literal, Required, TypedDict +from typing_extensions import Literal, TypedDict __all__ = ["RunSubmitFollowupParams"] class RunSubmitFollowupParams(TypedDict, total=False): - message: Required[str] + message: str """The follow-up message to send to the run.""" mode: Literal["normal", "plan", "orchestrate"] diff --git a/src/oz_agent_sdk/types/agent_run_params.py b/src/oz_agent_sdk/types/agent_run_params.py index fa34de8..870c2de 100644 --- a/src/oz_agent_sdk/types/agent_run_params.py +++ b/src/oz_agent_sdk/types/agent_run_params.py @@ -55,7 +55,8 @@ class AgentRunParams(TypedDict, total=False): prompt: str """ The prompt/instruction for the agent to execute. Required unless a skill is - specified via the skill field, config.skill_spec, or config.skills. + specified via the skill field, config.skill_spec, or config.skills. Handoff + requests may omit prompt when conversation_id is set. """ skill: str diff --git a/tests/api_resources/agent/test_agent_.py b/tests/api_resources/agent/test_agent_.py index d6819c5..dbc1785 100644 --- a/tests/api_resources/agent/test_agent_.py +++ b/tests/api_resources/agent/test_agent_.py @@ -48,6 +48,16 @@ def test_method_create_with_all_params(self, client: OzAPI) -> None: "role_arn": "role_arn", } }, + mcp_servers={ + "foo": { + "args": ["string"], + "command": "command", + "env": {"foo": "string"}, + "headers": {"foo": "string"}, + "url": "https://example.com", + "warp_id": "warp_id", + } + }, memory_stores=[ { "access": "read_write", @@ -115,6 +125,16 @@ def test_method_update_with_all_params(self, client: OzAPI) -> None: "role_arn": "role_arn", } }, + mcp_servers={ + "foo": { + "args": ["string"], + "command": "command", + "env": {"foo": "string"}, + "headers": {"foo": "string"}, + "url": "https://example.com", + "warp_id": "warp_id", + } + }, memory_stores=[ { "access": "read_write", @@ -309,6 +329,16 @@ async def test_method_create_with_all_params(self, async_client: AsyncOzAPI) -> "role_arn": "role_arn", } }, + mcp_servers={ + "foo": { + "args": ["string"], + "command": "command", + "env": {"foo": "string"}, + "headers": {"foo": "string"}, + "url": "https://example.com", + "warp_id": "warp_id", + } + }, memory_stores=[ { "access": "read_write", @@ -376,6 +406,16 @@ async def test_method_update_with_all_params(self, async_client: AsyncOzAPI) -> "role_arn": "role_arn", } }, + mcp_servers={ + "foo": { + "args": ["string"], + "command": "command", + "env": {"foo": "string"}, + "headers": {"foo": "string"}, + "url": "https://example.com", + "warp_id": "warp_id", + } + }, memory_stores=[ { "access": "read_write", diff --git a/tests/api_resources/agent/test_runs.py b/tests/api_resources/agent/test_runs.py index 6af094f..54bb08c 100644 --- a/tests/api_resources/agent/test_runs.py +++ b/tests/api_resources/agent/test_runs.py @@ -209,7 +209,6 @@ def test_path_params_list_handoff_attachments(self, client: OzAPI) -> None: def test_method_submit_followup(self, client: OzAPI) -> None: run = client.agent.runs.submit_followup( run_id="runId", - message="message", ) assert_matches_type(object, run, path=["response"]) @@ -228,7 +227,6 @@ def test_method_submit_followup_with_all_params(self, client: OzAPI) -> None: def test_raw_response_submit_followup(self, client: OzAPI) -> None: response = client.agent.runs.with_raw_response.submit_followup( run_id="runId", - message="message", ) assert response.is_closed is True @@ -241,7 +239,6 @@ def test_raw_response_submit_followup(self, client: OzAPI) -> None: def test_streaming_response_submit_followup(self, client: OzAPI) -> None: with client.agent.runs.with_streaming_response.submit_followup( run_id="runId", - message="message", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -257,7 +254,6 @@ def test_path_params_submit_followup(self, client: OzAPI) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"): client.agent.runs.with_raw_response.submit_followup( run_id="", - message="message", ) @@ -453,7 +449,6 @@ async def test_path_params_list_handoff_attachments(self, async_client: AsyncOzA async def test_method_submit_followup(self, async_client: AsyncOzAPI) -> None: run = await async_client.agent.runs.submit_followup( run_id="runId", - message="message", ) assert_matches_type(object, run, path=["response"]) @@ -472,7 +467,6 @@ async def test_method_submit_followup_with_all_params(self, async_client: AsyncO async def test_raw_response_submit_followup(self, async_client: AsyncOzAPI) -> None: response = await async_client.agent.runs.with_raw_response.submit_followup( run_id="runId", - message="message", ) assert response.is_closed is True @@ -485,7 +479,6 @@ async def test_raw_response_submit_followup(self, async_client: AsyncOzAPI) -> N async def test_streaming_response_submit_followup(self, async_client: AsyncOzAPI) -> None: async with async_client.agent.runs.with_streaming_response.submit_followup( run_id="runId", - message="message", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -501,5 +494,4 @@ async def test_path_params_submit_followup(self, async_client: AsyncOzAPI) -> No with pytest.raises(ValueError, match=r"Expected a non-empty value for `run_id` but received ''"): await async_client.agent.runs.with_raw_response.submit_followup( run_id="", - message="message", )