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
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.13.0"
".": "0.14.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -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
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion scripts/utils/upload-artifact.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/oz_agent_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__ = "oz_agent_sdk"
__version__ = "0.13.0" # x-release-please-version
__version__ = "0.14.0" # x-release-please-version
18 changes: 10 additions & 8 deletions src/oz_agent_sdk/resources/agent/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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:
Expand Down
25 changes: 24 additions & 1 deletion src/oz_agent_sdk/resources/agent/agent_.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from __future__ import annotations

from typing import Iterable, Optional
from typing import Dict, Iterable, Optional

import httpx

Expand All @@ -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"]
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions src/oz_agent_sdk/resources/agent/runs.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down
9 changes: 8 additions & 1 deletion src/oz_agent_sdk/types/agent/agent_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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
Expand Down
12 changes: 11 additions & 1 deletion src/oz_agent_sdk/types/agent/agent_response.py
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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"""
11 changes: 10 additions & 1 deletion src/oz_agent_sdk/types/agent/agent_update_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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.

Expand Down
6 changes: 6 additions & 0 deletions src/oz_agent_sdk/types/agent/run_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading
Loading