From 6c82145f77a9b461a5d2e36492d995d23114eed3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 21:39:30 +0000 Subject: [PATCH 1/7] refactor: remove deprecated register/unregister model endpoints --- .stats.yml | 8 +- api.md | 3 - .../resources/models/models.py | 248 +----------------- src/llama_stack_client/types/__init__.py | 2 - .../types/model_register_params.py | 38 --- .../types/model_register_response.py | 44 ---- tests/api_resources/test_models.py | 192 +------------- 7 files changed, 8 insertions(+), 527 deletions(-) delete mode 100644 src/llama_stack_client/types/model_register_params.py delete mode 100644 src/llama_stack_client/types/model_register_response.py diff --git a/.stats.yml b/.stats.yml index 5f85bdab..dc0bd21e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 94 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-7b856674124b79094ac28a6ac451d7a67b5ddd74aebecd5e468a1f8ccfd13bd1.yml -openapi_spec_hash: a5ca7c4dac274c534338a9b3f5d388c0 -config_hash: 7d5765272a641656f8231509937663a7 +configured_endpoints: 92 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-9ffc2353ad5334811c1ac49ab4eefba22a1d05975308004eb2e97e0206a69767.yml +openapi_spec_hash: df104dbea7b0c50ba74f0908174aa4a9 +config_hash: d8a05907bd87286473cdf868da7d2ede diff --git a/api.md b/api.md index 7d117845..5e0426aa 100644 --- a/api.md +++ b/api.md @@ -249,7 +249,6 @@ from llama_stack_client.types import ( Model, ModelRetrieveResponse, ModelListResponse, - ModelRegisterResponse, ) ``` @@ -257,8 +256,6 @@ Methods: - client.models.retrieve(model_id) -> ModelRetrieveResponse - client.models.list() -> ModelListResponse -- client.models.register(\*\*params) -> ModelRegisterResponse -- client.models.unregister(model_id) -> None ## OpenAI diff --git a/src/llama_stack_client/resources/models/models.py b/src/llama_stack_client/resources/models/models.py index 3fd88948..4b2a3cb2 100644 --- a/src/llama_stack_client/resources/models/models.py +++ b/src/llama_stack_client/resources/models/models.py @@ -8,9 +8,7 @@ from __future__ import annotations -import typing_extensions -from typing import Dict, Type, Optional, cast -from typing_extensions import Literal +from typing import Type, cast import httpx @@ -22,9 +20,8 @@ OpenAIResourceWithStreamingResponse, AsyncOpenAIResourceWithStreamingResponse, ) -from ...types import model_register_params -from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given -from ..._utils import path_template, maybe_transform, async_maybe_transform +from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -36,7 +33,6 @@ from ..._wrappers import DataWrapper from ..._base_client import make_request_options from ...types.model_list_response import ModelListResponse -from ...types.model_register_response import ModelRegisterResponse from ...types.model_retrieve_response import ModelRetrieveResponse __all__ = ["ModelsResource", "AsyncModelsResource"] @@ -124,105 +120,6 @@ def list( cast_to=cast(Type[ModelListResponse], DataWrapper[ModelListResponse]), ) - @typing_extensions.deprecated("deprecated") - def register( - self, - *, - model_id: str, - metadata: Optional[Dict[str, object]] | Omit = omit, - model_type: Optional[Literal["llm", "embedding", "rerank"]] | Omit = omit, - model_validation: Optional[bool] | Omit = omit, - provider_id: Optional[str] | Omit = omit, - provider_model_id: Optional[str] | 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ModelRegisterResponse: - """ - Register a model. - - Args: - model_id: The identifier of the model to register. - - metadata: Any additional metadata for this model. - - model_type: Enumeration of supported model types in Llama Stack. - - model_validation: Enable model availability check during registration. When false (default), - validation is deferred to runtime and model is preserved during provider - refresh. - - provider_id: The identifier of the provider. - - provider_model_id: The identifier of the model in the provider. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._post( - "/v1/models", - body=maybe_transform( - { - "model_id": model_id, - "metadata": metadata, - "model_type": model_type, - "model_validation": model_validation, - "provider_id": provider_id, - "provider_model_id": provider_model_id, - }, - model_register_params.ModelRegisterParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ModelRegisterResponse, - ) - - @typing_extensions.deprecated("deprecated") - def unregister( - self, - model_id: str, - *, - # 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> None: - """ - Unregister a model. - - Args: - model_id: The ID of the model to unregister. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not model_id: - raise ValueError(f"Expected a non-empty value for `model_id` but received {model_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return self._delete( - path_template("/v1/models/{model_id}", model_id=model_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - class AsyncModelsResource(AsyncAPIResource): @cached_property @@ -306,105 +203,6 @@ async def list( cast_to=cast(Type[ModelListResponse], DataWrapper[ModelListResponse]), ) - @typing_extensions.deprecated("deprecated") - async def register( - self, - *, - model_id: str, - metadata: Optional[Dict[str, object]] | Omit = omit, - model_type: Optional[Literal["llm", "embedding", "rerank"]] | Omit = omit, - model_validation: Optional[bool] | Omit = omit, - provider_id: Optional[str] | Omit = omit, - provider_model_id: Optional[str] | 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> ModelRegisterResponse: - """ - Register a model. - - Args: - model_id: The identifier of the model to register. - - metadata: Any additional metadata for this model. - - model_type: Enumeration of supported model types in Llama Stack. - - model_validation: Enable model availability check during registration. When false (default), - validation is deferred to runtime and model is preserved during provider - refresh. - - provider_id: The identifier of the provider. - - provider_model_id: The identifier of the model in the provider. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return await self._post( - "/v1/models", - body=await async_maybe_transform( - { - "model_id": model_id, - "metadata": metadata, - "model_type": model_type, - "model_validation": model_validation, - "provider_id": provider_id, - "provider_model_id": provider_model_id, - }, - model_register_params.ModelRegisterParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=ModelRegisterResponse, - ) - - @typing_extensions.deprecated("deprecated") - async def unregister( - self, - model_id: str, - *, - # 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. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> None: - """ - Unregister a model. - - Args: - model_id: The ID of the model to unregister. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not model_id: - raise ValueError(f"Expected a non-empty value for `model_id` but received {model_id!r}") - extra_headers = {"Accept": "*/*", **(extra_headers or {})} - return await self._delete( - path_template("/v1/models/{model_id}", model_id=model_id), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=NoneType, - ) - class ModelsResourceWithRawResponse: def __init__(self, models: ModelsResource) -> None: @@ -416,16 +214,6 @@ def __init__(self, models: ModelsResource) -> None: self.list = to_raw_response_wrapper( models.list, ) - self.register = ( # pyright: ignore[reportDeprecated] - to_raw_response_wrapper( - models.register, # pyright: ignore[reportDeprecated], - ) - ) - self.unregister = ( # pyright: ignore[reportDeprecated] - to_raw_response_wrapper( - models.unregister, # pyright: ignore[reportDeprecated], - ) - ) @cached_property def openai(self) -> OpenAIResourceWithRawResponse: @@ -442,16 +230,6 @@ def __init__(self, models: AsyncModelsResource) -> None: self.list = async_to_raw_response_wrapper( models.list, ) - self.register = ( # pyright: ignore[reportDeprecated] - async_to_raw_response_wrapper( - models.register, # pyright: ignore[reportDeprecated], - ) - ) - self.unregister = ( # pyright: ignore[reportDeprecated] - async_to_raw_response_wrapper( - models.unregister, # pyright: ignore[reportDeprecated], - ) - ) @cached_property def openai(self) -> AsyncOpenAIResourceWithRawResponse: @@ -468,16 +246,6 @@ def __init__(self, models: ModelsResource) -> None: self.list = to_streamed_response_wrapper( models.list, ) - self.register = ( # pyright: ignore[reportDeprecated] - to_streamed_response_wrapper( - models.register, # pyright: ignore[reportDeprecated], - ) - ) - self.unregister = ( # pyright: ignore[reportDeprecated] - to_streamed_response_wrapper( - models.unregister, # pyright: ignore[reportDeprecated], - ) - ) @cached_property def openai(self) -> OpenAIResourceWithStreamingResponse: @@ -494,16 +262,6 @@ def __init__(self, models: AsyncModelsResource) -> None: self.list = async_to_streamed_response_wrapper( models.list, ) - self.register = ( # pyright: ignore[reportDeprecated] - async_to_streamed_response_wrapper( - models.register, # pyright: ignore[reportDeprecated], - ) - ) - self.unregister = ( # pyright: ignore[reportDeprecated] - async_to_streamed_response_wrapper( - models.unregister, # pyright: ignore[reportDeprecated], - ) - ) @cached_property def openai(self) -> AsyncOpenAIResourceWithStreamingResponse: diff --git a/src/llama_stack_client/types/__init__.py b/src/llama_stack_client/types/__init__.py index b40e8110..b6abf68b 100644 --- a/src/llama_stack_client/types/__init__.py +++ b/src/llama_stack_client/types/__init__.py @@ -56,7 +56,6 @@ from .file_content_response import FileContentResponse as FileContentResponse from .list_prompts_response import ListPromptsResponse as ListPromptsResponse from .list_shields_response import ListShieldsResponse as ListShieldsResponse -from .model_register_params import ModelRegisterParams as ModelRegisterParams from .query_chunks_response import QueryChunksResponse as QueryChunksResponse from .prompt_retrieve_params import PromptRetrieveParams as PromptRetrieveParams from .provider_list_response import ProviderListResponse as ProviderListResponse @@ -68,7 +67,6 @@ from .vector_io_query_params import VectorIoQueryParams as VectorIoQueryParams from .batch_retrieve_response import BatchRetrieveResponse as BatchRetrieveResponse from .embedding_create_params import EmbeddingCreateParams as EmbeddingCreateParams -from .model_register_response import ModelRegisterResponse as ModelRegisterResponse from .model_retrieve_response import ModelRetrieveResponse as ModelRetrieveResponse from .vector_io_insert_params import VectorIoInsertParams as VectorIoInsertParams from .completion_create_params import CompletionCreateParams as CompletionCreateParams diff --git a/src/llama_stack_client/types/model_register_params.py b/src/llama_stack_client/types/model_register_params.py deleted file mode 100644 index 0100748a..00000000 --- a/src/llama_stack_client/types/model_register_params.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Dict, Optional -from typing_extensions import Literal, Required, TypedDict - -__all__ = ["ModelRegisterParams"] - - -class ModelRegisterParams(TypedDict, total=False): - model_id: Required[str] - """The identifier of the model to register.""" - - metadata: Optional[Dict[str, object]] - """Any additional metadata for this model.""" - - model_type: Optional[Literal["llm", "embedding", "rerank"]] - """Enumeration of supported model types in Llama Stack.""" - - model_validation: Optional[bool] - """Enable model availability check during registration. - - When false (default), validation is deferred to runtime and model is preserved - during provider refresh. - """ - - provider_id: Optional[str] - """The identifier of the provider.""" - - provider_model_id: Optional[str] - """The identifier of the model in the provider.""" diff --git a/src/llama_stack_client/types/model_register_response.py b/src/llama_stack_client/types/model_register_response.py deleted file mode 100644 index d91da869..00000000 --- a/src/llama_stack_client/types/model_register_response.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Dict, Optional -from typing_extensions import Literal - -from pydantic import Field as FieldInfo - -from .._models import BaseModel - -__all__ = ["ModelRegisterResponse"] - - -class ModelRegisterResponse(BaseModel): - """A model resource representing an AI model registered in Llama Stack.""" - - identifier: str - """Unique identifier for this resource in llama stack""" - - provider_id: str - """ID of the provider that owns this resource""" - - metadata: Optional[Dict[str, object]] = None - """Any additional metadata for this model""" - - api_model_type: Optional[Literal["llm", "embedding", "rerank"]] = FieldInfo(alias="model_type", default=None) - """Enumeration of supported model types in Llama Stack.""" - - api_model_validation: Optional[bool] = FieldInfo(alias="model_validation", default=None) - """Enable model availability check during registration. - - When false (default), validation is deferred to runtime and model is preserved - during provider refresh. - """ - - provider_resource_id: Optional[str] = None - """Unique identifier for this resource in the provider""" - - type: Optional[Literal["model"]] = None diff --git a/tests/api_resources/test_models.py b/tests/api_resources/test_models.py index b2ca5fdd..a50d3905 100644 --- a/tests/api_resources/test_models.py +++ b/tests/api_resources/test_models.py @@ -15,13 +15,7 @@ from tests.utils import assert_matches_type from llama_stack_client import LlamaStackClient, AsyncLlamaStackClient -from llama_stack_client.types import ( - ModelListResponse, - ModelRegisterResponse, - ModelRetrieveResponse, -) - -# pyright: reportDeprecated=false +from llama_stack_client.types import ModelListResponse, ModelRetrieveResponse base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -92,98 +86,6 @@ def test_streaming_response_list(self, client: LlamaStackClient) -> None: assert cast(Any, response.is_closed) is True - @parametrize - def test_method_register(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = client.models.register( - model_id="model_id", - ) - - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - def test_method_register_with_all_params(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = client.models.register( - model_id="model_id", - metadata={"foo": "bar"}, - model_type="llm", - model_validation=True, - provider_id="provider_id", - provider_model_id="provider_model_id", - ) - - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - def test_raw_response_register(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - response = client.models.with_raw_response.register( - model_id="model_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - model = response.parse() - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - def test_streaming_response_register(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - with client.models.with_streaming_response.register( - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - model = response.parse() - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_unregister(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = client.models.unregister( - "model_id", - ) - - assert model is None - - @parametrize - def test_raw_response_unregister(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - response = client.models.with_raw_response.unregister( - "model_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - model = response.parse() - assert model is None - - @parametrize - def test_streaming_response_unregister(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - with client.models.with_streaming_response.unregister( - "model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - model = response.parse() - assert model is None - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_unregister(self, client: LlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - with pytest.raises(ValueError, match=r"Expected a non-empty value for `model_id` but received ''"): - client.models.with_raw_response.unregister( - "", - ) - class TestAsyncModels: parametrize = pytest.mark.parametrize( @@ -252,95 +154,3 @@ async def test_streaming_response_list(self, async_client: AsyncLlamaStackClient assert_matches_type(ModelListResponse, model, path=["response"]) assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_register(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = await async_client.models.register( - model_id="model_id", - ) - - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - async def test_method_register_with_all_params(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = await async_client.models.register( - model_id="model_id", - metadata={"foo": "bar"}, - model_type="llm", - model_validation=True, - provider_id="provider_id", - provider_model_id="provider_model_id", - ) - - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - async def test_raw_response_register(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - response = await async_client.models.with_raw_response.register( - model_id="model_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - model = await response.parse() - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - @parametrize - async def test_streaming_response_register(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - async with async_client.models.with_streaming_response.register( - model_id="model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - model = await response.parse() - assert_matches_type(ModelRegisterResponse, model, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_unregister(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - model = await async_client.models.unregister( - "model_id", - ) - - assert model is None - - @parametrize - async def test_raw_response_unregister(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - response = await async_client.models.with_raw_response.unregister( - "model_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - model = await response.parse() - assert model is None - - @parametrize - async def test_streaming_response_unregister(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - async with async_client.models.with_streaming_response.unregister( - "model_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - model = await response.parse() - assert model is None - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_unregister(self, async_client: AsyncLlamaStackClient) -> None: - with pytest.warns(DeprecationWarning): - with pytest.raises(ValueError, match=r"Expected a non-empty value for `model_id` but received ''"): - await async_client.models.with_raw_response.unregister( - "", - ) From 3bb043e2859ae601cd69c380e1749a1ff18a2a00 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 09:17:15 +0000 Subject: [PATCH 2/7] feat: add reasoning output types to OpenAI Responses API spec --- .stats.yml | 4 +- .../types/response_create_params.py | 60 +++++++++++++ .../types/response_list_response.py | 89 ++++++++++++++++++ .../types/response_object.py | 46 ++++++++++ .../types/response_object_stream.py | 90 +++++++++++++++++++ .../responses/input_item_list_response.py | 43 +++++++++ tests/api_resources/test_responses.py | 20 ++++- 7 files changed, 346 insertions(+), 6 deletions(-) diff --git a/.stats.yml b/.stats.yml index dc0bd21e..6a7f094b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 92 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-9ffc2353ad5334811c1ac49ab4eefba22a1d05975308004eb2e97e0206a69767.yml -openapi_spec_hash: df104dbea7b0c50ba74f0908174aa4a9 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-678bab2f0d5095518aacc2b2c249484390e94d6799c75cb0ee07dd0f1955e270.yml +openapi_spec_hash: 1159551b99441246a96a9e21a49456ab config_hash: d8a05907bd87286473cdf868da7d2ede diff --git a/src/llama_stack_client/types/response_create_params.py b/src/llama_stack_client/types/response_create_params.py index 59886a69..5ce3f825 100644 --- a/src/llama_stack_client/types/response_create_params.py +++ b/src/llama_stack_client/types/response_create_params.py @@ -39,6 +39,9 @@ "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageMcpListTools", "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageMcpListToolsTool", "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseMcpApprovalRequest", + "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItem", + "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemSummary", + "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemContent", "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseInputFunctionToolCallOutput", "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFile", "InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText", @@ -558,6 +561,59 @@ class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutp type: Literal["mcp_approval_request"] +class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemSummary( + TypedDict, total=False +): + """A summary of reasoning output from the model.""" + + text: Required[str] + """The summary text of the reasoning output.""" + + type: Literal["summary_text"] + """The type identifier, always 'summary_text'.""" + + +class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemContent( + TypedDict, total=False +): + """Reasoning text from the model.""" + + text: Required[str] + """The reasoning text content from the model.""" + + type: Literal["reasoning_text"] + """The type identifier, always 'reasoning_text'.""" + + +class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItem( + TypedDict, total=False +): + """Reasoning output from the model, representing the model's thinking process.""" + + id: Required[str] + """Unique identifier for the reasoning output item.""" + + summary: Required[ + Iterable[ + InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemSummary + ] + ] + """Summary of the reasoning output.""" + + content: Optional[ + Iterable[ + InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItemContent + ] + ] + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """The status of the reasoning output.""" + + type: Literal["reasoning"] + """The type identifier, always 'reasoning'.""" + + class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText( TypedDict, total=False ): @@ -654,6 +710,7 @@ class InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutp InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageMcpCall, InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageMcpListTools, InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseMcpApprovalRequest, + InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseOutputMessageReasoningItem, InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseInputFunctionToolCallOutput, InputListOpenAIResponseMessageUnionOpenAIResponseInputFunctionToolCallOutputOpenAIResponseMcpApprovalResponseOpenAIResponseMcpApprovalResponse, ] @@ -727,6 +784,9 @@ class Reasoning(TypedDict, total=False): effort: Optional[Literal["none", "minimal", "low", "medium", "high", "xhigh"]] + summary: Optional[Literal["auto", "concise", "detailed"]] + """Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'.""" + class StreamOptions(TypedDict, total=False): """Options that control streamed response behavior.""" diff --git a/src/llama_stack_client/types/response_list_response.py b/src/llama_stack_client/types/response_list_response.py index d09d7110..16b7778b 100644 --- a/src/llama_stack_client/types/response_list_response.py +++ b/src/llama_stack_client/types/response_list_response.py @@ -40,6 +40,9 @@ "InputOpenAIResponseOutputMessageMcpListTools", "InputOpenAIResponseOutputMessageMcpListToolsTool", "InputOpenAIResponseMcpApprovalRequest", + "InputOpenAIResponseOutputMessageReasoningItem", + "InputOpenAIResponseOutputMessageReasoningItemSummary", + "InputOpenAIResponseOutputMessageReasoningItemContent", "InputOpenAIResponseInputFunctionToolCallOutput", "InputOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFile", "InputOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText", @@ -70,6 +73,9 @@ "OutputOpenAIResponseOutputMessageMcpListTools", "OutputOpenAIResponseOutputMessageMcpListToolsTool", "OutputOpenAIResponseMcpApprovalRequest", + "OutputOpenAIResponseOutputMessageReasoningItem", + "OutputOpenAIResponseOutputMessageReasoningItemSummary", + "OutputOpenAIResponseOutputMessageReasoningItemContent", "Error", "IncompleteDetails", "Prompt", @@ -439,6 +445,45 @@ class InputOpenAIResponseMcpApprovalRequest(BaseModel): type: Optional[Literal["mcp_approval_request"]] = None +class InputOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class InputOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class InputOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[InputOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[InputOpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + class InputOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText( BaseModel ): @@ -532,6 +577,7 @@ class InputOpenAIResponseMcpApprovalResponse(BaseModel): InputOpenAIResponseOutputMessageMcpCall, InputOpenAIResponseOutputMessageMcpListTools, InputOpenAIResponseMcpApprovalRequest, + InputOpenAIResponseOutputMessageReasoningItem, InputOpenAIResponseInputFunctionToolCallOutput, InputOpenAIResponseMcpApprovalResponse, InputOpenAIResponseMessageOutput, @@ -876,6 +922,45 @@ class OutputOpenAIResponseMcpApprovalRequest(BaseModel): type: Optional[Literal["mcp_approval_request"]] = None +class OutputOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OutputOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OutputOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OutputOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[OutputOpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + Output: TypeAlias = Annotated[ Union[ OutputOpenAIResponseMessageOutput, @@ -885,6 +970,7 @@ class OutputOpenAIResponseMcpApprovalRequest(BaseModel): OutputOpenAIResponseOutputMessageMcpCall, OutputOpenAIResponseOutputMessageMcpListTools, OutputOpenAIResponseMcpApprovalRequest, + OutputOpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] @@ -966,6 +1052,9 @@ class Reasoning(BaseModel): effort: Optional[Literal["none", "minimal", "low", "medium", "high", "xhigh"]] = None + summary: Optional[Literal["auto", "concise", "detailed"]] = None + """Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'.""" + class TextFormat(BaseModel): """Configuration for Responses API text format.""" diff --git a/src/llama_stack_client/types/response_object.py b/src/llama_stack_client/types/response_object.py index 3cc8e89e..d582225e 100644 --- a/src/llama_stack_client/types/response_object.py +++ b/src/llama_stack_client/types/response_object.py @@ -40,6 +40,9 @@ "OutputOpenAIResponseOutputMessageMcpListTools", "OutputOpenAIResponseOutputMessageMcpListToolsTool", "OutputOpenAIResponseMcpApprovalRequest", + "OutputOpenAIResponseOutputMessageReasoningItem", + "OutputOpenAIResponseOutputMessageReasoningItemSummary", + "OutputOpenAIResponseOutputMessageReasoningItemContent", "Error", "IncompleteDetails", "Prompt", @@ -409,6 +412,45 @@ class OutputOpenAIResponseMcpApprovalRequest(BaseModel): type: Optional[Literal["mcp_approval_request"]] = None +class OutputOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OutputOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OutputOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OutputOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[OutputOpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + Output: TypeAlias = Annotated[ Union[ OutputOpenAIResponseMessageOutput, @@ -418,6 +460,7 @@ class OutputOpenAIResponseMcpApprovalRequest(BaseModel): OutputOpenAIResponseOutputMessageMcpCall, OutputOpenAIResponseOutputMessageMcpListTools, OutputOpenAIResponseMcpApprovalRequest, + OutputOpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] @@ -499,6 +542,9 @@ class Reasoning(BaseModel): effort: Optional[Literal["none", "minimal", "low", "medium", "high", "xhigh"]] = None + summary: Optional[Literal["auto", "concise", "detailed"]] = None + """Summary mode for reasoning output. One of 'auto', 'concise', or 'detailed'.""" + class TextFormat(BaseModel): """Configuration for Responses API text format.""" diff --git a/src/llama_stack_client/types/response_object_stream.py b/src/llama_stack_client/types/response_object_stream.py index ed4a021a..6e84d189 100644 --- a/src/llama_stack_client/types/response_object_stream.py +++ b/src/llama_stack_client/types/response_object_stream.py @@ -42,6 +42,9 @@ "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListTools", "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListToolsTool", "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpApprovalRequest", + "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItem", + "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemSummary", + "OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemContent", "OpenAIResponseObjectStreamResponseOutputItemDone", "OpenAIResponseObjectStreamResponseOutputItemDoneItem", "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessage", @@ -67,6 +70,9 @@ "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListTools", "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListToolsTool", "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpApprovalRequest", + "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItem", + "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemSummary", + "OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemContent", "OpenAIResponseObjectStreamResponseOutputTextDelta", "OpenAIResponseObjectStreamResponseOutputTextDeltaLogprob", "OpenAIResponseObjectStreamResponseOutputTextDeltaLogprobTopLogprob", @@ -497,6 +503,47 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpAppr type: Optional[Literal["mcp_approval_request"]] = None +class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[ + List[OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItemContent] + ] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + OpenAIResponseObjectStreamResponseOutputItemAddedItem: TypeAlias = Annotated[ Union[ OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMessage, @@ -506,6 +553,7 @@ class OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpAppr OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpCall, OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageMcpListTools, OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseMcpApprovalRequest, + OpenAIResponseObjectStreamResponseOutputItemAddedItemOpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] @@ -872,6 +920,47 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpAppro type: Optional[Literal["mcp_approval_request"]] = None +class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[ + List[OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItemContent] + ] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + OpenAIResponseObjectStreamResponseOutputItemDoneItem: TypeAlias = Annotated[ Union[ OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMessage, @@ -881,6 +970,7 @@ class OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpAppro OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpCall, OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageMcpListTools, OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseMcpApprovalRequest, + OpenAIResponseObjectStreamResponseOutputItemDoneItemOpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] diff --git a/src/llama_stack_client/types/responses/input_item_list_response.py b/src/llama_stack_client/types/responses/input_item_list_response.py index 242962a7..9591b758 100644 --- a/src/llama_stack_client/types/responses/input_item_list_response.py +++ b/src/llama_stack_client/types/responses/input_item_list_response.py @@ -38,6 +38,9 @@ "DataOpenAIResponseOutputMessageMcpListTools", "DataOpenAIResponseOutputMessageMcpListToolsTool", "DataOpenAIResponseMcpApprovalRequest", + "DataOpenAIResponseOutputMessageReasoningItem", + "DataOpenAIResponseOutputMessageReasoningItemSummary", + "DataOpenAIResponseOutputMessageReasoningItemContent", "DataOpenAIResponseInputFunctionToolCallOutput", "DataOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFile", "DataOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText", @@ -385,6 +388,45 @@ class DataOpenAIResponseMcpApprovalRequest(BaseModel): type: Optional[Literal["mcp_approval_request"]] = None +class DataOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class DataOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class DataOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[DataOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[DataOpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + class DataOpenAIResponseInputFunctionToolCallOutputOutputListOpenAIResponseInputMessageContentTextOpenAIResponseInputMessageContentImageOpenAIResponseInputMessageContentFileOpenAIResponseInputMessageContentText( BaseModel ): @@ -478,6 +520,7 @@ class DataOpenAIResponseMcpApprovalResponse(BaseModel): DataOpenAIResponseOutputMessageMcpCall, DataOpenAIResponseOutputMessageMcpListTools, DataOpenAIResponseMcpApprovalRequest, + DataOpenAIResponseOutputMessageReasoningItem, DataOpenAIResponseInputFunctionToolCallOutput, DataOpenAIResponseMcpApprovalResponse, DataOpenAIResponseMessageOutput, diff --git a/tests/api_resources/test_responses.py b/tests/api_resources/test_responses.py index 2b85ceb0..97e3084d 100644 --- a/tests/api_resources/test_responses.py +++ b/tests/api_resources/test_responses.py @@ -65,7 +65,10 @@ def test_method_create_with_all_params_overload_1(self, client: LlamaStackClient "version": "version", }, prompt_cache_key="prompt_cache_key", - reasoning={"effort": "none"}, + reasoning={ + "effort": "none", + "summary": "auto", + }, safety_identifier="safety_identifier", service_tier="auto", store=True, @@ -159,7 +162,10 @@ def test_method_create_with_all_params_overload_2(self, client: LlamaStackClient "version": "version", }, prompt_cache_key="prompt_cache_key", - reasoning={"effort": "none"}, + reasoning={ + "effort": "none", + "summary": "auto", + }, safety_identifier="safety_identifier", service_tier="auto", store=True, @@ -368,7 +374,10 @@ async def test_method_create_with_all_params_overload_1(self, async_client: Asyn "version": "version", }, prompt_cache_key="prompt_cache_key", - reasoning={"effort": "none"}, + reasoning={ + "effort": "none", + "summary": "auto", + }, safety_identifier="safety_identifier", service_tier="auto", store=True, @@ -462,7 +471,10 @@ async def test_method_create_with_all_params_overload_2(self, async_client: Asyn "version": "version", }, prompt_cache_key="prompt_cache_key", - reasoning={"effort": "none"}, + reasoning={ + "effort": "none", + "summary": "auto", + }, safety_identifier="safety_identifier", service_tier="auto", store=True, From 82edffaebfa5d36d9494bee945a64b64d4453414 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 21:41:02 +0000 Subject: [PATCH 3/7] chore(tests): bump steady to v0.20.1 --- scripts/mock | 13 ++++++++----- scripts/test | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/mock b/scripts/mock index e1256ee6..93cbfea0 100755 --- a/scripts/mock +++ b/scripts/mock @@ -28,21 +28,24 @@ echo "==> Starting mock server with file ${SPEC_PATH}" # Run steady mock on the given spec if [ "$1" == "--daemon" ]; then - npm exec --package=@mockoon/cli@9.3.0 -- mockoon-cli start --data "$SPEC_PATH" --port 4010 &>.mockoon.log & + # Pre-install the package so the download doesn't eat into the startup timeout + npm exec --package=@stdy/cli@0.20.1 -- steady --version + + npm exec --package=@stdy/cli@0.20.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" - while ! grep -q "Error: \|Server started on port 4010" ".mockoon.log"; do + while ! grep -q "Error: \|Server started on port 4010" ".stdy.log"; do echo -n "." sleep 0.1 done - if grep -q "Error: " ".mockoon.log"; then - cat .mockoon.log + if grep -q "Error: " ".stdy.log"; then + cat .stdy.log exit 1 fi echo else - npm exec --package=@mockoon/cli@9.3.0 -- mockoon-cli start --data "$SPEC_PATH" --port 4010 + npm exec --package=@stdy/cli@0.20.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi diff --git a/scripts/test b/scripts/test index 7772d870..49662c06 100755 --- a/scripts/test +++ b/scripts/test @@ -47,7 +47,7 @@ elif ! prism_is_running; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.19.7 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.20.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 From 029da3fb41d13b6419e7d49b5b04f525818cf731 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:14:56 +0000 Subject: [PATCH 4/7] feat: add reasoning as valid conversation item --- .stats.yml | 4 +- .../types/conversation_create_params.py | 43 +++++++++++++++++++ .../types/conversations/item_create_params.py | 43 +++++++++++++++++++ .../conversations/item_create_response.py | 43 +++++++++++++++++++ .../types/conversations/item_get_response.py | 43 +++++++++++++++++++ .../types/conversations/item_list_response.py | 43 +++++++++++++++++++ 6 files changed, 217 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6a7f094b..29e9d3a7 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 92 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-678bab2f0d5095518aacc2b2c249484390e94d6799c75cb0ee07dd0f1955e270.yml -openapi_spec_hash: 1159551b99441246a96a9e21a49456ab +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-2aa092601bf8f391294f803507a7d2d04292d2aaa16769a3514fd1354061032e.yml +openapi_spec_hash: 71228b84ed828c47f5e49902fa8f16e8 config_hash: d8a05907bd87286473cdf868da7d2ede diff --git a/src/llama_stack_client/types/conversation_create_params.py b/src/llama_stack_client/types/conversation_create_params.py index dfaae93e..40b0876b 100644 --- a/src/llama_stack_client/types/conversation_create_params.py +++ b/src/llama_stack_client/types/conversation_create_params.py @@ -45,6 +45,9 @@ "ItemOpenAIResponseOutputMessageMcpCall", "ItemOpenAIResponseOutputMessageMcpListTools", "ItemOpenAIResponseOutputMessageMcpListToolsTool", + "ItemOpenAIResponseOutputMessageReasoningItem", + "ItemOpenAIResponseOutputMessageReasoningItemSummary", + "ItemOpenAIResponseOutputMessageReasoningItemContent", ] @@ -469,6 +472,45 @@ class ItemOpenAIResponseOutputMessageMcpListTools(TypedDict, total=False): type: Literal["mcp_list_tools"] +class ItemOpenAIResponseOutputMessageReasoningItemSummary(TypedDict, total=False): + """A summary of reasoning output from the model.""" + + text: Required[str] + """The summary text of the reasoning output.""" + + type: Literal["summary_text"] + """The type identifier, always 'summary_text'.""" + + +class ItemOpenAIResponseOutputMessageReasoningItemContent(TypedDict, total=False): + """Reasoning text from the model.""" + + text: Required[str] + """The reasoning text content from the model.""" + + type: Literal["reasoning_text"] + """The type identifier, always 'reasoning_text'.""" + + +class ItemOpenAIResponseOutputMessageReasoningItem(TypedDict, total=False): + """Reasoning output from the model, representing the model's thinking process.""" + + id: Required[str] + """Unique identifier for the reasoning output item.""" + + summary: Required[Iterable[ItemOpenAIResponseOutputMessageReasoningItemSummary]] + """Summary of the reasoning output.""" + + content: Optional[Iterable[ItemOpenAIResponseOutputMessageReasoningItemContent]] + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """The status of the reasoning output.""" + + type: Literal["reasoning"] + """The type identifier, always 'reasoning'.""" + + Item: TypeAlias = Union[ ItemOpenAIResponseMessageInput, ItemOpenAIResponseOutputMessageWebSearchToolCall, @@ -479,4 +521,5 @@ class ItemOpenAIResponseOutputMessageMcpListTools(TypedDict, total=False): ItemOpenAIResponseMcpApprovalResponse, ItemOpenAIResponseOutputMessageMcpCall, ItemOpenAIResponseOutputMessageMcpListTools, + ItemOpenAIResponseOutputMessageReasoningItem, ] diff --git a/src/llama_stack_client/types/conversations/item_create_params.py b/src/llama_stack_client/types/conversations/item_create_params.py index 22d49519..f081316a 100644 --- a/src/llama_stack_client/types/conversations/item_create_params.py +++ b/src/llama_stack_client/types/conversations/item_create_params.py @@ -45,6 +45,9 @@ "ItemOpenAIResponseOutputMessageMcpCall", "ItemOpenAIResponseOutputMessageMcpListTools", "ItemOpenAIResponseOutputMessageMcpListToolsTool", + "ItemOpenAIResponseOutputMessageReasoningItem", + "ItemOpenAIResponseOutputMessageReasoningItemSummary", + "ItemOpenAIResponseOutputMessageReasoningItemContent", ] @@ -469,6 +472,45 @@ class ItemOpenAIResponseOutputMessageMcpListTools(TypedDict, total=False): type: Literal["mcp_list_tools"] +class ItemOpenAIResponseOutputMessageReasoningItemSummary(TypedDict, total=False): + """A summary of reasoning output from the model.""" + + text: Required[str] + """The summary text of the reasoning output.""" + + type: Literal["summary_text"] + """The type identifier, always 'summary_text'.""" + + +class ItemOpenAIResponseOutputMessageReasoningItemContent(TypedDict, total=False): + """Reasoning text from the model.""" + + text: Required[str] + """The reasoning text content from the model.""" + + type: Literal["reasoning_text"] + """The type identifier, always 'reasoning_text'.""" + + +class ItemOpenAIResponseOutputMessageReasoningItem(TypedDict, total=False): + """Reasoning output from the model, representing the model's thinking process.""" + + id: Required[str] + """Unique identifier for the reasoning output item.""" + + summary: Required[Iterable[ItemOpenAIResponseOutputMessageReasoningItemSummary]] + """Summary of the reasoning output.""" + + content: Optional[Iterable[ItemOpenAIResponseOutputMessageReasoningItemContent]] + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """The status of the reasoning output.""" + + type: Literal["reasoning"] + """The type identifier, always 'reasoning'.""" + + Item: TypeAlias = Union[ ItemOpenAIResponseMessageInput, ItemOpenAIResponseOutputMessageWebSearchToolCall, @@ -479,4 +521,5 @@ class ItemOpenAIResponseOutputMessageMcpListTools(TypedDict, total=False): ItemOpenAIResponseMcpApprovalResponse, ItemOpenAIResponseOutputMessageMcpCall, ItemOpenAIResponseOutputMessageMcpListTools, + ItemOpenAIResponseOutputMessageReasoningItem, ] diff --git a/src/llama_stack_client/types/conversations/item_create_response.py b/src/llama_stack_client/types/conversations/item_create_response.py index c40c4d60..9da908ba 100644 --- a/src/llama_stack_client/types/conversations/item_create_response.py +++ b/src/llama_stack_client/types/conversations/item_create_response.py @@ -44,6 +44,9 @@ "DataOpenAIResponseOutputMessageMcpCall", "DataOpenAIResponseOutputMessageMcpListTools", "DataOpenAIResponseOutputMessageMcpListToolsTool", + "DataOpenAIResponseOutputMessageReasoningItem", + "DataOpenAIResponseOutputMessageReasoningItemSummary", + "DataOpenAIResponseOutputMessageReasoningItemContent", ] @@ -470,6 +473,45 @@ class DataOpenAIResponseOutputMessageMcpListTools(BaseModel): type: Optional[Literal["mcp_list_tools"]] = None +class DataOpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class DataOpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class DataOpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[DataOpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[DataOpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + Data: TypeAlias = Annotated[ Union[ DataOpenAIResponseMessageOutput, @@ -481,6 +523,7 @@ class DataOpenAIResponseOutputMessageMcpListTools(BaseModel): DataOpenAIResponseMcpApprovalResponse, DataOpenAIResponseOutputMessageMcpCall, DataOpenAIResponseOutputMessageMcpListTools, + DataOpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] diff --git a/src/llama_stack_client/types/conversations/item_get_response.py b/src/llama_stack_client/types/conversations/item_get_response.py index 069f1d05..531d03f6 100644 --- a/src/llama_stack_client/types/conversations/item_get_response.py +++ b/src/llama_stack_client/types/conversations/item_get_response.py @@ -43,6 +43,9 @@ "OpenAIResponseOutputMessageMcpCall", "OpenAIResponseOutputMessageMcpListTools", "OpenAIResponseOutputMessageMcpListToolsTool", + "OpenAIResponseOutputMessageReasoningItem", + "OpenAIResponseOutputMessageReasoningItemSummary", + "OpenAIResponseOutputMessageReasoningItemContent", ] @@ -469,6 +472,45 @@ class OpenAIResponseOutputMessageMcpListTools(BaseModel): type: Optional[Literal["mcp_list_tools"]] = None +class OpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[OpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + ItemGetResponse: TypeAlias = Annotated[ Union[ OpenAIResponseMessageOutput, @@ -480,6 +522,7 @@ class OpenAIResponseOutputMessageMcpListTools(BaseModel): OpenAIResponseMcpApprovalResponse, OpenAIResponseOutputMessageMcpCall, OpenAIResponseOutputMessageMcpListTools, + OpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] diff --git a/src/llama_stack_client/types/conversations/item_list_response.py b/src/llama_stack_client/types/conversations/item_list_response.py index c87d3e9c..1f642528 100644 --- a/src/llama_stack_client/types/conversations/item_list_response.py +++ b/src/llama_stack_client/types/conversations/item_list_response.py @@ -43,6 +43,9 @@ "OpenAIResponseOutputMessageMcpCall", "OpenAIResponseOutputMessageMcpListTools", "OpenAIResponseOutputMessageMcpListToolsTool", + "OpenAIResponseOutputMessageReasoningItem", + "OpenAIResponseOutputMessageReasoningItemSummary", + "OpenAIResponseOutputMessageReasoningItemContent", ] @@ -469,6 +472,45 @@ class OpenAIResponseOutputMessageMcpListTools(BaseModel): type: Optional[Literal["mcp_list_tools"]] = None +class OpenAIResponseOutputMessageReasoningItemSummary(BaseModel): + """A summary of reasoning output from the model.""" + + text: str + """The summary text of the reasoning output.""" + + type: Optional[Literal["summary_text"]] = None + """The type identifier, always 'summary_text'.""" + + +class OpenAIResponseOutputMessageReasoningItemContent(BaseModel): + """Reasoning text from the model.""" + + text: str + """The reasoning text content from the model.""" + + type: Optional[Literal["reasoning_text"]] = None + """The type identifier, always 'reasoning_text'.""" + + +class OpenAIResponseOutputMessageReasoningItem(BaseModel): + """Reasoning output from the model, representing the model's thinking process.""" + + id: str + """Unique identifier for the reasoning output item.""" + + summary: List[OpenAIResponseOutputMessageReasoningItemSummary] + """Summary of the reasoning output.""" + + content: Optional[List[OpenAIResponseOutputMessageReasoningItemContent]] = None + """The reasoning content from the model.""" + + status: Optional[Literal["in_progress", "completed", "incomplete"]] = None + """The status of the reasoning output.""" + + type: Optional[Literal["reasoning"]] = None + """The type identifier, always 'reasoning'.""" + + ItemListResponse: TypeAlias = Annotated[ Union[ OpenAIResponseMessageOutput, @@ -480,6 +522,7 @@ class OpenAIResponseOutputMessageMcpListTools(BaseModel): OpenAIResponseMcpApprovalResponse, OpenAIResponseOutputMessageMcpCall, OpenAIResponseOutputMessageMcpListTools, + OpenAIResponseOutputMessageReasoningItem, ], PropertyInfo(discriminator="type"), ] From 8aab6875d8eac1a9aea91b80ab29d2cfe596d4e0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 19:25:45 +0000 Subject: [PATCH 5/7] chore(tests): bump steady to v0.20.2 --- scripts/mock | 6 +++--- scripts/test | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/mock b/scripts/mock index 93cbfea0..65afdeb8 100755 --- a/scripts/mock +++ b/scripts/mock @@ -29,9 +29,9 @@ echo "==> Starting mock server with file ${SPEC_PATH}" # Run steady mock on the given spec if [ "$1" == "--daemon" ]; then # Pre-install the package so the download doesn't eat into the startup timeout - npm exec --package=@stdy/cli@0.20.1 -- steady --version + npm exec --package=@stdy/cli@0.20.2 -- steady --version - npm exec --package=@stdy/cli@0.20.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & + npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" &> .stdy.log & # Wait for server to come online via health endpoint (max 30s) echo -n "Waiting for server" @@ -47,5 +47,5 @@ if [ "$1" == "--daemon" ]; then echo else - npm exec --package=@stdy/cli@0.20.1 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" + npm exec --package=@stdy/cli@0.20.2 -- steady --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets "$URL" fi diff --git a/scripts/test b/scripts/test index 49662c06..4fa15f98 100755 --- a/scripts/test +++ b/scripts/test @@ -47,7 +47,7 @@ elif ! prism_is_running; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the steady command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.20.1 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stdy/cli@0.20.2 -- steady path/to/your.openapi.yml --host 127.0.0.1 -p 4010 --validator-query-array-format=comma --validator-form-array-format=comma --validator-query-object-format=brackets --validator-form-object-format=brackets${NC}" echo exit 1 From e92a0fd906776651c5b8cf58ac4d7a7793e7dd7a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 20:31:01 +0000 Subject: [PATCH 6/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 29e9d3a7..ea981732 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 92 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-2aa092601bf8f391294f803507a7d2d04292d2aaa16769a3514fd1354061032e.yml -openapi_spec_hash: 71228b84ed828c47f5e49902fa8f16e8 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/llamastack%2Fllama-stack-client-a6b10a7f923a8cf216108cd794ccbac5d4114193ba888fea0c1288548b28f37e.yml +openapi_spec_hash: ed2df655e1a9041bf71adfb37ed651fe config_hash: d8a05907bd87286473cdf868da7d2ede From 9a577fd67903d25d981a0913c41c53d4120a9f5a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 21:41:52 +0000 Subject: [PATCH 7/7] release: 0.7.0-alpha.2 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 20 ++++++++++++++++++++ pyproject.toml | 2 +- src/llama_stack_client/_version.py | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cd920613..daf1b197 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.7.0-alpha.1" + ".": "0.7.0-alpha.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a7365909..93aacac1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## 0.7.0-alpha.2 (2026-04-01) + +Full Changelog: [v0.7.0-alpha.1...v0.7.0-alpha.2](https://github.com/llamastack/llama-stack-client-python/compare/v0.7.0-alpha.1...v0.7.0-alpha.2) + +### Features + +* add reasoning as valid conversation item ([029da3f](https://github.com/llamastack/llama-stack-client-python/commit/029da3fb41d13b6419e7d49b5b04f525818cf731)) +* add reasoning output types to OpenAI Responses API spec ([3bb043e](https://github.com/llamastack/llama-stack-client-python/commit/3bb043e2859ae601cd69c380e1749a1ff18a2a00)) + + +### Chores + +* **tests:** bump steady to v0.20.1 ([82edffa](https://github.com/llamastack/llama-stack-client-python/commit/82edffaebfa5d36d9494bee945a64b64d4453414)) +* **tests:** bump steady to v0.20.2 ([8aab687](https://github.com/llamastack/llama-stack-client-python/commit/8aab6875d8eac1a9aea91b80ab29d2cfe596d4e0)) + + +### Refactors + +* remove deprecated register/unregister model endpoints ([6c82145](https://github.com/llamastack/llama-stack-client-python/commit/6c82145f77a9b461a5d2e36492d995d23114eed3)) + ## 0.7.0-alpha.1 (2026-03-28) Full Changelog: [v0.6.1-alpha.1...v0.7.0-alpha.1](https://github.com/llamastack/llama-stack-client-python/compare/v0.6.1-alpha.1...v0.7.0-alpha.1) diff --git a/pyproject.toml b/pyproject.toml index 7036b973..221b9140 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "llama_stack_client" -version = "0.7.0-alpha.1" +version = "0.7.0-alpha.2" description = "The official Python library for the llama-stack-client API" dynamic = ["readme"] license = "MIT" diff --git a/src/llama_stack_client/_version.py b/src/llama_stack_client/_version.py index eba92666..8aa63c0f 100644 --- a/src/llama_stack_client/_version.py +++ b/src/llama_stack_client/_version.py @@ -7,4 +7,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "llama_stack_client" -__version__ = "0.7.0-alpha.1" # x-release-please-version +__version__ = "0.7.0-alpha.2" # x-release-please-version