diff --git a/sdk/agentserver/azure-ai-agentserver-responses/Makefile b/sdk/agentserver/azure-ai-agentserver-responses/Makefile index 488836d2fa9a..1866b6fe8376 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/Makefile +++ b/sdk/agentserver/azure-ai-agentserver-responses/Makefile @@ -9,15 +9,13 @@ OUTPUT_DIR ?= azure/ai/agentserver/responses/models/_generated TYPESPEC_DIR ?= type_spec TEMP_TSP_DIR := $(TYPESPEC_DIR)/TempTypeSpecFiles +TEMP_OUTPUT_DIR := .tmp_typeddict_codegen +TYPESPEC_PYTHON_EMITTER_PATH ?= OPENAPI_SPEC ?= $(TEMP_TSP_DIR)/Foundry/openapi.virtual-public-preview.yaml VALIDATORS_OUTPUT ?= $(OUTPUT_DIR)/_validators.py ROOT_SCHEMAS ?= CreateResponse OVERLAY ?= _scripts/validation-overlay.yaml -TEMP_OUTPUT_DIR := $(OUTPUT_DIR)/.tmp_codegen -MODEL_PACKAGE_DIR := $(TEMP_OUTPUT_DIR)/azure/ai/agentserver/responses/models -MODEL_SHIMS_DIR := _scripts/generated_shims CONTRACTS_DIR := $(TEMP_TSP_DIR)/sdk-service-agentserver-contracts -MODEL_BASE := $(OUTPUT_DIR)/sdk/models/_utils/model_base.py .PHONY: generate-models generate-validators generate-openapi generate-contracts clean install-typespec-deps @@ -90,7 +88,7 @@ endif generate-contracts: generate-models generate-openapi generate-validators # -------------------------------------------------------------------------- -# generate-models: Compile TypeSpec definitions into Python model classes +# generate-models: Compile TypeSpec definitions into local TypedDict model contracts # -------------------------------------------------------------------------- ifeq ($(OS),Windows_NT) generate-models: @@ -100,25 +98,14 @@ generate-models: cd /d $(TYPESPEC_DIR) && tsp-client sync @echo Installing TypeSpec dependencies from emitter-package.json... cd /d $(TEMP_TSP_DIR) && npm install --silent - @echo Generating Python models... + @if not "$(TYPESPEC_PYTHON_EMITTER_PATH)"=="" cd /d $(TEMP_TSP_DIR) && npm install --silent --no-save "$(TYPESPEC_PYTHON_EMITTER_PATH)" + python _scripts\finalize_typeddict_generation.py --client-tsp "$(CONTRACTS_DIR)\client.tsp" + @echo Generating local Python TypedDict models... @if exist "$(OUTPUT_DIR)" rmdir /s /q "$(OUTPUT_DIR)" - cd /d $(TEMP_TSP_DIR) && npx tsp compile sdk-service-agentserver-contracts\client.tsp --emit @azure-tools/typespec-python --option "@azure-tools/typespec-python.emitter-output-dir=$(abspath $(TEMP_OUTPUT_DIR))" - @if not exist "$(MODEL_PACKAGE_DIR)" (echo Error: generated model package was not found. 1>&2 && exit /b 1) - @if not exist "$(OUTPUT_DIR)\sdk" mkdir "$(OUTPUT_DIR)\sdk" - @xcopy /E /I /Y "$(MODEL_PACKAGE_DIR)" "$(OUTPUT_DIR)\sdk\models" >NUL - @if exist "$(OUTPUT_DIR)\sdk\models\aio" rmdir /s /q "$(OUTPUT_DIR)\sdk\models\aio" - @if exist "$(OUTPUT_DIR)\sdk\models\operations" rmdir /s /q "$(OUTPUT_DIR)\sdk\models\operations" - @if exist "$(OUTPUT_DIR)\sdk\models\_client.py" del /q "$(OUTPUT_DIR)\sdk\models\_client.py" - @if exist "$(OUTPUT_DIR)\sdk\models\_configuration.py" del /q "$(OUTPUT_DIR)\sdk\models\_configuration.py" - @if exist "$(OUTPUT_DIR)\sdk\models\_version.py" del /q "$(OUTPUT_DIR)\sdk\models\_version.py" - @copy /Y "$(MODEL_SHIMS_DIR)\sdk_models__init__.py" "$(OUTPUT_DIR)\sdk\models\__init__.py" >NUL - @copy /Y "$(MODEL_SHIMS_DIR)\__init__.py" "$(OUTPUT_DIR)\__init__.py" >NUL - @copy /Y "$(MODEL_SHIMS_DIR)\_enums.py" "$(OUTPUT_DIR)\_enums.py" >NUL - @copy /Y "$(MODEL_SHIMS_DIR)\_models.py" "$(OUTPUT_DIR)\_models.py" >NUL - @copy /Y "$(MODEL_SHIMS_DIR)\_patch.py" "$(OUTPUT_DIR)\_patch.py" >NUL - @copy /Y "$(MODEL_SHIMS_DIR)\models_patch.py" "$(OUTPUT_DIR)\sdk\models\models\_patch.py" >NUL - @REM Patch _deserialize_sequence: reject plain strings so union falls through to str branch - @powershell -Command "(Get-Content '$(MODEL_BASE)') -replace 'return type\(obj\)\(_deserialize\(deserializer, entry, module\) for entry in obj\)','if isinstance(obj, str):\n raise DeserializationError()\n return type(obj)(_deserialize(deserializer, entry, module) for entry in obj)' | Set-Content '$(MODEL_BASE)'" + @if exist "$(TEMP_OUTPUT_DIR)" rmdir /s /q "$(TEMP_OUTPUT_DIR)" + cd /d $(TEMP_TSP_DIR) && npx tsp compile sdk-service-agentserver-contracts\client.tsp --emit @azure-tools/typespec-python --option "@azure-tools/typespec-python.emitter-output-dir=$(abspath $(TEMP_OUTPUT_DIR))" --option "@azure-tools/typespec-python.namespace=ai.agentserver.responses.models._generated" --option "@azure-tools/typespec-python.package-name=azure-ai-agentserver-responses" --option "@azure-tools/typespec-python.models-mode=typeddict" --option "@azure-tools/typespec-python.generate-packaging-files=false" + python _scripts\finalize_typeddict_generation.py --emitter-output-root "$(TEMP_OUTPUT_DIR)" --generated-root "$(OUTPUT_DIR)" + @if not exist "$(OUTPUT_DIR)" (echo Error: generated model package was not found. 1>&2 && exit /b 1) @if exist "$(TEMP_OUTPUT_DIR)" rmdir /s /q "$(TEMP_OUTPUT_DIR)" else generate-models: @@ -135,28 +122,19 @@ generate-models: cd $(TYPESPEC_DIR) && tsp-client sync @echo "Installing TypeSpec dependencies from emitter-package.json..." cd $(TEMP_TSP_DIR) && npm install --silent - @echo "Generating Python models..." + @if [ -n "$(TYPESPEC_PYTHON_EMITTER_PATH)" ]; then \ + cd $(TEMP_TSP_DIR) && npm install --silent --no-save "$(TYPESPEC_PYTHON_EMITTER_PATH)"; \ + fi + python _scripts/finalize_typeddict_generation.py --client-tsp "$(CONTRACTS_DIR)/client.tsp" + @echo "Generating local Python TypedDict models..." rm -rf $(OUTPUT_DIR) - cd $(TEMP_TSP_DIR) && npx tsp compile sdk-service-agentserver-contracts/client.tsp --emit @azure-tools/typespec-python --option "@azure-tools/typespec-python.emitter-output-dir=$(abspath $(TEMP_OUTPUT_DIR))" - @test -d $(MODEL_PACKAGE_DIR) || { \ + rm -rf $(TEMP_OUTPUT_DIR) + cd $(TEMP_TSP_DIR) && npx tsp compile sdk-service-agentserver-contracts/client.tsp --emit @azure-tools/typespec-python --option "@azure-tools/typespec-python.emitter-output-dir=$(abspath $(TEMP_OUTPUT_DIR))" --option "@azure-tools/typespec-python.namespace=ai.agentserver.responses.models._generated" --option "@azure-tools/typespec-python.package-name=azure-ai-agentserver-responses" --option "@azure-tools/typespec-python.models-mode=typeddict" --option "@azure-tools/typespec-python.generate-packaging-files=false" + python _scripts/finalize_typeddict_generation.py --emitter-output-root "$(TEMP_OUTPUT_DIR)" --generated-root "$(OUTPUT_DIR)" + @test -d $(OUTPUT_DIR) || { \ echo "Error: generated model package was not found." >&2; \ exit 1; \ } - mkdir -p $(OUTPUT_DIR)/sdk - cp -R $(MODEL_PACKAGE_DIR) $(OUTPUT_DIR)/sdk/models - rm -rf $(OUTPUT_DIR)/sdk/models/aio - rm -rf $(OUTPUT_DIR)/sdk/models/operations - rm -f $(OUTPUT_DIR)/sdk/models/_client.py - rm -f $(OUTPUT_DIR)/sdk/models/_configuration.py - rm -f $(OUTPUT_DIR)/sdk/models/_version.py - cp $(MODEL_SHIMS_DIR)/sdk_models__init__.py $(OUTPUT_DIR)/sdk/models/__init__.py - cp $(MODEL_SHIMS_DIR)/__init__.py $(OUTPUT_DIR)/__init__.py - cp $(MODEL_SHIMS_DIR)/_enums.py $(OUTPUT_DIR)/_enums.py - cp $(MODEL_SHIMS_DIR)/_models.py $(OUTPUT_DIR)/_models.py - cp $(MODEL_SHIMS_DIR)/_patch.py $(OUTPUT_DIR)/_patch.py - cp $(MODEL_SHIMS_DIR)/models_patch.py $(OUTPUT_DIR)/sdk/models/models/_patch.py - # Patch _deserialize_sequence: reject plain strings so union falls through to str branch - sed -i 's/ return type(obj)(_deserialize(deserializer, entry, module) for entry in obj)/ if isinstance(obj, str):\n raise DeserializationError()\n return type(obj)(_deserialize(deserializer, entry, module) for entry in obj)/' $(MODEL_BASE) rm -rf $(TEMP_OUTPUT_DIR) endif diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/finalize_typeddict_generation.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/finalize_typeddict_generation.py new file mode 100644 index 000000000000..1989ca1bb465 --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/finalize_typeddict_generation.py @@ -0,0 +1,211 @@ +#!/usr/bin/env python +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. +"""Finalize local OpenAI Responses TypedDict model generation.""" + +from __future__ import annotations + +import argparse +import re +import shutil +from pathlib import Path + + +COPYRIGHT = "# Copyright (c) Microsoft Corporation.\n# Licensed under the MIT license.\n" + +STALE_USAGE_REFS = { + "OpenAI.OutputItemComputerToolCallOutputResource", + "OpenAI.OutputItemCustomToolCall", + "OpenAI.OutputItemCustomToolCallOutput", + "OpenAI.FunctionToolCallOutputResource", +} + +ROOT_INIT_PREFIX = ( + "# coding=utf-8\n" + "# --------------------------------------------------------------------------\n" + "# Copyright (c) Microsoft Corporation. All rights reserved.\n" + "# Licensed under the MIT License. See License.txt in the project root for license information.\n" + "# Code generated by Microsoft (R) Python Code Generator.\n" + "# Changes may cause incorrect behavior and will be lost if the code is regenerated.\n" + "# --------------------------------------------------------------------------\n\n" + "from ._unions import * # type: ignore # noqa: F401,F403\n" + "from .types import * # type: ignore # noqa: F401,F403\n" +) + +ENUM_FALLBACK_PREFIX = ( + "# coding=utf-8\n" + "# --------------------------------------------------------------------------\n" + "# Copyright (c) Microsoft Corporation. All rights reserved.\n" + "# Licensed under the MIT License. See License.txt in the project root for license information.\n" + "# --------------------------------------------------------------------------\n\n" + "class _EnumMemberFallback(str):\n" + " @property\n" + " def value(self) -> str:\n" + " return str(self)\n\n\n" + "_ENUM_VALUES: dict[str, dict[str, str]] = " +) + +ENUM_FALLBACK_SUFFIX = ( + "\n\n" + "def _normalize_enum_value(value: str) -> str:\n" + " return ''.join(ch for ch in value.upper() if ch.isalnum())\n\n\n" + "def _member_value(enum_name: str, member_name: str) -> str:\n" + " return _ENUM_VALUES.get(enum_name, {}).get(_normalize_enum_value(member_name), member_name.lower())\n\n\n" + "class _EnumFallbackMeta(type):\n" + " def __getattr__(cls, name: str) -> _EnumMemberFallback:\n" + " return _EnumMemberFallback(_member_value(cls.__name__, name))\n\n\n" + "class _EnumFallback(str, metaclass=_EnumFallbackMeta):\n" + " pass\n\n\n" + "def __getattr__(name: str) -> type[_EnumFallback]:\n" + " return type(name, (_EnumFallback,), {})\n" +) + + +def _write(path: Path, content: str) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def _remove_pycache(root: Path) -> None: + for pycache in root.rglob("__pycache__"): + shutil.rmtree(pycache) + + +def patch_client_tsp(client_tsp: Path) -> None: + """Remove usage decorators for stale upstream OpenAI symbols before compilation.""" + lines = client_tsp.read_text(encoding="utf-8").splitlines() + patched = [ + line + for line in lines + if not ( + line.strip().startswith("@@usage(") + and any(stale_ref in line for stale_ref in STALE_USAGE_REFS) + ) + ] + if len(patched) != len(lines): + client_tsp.write_text("\n".join(patched) + "\n", encoding="utf-8") + + +def _find_emitted_models_root(emitter_output_root: Path) -> Path: + candidates = sorted( + path + for path in emitter_output_root.rglob("types.py") + if path.parent.name == "models" + and (path.parent / "_unions.py").exists() + and (path.parent / "models").is_dir() + ) + if not candidates: + raise FileNotFoundError(f"Could not find emitted TypedDict model package under {emitter_output_root}") + if len(candidates) > 1: + formatted = "\n".join(str(path.parent) for path in candidates) + raise RuntimeError(f"Found multiple emitted model packages:\n{formatted}") + return candidates[0].parent + + +def _normalize_enum_value(value: str) -> str: + return re.sub(r"[^A-Z0-9]", "", value.upper()) + + +def _patch_literal_enum_references(types_py: Path) -> None: + text = types_py.read_text(encoding="utf-8") + enum_values: dict[str, dict[str, str]] = {} + for match in re.finditer(r"(?ms)^([A-Za-z][A-Za-z0-9_]*) = Literal\[(.*?)\]\n\"\"\"", text): + enum_name = match.group(1) + values = re.findall(r'"([^"]+)"', match.group(2)) + if values: + enum_values[enum_name] = {_normalize_enum_value(value): value for value in values} + + def replace(match: re.Match[str]) -> str: + enum_name, member_name = match.groups() + values = enum_values.get(enum_name) + if not values: + return match.group(0) + value = values.get(_normalize_enum_value(member_name)) + return f'"{value}"' if value is not None else match.group(0) + + types_py.write_text( + re.sub(r"\b([A-Z][A-Za-z0-9_]*)\.([A-Z][A-Z0-9_]*)\b", replace, text), + encoding="utf-8", + ) + + +def _strip_trailing_whitespace(path: Path) -> None: + path.write_text( + "\n".join(line.rstrip() for line in path.read_text(encoding="utf-8").splitlines()) + "\n", + encoding="utf-8", + ) + + +def _literal_enum_values(types_py: Path) -> dict[str, dict[str, str]]: + text = types_py.read_text(encoding="utf-8") + enum_values: dict[str, dict[str, str]] = {} + for match in re.finditer(r"(?ms)^([A-Za-z][A-Za-z0-9_]*) = Literal\[(.*?)\]\n\"\"\"", text): + enum_name = match.group(1) + values = re.findall(r'"([^"]+)"', match.group(2)) + if values: + enum_values[enum_name] = {_normalize_enum_value(value): value for value in values} + return enum_values + + +def _build_enum_fallback(types_py: Path) -> str: + enum_values = _literal_enum_values(types_py) + exact_values: dict[str, dict[str, str]] = {} + for enum_name, values in enum_values.items(): + exact_values[enum_name] = {} + for member_key, value in values.items(): + exact_values[enum_name][member_key] = value + return ENUM_FALLBACK_PREFIX + repr(exact_values) + ENUM_FALLBACK_SUFFIX + + +def _build_root_init(types_py: Path) -> str: + enum_names = sorted(_literal_enum_values(types_py)) + if not enum_names: + return ROOT_INIT_PREFIX + enum_lines = "\n".join(f'{name} = getattr(_generated_enums, "{name}")' for name in enum_names) + return ( + ROOT_INIT_PREFIX + + "from .models import _enums as _generated_enums\n\n" + + enum_lines + + "\n" + ) + + +def finalize(emitter_output_root: Path, generated_root: Path) -> None: + """Copy the real emitted TypedDict package into the local generated package boundary.""" + emitted_root = _find_emitted_models_root(emitter_output_root) + + if generated_root.exists(): + shutil.rmtree(generated_root) + generated_root.mkdir(parents=True) + + for file_name in ("types.py", "_unions.py", "py.typed"): + shutil.copy2(emitted_root / file_name, generated_root / file_name) + _patch_literal_enum_references(generated_root / "types.py") + _strip_trailing_whitespace(generated_root / "types.py") + + models_root = generated_root / "models" + models_root.mkdir() + for file_name in ("__init__.py", "_patch.py"): + shutil.copy2(emitted_root / "models" / file_name, models_root / file_name) + + _write(generated_root / "__init__.py", _build_root_init(generated_root / "types.py")) + _write(generated_root / "_types.py", _build_root_init(generated_root / "types.py")) + _write(models_root / "_enums.py", _build_enum_fallback(generated_root / "types.py")) + _remove_pycache(generated_root) + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--client-tsp", type=Path) + parser.add_argument("--emitter-output-root", type=Path) + parser.add_argument("--generated-root", type=Path) + args = parser.parse_args() + + if args.client_tsp: + patch_client_tsp(args.client_tsp) + if args.emitter_output_root and args.generated_root: + finalize(args.emitter_output_root, args.generated_root) + + +if __name__ == "__main__": + main() diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/__init__.py deleted file mode 100644 index b783bfa73795..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility re-exports for generated models preserved under sdk/models.""" - -from .sdk.models.models import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_enums.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_enums.py deleted file mode 100644 index 481d6d628755..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_enums.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated enum symbols.""" - -from .sdk.models.models._enums import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_models.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_models.py deleted file mode 100644 index 01e649adb824..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_models.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated model symbols.""" - -from .sdk.models.models._models import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_patch.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_patch.py deleted file mode 100644 index 66ee2dea3a63..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/_patch.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated patch helpers.""" - -from .sdk.models.models._patch import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/models_patch.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/models_patch.py deleted file mode 100644 index 9f85da657361..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/models_patch.py +++ /dev/null @@ -1,225 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- -"""Hand-written customizations injected into the generated models package. - -This file is copied over the generated ``_patch.py`` inside -``sdk/models/models/`` by ``make generate-models``. Anything listed in -``__all__`` is automatically re-exported by the generated ``__init__.py``, -shadowing the generated class of the same name. - -Approach follows the official customization guide: -https://aka.ms/azsdk/python/dpcodegen/python/customize -""" - -from enum import Enum -from typing import TYPE_CHECKING, Any, Optional - -from azure.core import CaseInsensitiveEnumMeta - -from .._utils.model_base import rest_field -from ._models import CreateResponse as CreateResponseGenerated -from ._models import ResponseObject as ResponseObjectGenerated -from ._models import ToolChoiceAllowed as ToolChoiceAllowedGenerated - -if TYPE_CHECKING: - from ._models import OutputItem - -_VISIBILITY = ["read", "create", "update", "delete", "query"] - - -class ResponseIncompleteReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Reason a response finished as incomplete. - - The upstream TypeSpec defines this as an inline literal union - (``"max_output_tokens" | "content_filter"``), so the code generator - emits ``Literal[...]`` instead of a named enum. This hand-written - enum provides a friendlier symbolic constant for SDK consumers. - """ - - MAX_OUTPUT_TOKENS = "max_output_tokens" - """The response was cut short because the maximum output token limit was reached.""" - CONTENT_FILTER = "content_filter" - """The response was cut short because of a content filter.""" - - -# --------------------------------------------------------------------------- -# Fix temperature / top_p types: numeric → float (emitter bug workaround) -# -# The upstream TypeSpec defines temperature and top_p as ``numeric | null`` -# (the abstract base scalar for all numbers). The TypeSpec emitter correctly -# maps this to ``double?`` but @azure-tools/typespec-python@0.61.2 maps -# ``numeric`` → ``int``. The OpenAPI 3 spec emits ``type: number`` -# (i.e. float), so ``int`` is wrong. -# -# Per the official customization guide we subclass the generated models and -# re-declare the affected fields with the correct type. The generated -# ``__init__.py`` picks up these subclasses via ``from ._patch import *`` -# which shadows the generated names. -# -# Additionally, we override fields whose generated docstrings contain -# duplicate RST link targets (``Learn more``) or malformed bullet lists -# that break ``sphinx-build -W``. -# --------------------------------------------------------------------------- - -# -- Docstrings for fields with "Learn more" links -------------------------- -# RST named hyperlinks (single trailing ``_``) must be unique per page. -# Because CreateResponse and ResponseObject both share these fields, and -# both appear on the same Sphinx page, the identical "Learn more" targets -# collide. Anonymous hyperlinks (double ``__``) avoid the conflict. - - -class CreateResponse(CreateResponseGenerated): - """Override generated ``CreateResponse`` to correct temperature/top_p types.""" - - temperature: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Sampling temperature. Float between 0 and 2.""" - top_p: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Nucleus sampling parameter. Float between 0 and 1.""" - user: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """This field is being replaced by ``safety_identifier`` and - ``prompt_cache_key``. Use ``prompt_cache_key`` instead to maintain - caching optimizations. A stable identifier for your end-users. - Used to boost cache hit rates by better bucketing similar requests - and to help OpenAI detect and prevent abuse. - `Learn more `__.""" - safety_identifier: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A stable identifier used to help detect users of your application - that may be violating OpenAI's usage policies. The IDs should be a - string that uniquely identifies each user. We recommend hashing - their username or email address, in order to avoid sending us any - identifying information. - `Learn more `__.""" - prompt_cache_key: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Used by OpenAI to cache responses for similar requests to optimize - your cache hit rates. Replaces the ``user`` field. - `Learn more `__.""" - - -class ResponseObject(ResponseObjectGenerated): - """Override generated ``ResponseObject`` to correct temperature/top_p types - and fix Sphinx docstring warnings.""" - - temperature: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Sampling temperature. Float between 0 and 2.""" - top_p: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Nucleus sampling parameter. Float between 0 and 1.""" - output: list["OutputItem"] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """An array of content items generated by the model. - - * The length and order of items in the ``output`` array is dependent - on the model's response. - * Rather than accessing the first item in the ``output`` array and - assuming it's an ``assistant`` message with the content generated by - the model, you might consider using the ``output_text`` property where - supported in SDKs. - - Required.""" - user: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """This field is being replaced by ``safety_identifier`` and - ``prompt_cache_key``. Use ``prompt_cache_key`` instead to maintain - caching optimizations. A stable identifier for your end-users. - Used to boost cache hit rates by better bucketing similar requests - and to help OpenAI detect and prevent abuse. - `Learn more `__.""" - safety_identifier: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A stable identifier used to help detect users of your application - that may be violating OpenAI's usage policies. The IDs should be a - string that uniquely identifies each user. We recommend hashing - their username or email address, in order to avoid sending us any - identifying information. - `Learn more `__.""" - prompt_cache_key: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Used by OpenAI to cache responses for similar requests to optimize - your cache hit rates. Replaces the ``user`` field. - `Learn more `__.""" - - -class ToolChoiceAllowed(ToolChoiceAllowedGenerated): - """Override generated ``ToolChoiceAllowed`` to fix Sphinx code-block warning.""" - - tools: list[dict[str, Any]] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A list of tool definitions that the model should be allowed to call. - For the Responses API, the list of tool definitions might look like: - - .. code-block:: json - - [ - { "type": "function", "name": "get_weather" }, - { "type": "mcp", "server_label": "deepwiki" }, - { "type": "image_generation" } - ] - - Required.""" - - -__all__: list[str] = [ - "ResponseIncompleteReason", - "CreateResponse", - "ResponseObject", - "ToolChoiceAllowed", -] - - -def patch_sdk(): - """Do not remove from this file. - - `patch_sdk` is a last resort escape hatch that allows you to do customizations - you can't accomplish using the techniques described in - https://aka.ms/azsdk/python/dpcodegen/python/customize - """ - # Fix IncludeEnum docstring — bullet list continuation lines need proper - # indentation so that Sphinx doesn't emit "Bullet list ends without a - # blank line; unexpected unindent" warnings. - from ._enums import IncludeEnum - - IncludeEnum.__doc__ = ( - "Specify additional output data to include in the model response." - " Currently supported values are:\n" - "\n" - "* ``web_search_call.action.sources``: Include the sources of the" - " web search tool call.\n" - "* ``code_interpreter_call.outputs``: Includes the outputs of python" - " code execution in code interpreter tool call items.\n" - "* ``computer_call_output.output.image_url``: Include image urls" - " from the computer call output.\n" - "* ``file_search_call.results``: Include the search results of the" - " file search tool call.\n" - "* ``message.input_image.image_url``: Include image urls from the" - " input message.\n" - "* ``message.output_text.logprobs``: Include logprobs with assistant" - " messages.\n" - "* ``reasoning.encrypted_content``: Includes an encrypted version" - " of reasoning tokens in reasoning item outputs. This enables" - " reasoning items to be used in multi-turn conversations when using" - " the Responses API statelessly (like when the ``store`` parameter" - " is set to ``false``, or when an organization is enrolled in the" - " zero data retention program).\n" - ) - - # Fix duplicate "Learn more about built-in tools" RST targets. - # Multiple ToolChoice* classes share the same named hyperlink which causes - # "Duplicate explicit target name" warnings. Use anonymous hyperlinks. - from ._models import ( - ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, - ToolChoiceFileSearch, - ToolChoiceImageGeneration, - ToolChoiceWebSearchPreview, - ToolChoiceWebSearchPreview20250311, - ) - - for cls in ( - ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, - ToolChoiceFileSearch, - ToolChoiceImageGeneration, - ToolChoiceWebSearchPreview, - ToolChoiceWebSearchPreview20250311, - ): - # Only patch the first paragraph (class docstring), keep :ivar lines. - original = cls.__doc__ or "" - if "`Learn more about" in original: - cls.__doc__ = original.replace("`_.", "`__.") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/sdk_models__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/sdk_models__init__.py deleted file mode 100644 index 9abd30ab9c84..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/generated_shims/sdk_models__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Model-only generated package surface.""" - -from .models import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validation-overlay.yaml b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validation-overlay.yaml index 35c649563613..0a23724b57d1 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validation-overlay.yaml +++ b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validation-overlay.yaml @@ -39,6 +39,11 @@ schemas: Item: default_discriminator: "message" + # OpenAI input function_call items require type/call_id/name/arguments, but + # not the output-item id assigned by the server. + ItemFunctionToolCall: + not_required: ["id"] + # GAP-03: OpenAI spec InputImageContentParamAutoParam only requires [type]. # The "detail" field is nullable/optional and defaults to "auto". MessageContentInputImageContent: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validator_emitter.py b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validator_emitter.py index a5008b79918d..b7da7ffa1195 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validator_emitter.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/_scripts/validator_emitter.py @@ -56,14 +56,26 @@ def build_validator_module(schemas: dict[str, dict[str, Any]], roots: list[str]) ordered_schemas = _ordered(schemas) target_roots = sorted(dict.fromkeys(roots)) if roots else sorted(ordered_schemas) - lines: list[str] = [_header(), "", "from __future__ import annotations", "", "from typing import Any", ""] + lines: list[str] = [_header(), "", "from __future__ import annotations", "", "from typing import Any, get_args", ""] lines.extend( [ + "try:", + " from . import types as _response_types", + "except Exception:", + " _response_types = None", + "", "try:", " from . import _enums as _generated_enums", "except Exception:", " _generated_enums = None", "", + "_LITERAL_ENUM_ALIASES = {", + " 'ServiceTier': 'ServiceTierEnum',", + "}", + "_LITERAL_ENUM_VALUES = {", + " 'Verbosity': ('low', 'medium', 'high'),", + "}", + "", "def _append_error(errors: list[dict[str, str]], path: str, message: str) -> None:", " errors.append({'path': path, 'message': message})", "", @@ -103,6 +115,14 @@ def build_validator_module(schemas: dict[str, dict[str, Any]], roots: list[str]) ' _append_error(errors, path, f"Expected {expected}, got {_type_label(value)}")', "", "def _enum_values(enum_name: str) -> tuple[tuple[str, ...] | None, str | None]:", + " if enum_name in _LITERAL_ENUM_VALUES:", + " return _LITERAL_ENUM_VALUES[enum_name], None", + " if _response_types is not None:", + " alias_name = _LITERAL_ENUM_ALIASES.get(enum_name, enum_name)", + " literal_alias = getattr(_response_types, alias_name, None)", + " literal_values = get_args(literal_alias)", + " if literal_values:", + " return tuple(str(value) for value in literal_values), None", " if _generated_enums is None:", " return None, f'enum type _enums.{enum_name} is unavailable'", " enum_cls = getattr(_generated_enums, enum_name, None)", diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_id_generator.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_id_generator.py index e5f23a74b7b5..6bb86b5d3456 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_id_generator.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_id_generator.py @@ -6,9 +6,8 @@ import base64 import secrets -from typing import Callable, Sequence - -from .models import _generated as generated_models +from collections.abc import Mapping +from typing import Any, Sequence class IdGenerator: # pylint: disable=too-many-public-methods @@ -349,55 +348,56 @@ def new_output_message_item_id(partition_key_hint: str | None = "") -> str: return IdGenerator.new_id("om", partition_key_hint) @staticmethod - def new_item_id(item: generated_models.Item, partition_key_hint: str | None = "") -> str | None: - """Generate a type-specific ID for a generated Item subtype. + def new_item_id(item: Mapping[str, Any], partition_key_hint: str | None = "") -> str | None: + """Generate a type-specific ID for an item wire payload. - Dispatches to the appropriate ``new_*_item_id`` factory method based on the - runtime type of *item*. Returns None for ``ItemReferenceParam`` or unrecognized types. + Dispatches to the appropriate ``new_*_item_id`` factory method based on + the item ``type`` discriminator. Returns ``None`` for item references or + unrecognized payloads. - :param item: The generated Item instance to create an ID for. - :type item: generated_models.Item + :param item: The item wire payload to create an ID for. + :type item: Mapping[str, Any] :param partition_key_hint: An existing ID from which to extract the partition key for co-location. Defaults to an empty string. :type partition_key_hint: str | None :returns: A new unique ID string, or None if the item type is a reference or unrecognized. :rtype: str | None """ - dispatch_map: tuple[tuple[type[object], Callable[..., str]], ...] = ( - (generated_models.ItemMessage, IdGenerator.new_message_item_id), - (generated_models.ItemOutputMessage, IdGenerator.new_output_message_item_id), - (generated_models.ItemFunctionToolCall, IdGenerator.new_function_call_item_id), - (generated_models.FunctionCallOutputItemParam, IdGenerator.new_function_call_output_item_id), - (generated_models.ItemCustomToolCall, IdGenerator.new_custom_tool_call_item_id), - (generated_models.ItemCustomToolCallOutput, IdGenerator.new_custom_tool_call_output_item_id), - (generated_models.ItemComputerToolCall, IdGenerator.new_computer_call_item_id), - (generated_models.ComputerCallOutputItemParam, IdGenerator.new_computer_call_output_item_id), - (generated_models.ItemFileSearchToolCall, IdGenerator.new_file_search_call_item_id), - (generated_models.ItemWebSearchToolCall, IdGenerator.new_web_search_call_item_id), - (generated_models.ItemImageGenToolCall, IdGenerator.new_image_gen_call_item_id), - (generated_models.ItemCodeInterpreterToolCall, IdGenerator.new_code_interpreter_call_item_id), - (generated_models.ItemLocalShellToolCall, IdGenerator.new_local_shell_call_item_id), - (generated_models.ItemLocalShellToolCallOutput, IdGenerator.new_local_shell_call_output_item_id), - (generated_models.FunctionShellCallItemParam, IdGenerator.new_function_shell_call_item_id), - (generated_models.FunctionShellCallOutputItemParam, IdGenerator.new_function_shell_call_output_item_id), - (generated_models.ApplyPatchToolCallItemParam, IdGenerator.new_apply_patch_call_item_id), - (generated_models.ApplyPatchToolCallOutputItemParam, IdGenerator.new_apply_patch_call_output_item_id), - (generated_models.ItemMcpListTools, IdGenerator.new_mcp_list_tools_item_id), - (generated_models.ItemMcpToolCall, IdGenerator.new_mcp_call_item_id), - (generated_models.ItemMcpApprovalRequest, IdGenerator.new_mcp_approval_request_item_id), - (generated_models.MCPApprovalResponse, IdGenerator.new_mcp_approval_response_item_id), - (generated_models.ItemReasoningItem, IdGenerator.new_reasoning_item_id), - (generated_models.CompactionSummaryItemParam, IdGenerator.new_compaction_item_id), - (generated_models.StructuredOutputsOutputItem, IdGenerator.new_structured_output_item_id), - ) - - for model_type, generator in dispatch_map: - if isinstance(item, model_type): - return generator(partition_key_hint) - - if isinstance(item, generated_models.ItemReferenceParam): + discriminator_dispatch = { + "message": IdGenerator.new_message_item_id, + "output_message": IdGenerator.new_output_message_item_id, + "function_call": IdGenerator.new_function_call_item_id, + "function_call_output": IdGenerator.new_function_call_output_item_id, + "custom_tool_call": IdGenerator.new_custom_tool_call_item_id, + "custom_tool_call_output": IdGenerator.new_custom_tool_call_output_item_id, + "computer_call": IdGenerator.new_computer_call_item_id, + "computer_call_output": IdGenerator.new_computer_call_output_item_id, + "file_search_call": IdGenerator.new_file_search_call_item_id, + "web_search_call": IdGenerator.new_web_search_call_item_id, + "image_generation_call": IdGenerator.new_image_gen_call_item_id, + "code_interpreter_call": IdGenerator.new_code_interpreter_call_item_id, + "local_shell_call": IdGenerator.new_local_shell_call_item_id, + "local_shell_call_output": IdGenerator.new_local_shell_call_output_item_id, + "shell_call": IdGenerator.new_function_shell_call_item_id, + "shell_call_output": IdGenerator.new_function_shell_call_output_item_id, + "apply_patch_call": IdGenerator.new_apply_patch_call_item_id, + "apply_patch_call_output": IdGenerator.new_apply_patch_call_output_item_id, + "mcp_list_tools": IdGenerator.new_mcp_list_tools_item_id, + "mcp_call": IdGenerator.new_mcp_call_item_id, + "mcp_approval_request": IdGenerator.new_mcp_approval_request_item_id, + "mcp_approval_response": IdGenerator.new_mcp_approval_response_item_id, + "reasoning": IdGenerator.new_reasoning_item_id, + "compaction": IdGenerator.new_compaction_item_id, + "compaction_summary": IdGenerator.new_compaction_item_id, + "structured_outputs": IdGenerator.new_structured_output_item_id, + } + if not isinstance(item, Mapping): return None - return None + item_type = item.get("type") + if item_type is None and ("role" in item or "content" in item): + item_type = "message" + generator = discriminator_dispatch.get(str(item_type or "")) + return generator(partition_key_hint) if generator else None @staticmethod def extract_partition_key(id_value: str) -> str: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_response_context.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_response_context.py index 3072bc3c5488..01500465a50c 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_response_context.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/_response_context.py @@ -7,17 +7,11 @@ from datetime import datetime, timezone from typing import TYPE_CHECKING, Any, Sequence -from azure.ai.agentserver.responses.models._generated.sdk.models._types import InputParam - -from .models._generated import ( - CreateResponse, - Item, - ItemMessage, - ItemReferenceParam, - MessageContentInputTextContent, - OutputItem, -) -from .models._helpers import get_input_expanded, to_item, to_output_item +from azure.ai.agentserver.responses.models._wire import get_field as _get_field +from azure.ai.agentserver.responses.models._wire import is_type as _is_wire_type +from azure.ai.agentserver.responses.models import CreateResponse, InputParam, Item, ItemReferenceParam, OutputItem + +from .models._helpers import get_input_expanded, is_item_reference, to_item, to_output_item from .models.runtime import ResponseModeFlags if TYPE_CHECKING: @@ -144,12 +138,11 @@ async def get_input_text(self, *, resolve_references: bool = True) -> str: items = await self.get_input_items(resolve_references=resolve_references) texts: list[str] = [] for item in items: - if isinstance(item, ItemMessage): - for part in getattr(item, "content", None) or []: - if isinstance(part, MessageContentInputTextContent): - text = getattr(part, "text", None) - if text is not None: - texts.append(text) + if _is_wire_type(item, "message") or _get_field(item, "content") is not None: + for part in _get_field(item, "content") or []: + text = _get_field(part, "text") + if text is not None: + texts.append(text) return "\n".join(texts) async def _get_input_items_for_persistence(self) -> Sequence[OutputItem]: @@ -190,8 +183,8 @@ async def _get_input_items_resolved(self) -> Sequence[Item]: results: list[Item | None] = [] for item in expanded: - if isinstance(item, ItemReferenceParam): - reference_ids.append(item.id) + if is_item_reference(item): + reference_ids.append(str(item["id"])) reference_positions.append(len(results)) results.append(None) # placeholder else: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_endpoint_handler.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_endpoint_handler.py index 0f9cbfe39ee6..df37369ea720 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_endpoint_handler.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_endpoint_handler.py @@ -21,6 +21,8 @@ from starlette.requests import Request from starlette.responses import JSONResponse, Response, StreamingResponse +from azure.ai.agentserver.responses.models._wire import to_wire_dict + from azure.ai.agentserver.core import ( # pylint: disable=import-error,no-name-in-module FoundryAgentRequestContext, flush_spans, @@ -34,7 +36,7 @@ USER_ID, ) from azure.ai.agentserver.core._request_id import REQUEST_ID_STATE_KEY # pylint: disable=import-error,no-name-in-module -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( AgentReference, CreateResponse, ResponseStreamEventType, @@ -104,6 +106,10 @@ logger = logging.getLogger("azure.ai.agentserver") +def _json_snapshot(snapshot: dict[str, Any]) -> dict[str, Any]: + return to_wire_dict(snapshot) + + def _extract_platform_context(request: Request) -> PlatformContext: """Build a ``PlatformContext`` from platform-injected request headers. @@ -323,7 +329,7 @@ def _session_headers(self, session_id: str | None = None) -> dict[str, str]: :rtype: dict[str, str] """ sid = session_id or (getattr(getattr(self._host, "config", None), "session_id", "") or "") - headers = dict(self._response_headers) + headers = self._response_headers.copy() if sid: headers[SESSION_ID] = sid return headers @@ -387,15 +393,15 @@ def _build_execution_context( ``context`` field already set. :rtype: _ExecutionContext """ - stream = bool(getattr(parsed, "stream", False)) - store = True if getattr(parsed, "store", None) is None else bool(parsed.store) - background = bool(getattr(parsed, "background", False)) - model = getattr(parsed, "model", None) or "" + stream = bool(parsed.get("stream", False)) + store = True if parsed.get("store") is None else bool(parsed["store"]) + background = bool(parsed.get("background", False)) + model = parsed.get("model") or "" _expanded = get_input_expanded(parsed) input_items = [out for item in _expanded if (out := to_output_item(item, response_id)) is not None] previous_response_id: str | None = ( - parsed.previous_response_id - if isinstance(parsed.previous_response_id, str) and parsed.previous_response_id + parsed["previous_response_id"] + if isinstance(parsed.get("previous_response_id"), str) and parsed.get("previous_response_id") else None ) conversation_id = _resolve_conversation_id(parsed) @@ -712,7 +718,11 @@ async def _iter_with_context(): # type: ignore[return] snapshot.get("status"), len(snapshot.get("output", [])), ) - return JSONResponse(snapshot, status_code=200, headers=self._session_headers(agent_session_id)) + return JSONResponse( + _json_snapshot(snapshot), + status_code=200, + headers=self._session_headers(agent_session_id), + ) except _HandlerError as exc: logger.error( "Handler error in sync create (response_id=%s)", @@ -744,7 +754,11 @@ async def _iter_with_context(): # type: ignore[return] ctx.response_id, snapshot.get("status"), ) - return JSONResponse(snapshot, status_code=200, headers=self._session_headers(agent_session_id)) + return JSONResponse( + _json_snapshot(snapshot), + status_code=200, + headers=self._session_headers(agent_session_id), + ) except _HandlerError as exc: logger.error("Handler error in create (response_id=%s)", ctx.response_id, exc_info=exc.original) # Handler errors are server-side faults, not client errors @@ -843,7 +857,7 @@ async def handle_get(self, request: Request) -> Response: # pylint: disable=too snapshot.get("status"), len(snapshot.get("output", [])), ) - return JSONResponse(snapshot, status_code=200, headers=_hdrs) + return JSONResponse(_json_snapshot(snapshot), status_code=200, headers=_hdrs) def _handle_get_stream( self, @@ -919,14 +933,14 @@ async def _handle_get_fallback( # pylint: disable=too-many-return-statements # (e.g., after a process restart). try: response_obj = await self._provider.get_response(response_id, context=_context) - snapshot = response_obj.as_dict() + snapshot = cast(dict[str, Any], response_obj) logger.info( "Retrieved response %s: status=%s output_count=%d", response_id, snapshot.get("status"), len(snapshot.get("output", [])), ) - return JSONResponse(snapshot, status_code=200, headers=_hdrs) + return JSONResponse(_json_snapshot(snapshot), status_code=200, headers=_hdrs) except FoundryResourceNotFoundError: pass # Fall through to 404 below except FoundryBadRequestError as exc: @@ -960,9 +974,8 @@ async def _handle_get_fallback( # pylint: disable=too-many-return-statements # so use a combined message. try: persisted = await self._provider.get_response(response_id, context=_context) - persisted_dict = persisted.as_dict() # B2: SSE replay requires background mode. - if persisted_dict.get("background") is not True: + if persisted.get("background") is not True: return _invalid_mode( "This response cannot be streamed because it was not created with background=true.", _hdrs, @@ -1288,7 +1301,7 @@ async def handle_cancel(self, request: Request) -> Response: record.set_response_snapshot( build_cancelled_response(record.response_id, record.agent_reference, record.model) ) - return JSONResponse(_RuntimeState.to_snapshot(record), status_code=200, headers=_hdrs) + return JSONResponse(_json_snapshot(_RuntimeState.to_snapshot(record)), status_code=200, headers=_hdrs) return terminal_error # B11: initiate cancellation winddown @@ -1307,7 +1320,7 @@ async def handle_cancel(self, request: Request) -> Response: # Stamp mode flags so the provider fallback can enforce B1/B2 checks # after eager eviction removes the in-memory record. if record.response is not None: - record.response.background = record.mode_flags.background + record.response["background"] = record.mode_flags.background record.transition_to("cancelled") # Persist cancelled state to durable store (B11: cancellation always wins) @@ -1324,7 +1337,7 @@ async def handle_cancel(self, request: Request) -> Response: await self._runtime_state.try_evict(record.response_id) logger.info("Cancelled response %s, status=%s", response_id, snapshot.get("status")) - return JSONResponse(snapshot, status_code=200, headers=_hdrs) + return JSONResponse(_json_snapshot(snapshot), status_code=200, headers=_hdrs) async def _handle_cancel_fallback( self, @@ -1349,7 +1362,7 @@ async def _handle_cancel_fallback( """ try: response_obj = await self._provider.get_response(response_id, context=_context) - persisted = response_obj.as_dict() + persisted = cast(dict[str, Any], response_obj) # B1: background check comes first — non-bg responses always # get the "synchronous" message regardless of terminal status. @@ -1364,7 +1377,7 @@ async def _handle_cancel_fallback( terminal_error = _check_cancel_terminal_status(stored_status, _hdrs) if terminal_error is not None: if stored_status == "cancelled": - return JSONResponse(persisted, status_code=200, headers=_hdrs) + return JSONResponse(_json_snapshot(persisted), status_code=200, headers=_hdrs) return terminal_error except FoundryResourceNotFoundError: pass # Fall through to 404 below @@ -1448,12 +1461,9 @@ async def handle_input_items(self, request: Request) -> Response: return _deleted_response(response_id, _hdrs) except KeyError: return _not_found(response_id, _hdrs) - ordered_items = items if order == "asc" else list(reversed(items)) - ordered_dicts: list[dict[str, Any]] = [ - item.as_dict() if hasattr(item, "as_dict") else cast("dict[str, Any]", item) for item in ordered_items - ] - scoped_items = _apply_item_cursors(ordered_dicts, after=after, before=before) + ordered_items = list(items) if order == "asc" else list(reversed(items)) + scoped_items = _apply_item_cursors(cast("list[dict[str, Any]]", ordered_items), after=after, before=before) page = scoped_items[:limit] has_more = len(scoped_items) > limit diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_event_subject.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_event_subject.py index 122aff1b2c4f..45338e721125 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_event_subject.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_event_subject.py @@ -7,7 +7,7 @@ import asyncio # pylint: disable=do-not-import-asyncio from typing import AsyncIterator -from ..models._generated import ResponseStreamEvent +from azure.ai.agentserver.responses.models import ResponseStreamEvent class _ResponseEventSubject: @@ -37,7 +37,7 @@ def __init__(self) -> None: async def publish(self, event: ResponseStreamEvent) -> None: """Push a new event to all current subscribers and append it to the replay buffer. - :param event: The normalised event (``ResponseStreamEvent`` model instance). + :param event: The normalised event wire payload. :type event: ResponseStreamEvent """ async with self._lock: @@ -84,7 +84,7 @@ async def subscribe(self, cursor: int = -1) -> AsyncIterator[ResponseStreamEvent item = await q.get() if item is self._DONE: return - assert isinstance(item, ResponseStreamEvent) + assert isinstance(item, dict) and isinstance(item.get("type"), str) yield item finally: # Clean up subscription on client disconnect or normal completion diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_execution_context.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_execution_context.py index 89e18252d305..a1b707fa7017 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_execution_context.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_execution_context.py @@ -7,8 +7,9 @@ import asyncio # pylint: disable=do-not-import-asyncio from typing import TYPE_CHECKING, Any +from azure.ai.agentserver.responses.models import AgentReference, CreateResponse, OutputItem + from .._response_context import ResponseContext -from ..models._generated import AgentReference, CreateResponse, OutputItem if TYPE_CHECKING: from ._observability import CreateSpan diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_observability.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_observability.py index 78fe4ef1f5e1..f7b3a5a969ce 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_observability.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_observability.py @@ -115,7 +115,7 @@ def end(self, error: BaseException | None = None) -> None: self._ended = True if self._hook is None: return - self._hook.on_span_end(self.name, dict(self.tags), error) + self._hook.on_span_end(self.name, self.tags.copy(), error) def start_create_span(name: str, tags: dict[str, Any], hook: CreateSpanHook | None = None) -> CreateSpan: @@ -130,9 +130,9 @@ def start_create_span(name: str, tags: dict[str, Any], hook: CreateSpanHook | No :return: The started ``CreateSpan`` instance. :rtype: CreateSpan """ - span = CreateSpan(name=name, tags=dict(tags), _hook=hook) + span = CreateSpan(name=name, tags=tags.copy(), _hook=hook) if hook is not None: - hook.on_span_start(name, dict(span.tags)) + hook.on_span_start(name, span.tags.copy()) return span @@ -316,7 +316,7 @@ def on_span_start(self, name: str, tags: dict[str, Any]) -> None: self.spans.append( RecordedSpan( name=name, - tags=dict(tags), + tags=tags.copy(), started_at=datetime.now(timezone.utc), ) ) @@ -337,6 +337,6 @@ def on_span_end(self, name: str, tags: dict[str, Any], error: BaseException | No self.on_span_start(name, tags) span = self.spans[-1] - span.tags = dict(tags) + span.tags = tags.copy() span.error = error span.ended_at = datetime.now(timezone.utc) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_orchestrator.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_orchestrator.py index 999d5d641105..8e2195ff26d4 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_orchestrator.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_orchestrator.py @@ -21,7 +21,7 @@ from azure.ai.agentserver.core._platform_headers import PLATFORM_ERROR_TAG # pylint: disable=import-error,no-name-in-module from .._options import ResponsesServerOptions -from ..models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models from ..models.runtime import ( ResponseExecution, ResponseModeFlags, @@ -49,7 +49,7 @@ if TYPE_CHECKING: from .._response_context import ResponseContext - from ..models._generated import AgentReference, CreateResponse + from azure.ai.agentserver.responses.models import AgentReference, CreateResponse logger = logging.getLogger("azure.ai.agentserver") @@ -62,8 +62,8 @@ async def _resolve_input_items_for_persistence( context: "ResponseContext | None", - fallback_items: list[generated_models.OutputItem] | None, -) -> list[generated_models.OutputItem] | None: + fallback_items: list[response_models.OutputItem] | None, +) -> list[response_models.OutputItem] | None: """Resolve ``item_reference`` inputs via the provider before persisting. When the caller's input includes ``ItemReferenceParam`` entries (references @@ -94,7 +94,7 @@ async def _resolve_input_items_for_persistence( return list(fallback_items) if fallback_items else None -def _check_first_event_contract(normalized: generated_models.ResponseStreamEvent, response_id: str) -> str | None: +def _check_first_event_contract(normalized: response_models.ResponseStreamEvent, response_id: str) -> str | None: """Return an error message if the first handler event violates FR-006/FR-007, else None. - FR-006: The first event MUST be ``response.created`` with matching ``id``. @@ -166,8 +166,8 @@ async def _iter_with_winddown( _OUTPUT_ITEM_EVENT_TYPES: frozenset[str] = frozenset( { - generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, - generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, + response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, + response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, } ) @@ -175,16 +175,16 @@ async def _iter_with_winddown( # Used by FR-008a output manipulation detection. _RESPONSE_SNAPSHOT_TYPES: frozenset[str] = frozenset( { - generated_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, - generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, - generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, - generated_models.ResponseStreamEventType.RESPONSE_QUEUED.value, + response_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, + response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, + response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, + response_models.ResponseStreamEventType.RESPONSE_QUEUED.value, } ) -def _validate_handler_event(coerced: generated_models.ResponseStreamEvent) -> str | None: +def _validate_handler_event(coerced: response_models.ResponseStreamEvent) -> str | None: """Return an error message if a coerced handler event has invalid structure, else None. Lightweight structural checks (B30): @@ -208,7 +208,7 @@ def _validate_handler_event(coerced: generated_models.ResponseStreamEvent) -> st async def _run_background_non_stream( # pylint: disable=too-many-locals,too-many-branches *, - create_fn: Callable[..., AsyncIterator[generated_models.ResponseStreamEvent]], + create_fn: Callable[..., AsyncIterator[response_models.ResponseStreamEvent]], parsed: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event, @@ -261,7 +261,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man :rtype: None """ record.transition_to("in_progress") - handler_events: list[generated_models.ResponseStreamEvent] = [] + handler_events: list[response_models.ResponseStreamEvent] = [] validator = EventStreamValidator() output_item_count = 0 _provider_created = False # tracks whether create_response was called @@ -317,7 +317,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man agent_session_id=agent_session_id, conversation_id=conversation_id, ) - record.set_response_snapshot(generated_models.ResponseObject(_initial_snapshot)) + record.set_response_snapshot(_initial_snapshot) # Honour the handler's initial status (e.g. "queued") so the # POST response body reflects what the handler actually set. _handler_initial_status = _initial_snapshot.get("status") @@ -327,7 +327,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man if store and provider is not None: try: _context = context.platform_context if context else None - _response_obj = generated_models.ResponseObject(_initial_snapshot) + _response_obj = _initial_snapshot _history_ids = ( await provider.get_history_item_ids( record.previous_response_id, @@ -368,7 +368,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man await asyncio.sleep(0) else: # Track output_item.added events for FR-008a - _item_added = generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED + _item_added = response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED if normalized.get("type") == _item_added.value: output_item_count += 1 @@ -468,7 +468,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man resolved_status = response_payload.get("status") if record.status != "cancelled": - record.set_response_snapshot(generated_models.ResponseObject(response_payload)) + record.set_response_snapshot(response_payload) target = resolved_status if isinstance(resolved_status, str) else "completed" # If still queued, transition through in_progress first so the # state machine stays valid (queued can only reach terminal @@ -483,7 +483,7 @@ async def _run_background_non_stream( # pylint: disable=too-many-locals,too-man # after eager eviction removes the in-memory record. This covers # all code paths (normal completion, handler failure, cancellation). if record.response is not None: - record.response.background = record.mode_flags.background + record.response["background"] = record.mode_flags.background # Persist terminal state update via provider (bg non-stream: update after runner completes) # §3.5: Persistence failure sets persistence_failed on the record and # replaces the snapshot with storage_error so GET returns the failure. @@ -631,12 +631,12 @@ class _PipelineState: ) def __init__(self) -> None: - self.handler_events: list[generated_models.ResponseStreamEvent] = [] + self.handler_events: list[response_models.ResponseStreamEvent] = [] self.bg_record: ResponseExecution | None = None self.captured_error: BaseException | None = None self.validator: EventStreamValidator = EventStreamValidator() self.stream_interrupted: bool = False - self.pending_terminal: generated_models.ResponseStreamEvent | None = None + self.pending_terminal: response_models.ResponseStreamEvent | None = None self.provider_created: bool = False @@ -652,16 +652,16 @@ class _ResponseOrchestrator: # pylint: disable=too-many-instance-attributes _TERMINAL_SSE_TYPES: frozenset[str] = frozenset( { - generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, - generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, + response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, + response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, } ) def __init__( self, *, - create_fn: Callable[..., AsyncIterator[generated_models.ResponseStreamEvent]], + create_fn: Callable[..., AsyncIterator[response_models.ResponseStreamEvent]], runtime_state: _RuntimeState, runtime_options: ResponsesServerOptions, provider: ResponseProviderProtocol, @@ -694,8 +694,8 @@ async def _normalize_and_append( self, ctx: _ExecutionContext, state: _PipelineState, - handler_event: generated_models.ResponseStreamEvent | dict[str, Any], - ) -> generated_models.ResponseStreamEvent: + handler_event: response_models.ResponseStreamEvent | dict[str, Any], + ) -> response_models.ResponseStreamEvent: """Coerce, validate, normalise, and append a handler event to the pipeline state. Also propagates the event into the background record and its subject when active. @@ -738,7 +738,7 @@ async def _normalize_and_append( return normalized @staticmethod - def _has_terminal_event(handler_events: list[generated_models.ResponseStreamEvent]) -> bool: + def _has_terminal_event(handler_events: list[response_models.ResponseStreamEvent]) -> bool: """Return ``True`` if any terminal event has been emitted. :param handler_events: List of normalised handler events. @@ -750,7 +750,7 @@ def _has_terminal_event(handler_events: list[generated_models.ResponseStreamEven async def _cancel_terminal_sse_dict( self, ctx: _ExecutionContext, state: _PipelineState - ) -> generated_models.ResponseStreamEvent: + ) -> response_models.ResponseStreamEvent: """Build, normalise, append, and return a cancel-terminal event. Returns the normalised event (model instance) so that it can be consumed @@ -764,14 +764,14 @@ async def _cancel_terminal_sse_dict( :rtype: ResponseStreamEvent """ cancel_event: dict[str, Any] = { - "type": generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - "response": _build_cancelled_response(ctx.response_id, ctx.agent_reference, ctx.model).as_dict(), + "type": response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + "response": _build_cancelled_response(ctx.response_id, ctx.agent_reference, ctx.model), } return await self._normalize_and_append(ctx, state, cancel_event) async def _make_failed_event( self, ctx: _ExecutionContext, state: _PipelineState - ) -> generated_models.ResponseStreamEvent: + ) -> response_models.ResponseStreamEvent: """Build, normalise, append, and return a ``response.failed`` event. Used for S-035 (handler exception after ``response.created``) and @@ -785,7 +785,7 @@ async def _make_failed_event( :rtype: ResponseStreamEvent """ failed_event: dict[str, Any] = { - "type": generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_FAILED.value, "response": { "id": ctx.response_id, "object": "response", @@ -820,8 +820,8 @@ def _apply_storage_error_replacement( error_message=_STORAGE_ERROR_MESSAGE, ) replacement_event: dict[str, Any] = { - "type": generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - "response": storage_error_response.as_dict(), + "type": response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + "response": storage_error_response, } # Determine the sequence_number: reuse the original pending terminal's @@ -859,7 +859,7 @@ def _apply_storage_error_replacement( async def _persist_and_resolve_terminal( self, ctx: _ExecutionContext, state: _PipelineState, record: ResponseExecution - ) -> generated_models.ResponseStreamEvent: + ) -> response_models.ResponseStreamEvent: """Attempt persistence and resolve the terminal event to yield. This method implements the buffer-then-persist-then-yield pattern: @@ -909,7 +909,7 @@ async def _persist_and_resolve_terminal( ) # Update snapshot on record before persistence attempt - record.set_response_snapshot(generated_models.ResponseObject(response_payload)) + record.set_response_snapshot(response_payload) record.transition_to(status) # Attempt persistence @@ -918,7 +918,7 @@ async def _persist_and_resolve_terminal( # Phase 1 already failed — skip persistence attempt, emit storage error directly. self._apply_storage_error_replacement(ctx, state, record) else: - record.response.background = record.mode_flags.background + record.response["background"] = record.mode_flags.background _context = ctx.context.platform_context if ctx.context else None try: if state.provider_created: @@ -939,7 +939,7 @@ async def _persist_and_resolve_terminal( ) _resolved_items = await _resolve_input_items_for_persistence(ctx.context, ctx.input_items) await self._provider.create_response( - generated_models.ResponseObject(response_payload), + response_payload, _resolved_items, _history_ids, context=_context, @@ -965,7 +965,7 @@ async def _persist_and_resolve_terminal( return state.pending_terminal async def _register_bg_execution( - self, ctx: _ExecutionContext, state: _PipelineState, first_normalized: generated_models.ResponseStreamEvent + self, ctx: _ExecutionContext, state: _PipelineState, first_normalized: response_models.ResponseStreamEvent ) -> None: """Create, seed, and register the background+stream execution record. @@ -1005,7 +1005,7 @@ async def _register_bg_execution( conversation_id=ctx.conversation_id, user_id_key=ctx.user_id, ) - execution.set_response_snapshot(generated_models.ResponseObject(initial_payload)) + execution.set_response_snapshot(initial_payload) execution.subject = _ResponseEventSubject() state.bg_record = execution assert state.bg_record.subject is not None @@ -1013,7 +1013,7 @@ async def _register_bg_execution( await self._runtime_state.add(execution) if ctx.store: _context = ctx.context.platform_context if ctx.context else None - _initial_response_obj = generated_models.ResponseObject(initial_payload) + _initial_response_obj = initial_payload _history_ids = ( await self._provider.get_history_item_ids( ctx.previous_response_id, @@ -1046,8 +1046,8 @@ async def _process_handler_events( # pylint: disable=too-many-return-statements self, ctx: _ExecutionContext, state: _PipelineState, - handler_iterator: AsyncIterator[generated_models.ResponseStreamEvent], - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + handler_iterator: AsyncIterator[response_models.ResponseStreamEvent], + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Shared event pipeline: coerce → normalise → apply_event → subject publish. This async generator is the single authoritative event pipeline consumed by @@ -1252,7 +1252,7 @@ async def _process_handler_events( # pylint: disable=too-many-return-statements # appended to the state machine before we emit response.failed. _pre_coerced = _coerce_handler_event(raw) _pre_type = _pre_coerced.get("type", "") - if _pre_type == generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value: + if _pre_type == response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value: output_item_count += 1 if _pre_type in _RESPONSE_SNAPSHOT_TYPES: _pre_response = _pre_coerced.get("response") or {} @@ -1421,7 +1421,7 @@ async def _finalize_stream(self, ctx: _ExecutionContext, state: _PipelineState) conversation_id=ctx.conversation_id, user_id_key=ctx.user_id, ) - execution.set_response_snapshot(generated_models.ResponseObject(response_payload)) + execution.set_response_snapshot(response_payload) # Copy persistence_failed from the ephemeral record if one was used if state.bg_record is not None: execution.persistence_failed = state.bg_record.persistence_failed @@ -1722,7 +1722,7 @@ async def run_sync(self, ctx: _ExecutionContext) -> dict[str, Any]: conversation_id=ctx.conversation_id, user_id_key=ctx.user_id, ) - record.set_response_snapshot(generated_models.ResponseObject(response_payload)) + record.set_response_snapshot(response_payload) # Always register in runtime state so that cancel/GET can find the record # and return the correct status code (e.g., 400 for non-bg cancel). @@ -1734,7 +1734,7 @@ async def run_sync(self, ctx: _ExecutionContext) -> dict[str, Any]: # §3.1: Persistence failure replaces the response body with storage_error. try: _context = ctx.context.platform_context if ctx.context else None - _response_obj = generated_models.ResponseObject(response_payload) + _response_obj = response_payload _history_ids = ( await self._provider.get_history_item_ids( ctx.previous_response_id, diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_request_parsing.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_request_parsing.py index fb6aa0dbbb22..78ea55a26c67 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_request_parsing.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_request_parsing.py @@ -7,10 +7,12 @@ import hashlib import os from copy import deepcopy -from typing import Any, Mapping +from typing import Any, Mapping, cast + +from azure.ai.agentserver.responses.models._wire import get_field +from azure.ai.agentserver.responses.models import AgentReference, CreateResponse from .._id_generator import IdGenerator -from ..models._generated import AgentReference, CreateResponse from ..models.errors import RequestValidationError _X_AGENT_RESPONSE_ID_HEADER = "x-agent-response-id" @@ -117,7 +119,7 @@ def _validate_response_id(response_id: str) -> None: def _normalize_agent_reference(value: Any) -> AgentReference | dict[str, Any]: - """Normalize an agent reference value into a validated model or empty dict. + """Normalize an agent reference value into a validated wire payload or empty dict. If *value* is ``None``, an empty dict is returned as a sentinel for "no agent_reference was provided". Callers use truthiness to detect @@ -125,7 +127,7 @@ def _normalize_agent_reference(value: Any) -> AgentReference | dict[str, Any]: :param value: Raw agent reference from the request (dict, model, or ``None``). :type value: Any - :return: An :class:`AgentReference` model instance, + :return: An :class:`AgentReference` wire payload, or ``{}`` when no agent_reference was provided. :rtype: AgentReference | dict[str, Any] :raises RequestValidationError: If the value is not a valid agent reference. @@ -133,17 +135,14 @@ def _normalize_agent_reference(value: Any) -> AgentReference | dict[str, Any]: if value is None: return {} - if hasattr(value, "as_dict"): - candidate = value.as_dict() - elif isinstance(value, dict): - candidate = dict(value) - else: + if not isinstance(value, dict): raise RequestValidationError( "agent_reference must be an object", code="invalid_request", param="agent_reference", ) + candidate = value.copy() candidate.setdefault("type", "agent_reference") name = candidate.get("name") reference_type = candidate.get("type") @@ -163,7 +162,7 @@ def _normalize_agent_reference(value: Any) -> AgentReference | dict[str, Any]: ) candidate["name"] = name.strip() - return AgentReference(candidate) + return cast(AgentReference, candidate) def _prevalidate_identity_payload(payload: dict[str, Any]) -> None: @@ -231,7 +230,7 @@ def _resolve_identity_fields( ``IdGenerator.new_response_id()``, using the ``previous_response_id`` or ``conversation`` ID as partition-key hint when available. - :param parsed: Parsed ``CreateResponse`` model instance. + :param parsed: Parsed ``CreateResponse`` wire payload. :type parsed: CreateResponse :keyword request_headers: HTTP request headers mapping. :keyword type request_headers: Mapping[str, str] | None @@ -248,12 +247,10 @@ def _resolve_identity_fields( if isinstance(raw_header, str) and raw_header.strip(): header_response_id = raw_header.strip() - parsed_mapping = parsed.as_dict() if hasattr(parsed, "as_dict") else {} - if header_response_id: response_id = header_response_id else: - explicit_response_id = parsed_mapping.get("response_id") or getattr(parsed, "response_id", None) + explicit_response_id = parsed.get("response_id") if isinstance(explicit_response_id, str) and explicit_response_id.strip(): response_id = explicit_response_id.strip() else: @@ -261,37 +258,30 @@ def _resolve_identity_fields( # for co-locating related response IDs in the same partition. # previous_response_id takes priority because it directly chains # responses, while conversation ID groups them more loosely. - partition_hint = parsed_mapping.get("previous_response_id") or _resolve_conversation_id(parsed) or "" + partition_hint = parsed.get("previous_response_id") or _resolve_conversation_id(parsed) or "" response_id = IdGenerator.new_response_id(partition_hint) _validate_response_id(response_id) - agent_reference = _normalize_agent_reference( - parsed_mapping.get("agent_reference") - if isinstance(parsed_mapping, dict) - else getattr(parsed, "agent_reference", None) - ) + agent_reference = _normalize_agent_reference(parsed.get("agent_reference")) return response_id, agent_reference def _resolve_conversation_id(parsed: CreateResponse) -> str | None: """Extract the conversation ID from a parsed ``CreateResponse`` request. - Handles both a plain string value and a ``ConversationParam_2`` object - (which carries the ID in its ``.id`` attribute). + Handles both a plain string value and a ``ConversationParam_2`` wire payload. - :param parsed: The parsed ``CreateResponse`` model instance. + :param parsed: The parsed ``CreateResponse`` wire payload. :type parsed: CreateResponse :returns: The conversation ID string, or ``None`` if not present. :rtype: str | None """ - raw = getattr(parsed, "conversation", None) + raw = parsed.get("conversation") if isinstance(raw, str): return raw or None if isinstance(raw, dict): cid = raw.get("id") return str(cid) if cid else None - if raw is not None and hasattr(raw, "id"): - return str(raw.id) or None return None @@ -313,7 +303,7 @@ def _resolve_session_id( where *partition_hint* is extracted from ``conversation_id`` or ``previous_response_id``. 4. Random 63-char lowercase hex (one-shot, no conversational context) - :param parsed: Parsed ``CreateResponse`` model instance. + :param parsed: Parsed ``CreateResponse`` wire payload. :type parsed: CreateResponse :param payload: Raw JSON payload dict. :type payload: dict[str, Any] @@ -327,7 +317,7 @@ def _resolve_session_id( :rtype: str """ # Priority 1: payload field - session_id = getattr(parsed, "agent_session_id", None) + session_id = parsed.get("agent_session_id") if not isinstance(session_id, str) or not session_id.strip(): # Also check the raw payload for when the field isn't in the model yet if isinstance(payload, dict): @@ -342,7 +332,7 @@ def _resolve_session_id( # Priority 3: deterministic derivation from conversation context conversation_id = _resolve_conversation_id(parsed) previous_response_id: str | None = None - raw_prev = getattr(parsed, "previous_response_id", None) + raw_prev = parsed.get("previous_response_id") if isinstance(raw_prev, str) and raw_prev.strip(): previous_response_id = raw_prev.strip() @@ -400,19 +390,15 @@ def _extract_agent_identity( ) -> tuple[str, str]: """Extract (agent_name, agent_version) from an agent reference. - :param agent_reference: Agent reference mapping or model instance. + :param agent_reference: Agent reference mapping. :type agent_reference: AgentReference | dict[str, Any] | None :returns: Tuple of (name, version) with fallback defaults. :rtype: tuple[str, str] """ if agent_reference is None: return _DEFAULT_AGENT_REFERENCE_NAME, "" - if isinstance(agent_reference, dict): - name = agent_reference.get("name") or _DEFAULT_AGENT_REFERENCE_NAME - version = agent_reference.get("version") or "" - return str(name), str(version) - name = getattr(agent_reference, "name", None) or _DEFAULT_AGENT_REFERENCE_NAME - version = getattr(agent_reference, "version", None) or "" + name = get_field(agent_reference, "name") or _DEFAULT_AGENT_REFERENCE_NAME + version = get_field(agent_reference, "version") or "" return str(name), str(version) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_routing.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_routing.py index 4efe92b7c596..d0da3ab463c1 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_routing.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_routing.py @@ -20,11 +20,11 @@ AgentServerHost, build_server_version, ) +from azure.ai.agentserver.responses.models import CreateResponse, ResponseStreamEvent from .._options import ResponsesServerOptions from .._response_context import ResponseContext from .._version import VERSION as _RESPONSES_VERSION -from ..models._generated import CreateResponse, ResponseStreamEvent from ..store._base import ResponseProviderProtocol, ResponseStreamProviderProtocol from ..store._memory import InMemoryResponseProvider from ._endpoint_handler import _ResponseEndpointHandler @@ -42,14 +42,14 @@ """Type alias for the user-registered create-response handler function. The handler receives: -- ``request``: The parsed :class:`CreateResponse` model. +- ``request``: The parsed :class:`CreateResponse` wire payload. - ``context``: The :class:`ResponseContext` for the current request. - ``cancellation_signal``: An :class:`asyncio.Event` set when cancellation is requested. It must return one of: - A ``TextResponse`` for text-only responses (it implements ``AsyncIterable``). -- An ``AsyncIterable`` (async generator) of :class:`ResponseStreamEvent` instances. -- A synchronous ``Generator`` of :class:`ResponseStreamEvent` instances. +- An ``AsyncIterable`` (async generator) of :class:`ResponseStreamEvent` wire payloads. +- A synchronous ``Generator`` of :class:`ResponseStreamEvent` wire payloads. """ logger = logging.getLogger("azure.ai.agentserver") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_runtime_state.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_runtime_state.py index 66faac3eb560..0b0841417b12 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_runtime_state.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_runtime_state.py @@ -8,7 +8,7 @@ from copy import deepcopy from typing import Any -from ..models._generated import OutputItem +from azure.ai.agentserver.responses.models import OutputItem from ..models.runtime import ResponseExecution from ..streaming._helpers import strip_nulls @@ -181,8 +181,8 @@ async def list_records(self) -> list[ResponseExecution]: def to_snapshot(execution: ResponseExecution) -> dict[str, Any]: """Build a normalized response snapshot dictionary from an execution. - Uses ``execution.response.as_dict()`` directly when a response snapshot is - available, avoiding an unnecessary ``Response(dict).as_dict()`` round-trip. + Uses the execution's response dict directly when a response snapshot is + available. Falls back to a minimal status-only dict when no response has been set yet. :param execution: The execution whose response snapshot to build. @@ -191,7 +191,7 @@ def to_snapshot(execution: ResponseExecution) -> dict[str, Any]: :rtype: dict[str, Any] """ if execution.response is not None: - result: dict[str, Any] = execution.response.as_dict() + result: dict[str, Any] = deepcopy(execution.response) result.setdefault("id", execution.response_id) result.setdefault("response_id", execution.response_id) result.setdefault("object", "response") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_validation.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_validation.py index 2574777258bc..7f6fa43f7eeb 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_validation.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/hosting/_validation.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Mapping +from typing import Any, Mapping, cast from starlette.responses import JSONResponse @@ -16,24 +16,24 @@ ) from azure.ai.agentserver.responses._id_generator import IdGenerator from azure.ai.agentserver.responses._options import ResponsesServerOptions -from azure.ai.agentserver.responses.models._generated import ApiErrorResponse, CreateResponse, Error -from azure.ai.agentserver.responses.models._generated._validators import validate_CreateResponse +from azure.ai.agentserver.responses.models import ApiErrorResponse, CreateResponse from azure.ai.agentserver.responses.models.errors import RequestValidationError +from azure.ai.agentserver.responses.models._validators import validate_create_response_payload def parse_create_response(payload: Mapping[str, Any]) -> CreateResponse: - """Parse incoming JSON payload into the generated ``CreateResponse`` model. + """Validate incoming JSON payload and return a dict-native ``CreateResponse`` payload. :param payload: Raw request payload mapping. :type payload: Mapping[str, Any] - :returns: Parsed generated create response model. + :returns: Parsed create response wire payload. :rtype: CreateResponse :raises RequestValidationError: If payload is not an object or cannot be parsed. """ if not isinstance(payload, Mapping): raise RequestValidationError("request body must be a JSON object", code="invalid_request") - validation_errors = validate_CreateResponse(payload) + validation_errors = validate_create_response_payload(payload) if validation_errors: details = [ { @@ -49,21 +49,16 @@ def parse_create_response(payload: Mapping[str, Any]) -> CreateResponse: details=details, ) - try: - return CreateResponse(payload) - except Exception as exc: # pragma: no cover - generated model raises implementation-specific errors. - raise RequestValidationError( - "request body failed schema validation", - code="invalid_request", - debug_info={"exception_type": type(exc).__name__, "detail": str(exc)}, - ) from exc + if isinstance(payload, dict): + return cast(CreateResponse, payload) + return cast(CreateResponse, dict(payload)) def normalize_create_response( request: CreateResponse, options: ResponsesServerOptions | None, ) -> CreateResponse: - """Apply server-side defaults to a parsed create request model. + """Apply server-side defaults to a parsed create request payload. :param request: The parsed create response model to normalize. :type request: CreateResponse @@ -72,13 +67,15 @@ def normalize_create_response( :return: The same model instance with defaults applied. :rtype: CreateResponse """ - if (request.model is None or (isinstance(request.model, str) and not request.model.strip())) and options: - request.model = options.default_model + model = request.get("model") + if (model is None or (isinstance(model, str) and not model.strip())) and options: + request["model"] = options.default_model + model = request.get("model") - if isinstance(request.model, str): - request.model = request.model.strip() or "" - elif request.model is None: - request.model = "" + if isinstance(model, str): + request["model"] = model.strip() or "" + elif model is None: + request["model"] = "" return request @@ -90,16 +87,16 @@ def validate_create_response(request: CreateResponse) -> None: :type request: CreateResponse :raises RequestValidationError: If semantic preconditions are violated. """ - store_enabled = True if request.store is None else bool(request.store) + store_enabled = True if request.get("store") is None else bool(request.get("store")) - if request.background and not store_enabled: + if request.get("background") and not store_enabled: raise RequestValidationError( "background=true requires store=true", code="unsupported_parameter", param="background", ) - if request.stream_options is not None and request.stream is not True: + if request.get("stream_options") is not None and request.get("stream") is not True: raise RequestValidationError( "stream_options requires stream=true", code="invalid_mode", @@ -109,8 +106,8 @@ def validate_create_response(request: CreateResponse) -> None: # B22: model is optional — resolved to default in normalize_create_response() # Metadata constraints: ≤16 keys, key ≤64 chars, value ≤512 chars - metadata = getattr(request, "metadata", None) - if metadata is not None and hasattr(metadata, "items"): + metadata = request.get("metadata") + if isinstance(metadata, Mapping): if len(metadata) > 16: raise RequestValidationError( "metadata must have at most 16 key-value pairs", @@ -132,7 +129,7 @@ def validate_create_response(request: CreateResponse) -> None: ) # Validate previous_response_id format (must be a valid caresp ID) - prev_id = getattr(request, "previous_response_id", None) + prev_id = request.get("previous_response_id") if isinstance(prev_id, str) and prev_id: is_valid, _ = IdGenerator.is_valid(prev_id, allowed_prefixes=["caresp"]) if not is_valid: @@ -148,13 +145,13 @@ def parse_and_validate_create_response( *, options: ResponsesServerOptions | None = None, ) -> CreateResponse: - """Parse, normalize, and validate a create request using generated models. + """Parse, normalize, and validate a create request wire payload. :param payload: Raw request payload mapping. :type payload: Mapping[str, Any] :keyword options: Server runtime options for defaults, or ``None``. :keyword type options: ResponsesServerOptions | None - :return: A fully validated ``CreateResponse`` model. + :return: A fully validated ``CreateResponse`` wire payload. :rtype: CreateResponse :raises RequestValidationError: If parsing or validation fails. """ @@ -172,7 +169,7 @@ def build_api_error_response( error_type: str = "invalid_request_error", debug_info: dict[str, Any] | None = None, ) -> ApiErrorResponse: - """Build a generated ``ApiErrorResponse`` envelope for client-visible failures. + """Build an API error envelope for client-visible failures. :param message: Human-readable error message. :type message: str @@ -184,18 +181,18 @@ def build_api_error_response( :keyword type error_type: str :keyword debug_info: Optional debug information dictionary. :keyword type debug_info: dict[str, Any] | None - :return: A generated ``ApiErrorResponse`` envelope. + :return: An ``ApiErrorResponse`` wire envelope. :rtype: ApiErrorResponse """ - return ApiErrorResponse( - error=Error( - code=code, - message=message, - param=param, - type=error_type, - debug_info=debug_info, - ) - ) + error: dict[str, Any] = { + "code": code, + "message": message, + "param": param, + "type": error_type, + } + if debug_info is not None: + error["debug_info"] = debug_info + return cast(ApiErrorResponse, {"error": error}) def build_not_found_error_response( @@ -204,7 +201,7 @@ def build_not_found_error_response( param: str = "response_id", resource_name: str = "response", ) -> ApiErrorResponse: - """Build a canonical generated not-found error envelope. + """Build a canonical not-found error envelope. :param resource_id: The ID of the resource that was not found. :type resource_id: str @@ -212,7 +209,7 @@ def build_not_found_error_response( :keyword type param: str :keyword resource_name: Display name for the resource type (default ``"response"``). :keyword type resource_name: str - :return: A generated ``ApiErrorResponse`` envelope with not-found error. + :return: An ``ApiErrorResponse`` wire envelope with not-found error. :rtype: ApiErrorResponse """ return build_api_error_response( @@ -228,13 +225,13 @@ def build_invalid_mode_error_response( *, param: str | None = None, ) -> ApiErrorResponse: - """Build a canonical generated invalid-mode error envelope. + """Build a canonical invalid-mode error envelope. :param message: Human-readable error message. :type message: str :keyword param: The request parameter that caused the error, or ``None``. :keyword type param: str | None - :return: A generated ``ApiErrorResponse`` envelope with invalid-mode error. + :return: An ``ApiErrorResponse`` wire envelope with invalid-mode error. :rtype: ApiErrorResponse """ return build_api_error_response( @@ -246,7 +243,7 @@ def build_invalid_mode_error_response( def to_api_error_response(error: Exception) -> ApiErrorResponse: - """Map a Python exception to a generated API error envelope. + """Map a Python exception to an API error wire envelope. :param error: The exception to convert. :type error: Exception @@ -353,8 +350,6 @@ def _json_payload(value: Any) -> Any: :return: A JSON-serializable representation of the value. :rtype: Any """ - if hasattr(value, "as_dict"): - return value.as_dict() # type: ignore[no-any-return] return value diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/__init__.py index 460033db09b0..e2f6b26c7524 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/__init__.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/__init__.py @@ -3,7 +3,8 @@ """Canonical non-generated model types for the response server.""" from ._generated import * # type: ignore # noqa: F401,F403 # pylint: disable=unused-wildcard-import -from ._generated.sdk.models.models import __all__ as _generated_all +from ._generated import _unions as _generated_unions +from ._generated import types as _generated_types from ._helpers import ( get_content_expanded, get_conversation_expanded, @@ -16,6 +17,22 @@ TerminalResponseStatus, ) +_TYPE_EXPORT_EXCLUDES = { + "Any", + "Literal", + "Optional", + "Required", + "TYPE_CHECKING", + "TypedDict", + "Union", +} +_generated_all = [ + name + for module in (_generated_types, _generated_unions) + for name in dir(module) + if not name.startswith("_") and name not in _TYPE_EXPORT_EXCLUDES +] + __all__ = [ "ResponseStatus", "TerminalResponseStatus", diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/__init__.py index b783bfa73795..cdcbbe41db30 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/__init__.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/__init__.py @@ -1,11 +1,77 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -"""Compatibility re-exports for generated models preserved under sdk/models.""" +from ._unions import * # type: ignore # noqa: F401,F403 +from .types import * # type: ignore # noqa: F401,F403 +from .models import _enums as _generated_enums -from .sdk.models.models import * # type: ignore # noqa: F401,F403 +AnnotationType = getattr(_generated_enums, "AnnotationType") +ApplyPatchCallOutputStatus = getattr(_generated_enums, "ApplyPatchCallOutputStatus") +ApplyPatchCallOutputStatusParam = getattr(_generated_enums, "ApplyPatchCallOutputStatusParam") +ApplyPatchCallStatus = getattr(_generated_enums, "ApplyPatchCallStatus") +ApplyPatchCallStatusParam = getattr(_generated_enums, "ApplyPatchCallStatusParam") +ApplyPatchFileOperationType = getattr(_generated_enums, "ApplyPatchFileOperationType") +ApplyPatchOperationParamType = getattr(_generated_enums, "ApplyPatchOperationParamType") +AzureAISearchQueryType = getattr(_generated_enums, "AzureAISearchQueryType") +ClickButtonType = getattr(_generated_enums, "ClickButtonType") +ComputerActionType = getattr(_generated_enums, "ComputerActionType") +ComputerEnvironment = getattr(_generated_enums, "ComputerEnvironment") +ContainerMemoryLimit = getattr(_generated_enums, "ContainerMemoryLimit") +ContainerNetworkPolicyParamType = getattr(_generated_enums, "ContainerNetworkPolicyParamType") +ContainerSkillType = getattr(_generated_enums, "ContainerSkillType") +CustomToolParamFormatType = getattr(_generated_enums, "CustomToolParamFormatType") +DetailEnum = getattr(_generated_enums, "DetailEnum") +FileInputDetail = getattr(_generated_enums, "FileInputDetail") +FunctionAndCustomToolCallOutputType = getattr(_generated_enums, "FunctionAndCustomToolCallOutputType") +FunctionCallItemStatus = getattr(_generated_enums, "FunctionCallItemStatus") +FunctionCallOutputStatusEnum = getattr(_generated_enums, "FunctionCallOutputStatusEnum") +FunctionCallStatus = getattr(_generated_enums, "FunctionCallStatus") +FunctionShellCallEnvironmentType = getattr(_generated_enums, "FunctionShellCallEnvironmentType") +FunctionShellCallItemParamEnvironmentType = getattr(_generated_enums, "FunctionShellCallItemParamEnvironmentType") +FunctionShellCallItemStatus = getattr(_generated_enums, "FunctionShellCallItemStatus") +FunctionShellCallOutputOutcomeParamType = getattr(_generated_enums, "FunctionShellCallOutputOutcomeParamType") +FunctionShellCallOutputOutcomeType = getattr(_generated_enums, "FunctionShellCallOutputOutcomeType") +FunctionShellCallOutputStatusEnum = getattr(_generated_enums, "FunctionShellCallOutputStatusEnum") +FunctionShellCallStatus = getattr(_generated_enums, "FunctionShellCallStatus") +FunctionShellToolParamEnvironmentType = getattr(_generated_enums, "FunctionShellToolParamEnvironmentType") +GrammarSyntax1 = getattr(_generated_enums, "GrammarSyntax1") +ImageDetail = getattr(_generated_enums, "ImageDetail") +ImageGenActionEnum = getattr(_generated_enums, "ImageGenActionEnum") +IncludeEnum = getattr(_generated_enums, "IncludeEnum") +InputFidelity = getattr(_generated_enums, "InputFidelity") +ItemFieldType = getattr(_generated_enums, "ItemFieldType") +ItemType = getattr(_generated_enums, "ItemType") +MCPToolCallStatus = getattr(_generated_enums, "MCPToolCallStatus") +MemoryItemKind = getattr(_generated_enums, "MemoryItemKind") +MessageContentType = getattr(_generated_enums, "MessageContentType") +MessagePhase = getattr(_generated_enums, "MessagePhase") +MessageRole = getattr(_generated_enums, "MessageRole") +MessageStatus = getattr(_generated_enums, "MessageStatus") +ModelIdsCompaction = getattr(_generated_enums, "ModelIdsCompaction") +ModerationEntryType = getattr(_generated_enums, "ModerationEntryType") +ModerationInputType = getattr(_generated_enums, "ModerationInputType") +OpenApiAuthType = getattr(_generated_enums, "OpenApiAuthType") +OutputContentType = getattr(_generated_enums, "OutputContentType") +OutputItemType = getattr(_generated_enums, "OutputItemType") +OutputMessageContentType = getattr(_generated_enums, "OutputMessageContentType") +PageOrder = getattr(_generated_enums, "PageOrder") +PromptCacheRetentionEnum = getattr(_generated_enums, "PromptCacheRetentionEnum") +RankerVersionType = getattr(_generated_enums, "RankerVersionType") +RealtimeMcpErrorType = getattr(_generated_enums, "RealtimeMcpErrorType") +ReasoningEffort = getattr(_generated_enums, "ReasoningEffort") +ResponseErrorCode = getattr(_generated_enums, "ResponseErrorCode") +ResponseStreamEventType = getattr(_generated_enums, "ResponseStreamEventType") +SearchContentType = getattr(_generated_enums, "SearchContentType") +SearchContextSize = getattr(_generated_enums, "SearchContextSize") +ServiceTierEnum = getattr(_generated_enums, "ServiceTierEnum") +TextResponseFormatConfigurationType = getattr(_generated_enums, "TextResponseFormatConfigurationType") +ToolCallStatus = getattr(_generated_enums, "ToolCallStatus") +ToolChoiceOptions = getattr(_generated_enums, "ToolChoiceOptions") +ToolChoiceParamType = getattr(_generated_enums, "ToolChoiceParamType") +ToolSearchExecutionType = getattr(_generated_enums, "ToolSearchExecutionType") +ToolType = getattr(_generated_enums, "ToolType") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_enums.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_enums.py deleted file mode 100644 index 481d6d628755..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_enums.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated enum symbols.""" - -from .sdk.models.models._enums import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_models.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_models.py deleted file mode 100644 index 01e649adb824..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_models.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated model symbols.""" - -from .sdk.models.models._models import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_patch.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_patch.py deleted file mode 100644 index 66ee2dea3a63..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_patch.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Compatibility shim for generated patch helpers.""" - -from .sdk.models.models._patch import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_types.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_types.py new file mode 100644 index 000000000000..cdcbbe41db30 --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_types.py @@ -0,0 +1,77 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._unions import * # type: ignore # noqa: F401,F403 +from .types import * # type: ignore # noqa: F401,F403 +from .models import _enums as _generated_enums + +AnnotationType = getattr(_generated_enums, "AnnotationType") +ApplyPatchCallOutputStatus = getattr(_generated_enums, "ApplyPatchCallOutputStatus") +ApplyPatchCallOutputStatusParam = getattr(_generated_enums, "ApplyPatchCallOutputStatusParam") +ApplyPatchCallStatus = getattr(_generated_enums, "ApplyPatchCallStatus") +ApplyPatchCallStatusParam = getattr(_generated_enums, "ApplyPatchCallStatusParam") +ApplyPatchFileOperationType = getattr(_generated_enums, "ApplyPatchFileOperationType") +ApplyPatchOperationParamType = getattr(_generated_enums, "ApplyPatchOperationParamType") +AzureAISearchQueryType = getattr(_generated_enums, "AzureAISearchQueryType") +ClickButtonType = getattr(_generated_enums, "ClickButtonType") +ComputerActionType = getattr(_generated_enums, "ComputerActionType") +ComputerEnvironment = getattr(_generated_enums, "ComputerEnvironment") +ContainerMemoryLimit = getattr(_generated_enums, "ContainerMemoryLimit") +ContainerNetworkPolicyParamType = getattr(_generated_enums, "ContainerNetworkPolicyParamType") +ContainerSkillType = getattr(_generated_enums, "ContainerSkillType") +CustomToolParamFormatType = getattr(_generated_enums, "CustomToolParamFormatType") +DetailEnum = getattr(_generated_enums, "DetailEnum") +FileInputDetail = getattr(_generated_enums, "FileInputDetail") +FunctionAndCustomToolCallOutputType = getattr(_generated_enums, "FunctionAndCustomToolCallOutputType") +FunctionCallItemStatus = getattr(_generated_enums, "FunctionCallItemStatus") +FunctionCallOutputStatusEnum = getattr(_generated_enums, "FunctionCallOutputStatusEnum") +FunctionCallStatus = getattr(_generated_enums, "FunctionCallStatus") +FunctionShellCallEnvironmentType = getattr(_generated_enums, "FunctionShellCallEnvironmentType") +FunctionShellCallItemParamEnvironmentType = getattr(_generated_enums, "FunctionShellCallItemParamEnvironmentType") +FunctionShellCallItemStatus = getattr(_generated_enums, "FunctionShellCallItemStatus") +FunctionShellCallOutputOutcomeParamType = getattr(_generated_enums, "FunctionShellCallOutputOutcomeParamType") +FunctionShellCallOutputOutcomeType = getattr(_generated_enums, "FunctionShellCallOutputOutcomeType") +FunctionShellCallOutputStatusEnum = getattr(_generated_enums, "FunctionShellCallOutputStatusEnum") +FunctionShellCallStatus = getattr(_generated_enums, "FunctionShellCallStatus") +FunctionShellToolParamEnvironmentType = getattr(_generated_enums, "FunctionShellToolParamEnvironmentType") +GrammarSyntax1 = getattr(_generated_enums, "GrammarSyntax1") +ImageDetail = getattr(_generated_enums, "ImageDetail") +ImageGenActionEnum = getattr(_generated_enums, "ImageGenActionEnum") +IncludeEnum = getattr(_generated_enums, "IncludeEnum") +InputFidelity = getattr(_generated_enums, "InputFidelity") +ItemFieldType = getattr(_generated_enums, "ItemFieldType") +ItemType = getattr(_generated_enums, "ItemType") +MCPToolCallStatus = getattr(_generated_enums, "MCPToolCallStatus") +MemoryItemKind = getattr(_generated_enums, "MemoryItemKind") +MessageContentType = getattr(_generated_enums, "MessageContentType") +MessagePhase = getattr(_generated_enums, "MessagePhase") +MessageRole = getattr(_generated_enums, "MessageRole") +MessageStatus = getattr(_generated_enums, "MessageStatus") +ModelIdsCompaction = getattr(_generated_enums, "ModelIdsCompaction") +ModerationEntryType = getattr(_generated_enums, "ModerationEntryType") +ModerationInputType = getattr(_generated_enums, "ModerationInputType") +OpenApiAuthType = getattr(_generated_enums, "OpenApiAuthType") +OutputContentType = getattr(_generated_enums, "OutputContentType") +OutputItemType = getattr(_generated_enums, "OutputItemType") +OutputMessageContentType = getattr(_generated_enums, "OutputMessageContentType") +PageOrder = getattr(_generated_enums, "PageOrder") +PromptCacheRetentionEnum = getattr(_generated_enums, "PromptCacheRetentionEnum") +RankerVersionType = getattr(_generated_enums, "RankerVersionType") +RealtimeMcpErrorType = getattr(_generated_enums, "RealtimeMcpErrorType") +ReasoningEffort = getattr(_generated_enums, "ReasoningEffort") +ResponseErrorCode = getattr(_generated_enums, "ResponseErrorCode") +ResponseStreamEventType = getattr(_generated_enums, "ResponseStreamEventType") +SearchContentType = getattr(_generated_enums, "SearchContentType") +SearchContextSize = getattr(_generated_enums, "SearchContextSize") +ServiceTierEnum = getattr(_generated_enums, "ServiceTierEnum") +TextResponseFormatConfigurationType = getattr(_generated_enums, "TextResponseFormatConfigurationType") +ToolCallStatus = getattr(_generated_enums, "ToolCallStatus") +ToolChoiceOptions = getattr(_generated_enums, "ToolChoiceOptions") +ToolChoiceParamType = getattr(_generated_enums, "ToolChoiceParamType") +ToolSearchExecutionType = getattr(_generated_enums, "ToolSearchExecutionType") +ToolType = getattr(_generated_enums, "ToolType") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_unions.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_unions.py new file mode 100644 index 000000000000..d64fad734dab --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_unions.py @@ -0,0 +1,71 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING, Union + +if TYPE_CHECKING: + from . import types as _types +Filters = Union["_types.ComparisonFilter", "_types.CompoundFilter"] +ToolCallOutputContent = Union[dict[str, Any], str, list[Any]] +InputParam = Union[str, list["_types.Item"]] +ConversationParam = Union[str, "_types.ConversationParam_2"] +CreateResponseStreamingResponse = Union[ + "_types.ResponseAudioDeltaEvent", + "_types.ResponseAudioTranscriptDeltaEvent", + "_types.ResponseCodeInterpreterCallCodeDeltaEvent", + "_types.ResponseCodeInterpreterCallInProgressEvent", + "_types.ResponseCodeInterpreterCallInterpretingEvent", + "_types.ResponseContentPartAddedEvent", + "_types.ResponseCreatedEvent", + "_types.ResponseErrorEvent", + "_types.ResponseFileSearchCallInProgressEvent", + "_types.ResponseFileSearchCallSearchingEvent", + "_types.ResponseFunctionCallArgumentsDeltaEvent", + "_types.ResponseInProgressEvent", + "_types.ResponseFailedEvent", + "_types.ResponseIncompleteEvent", + "_types.ResponseOutputItemAddedEvent", + "_types.ResponseReasoningSummaryPartAddedEvent", + "_types.ResponseReasoningSummaryTextDeltaEvent", + "_types.ResponseReasoningTextDeltaEvent", + "_types.ResponseRefusalDeltaEvent", + "_types.ResponseTextDeltaEvent", + "_types.ResponseWebSearchCallInProgressEvent", + "_types.ResponseWebSearchCallSearchingEvent", + "_types.ResponseImageGenCallGeneratingEvent", + "_types.ResponseImageGenCallInProgressEvent", + "_types.ResponseImageGenCallPartialImageEvent", + "_types.ResponseMCPCallArgumentsDeltaEvent", + "_types.ResponseMCPCallFailedEvent", + "_types.ResponseMCPCallInProgressEvent", + "_types.ResponseMCPListToolsFailedEvent", + "_types.ResponseMCPListToolsInProgressEvent", + "_types.ResponseOutputTextAnnotationAddedEvent", + "_types.ResponseQueuedEvent", + "_types.ResponseCustomToolCallInputDeltaEvent", + "_types.ResponseAudioDoneEvent", + "_types.ResponseAudioTranscriptDoneEvent", + "_types.ResponseCodeInterpreterCallCodeDoneEvent", + "_types.ResponseCodeInterpreterCallCompletedEvent", + "_types.ResponseCompletedEvent", + "_types.ResponseContentPartDoneEvent", + "_types.ResponseFileSearchCallCompletedEvent", + "_types.ResponseFunctionCallArgumentsDoneEvent", + "_types.ResponseOutputItemDoneEvent", + "_types.ResponseReasoningSummaryPartDoneEvent", + "_types.ResponseReasoningSummaryTextDoneEvent", + "_types.ResponseReasoningTextDoneEvent", + "_types.ResponseRefusalDoneEvent", + "_types.ResponseTextDoneEvent", + "_types.ResponseWebSearchCallCompletedEvent", + "_types.ResponseImageGenCallCompletedEvent", + "_types.ResponseMCPCallArgumentsDoneEvent", + "_types.ResponseMCPCallCompletedEvent", + "_types.ResponseMCPListToolsCompletedEvent", + "_types.ResponseCustomToolCallInputDoneEvent", +] diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_validators.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_validators.py index 6a4861b0714e..699f9b3fbdee 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_validators.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/_validators.py @@ -10,13 +10,25 @@ from __future__ import annotations -from typing import Any +from typing import Any, get_args + +try: + from . import types as _response_types +except Exception: + _response_types = None try: from . import _enums as _generated_enums except Exception: _generated_enums = None +_LITERAL_ENUM_ALIASES = { + 'ServiceTier': 'ServiceTierEnum', +} +_LITERAL_ENUM_VALUES = { + 'Verbosity': ('low', 'medium', 'high'), +} + def _append_error(errors: list[dict[str, str]], path: str, message: str) -> None: errors.append({'path': path, 'message': message}) @@ -56,6 +68,14 @@ def _append_type_mismatch(errors: list[dict[str, str]], path: str, expected: str _append_error(errors, path, f"Expected {expected}, got {_type_label(value)}") def _enum_values(enum_name: str) -> tuple[tuple[str, ...] | None, str | None]: + if enum_name in _LITERAL_ENUM_VALUES: + return _LITERAL_ENUM_VALUES[enum_name], None + if _response_types is not None: + alias_name = _LITERAL_ENUM_ALIASES.get(enum_name, enum_name) + literal_alias = getattr(_response_types, alias_name, None) + literal_values = get_args(literal_alias) + if literal_values: + return tuple(str(value) for value in literal_values), None if _generated_enums is None: return None, f'enum type _enums.{enum_name} is unavailable' enum_cls = getattr(_generated_enums, enum_name, None) @@ -96,6 +116,8 @@ def _validate_CreateResponse(value: Any, path: str, errors: list[dict[str, str]] _validate_CreateResponse_metadata(value['metadata'], f"{path}.metadata", errors) if 'model' in value: _validate_CreateResponse_model(value['model'], f"{path}.model", errors) + if 'moderation' in value: + _validate_CreateResponse_moderation(value['moderation'], f"{path}.moderation", errors) if 'parallel_tool_calls' in value: _validate_CreateResponse_parallel_tool_calls(value['parallel_tool_calls'], f"{path}.parallel_tool_calls", errors) if 'previous_response_id' in value: @@ -206,6 +228,13 @@ def _validate_CreateResponse_model(value: Any, path: str, errors: list[dict[str, _append_type_mismatch(errors, path, 'string', value) return +def _validate_CreateResponse_moderation(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if value is None: + return + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + def _validate_CreateResponse_parallel_tool_calls(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return @@ -224,7 +253,7 @@ def _validate_CreateResponse_prompt_cache_key(value: Any, path: str, errors: lis def _validate_CreateResponse_prompt_cache_retention(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return - _allowed_values = ('in-memory', '24h') + _allowed_values = ('in_memory', '24h') if value not in _allowed_values: _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") if not _is_type(value, 'string'): @@ -398,6 +427,10 @@ def _validate_OpenAI_ToolChoiceParam(value: Any, path: str, errors: list[dict[st _validate_OpenAI_SpecificApplyPatchParam(value, path, errors) if _disc_value == 'code_interpreter': _validate_OpenAI_ToolChoiceCodeInterpreter(value, path, errors) + if _disc_value == 'computer': + _validate_OpenAI_ToolChoiceComputer(value, path, errors) + if _disc_value == 'computer_use': + _validate_OpenAI_ToolChoiceComputerUse(value, path, errors) if _disc_value == 'computer_use_preview': _validate_OpenAI_ToolChoiceComputerUsePreview(value, path, errors) if _disc_value == 'custom': @@ -519,6 +552,24 @@ def _validate_OpenAI_ToolChoiceCodeInterpreter(value: Any, path: str, errors: li if 'type' in value: _validate_OpenAI_ToolChoiceCodeInterpreter_type(value['type'], f"{path}.type", errors) +def _validate_OpenAI_ToolChoiceComputer(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'type' in value: + _validate_OpenAI_ToolChoiceComputer_type(value['type'], f"{path}.type", errors) + +def _validate_OpenAI_ToolChoiceComputerUse(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'type' in value: + _validate_OpenAI_ToolChoiceComputerUse_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_ToolChoiceComputerUsePreview(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -727,6 +778,22 @@ def _validate_OpenAI_ToolChoiceCodeInterpreter_type(value: Any, path: str, error _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ToolChoiceComputer_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('computer',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_ToolChoiceComputerUse_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('computer_use',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ToolChoiceComputerUsePreview_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('computer_use_preview',) if value not in _allowed_values: @@ -844,6 +911,8 @@ def _validate_OpenAI_Tool(value: Any, path: str, errors: list[dict[str, str]]) - _validate_CaptureStructuredOutputsTool(value, path, errors) if _disc_value == 'code_interpreter': _validate_OpenAI_CodeInterpreterTool(value, path, errors) + if _disc_value == 'computer': + _validate_OpenAI_ComputerTool(value, path, errors) if _disc_value == 'computer_use_preview': _validate_OpenAI_ComputerUsePreviewTool(value, path, errors) if _disc_value == 'custom': @@ -864,12 +933,16 @@ def _validate_OpenAI_Tool(value: Any, path: str, errors: list[dict[str, str]]) - _validate_MemorySearchTool(value, path, errors) if _disc_value == 'memory_search_preview': _validate_MemorySearchPreviewTool(value, path, errors) + if _disc_value == 'namespace': + _validate_OpenAI_NamespaceToolParam(value, path, errors) if _disc_value == 'openapi': _validate_OpenApiTool(value, path, errors) if _disc_value == 'sharepoint_grounding_preview': _validate_SharepointPreviewTool(value, path, errors) if _disc_value == 'shell': _validate_OpenAI_FunctionShellToolParam(value, path, errors) + if _disc_value == 'tool_search': + _validate_OpenAI_ToolSearchToolParam(value, path, errors) if _disc_value == 'web_search': _validate_OpenAI_WebSearchTool(value, path, errors) if _disc_value == 'web_search_preview': @@ -889,6 +962,8 @@ def _validate_OpenAI_Item(value: Any, path: str, errors: list[dict[str, str]]) - if not isinstance(_disc_value, str): _append_error(errors, f"{path}.type", "Required discriminator 'type' is missing or invalid") return + if _disc_value == 'additional_tools': + _validate_OpenAI_AdditionalToolsItemParam(value, path, errors) if _disc_value == 'apply_patch_call': _validate_OpenAI_ApplyPatchToolCallItemParam(value, path, errors) if _disc_value == 'apply_patch_call_output': @@ -939,6 +1014,10 @@ def _validate_OpenAI_Item(value: Any, path: str, errors: list[dict[str, str]]) - _validate_OpenAI_FunctionShellCallItemParam(value, path, errors) if _disc_value == 'shell_call_output': _validate_OpenAI_FunctionShellCallOutputItemParam(value, path, errors) + if _disc_value == 'tool_search_call': + _validate_OpenAI_ToolSearchCallItemParam(value, path, errors) + if _disc_value == 'tool_search_output': + _validate_OpenAI_ToolSearchOutputItemParam(value, path, errors) if _disc_value == 'web_search_call': _validate_OpenAI_ItemWebSearchToolCall(value, path, errors) @@ -1145,6 +1224,15 @@ def _validate_OpenAI_CodeInterpreterTool(value: Any, path: str, errors: list[dic if 'type' in value: _validate_OpenAI_CodeInterpreterTool_type(value['type'], f"{path}.type", errors) +def _validate_OpenAI_ComputerTool(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'type' in value: + _validate_OpenAI_ComputerTool_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_ComputerUsePreviewTool(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -1174,6 +1262,8 @@ def _validate_OpenAI_CustomToolParam(value: Any, path: str, errors: list[dict[st _append_error(errors, f"{path}.type", "Required property 'type' is missing") if 'name' not in value: _append_error(errors, f"{path}.name", "Required property 'name' is missing") + if 'defer_loading' in value: + _validate_OpenAI_CustomToolParam_defer_loading(value['defer_loading'], f"{path}.defer_loading", errors) if 'description' in value: _validate_OpenAI_CustomToolParam_description(value['description'], f"{path}.description", errors) if 'format' in value: @@ -1231,6 +1321,8 @@ def _validate_OpenAI_FunctionTool(value: Any, path: str, errors: list[dict[str, _append_error(errors, f"{path}.type", "Required property 'type' is missing") if 'name' not in value: _append_error(errors, f"{path}.name", "Required property 'name' is missing") + if 'defer_loading' in value: + _validate_OpenAI_FunctionTool_defer_loading(value['defer_loading'], f"{path}.defer_loading", errors) if 'description' in value: _validate_CreateResponse_instructions(value['description'], f"{path}.description", errors) if 'name' in value: @@ -1304,6 +1396,8 @@ def _validate_OpenAI_MCPTool(value: Any, path: str, errors: list[dict[str, str]] _validate_OpenAI_MCPTool_authorization(value['authorization'], f"{path}.authorization", errors) if 'connector_id' in value: _validate_OpenAI_MCPTool_connector_id(value['connector_id'], f"{path}.connector_id", errors) + if 'defer_loading' in value: + _validate_OpenAI_MCPTool_defer_loading(value['defer_loading'], f"{path}.defer_loading", errors) if 'headers' in value: _validate_OpenAI_MCPTool_headers(value['headers'], f"{path}.headers", errors) if 'project_connection_id' in value: @@ -1316,6 +1410,8 @@ def _validate_OpenAI_MCPTool(value: Any, path: str, errors: list[dict[str, str]] _validate_OpenAI_MCPTool_server_label(value['server_label'], f"{path}.server_label", errors) if 'server_url' in value: _validate_OpenAI_MCPTool_server_url(value['server_url'], f"{path}.server_url", errors) + if 'tunnel_id' in value: + _validate_OpenAI_MCPTool_tunnel_id(value['tunnel_id'], f"{path}.tunnel_id", errors) if 'type' in value: _validate_OpenAI_MCPTool_type(value['type'], f"{path}.type", errors) @@ -1369,6 +1465,27 @@ def _validate_MemorySearchPreviewTool(value: Any, path: str, errors: list[dict[s if 'update_delay' in value: _validate_MemorySearchTool_update_delay(value['update_delay'], f"{path}.update_delay", errors) +def _validate_OpenAI_NamespaceToolParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'name' not in value: + _append_error(errors, f"{path}.name", "Required property 'name' is missing") + if 'description' not in value: + _append_error(errors, f"{path}.description", "Required property 'description' is missing") + if 'tools' not in value: + _append_error(errors, f"{path}.tools", "Required property 'tools' is missing") + if 'description' in value: + _validate_OpenAI_NamespaceToolParam_description(value['description'], f"{path}.description", errors) + if 'name' in value: + _validate_OpenAI_NamespaceToolParam_name(value['name'], f"{path}.name", errors) + if 'tools' in value: + _validate_OpenAI_NamespaceToolParam_tools(value['tools'], f"{path}.tools", errors) + if 'type' in value: + _validate_OpenAI_NamespaceToolParam_type(value['type'], f"{path}.type", errors) + def _validate_OpenApiTool(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -1414,6 +1531,21 @@ def _validate_OpenAI_FunctionShellToolParam(value: Any, path: str, errors: list[ if 'type' in value: _validate_OpenAI_FunctionShellToolParam_type(value['type'], f"{path}.type", errors) +def _validate_OpenAI_ToolSearchToolParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'description' in value: + _validate_CreateResponse_instructions(value['description'], f"{path}.description", errors) + if 'execution' in value: + _validate_OpenAI_ToolSearchToolParam_execution(value['execution'], f"{path}.execution", errors) + if 'parameters' in value: + _validate_OpenAI_ToolSearchToolParam_parameters(value['parameters'], f"{path}.parameters", errors) + if 'type' in value: + _validate_OpenAI_ToolSearchToolParam_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_WebSearchTool(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -1441,6 +1573,8 @@ def _validate_OpenAI_WebSearchPreviewTool(value: Any, path: str, errors: list[di return if 'type' not in value: _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'search_content_types' in value: + _validate_OpenAI_WebSearchPreviewTool_search_content_types(value['search_content_types'], f"{path}.search_content_types", errors) if 'search_context_size' in value: _validate_OpenAI_WebSearchPreviewTool_search_context_size(value['search_context_size'], f"{path}.search_context_size", errors) if 'type' in value: @@ -1464,6 +1598,25 @@ def _validate_WorkIQPreviewTool(value: Any, path: str, errors: list[dict[str, st def _validate_OpenAI_Item_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_ItemType(value, path, errors) +def _validate_OpenAI_AdditionalToolsItemParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'role' not in value: + _append_error(errors, f"{path}.role", "Required property 'role' is missing") + if 'tools' not in value: + _append_error(errors, f"{path}.tools", "Required property 'tools' is missing") + if 'id' in value: + _validate_CreateResponse_instructions(value['id'], f"{path}.id", errors) + if 'role' in value: + _validate_OpenAI_AdditionalToolsItemParam_role(value['role'], f"{path}.role", errors) + if 'tools' in value: + _validate_OpenAI_AdditionalToolsItemParam_tools(value['tools'], f"{path}.tools", errors) + if 'type' in value: + _validate_OpenAI_AdditionalToolsItemParam_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_ApplyPatchToolCallItemParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -1562,14 +1715,14 @@ def _validate_OpenAI_ItemComputerToolCall(value: Any, path: str, errors: list[di _append_error(errors, f"{path}.id", "Required property 'id' is missing") if 'call_id' not in value: _append_error(errors, f"{path}.call_id", "Required property 'call_id' is missing") - if 'action' not in value: - _append_error(errors, f"{path}.action", "Required property 'action' is missing") if 'pending_safety_checks' not in value: _append_error(errors, f"{path}.pending_safety_checks", "Required property 'pending_safety_checks' is missing") if 'status' not in value: _append_error(errors, f"{path}.status", "Required property 'status' is missing") if 'action' in value: _validate_OpenAI_ItemComputerToolCall_action(value['action'], f"{path}.action", errors) + if 'actions' in value: + _validate_OpenAI_ItemComputerToolCall_actions(value['actions'], f"{path}.actions", errors) if 'call_id' in value: _validate_OpenAI_ItemComputerToolCall_call_id(value['call_id'], f"{path}.call_id", errors) if 'id' in value: @@ -1624,6 +1777,8 @@ def _validate_OpenAI_ItemCustomToolCall(value: Any, path: str, errors: list[dict _validate_OpenAI_ItemCustomToolCall_input(value['input'], f"{path}.input", errors) if 'name' in value: _validate_OpenAI_ItemCustomToolCall_name(value['name'], f"{path}.name", errors) + if 'namespace' in value: + _validate_OpenAI_ItemCustomToolCall_namespace(value['namespace'], f"{path}.namespace", errors) if 'type' in value: _validate_OpenAI_ItemCustomToolCall_type(value['type'], f"{path}.type", errors) @@ -1689,6 +1844,8 @@ def _validate_OpenAI_ItemFunctionToolCall(value: Any, path: str, errors: list[di _validate_OpenAI_ItemFunctionToolCall_id(value['id'], f"{path}.id", errors) if 'name' in value: _validate_OpenAI_ItemFunctionToolCall_name(value['name'], f"{path}.name", errors) + if 'namespace' in value: + _validate_OpenAI_ItemFunctionToolCall_namespace(value['namespace'], f"{path}.namespace", errors) if 'status' in value: _validate_OpenAI_ItemComputerToolCall_status(value['status'], f"{path}.status", errors) if 'type' in value: @@ -1885,7 +2042,7 @@ def _validate_OpenAI_ItemMcpListTools(value: Any, path: str, errors: list[dict[s if 'tools' not in value: _append_error(errors, f"{path}.tools", "Required property 'tools' is missing") if 'error' in value: - _validate_CreateResponse_instructions(value['error'], f"{path}.error", errors) + _validate_OpenAI_ItemMcpListTools_error(value['error'], f"{path}.error", errors) if 'id' in value: _validate_OpenAI_ItemMcpListTools_id(value['id'], f"{path}.id", errors) if 'server_label' in value: @@ -1916,6 +2073,8 @@ def _validate_OpenAI_ItemMessage(value: Any, path: str, errors: list[dict[str, s _append_error(errors, f"{path}.content", "Required property 'content' is missing") if 'content' in value: _validate_OpenAI_ItemMessage_content(value['content'], f"{path}.content", errors) + if 'phase' in value: + _validate_OpenAI_ItemMessage_phase(value['phase'], f"{path}.phase", errors) if 'role' in value: _validate_OpenAI_ItemMessage_role(value['role'], f"{path}.role", errors) if 'type' in value: @@ -1939,6 +2098,8 @@ def _validate_OpenAI_ItemOutputMessage(value: Any, path: str, errors: list[dict[ _validate_OpenAI_ItemOutputMessage_content(value['content'], f"{path}.content", errors) if 'id' in value: _validate_OpenAI_ItemOutputMessage_id(value['id'], f"{path}.id", errors) + if 'phase' in value: + _validate_OpenAI_ItemMessage_phase(value['phase'], f"{path}.phase", errors) if 'role' in value: _validate_OpenAI_ItemOutputMessage_role(value['role'], f"{path}.role", errors) if 'status' in value: @@ -2015,6 +2176,48 @@ def _validate_OpenAI_FunctionShellCallOutputItemParam(value: Any, path: str, err if 'type' in value: _validate_OpenAI_FunctionShellCallOutputItemParam_type(value['type'], f"{path}.type", errors) +def _validate_OpenAI_ToolSearchCallItemParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'arguments' not in value: + _append_error(errors, f"{path}.arguments", "Required property 'arguments' is missing") + if 'arguments' in value: + _validate_OpenAI_ToolSearchCallItemParam_arguments(value['arguments'], f"{path}.arguments", errors) + if 'call_id' in value: + _validate_CreateResponse_instructions(value['call_id'], f"{path}.call_id", errors) + if 'execution' in value: + _validate_OpenAI_ToolSearchCallItemParam_execution(value['execution'], f"{path}.execution", errors) + if 'id' in value: + _validate_CreateResponse_instructions(value['id'], f"{path}.id", errors) + if 'status' in value: + _validate_OpenAI_ComputerCallOutputItemParam_status(value['status'], f"{path}.status", errors) + if 'type' in value: + _validate_OpenAI_ToolSearchCallItemParam_type(value['type'], f"{path}.type", errors) + +def _validate_OpenAI_ToolSearchOutputItemParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'tools' not in value: + _append_error(errors, f"{path}.tools", "Required property 'tools' is missing") + if 'call_id' in value: + _validate_CreateResponse_instructions(value['call_id'], f"{path}.call_id", errors) + if 'execution' in value: + _validate_OpenAI_ToolSearchCallItemParam_execution(value['execution'], f"{path}.execution", errors) + if 'id' in value: + _validate_CreateResponse_instructions(value['id'], f"{path}.id", errors) + if 'status' in value: + _validate_OpenAI_ComputerCallOutputItemParam_status(value['status'], f"{path}.status", errors) + if 'tools' in value: + _validate_OpenAI_ToolSearchOutputItemParam_tools(value['tools'], f"{path}.tools", errors) + if 'type' in value: + _validate_OpenAI_ToolSearchOutputItemParam_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_ItemWebSearchToolCall(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -2236,6 +2439,14 @@ def _validate_OpenAI_CodeInterpreterTool_type(value: Any, path: str, errors: lis _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ComputerTool_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('computer',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ComputerUsePreviewTool_display_height(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'integer'): _append_type_mismatch(errors, path, 'integer', value) @@ -2257,6 +2468,11 @@ def _validate_OpenAI_ComputerUsePreviewTool_type(value: Any, path: str, errors: _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_CustomToolParam_defer_loading(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'boolean'): + _append_type_mismatch(errors, path, 'boolean', value) + return + def _validate_OpenAI_CustomToolParam_description(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) @@ -2316,6 +2532,11 @@ def _validate_OpenAI_FileSearchTool_vector_store_ids(value: Any, path: str, erro for _idx, _item in enumerate(value): _validate_OpenAI_InputParam_string(_item, f"{path}[{_idx}]", errors) +def _validate_OpenAI_FunctionTool_defer_loading(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'boolean'): + _append_type_mismatch(errors, path, 'boolean', value) + return + def _validate_OpenAI_FunctionTool_parameters(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return @@ -2403,11 +2624,19 @@ def _validate_OpenAI_ImageGenTool_quality(value: Any, path: str, errors: list[di return def _validate_OpenAI_ImageGenTool_size(value: Any, path: str, errors: list[dict[str, str]]) -> None: - _allowed_values = ('1024x1024', '1024x1536', '1536x1024', 'auto') - if value not in _allowed_values: - _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") - if not _is_type(value, 'string'): - _append_type_mismatch(errors, path, 'string', value) + _matched_union = False + if not _matched_union and _is_type(value, 'string'): + _branch_errors_0: list[dict[str, str]] = [] + _validate_OpenAI_InputParam_string(value, path, _branch_errors_0) + if not _branch_errors_0: + _matched_union = True + if not _matched_union and _is_type(value, 'string'): + _branch_errors_1: list[dict[str, str]] = [] + _validate_OpenAI_ImageGenTool_size_2(value, path, _branch_errors_1) + if not _branch_errors_1: + _matched_union = True + if not _matched_union: + _append_error(errors, path, f"Expected ImageGenTool_size to be a string value, got {_type_label(value)}") return def _validate_OpenAI_ImageGenTool_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: @@ -2455,6 +2684,11 @@ def _validate_OpenAI_MCPTool_connector_id(value: Any, path: str, errors: list[di _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_MCPTool_defer_loading(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'boolean'): + _append_type_mismatch(errors, path, 'boolean', value) + return + def _validate_OpenAI_MCPTool_headers(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return @@ -2501,6 +2735,11 @@ def _validate_OpenAI_MCPTool_server_url(value: Any, path: str, errors: list[dict _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_MCPTool_tunnel_id(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_MCPTool_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('mcp',) if value not in _allowed_values: @@ -2543,6 +2782,31 @@ def _validate_MemorySearchPreviewTool_type(value: Any, path: str, errors: list[d _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_NamespaceToolParam_description(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_NamespaceToolParam_name(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_NamespaceToolParam_tools(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'array'): + _append_type_mismatch(errors, path, 'array', value) + return + for _idx, _item in enumerate(value): + _validate_OpenAI_NamespaceToolParam_tools_item(_item, f"{path}[{_idx}]", errors) + +def _validate_OpenAI_NamespaceToolParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('namespace',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenApiTool_openapi(value: Any, path: str, errors: list[dict[str, str]]) -> None: return @@ -2580,6 +2844,24 @@ def _validate_OpenAI_FunctionShellToolParam_type(value: Any, path: str, errors: _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ToolSearchToolParam_execution(value: Any, path: str, errors: list[dict[str, str]]) -> None: + return + +def _validate_OpenAI_ToolSearchToolParam_parameters(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if value is None: + return + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + +def _validate_OpenAI_ToolSearchToolParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('tool_search',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_WebSearchTool_custom_search_configuration(value: Any, path: str, errors: list[dict[str, str]]) -> None: return @@ -2613,6 +2895,13 @@ def _validate_OpenAI_WebSearchTool_user_location(value: Any, path: str, errors: _append_type_mismatch(errors, path, 'object', value) return +def _validate_OpenAI_WebSearchPreviewTool_search_content_types(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'array'): + _append_type_mismatch(errors, path, 'array', value) + return + for _idx, _item in enumerate(value): + _validate_OpenAI_WebSearchPreviewTool_search_content_types_item(_item, f"{path}[{_idx}]", errors) + def _validate_OpenAI_WebSearchPreviewTool_search_context_size(value: Any, path: str, errors: list[dict[str, str]]) -> None: return @@ -2658,6 +2947,29 @@ def _validate_OpenAI_ItemType(value: Any, path: str, errors: list[dict[str, str] _append_error(errors, path, f"Expected ItemType to be a string value, got {_type_label(value)}") return +def _validate_OpenAI_AdditionalToolsItemParam_role(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('developer',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_AdditionalToolsItemParam_tools(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'array'): + _append_type_mismatch(errors, path, 'array', value) + return + for _idx, _item in enumerate(value): + _validate_OpenAI_ToolsArray_item(_item, f"{path}[{_idx}]", errors) + +def _validate_OpenAI_AdditionalToolsItemParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('additional_tools',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ApplyPatchToolCallItemParam_call_id(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) @@ -2739,6 +3051,9 @@ def _validate_OpenAI_CompactionSummaryItemParam_type(value: Any, path: str, erro def _validate_OpenAI_ItemComputerToolCall_action(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_ComputerAction(value, path, errors) +def _validate_OpenAI_ItemComputerToolCall_actions(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _validate_OpenAI_ComputerActionList(value, path, errors) + def _validate_OpenAI_ItemComputerToolCall_call_id(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) @@ -2821,6 +3136,11 @@ def _validate_OpenAI_ItemCustomToolCall_name(value: Any, path: str, errors: list _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ItemCustomToolCall_namespace(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ItemCustomToolCall_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('custom_tool_call',) if value not in _allowed_values: @@ -2911,6 +3231,8 @@ def _validate_OpenAI_ItemFunctionToolCall_call_id(value: Any, path: str, errors: return def _validate_OpenAI_ItemFunctionToolCall_id(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if value is None: + return if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) return @@ -2920,6 +3242,11 @@ def _validate_OpenAI_ItemFunctionToolCall_name(value: Any, path: str, errors: li _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ItemFunctionToolCall_namespace(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ItemFunctionToolCall_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('function_call',) if value not in _allowed_values: @@ -3120,6 +3447,9 @@ def _validate_OpenAI_ItemMcpToolCall_type(value: Any, path: str, errors: list[di _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ItemMcpListTools_error(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _validate_OpenAI_RealtimeMCPError(value, path, errors) + def _validate_OpenAI_ItemMcpListTools_id(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) @@ -3178,6 +3508,10 @@ def _validate_OpenAI_ItemMessage_content(value: Any, path: str, errors: list[dic _append_error(errors, path, f"Expected one of: string, array; got {_type_label(value)}") return +def _validate_OpenAI_ItemMessage_phase(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if value is None: + return + def _validate_OpenAI_ItemMessage_role(value: Any, path: str, errors: list[dict[str, str]]) -> None: return @@ -3296,6 +3630,35 @@ def _validate_OpenAI_FunctionShellCallOutputItemParam_type(value: Any, path: str _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ToolSearchCallItemParam_arguments(value: Any, path: str, errors: list[dict[str, str]]) -> None: + return + +def _validate_OpenAI_ToolSearchCallItemParam_execution(value: Any, path: str, errors: list[dict[str, str]]) -> None: + return + +def _validate_OpenAI_ToolSearchCallItemParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('tool_search_call',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_ToolSearchOutputItemParam_tools(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'array'): + _append_type_mismatch(errors, path, 'array', value) + return + for _idx, _item in enumerate(value): + _validate_OpenAI_ToolsArray_item(_item, f"{path}[{_idx}]", errors) + +def _validate_OpenAI_ToolSearchOutputItemParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('tool_search_output',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ItemWebSearchToolCall_action(value: Any, path: str, errors: list[dict[str, str]]) -> None: _matched_union = False if not _matched_union and _is_type(value, 'object'): @@ -3323,7 +3686,7 @@ def _validate_OpenAI_ItemWebSearchToolCall_id(value: Any, path: str, errors: lis return def _validate_OpenAI_ItemWebSearchToolCall_status(value: Any, path: str, errors: list[dict[str, str]]) -> None: - _allowed_values = ('in_progress', 'searching', 'completed', 'failed') + _allowed_values = ('in_progress', 'searching', 'completed', 'failed', 'incomplete') if value not in _allowed_values: _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") if not _is_type(value, 'string'): @@ -3395,6 +3758,14 @@ def _validate_OpenAI_ImageGenTool_model_2(value: Any, path: str, errors: list[di _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_ImageGenTool_size_2(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('1024x1024', '1024x1536', '1536x1024', 'auto') + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_MCPTool_allowed_tools_array(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return @@ -3428,6 +3799,25 @@ def _validate_OpenAI_MCPTool_require_approval_2(value: Any, path: str, errors: l _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_NamespaceToolParam_tools_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _matched_union = False + if not _matched_union and _is_type(value, 'object'): + _branch_errors_0: list[dict[str, str]] = [] + _validate_OpenAI_FunctionToolParam(value, path, _branch_errors_0) + if not _branch_errors_0: + _matched_union = True + if not _matched_union and _is_type(value, 'object'): + _branch_errors_1: list[dict[str, str]] = [] + _validate_OpenAI_CustomToolParam(value, path, _branch_errors_1) + if not _branch_errors_1: + _matched_union = True + if not _matched_union: + _append_error(errors, path, f"Expected one of: OpenAI.FunctionToolParam, OpenAI.CustomToolParam; got {_type_label(value)}") + return + +def _validate_OpenAI_WebSearchPreviewTool_search_content_types_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _validate_OpenAI_SearchContentType(value, path, errors) + def _validate_OpenAI_ItemType_2(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values, _enum_error = _enum_values('ItemType') if _enum_error is not None: @@ -3488,6 +3878,13 @@ def _validate_OpenAI_ComputerAction(value: Any, path: str, errors: list[dict[str if _disc_value == 'wait': _validate_OpenAI_WaitParam(value, path, errors) +def _validate_OpenAI_ComputerActionList(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'array'): + _append_type_mismatch(errors, path, 'array', value) + return + for _idx, _item in enumerate(value): + _validate_OpenAI_ItemComputerToolCall_action(_item, f"{path}[{_idx}]", errors) + def _validate_OpenAI_ItemComputerToolCall_pending_safety_checks_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_ComputerCallSafetyCheckParam(value, path, errors) @@ -3544,6 +3941,25 @@ def _validate_OpenAI_LocalShellExecAction(value: Any, path: str, errors: list[di if 'working_directory' in value: _validate_CreateResponse_instructions(value['working_directory'], f"{path}.working_directory", errors) +def _validate_OpenAI_RealtimeMCPError(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'type' in value: + _validate_OpenAI_RealtimeMCPError_type(value['type'], f"{path}.type", errors) + _disc_value = value.get('type') + if not isinstance(_disc_value, str): + _append_error(errors, f"{path}.type", "Required discriminator 'type' is missing or invalid") + return + if _disc_value == 'http_error': + _validate_OpenAI_RealtimeMCPHTTPError(value, path, errors) + if _disc_value == 'protocol_error': + _validate_OpenAI_RealtimeMCPProtocolError(value, path, errors) + if _disc_value == 'tool_execution_error': + _validate_OpenAI_RealtimeMCPToolExecutionError(value, path, errors) + def _validate_OpenAI_ItemMcpListTools_tools_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_MCPListToolsTool(value, path, errors) @@ -3575,8 +3991,6 @@ def _validate_OpenAI_WebSearchActionSearch(value: Any, path: str, errors: list[d return if 'type' not in value: _append_error(errors, f"{path}.type", "Required property 'type' is missing") - if 'query' not in value: - _append_error(errors, f"{path}.query", "Required property 'query' is missing") if 'queries' in value: _validate_OpenAI_WebSearchActionSearch_queries(value['queries'], f"{path}.queries", errors) if 'query' in value: @@ -3636,6 +4050,40 @@ def _validate_OpenAI_AutoCodeInterpreterToolParam_type(value: Any, path: str, er _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_FunctionToolParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'name' not in value: + _append_error(errors, f"{path}.name", "Required property 'name' is missing") + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'defer_loading' in value: + _validate_OpenAI_FunctionToolParam_defer_loading(value['defer_loading'], f"{path}.defer_loading", errors) + if 'description' in value: + _validate_CreateResponse_instructions(value['description'], f"{path}.description", errors) + if 'name' in value: + _validate_OpenAI_FunctionToolParam_name(value['name'], f"{path}.name", errors) + if 'parameters' in value: + _validate_OpenAI_ToolSearchToolParam_parameters(value['parameters'], f"{path}.parameters", errors) + if 'strict' in value: + _validate_CreateResponse_background(value['strict'], f"{path}.strict", errors) + if 'type' in value: + _validate_OpenAI_FunctionToolParam_type(value['type'], f"{path}.type", errors) + +def _validate_OpenAI_SearchContentType(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values, _enum_error = _enum_values('SearchContentType') + if _enum_error is not None: + _append_error(errors, path, _enum_error) + return + if _allowed_values is None: + return + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_CodeInterpreterOutputLogs(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -3679,6 +4127,8 @@ def _validate_OpenAI_ClickParam(value: Any, path: str, errors: list[dict[str, st _append_error(errors, f"{path}.y", "Required property 'y' is missing") if 'button' in value: _validate_OpenAI_ClickParam_button(value['button'], f"{path}.button", errors) + if 'keys' in value: + _validate_OpenAI_MCPTool_allowed_tools_array(value['keys'], f"{path}.keys", errors) if 'type' in value: _validate_OpenAI_ClickParam_type(value['type'], f"{path}.type", errors) if 'x' in value: @@ -3696,6 +4146,10 @@ def _validate_OpenAI_DoubleClickAction(value: Any, path: str, errors: list[dict[ _append_error(errors, f"{path}.x", "Required property 'x' is missing") if 'y' not in value: _append_error(errors, f"{path}.y", "Required property 'y' is missing") + if 'keys' not in value: + _append_error(errors, f"{path}.keys", "Required property 'keys' is missing") + if 'keys' in value: + _validate_OpenAI_MCPTool_allowed_tools_array(value['keys'], f"{path}.keys", errors) if 'type' in value: _validate_OpenAI_DoubleClickAction_type(value['type'], f"{path}.type", errors) if 'x' in value: @@ -3711,6 +4165,8 @@ def _validate_OpenAI_DragParam(value: Any, path: str, errors: list[dict[str, str _append_error(errors, f"{path}.type", "Required property 'type' is missing") if 'path' not in value: _append_error(errors, f"{path}.path", "Required property 'path' is missing") + if 'keys' in value: + _validate_OpenAI_MCPTool_allowed_tools_array(value['keys'], f"{path}.keys", errors) if 'path' in value: _validate_OpenAI_DragParam_path(value['path'], f"{path}.path", errors) if 'type' in value: @@ -3739,6 +4195,8 @@ def _validate_OpenAI_MoveParam(value: Any, path: str, errors: list[dict[str, str _append_error(errors, f"{path}.x", "Required property 'x' is missing") if 'y' not in value: _append_error(errors, f"{path}.y", "Required property 'y' is missing") + if 'keys' in value: + _validate_OpenAI_MCPTool_allowed_tools_array(value['keys'], f"{path}.keys", errors) if 'type' in value: _validate_OpenAI_MoveParam_type(value['type'], f"{path}.type", errors) if 'x' in value: @@ -3769,6 +4227,8 @@ def _validate_OpenAI_ScrollParam(value: Any, path: str, errors: list[dict[str, s _append_error(errors, f"{path}.scroll_x", "Required property 'scroll_x' is missing") if 'scroll_y' not in value: _append_error(errors, f"{path}.scroll_y", "Required property 'scroll_y' is missing") + if 'keys' in value: + _validate_OpenAI_MCPTool_allowed_tools_array(value['keys'], f"{path}.keys", errors) if 'scroll_x' in value: _validate_OpenAI_ScrollParam_scroll_x(value['scroll_x'], f"{path}.scroll_x", errors) if 'scroll_y' in value: @@ -3895,6 +4355,56 @@ def _validate_OpenAI_LocalShellExecAction_type(value: Any, path: str, errors: li _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_RealtimeMCPError_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _validate_OpenAI_RealtimeMcpErrorType(value, path, errors) + +def _validate_OpenAI_RealtimeMCPHTTPError(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'code' not in value: + _append_error(errors, f"{path}.code", "Required property 'code' is missing") + if 'message' not in value: + _append_error(errors, f"{path}.message", "Required property 'message' is missing") + if 'code' in value: + _validate_OpenAI_RealtimeMCPHTTPError_code(value['code'], f"{path}.code", errors) + if 'message' in value: + _validate_OpenAI_InputParam_string(value['message'], f"{path}.message", errors) + if 'type' in value: + _validate_OpenAI_RealtimeMCPHTTPError_type(value['type'], f"{path}.type", errors) + +def _validate_OpenAI_RealtimeMCPProtocolError(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'code' not in value: + _append_error(errors, f"{path}.code", "Required property 'code' is missing") + if 'message' not in value: + _append_error(errors, f"{path}.message", "Required property 'message' is missing") + if 'code' in value: + _validate_OpenAI_RealtimeMCPHTTPError_code(value['code'], f"{path}.code", errors) + if 'message' in value: + _validate_OpenAI_InputParam_string(value['message'], f"{path}.message", errors) + if 'type' in value: + _validate_OpenAI_RealtimeMCPProtocolError_type(value['type'], f"{path}.type", errors) + +def _validate_OpenAI_RealtimeMCPToolExecutionError(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'object'): + _append_type_mismatch(errors, path, 'object', value) + return + if 'type' not in value: + _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'message' not in value: + _append_error(errors, f"{path}.message", "Required property 'message' is missing") + if 'message' in value: + _validate_OpenAI_InputParam_string(value['message'], f"{path}.message", errors) + if 'type' in value: + _validate_OpenAI_RealtimeMCPToolExecutionError_type(value['type'], f"{path}.type", errors) + def _validate_OpenAI_MCPListToolsTool(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'object'): _append_type_mismatch(errors, path, 'object', value) @@ -4061,6 +4571,24 @@ def _validate_OpenAI_ContainerNetworkPolicyParam(value: Any, path: str, errors: if _disc_value == 'disabled': _validate_OpenAI_ContainerNetworkPolicyDisabledParam(value, path, errors) +def _validate_OpenAI_FunctionToolParam_defer_loading(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'boolean'): + _append_type_mismatch(errors, path, 'boolean', value) + return + +def _validate_OpenAI_FunctionToolParam_name(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_FunctionToolParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('function',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_CodeInterpreterOutputLogs_logs(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'string'): _append_type_mismatch(errors, path, 'string', value) @@ -4317,6 +4845,8 @@ def _validate_OpenAI_InputFileContentParam(value: Any, path: str, errors: list[d return if 'type' not in value: _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'detail' in value: + _validate_OpenAI_InputFileContentParam_detail(value['detail'], f"{path}.detail", errors) if 'file_data' in value: _validate_CreateResponse_instructions(value['file_data'], f"{path}.file_data", errors) if 'file_id' in value: @@ -4328,6 +4858,51 @@ def _validate_OpenAI_InputFileContentParam(value: Any, path: str, errors: list[d if 'type' in value: _validate_OpenAI_InputFileContentParam_type(value['type'], f"{path}.type", errors) +def _validate_OpenAI_RealtimeMcpErrorType(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _matched_union = False + if not _matched_union and _is_type(value, 'string'): + _branch_errors_0: list[dict[str, str]] = [] + _validate_OpenAI_InputParam_string(value, path, _branch_errors_0) + if not _branch_errors_0: + _matched_union = True + if not _matched_union and _is_type(value, 'string'): + _branch_errors_1: list[dict[str, str]] = [] + _validate_OpenAI_RealtimeMcpErrorType_2(value, path, _branch_errors_1) + if not _branch_errors_1: + _matched_union = True + if not _matched_union: + _append_error(errors, path, f"Expected RealtimeMcpErrorType to be a string value, got {_type_label(value)}") + return + +def _validate_OpenAI_RealtimeMCPHTTPError_code(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'integer'): + _append_type_mismatch(errors, path, 'integer', value) + return + +def _validate_OpenAI_RealtimeMCPHTTPError_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('http_error',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_RealtimeMCPProtocolError_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('protocol_error',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + +def _validate_OpenAI_RealtimeMCPToolExecutionError_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values = ('tool_execution_error',) + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_MCPListToolsTool_annotations(value: Any, path: str, errors: list[dict[str, str]]) -> None: if value is None: return @@ -4372,6 +4947,8 @@ def _validate_OpenAI_MessageContent(value: Any, path: str, errors: list[dict[str _validate_OpenAI_MessageContentReasoningTextContent(value, path, errors) if _disc_value == 'refusal': _validate_OpenAI_MessageContentRefusalContent(value, path, errors) + if _disc_value == 'summary_text': + _validate_OpenAI_SummaryTextContent(value, path, errors) if _disc_value == 'text': _validate_OpenAI_TextContent(value, path, errors) @@ -4467,8 +5044,6 @@ def _validate_OpenAI_ContainerNetworkPolicyAllowlistParam(value: Any, path: str, _append_error(errors, f"{path}.allowed_domains", "Required property 'allowed_domains' is missing") if 'allowed_domains' in value: _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_allowed_domains(value['allowed_domains'], f"{path}.allowed_domains", errors) - if 'domain_secrets' in value: - _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_domain_secrets(value['domain_secrets'], f"{path}.domain_secrets", errors) if 'type' in value: _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_type(value['type'], f"{path}.type", errors) @@ -4506,6 +5081,8 @@ def _validate_OpenAI_FunctionAndCustomToolCallOutputInputFileContent(value: Any, return if 'type' not in value: _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'detail' in value: + _validate_OpenAI_InputFileContentParam_detail(value['detail'], f"{path}.detail", errors) if 'file_data' in value: _validate_OpenAI_FunctionAndCustomToolCallOutputInputFileContent_file_data(value['file_data'], f"{path}.file_data", errors) if 'file_id' in value: @@ -4579,6 +5156,9 @@ def _validate_OpenAI_InputImageContentParamAutoParam_type(value: Any, path: str, _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_InputFileContentParam_detail(value: Any, path: str, errors: list[dict[str, str]]) -> None: + return + def _validate_OpenAI_InputFileContentParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('input_file',) if value not in _allowed_values: @@ -4587,6 +5167,19 @@ def _validate_OpenAI_InputFileContentParam_type(value: Any, path: str, errors: l _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_RealtimeMcpErrorType_2(value: Any, path: str, errors: list[dict[str, str]]) -> None: + _allowed_values, _enum_error = _enum_values('RealtimeMcpErrorType') + if _enum_error is not None: + _append_error(errors, path, _enum_error) + return + if _allowed_values is None: + return + if value not in _allowed_values: + _append_error(errors, path, f"Invalid value '{value}'. Allowed: {', '.join(str(v) for v in _allowed_values)}") + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_MessageContent_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_MessageContentType(value, path, errors) @@ -4600,6 +5193,10 @@ def _validate_OpenAI_ComputerScreenshotContent(value: Any, path: str, errors: li _append_error(errors, f"{path}.image_url", "Required property 'image_url' is missing") if 'file_id' not in value: _append_error(errors, f"{path}.file_id", "Required property 'file_id' is missing") + if 'detail' not in value: + _append_error(errors, f"{path}.detail", "Required property 'detail' is missing") + if 'detail' in value: + _validate_OpenAI_ComputerScreenshotContent_detail(value['detail'], f"{path}.detail", errors) if 'file_id' in value: _validate_CreateResponse_instructions(value['file_id'], f"{path}.file_id", errors) if 'image_url' in value: @@ -4613,6 +5210,8 @@ def _validate_OpenAI_MessageContentInputFileContent(value: Any, path: str, error return if 'type' not in value: _append_error(errors, f"{path}.type", "Required property 'type' is missing") + if 'detail' in value: + _validate_OpenAI_InputFileContentParam_detail(value['detail'], f"{path}.detail", errors) if 'file_data' in value: _validate_OpenAI_FunctionAndCustomToolCallOutputInputFileContent_file_data(value['file_data'], f"{path}.file_data", errors) if 'file_id' in value: @@ -4779,7 +5378,7 @@ def _validate_OpenAI_WebSearchActionSearchSources(value: Any, path: str, errors: if 'type' in value: _validate_OpenAI_WebSearchActionSearchSources_type(value['type'], f"{path}.type", errors) if 'url' in value: - _validate_OpenAI_InputParam_string(value['url'], f"{path}.url", errors) + _validate_OpenAI_WebSearchActionSearchSources_url(value['url'], f"{path}.url", errors) def _validate_OpenAI_ContainerNetworkPolicyParamType(value: Any, path: str, errors: list[dict[str, str]]) -> None: _matched_union = False @@ -4804,13 +5403,6 @@ def _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_allowed_domains(value: for _idx, _item in enumerate(value): _validate_OpenAI_InputParam_string(_item, f"{path}[{_idx}]", errors) -def _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_domain_secrets(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'array'): - _append_type_mismatch(errors, path, 'array', value) - return - for _idx, _item in enumerate(value): - _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_domain_secrets_item(_item, f"{path}[{_idx}]", errors) - def _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('allowlist',) if value not in _allowed_values: @@ -4895,6 +5487,9 @@ def _validate_OpenAI_MessageContentType(value: Any, path: str, errors: list[dict _append_error(errors, path, f"Expected MessageContentType to be a string value, got {_type_label(value)}") return +def _validate_OpenAI_ComputerScreenshotContent_detail(value: Any, path: str, errors: list[dict[str, str]]) -> None: + return + def _validate_OpenAI_ComputerScreenshotContent_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values = ('computer_screenshot',) if value not in _allowed_values: @@ -4942,6 +5537,11 @@ def _validate_OpenAI_WebSearchActionSearchSources_type(value: Any, path: str, er _append_type_mismatch(errors, path, 'string', value) return +def _validate_OpenAI_WebSearchActionSearchSources_url(value: Any, path: str, errors: list[dict[str, str]]) -> None: + if not _is_type(value, 'string'): + _append_type_mismatch(errors, path, 'string', value) + return + def _validate_OpenAI_ContainerNetworkPolicyParamType_2(value: Any, path: str, errors: list[dict[str, str]]) -> None: _allowed_values, _enum_error = _enum_values('ContainerNetworkPolicyParamType') if _enum_error is not None: @@ -4955,9 +5555,6 @@ def _validate_OpenAI_ContainerNetworkPolicyParamType_2(value: Any, path: str, er _append_type_mismatch(errors, path, 'string', value) return -def _validate_OpenAI_ContainerNetworkPolicyAllowlistParam_domain_secrets_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: - _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam(value, path, errors) - def _validate_OpenAI_CoordParam_x(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'integer'): _append_type_mismatch(errors, path, 'integer', value) @@ -5036,23 +5633,6 @@ def _validate_OpenAI_LogProb(value: Any, path: str, errors: list[dict[str, str]] if 'top_logprobs' in value: _validate_OpenAI_LogProb_top_logprobs(value['top_logprobs'], f"{path}.top_logprobs", errors) -def _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'object'): - _append_type_mismatch(errors, path, 'object', value) - return - if 'domain' not in value: - _append_error(errors, f"{path}.domain", "Required property 'domain' is missing") - if 'name' not in value: - _append_error(errors, f"{path}.name", "Required property 'name' is missing") - if 'value' not in value: - _append_error(errors, f"{path}.value", "Required property 'value' is missing") - if 'domain' in value: - _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_domain(value['domain'], f"{path}.domain", errors) - if 'name' in value: - _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_name(value['name'], f"{path}.name", errors) - if 'value' in value: - _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_value(value['value'], f"{path}.value", errors) - def _validate_OpenAI_Annotation_type(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_AnnotationType(value, path, errors) @@ -5153,7 +5733,7 @@ def _validate_OpenAI_LogProb_bytes(value: Any, path: str, errors: list[dict[str, _append_type_mismatch(errors, path, 'array', value) return for _idx, _item in enumerate(value): - _validate_OpenAI_LogProb_bytes_item(_item, f"{path}[{_idx}]", errors) + _validate_OpenAI_RealtimeMCPHTTPError_code(_item, f"{path}[{_idx}]", errors) def _validate_OpenAI_LogProb_logprob(value: Any, path: str, errors: list[dict[str, str]]) -> None: if not _is_type(value, 'number'): @@ -5167,21 +5747,6 @@ def _validate_OpenAI_LogProb_top_logprobs(value: Any, path: str, errors: list[di for _idx, _item in enumerate(value): _validate_OpenAI_LogProb_top_logprobs_item(_item, f"{path}[{_idx}]", errors) -def _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_domain(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'string'): - _append_type_mismatch(errors, path, 'string', value) - return - -def _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_name(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'string'): - _append_type_mismatch(errors, path, 'string', value) - return - -def _validate_OpenAI_ContainerNetworkPolicyDomainSecretParam_value(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'string'): - _append_type_mismatch(errors, path, 'string', value) - return - def _validate_OpenAI_AnnotationType(value: Any, path: str, errors: list[dict[str, str]]) -> None: _matched_union = False if not _matched_union and _is_type(value, 'string'): @@ -5285,11 +5850,6 @@ def _validate_OpenAI_UrlCitationBody_url(value: Any, path: str, errors: list[dic _append_type_mismatch(errors, path, 'string', value) return -def _validate_OpenAI_LogProb_bytes_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: - if not _is_type(value, 'integer'): - _append_type_mismatch(errors, path, 'integer', value) - return - def _validate_OpenAI_LogProb_top_logprobs_item(value: Any, path: str, errors: list[dict[str, str]]) -> None: _validate_OpenAI_TopLogProb(value, path, errors) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/__init__.py similarity index 53% rename from sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/__init__.py rename to sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/__init__.py index 8026245c2abc..e3b4c5295f07 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/__init__.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/__init__.py @@ -1,6 +1,21 @@ +# coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # Code generated by Microsoft (R) Python Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._patch import __all__ as _patch_all +from ._patch import * +from ._patch import patch_sdk as _patch_sdk + +__all__ = [] +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore +_patch_sdk() diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/_enums.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/_enums.py new file mode 100644 index 000000000000..81c714eab77e --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/_enums.py @@ -0,0 +1,33 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# -------------------------------------------------------------------------- + +class _EnumMemberFallback(str): + @property + def value(self) -> str: + return str(self) + + +_ENUM_VALUES: dict[str, dict[str, str]] = {'AnnotationType': {'FILECITATION': 'file_citation', 'URLCITATION': 'url_citation', 'CONTAINERFILECITATION': 'container_file_citation', 'FILEPATH': 'file_path'}, 'ApplyPatchCallOutputStatus': {'COMPLETED': 'completed', 'FAILED': 'failed'}, 'ApplyPatchCallOutputStatusParam': {'COMPLETED': 'completed', 'FAILED': 'failed'}, 'ApplyPatchCallStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed'}, 'ApplyPatchCallStatusParam': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed'}, 'ApplyPatchFileOperationType': {'CREATEFILE': 'create_file', 'DELETEFILE': 'delete_file', 'UPDATEFILE': 'update_file'}, 'ApplyPatchOperationParamType': {'CREATEFILE': 'create_file', 'DELETEFILE': 'delete_file', 'UPDATEFILE': 'update_file'}, 'AzureAISearchQueryType': {'SIMPLE': 'simple', 'SEMANTIC': 'semantic', 'VECTOR': 'vector', 'VECTORSIMPLEHYBRID': 'vector_simple_hybrid', 'VECTORSEMANTICHYBRID': 'vector_semantic_hybrid'}, 'ClickButtonType': {'LEFT': 'left', 'RIGHT': 'right', 'WHEEL': 'wheel', 'BACK': 'back', 'FORWARD': 'forward'}, 'ComputerActionType': {'CLICK': 'click', 'DOUBLECLICK': 'double_click', 'DRAG': 'drag', 'KEYPRESS': 'keypress', 'MOVE': 'move', 'SCREENSHOT': 'screenshot', 'SCROLL': 'scroll', 'TYPE': 'type', 'WAIT': 'wait'}, 'ComputerEnvironment': {'WINDOWS': 'windows', 'MAC': 'mac', 'LINUX': 'linux', 'UBUNTU': 'ubuntu', 'BROWSER': 'browser'}, 'ContainerMemoryLimit': {'1G': '1g', '4G': '4g', '16G': '16g', '64G': '64g'}, 'ContainerNetworkPolicyParamType': {'DISABLED': 'disabled', 'ALLOWLIST': 'allowlist'}, 'ContainerSkillType': {'SKILLREFERENCE': 'skill_reference', 'INLINE': 'inline'}, 'CustomToolParamFormatType': {'TEXT': 'text', 'GRAMMAR': 'grammar'}, 'DetailEnum': {'LOW': 'low', 'HIGH': 'high', 'AUTO': 'auto', 'ORIGINAL': 'original'}, 'FileInputDetail': {'LOW': 'low', 'HIGH': 'high'}, 'FunctionAndCustomToolCallOutputType': {'INPUTTEXT': 'input_text', 'INPUTIMAGE': 'input_image', 'INPUTFILE': 'input_file'}, 'FunctionCallItemStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionCallOutputStatusEnum': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionCallStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionShellCallEnvironmentType': {'LOCAL': 'local', 'CONTAINERREFERENCE': 'container_reference'}, 'FunctionShellCallItemParamEnvironmentType': {'LOCAL': 'local', 'CONTAINERREFERENCE': 'container_reference'}, 'FunctionShellCallItemStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionShellCallOutputOutcomeParamType': {'TIMEOUT': 'timeout', 'EXIT': 'exit'}, 'FunctionShellCallOutputOutcomeType': {'TIMEOUT': 'timeout', 'EXIT': 'exit'}, 'FunctionShellCallOutputStatusEnum': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionShellCallStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'FunctionShellToolParamEnvironmentType': {'CONTAINERAUTO': 'container_auto', 'LOCAL': 'local', 'CONTAINERREFERENCE': 'container_reference'}, 'GrammarSyntax1': {'LARK': 'lark', 'REGEX': 'regex'}, 'ImageDetail': {'LOW': 'low', 'HIGH': 'high', 'AUTO': 'auto', 'ORIGINAL': 'original'}, 'ImageGenActionEnum': {'GENERATE': 'generate', 'EDIT': 'edit', 'AUTO': 'auto'}, 'IncludeEnum': {'FILESEARCHCALLRESULTS': 'file_search_call.results', 'WEBSEARCHCALLRESULTS': 'web_search_call.results', 'WEBSEARCHCALLACTIONSOURCES': 'web_search_call.action.sources', 'MESSAGEINPUTIMAGEIMAGEURL': 'message.input_image.image_url', 'COMPUTERCALLOUTPUTOUTPUTIMAGEURL': 'computer_call_output.output.image_url', 'CODEINTERPRETERCALLOUTPUTS': 'code_interpreter_call.outputs', 'REASONINGENCRYPTEDCONTENT': 'reasoning.encrypted_content', 'MESSAGEOUTPUTTEXTLOGPROBS': 'message.output_text.logprobs', 'MEMORYSEARCHCALLRESULTS': 'memory_search_call.results'}, 'InputFidelity': {'HIGH': 'high', 'LOW': 'low'}, 'ItemFieldType': {'MESSAGE': 'message', 'FUNCTIONCALL': 'function_call', 'TOOLSEARCHCALL': 'tool_search_call', 'TOOLSEARCHOUTPUT': 'tool_search_output', 'ADDITIONALTOOLS': 'additional_tools', 'FUNCTIONCALLOUTPUT': 'function_call_output', 'FILESEARCHCALL': 'file_search_call', 'WEBSEARCHCALL': 'web_search_call', 'IMAGEGENERATIONCALL': 'image_generation_call', 'COMPUTERCALL': 'computer_call', 'COMPUTERCALLOUTPUT': 'computer_call_output', 'REASONING': 'reasoning', 'COMPACTION': 'compaction', 'CODEINTERPRETERCALL': 'code_interpreter_call', 'LOCALSHELLCALL': 'local_shell_call', 'LOCALSHELLCALLOUTPUT': 'local_shell_call_output', 'SHELLCALL': 'shell_call', 'SHELLCALLOUTPUT': 'shell_call_output', 'APPLYPATCHCALL': 'apply_patch_call', 'APPLYPATCHCALLOUTPUT': 'apply_patch_call_output', 'MCPLISTTOOLS': 'mcp_list_tools', 'MCPAPPROVALREQUEST': 'mcp_approval_request', 'MCPAPPROVALRESPONSE': 'mcp_approval_response', 'MCPCALL': 'mcp_call', 'CUSTOMTOOLCALL': 'custom_tool_call', 'CUSTOMTOOLCALLOUTPUT': 'custom_tool_call_output'}, 'ItemType': {'MESSAGE': 'message', 'OUTPUTMESSAGE': 'output_message', 'FILESEARCHCALL': 'file_search_call', 'COMPUTERCALL': 'computer_call', 'COMPUTERCALLOUTPUT': 'computer_call_output', 'WEBSEARCHCALL': 'web_search_call', 'FUNCTIONCALL': 'function_call', 'FUNCTIONCALLOUTPUT': 'function_call_output', 'TOOLSEARCHCALL': 'tool_search_call', 'TOOLSEARCHOUTPUT': 'tool_search_output', 'ADDITIONALTOOLS': 'additional_tools', 'REASONING': 'reasoning', 'COMPACTION': 'compaction', 'IMAGEGENERATIONCALL': 'image_generation_call', 'CODEINTERPRETERCALL': 'code_interpreter_call', 'LOCALSHELLCALL': 'local_shell_call', 'LOCALSHELLCALLOUTPUT': 'local_shell_call_output', 'SHELLCALL': 'shell_call', 'SHELLCALLOUTPUT': 'shell_call_output', 'APPLYPATCHCALL': 'apply_patch_call', 'APPLYPATCHCALLOUTPUT': 'apply_patch_call_output', 'MCPLISTTOOLS': 'mcp_list_tools', 'MCPAPPROVALREQUEST': 'mcp_approval_request', 'MCPAPPROVALRESPONSE': 'mcp_approval_response', 'MCPCALL': 'mcp_call', 'CUSTOMTOOLCALLOUTPUT': 'custom_tool_call_output', 'CUSTOMTOOLCALL': 'custom_tool_call', 'ITEMREFERENCE': 'item_reference', 'STRUCTUREDOUTPUTS': 'structured_outputs', 'OAUTHCONSENTREQUEST': 'oauth_consent_request', 'MEMORYSEARCHCALL': 'memory_search_call', 'WORKFLOWACTION': 'workflow_action', 'A2APREVIEWCALL': 'a2a_preview_call', 'A2APREVIEWCALLOUTPUT': 'a2a_preview_call_output', 'BINGGROUNDINGCALL': 'bing_grounding_call', 'BINGGROUNDINGCALLOUTPUT': 'bing_grounding_call_output', 'SHAREPOINTGROUNDINGPREVIEWCALL': 'sharepoint_grounding_preview_call', 'SHAREPOINTGROUNDINGPREVIEWCALLOUTPUT': 'sharepoint_grounding_preview_call_output', 'AZUREAISEARCHCALL': 'azure_ai_search_call', 'AZUREAISEARCHCALLOUTPUT': 'azure_ai_search_call_output', 'BINGCUSTOMSEARCHPREVIEWCALL': 'bing_custom_search_preview_call', 'BINGCUSTOMSEARCHPREVIEWCALLOUTPUT': 'bing_custom_search_preview_call_output', 'OPENAPICALL': 'openapi_call', 'OPENAPICALLOUTPUT': 'openapi_call_output', 'BROWSERAUTOMATIONPREVIEWCALL': 'browser_automation_preview_call', 'BROWSERAUTOMATIONPREVIEWCALLOUTPUT': 'browser_automation_preview_call_output', 'FABRICDATAAGENTPREVIEWCALL': 'fabric_dataagent_preview_call', 'FABRICDATAAGENTPREVIEWCALLOUTPUT': 'fabric_dataagent_preview_call_output', 'AZUREFUNCTIONCALL': 'azure_function_call', 'AZUREFUNCTIONCALLOUTPUT': 'azure_function_call_output'}, 'MCPToolCallStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete', 'CALLING': 'calling', 'FAILED': 'failed'}, 'MemoryItemKind': {'USERPROFILE': 'user_profile', 'CHATSUMMARY': 'chat_summary'}, 'MessageContentType': {'INPUTTEXT': 'input_text', 'OUTPUTTEXT': 'output_text', 'TEXT': 'text', 'SUMMARYTEXT': 'summary_text', 'REASONINGTEXT': 'reasoning_text', 'REFUSAL': 'refusal', 'INPUTIMAGE': 'input_image', 'COMPUTERSCREENSHOT': 'computer_screenshot', 'INPUTFILE': 'input_file'}, 'MessagePhase': {'COMMENTARY': 'commentary', 'FINALANSWER': 'final_answer'}, 'MessageRole': {'UNKNOWN': 'unknown', 'USER': 'user', 'ASSISTANT': 'assistant', 'SYSTEM': 'system', 'CRITIC': 'critic', 'DISCRIMINATOR': 'discriminator', 'DEVELOPER': 'developer', 'TOOL': 'tool'}, 'MessageStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete'}, 'ModelIdsCompaction': {'GPT54': 'gpt-5.4', 'GPT54MINI': 'gpt-5.4-mini', 'GPT54NANO': 'gpt-5.4-nano', 'GPT54MINI20260317': 'gpt-5.4-mini-2026-03-17', 'GPT54NANO20260317': 'gpt-5.4-nano-2026-03-17', 'GPT53CHATLATEST': 'gpt-5.3-chat-latest', 'GPT52': 'gpt-5.2', 'GPT5220251211': 'gpt-5.2-2025-12-11', 'GPT52CHATLATEST': 'gpt-5.2-chat-latest', 'GPT52PRO': 'gpt-5.2-pro', 'GPT52PRO20251211': 'gpt-5.2-pro-2025-12-11', 'GPT51': 'gpt-5.1', 'GPT5120251113': 'gpt-5.1-2025-11-13', 'GPT51CODEX': 'gpt-5.1-codex', 'GPT51MINI': 'gpt-5.1-mini', 'GPT51CHATLATEST': 'gpt-5.1-chat-latest', 'GPT5': 'gpt-5', 'GPT5MINI': 'gpt-5-mini', 'GPT5NANO': 'gpt-5-nano', 'GPT520250807': 'gpt-5-2025-08-07', 'GPT5MINI20250807': 'gpt-5-mini-2025-08-07', 'GPT5NANO20250807': 'gpt-5-nano-2025-08-07', 'GPT5CHATLATEST': 'gpt-5-chat-latest', 'GPT41': 'gpt-4.1', 'GPT41MINI': 'gpt-4.1-mini', 'GPT41NANO': 'gpt-4.1-nano', 'GPT4120250414': 'gpt-4.1-2025-04-14', 'GPT41MINI20250414': 'gpt-4.1-mini-2025-04-14', 'GPT41NANO20250414': 'gpt-4.1-nano-2025-04-14', 'O4MINI': 'o4-mini', 'O4MINI20250416': 'o4-mini-2025-04-16', 'O3': 'o3', 'O320250416': 'o3-2025-04-16', 'O3MINI': 'o3-mini', 'O3MINI20250131': 'o3-mini-2025-01-31', 'O1': 'o1', 'O120241217': 'o1-2024-12-17', 'O1PREVIEW': 'o1-preview', 'O1PREVIEW20240912': 'o1-preview-2024-09-12', 'O1MINI': 'o1-mini', 'O1MINI20240912': 'o1-mini-2024-09-12', 'GPT4O': 'gpt-4o', 'GPT4O20241120': 'gpt-4o-2024-11-20', 'GPT4O20240806': 'gpt-4o-2024-08-06', 'GPT4O20240513': 'gpt-4o-2024-05-13', 'GPT4OAUDIOPREVIEW': 'gpt-4o-audio-preview', 'GPT4OAUDIOPREVIEW20241001': 'gpt-4o-audio-preview-2024-10-01', 'GPT4OAUDIOPREVIEW20241217': 'gpt-4o-audio-preview-2024-12-17', 'GPT4OAUDIOPREVIEW20250603': 'gpt-4o-audio-preview-2025-06-03', 'GPT4OMINIAUDIOPREVIEW': 'gpt-4o-mini-audio-preview', 'GPT4OMINIAUDIOPREVIEW20241217': 'gpt-4o-mini-audio-preview-2024-12-17', 'GPT4OSEARCHPREVIEW': 'gpt-4o-search-preview', 'GPT4OMINISEARCHPREVIEW': 'gpt-4o-mini-search-preview', 'GPT4OSEARCHPREVIEW20250311': 'gpt-4o-search-preview-2025-03-11', 'GPT4OMINISEARCHPREVIEW20250311': 'gpt-4o-mini-search-preview-2025-03-11', 'CHATGPT4OLATEST': 'chatgpt-4o-latest', 'CODEXMINILATEST': 'codex-mini-latest', 'GPT4OMINI': 'gpt-4o-mini', 'GPT4OMINI20240718': 'gpt-4o-mini-2024-07-18', 'GPT4TURBO': 'gpt-4-turbo', 'GPT4TURBO20240409': 'gpt-4-turbo-2024-04-09', 'GPT40125PREVIEW': 'gpt-4-0125-preview', 'GPT4TURBOPREVIEW': 'gpt-4-turbo-preview', 'GPT41106PREVIEW': 'gpt-4-1106-preview', 'GPT4VISIONPREVIEW': 'gpt-4-vision-preview', 'GPT4': 'gpt-4', 'GPT40314': 'gpt-4-0314', 'GPT40613': 'gpt-4-0613', 'GPT432K': 'gpt-4-32k', 'GPT432K0314': 'gpt-4-32k-0314', 'GPT432K0613': 'gpt-4-32k-0613', 'GPT35TURBO': 'gpt-3.5-turbo', 'GPT35TURBO16K': 'gpt-3.5-turbo-16k', 'GPT35TURBO0301': 'gpt-3.5-turbo-0301', 'GPT35TURBO0613': 'gpt-3.5-turbo-0613', 'GPT35TURBO1106': 'gpt-3.5-turbo-1106', 'GPT35TURBO0125': 'gpt-3.5-turbo-0125', 'GPT35TURBO16K0613': 'gpt-3.5-turbo-16k-0613', 'O1PRO': 'o1-pro', 'O1PRO20250319': 'o1-pro-2025-03-19', 'O3PRO': 'o3-pro', 'O3PRO20250610': 'o3-pro-2025-06-10', 'O3DEEPRESEARCH': 'o3-deep-research', 'O3DEEPRESEARCH20250626': 'o3-deep-research-2025-06-26', 'O4MINIDEEPRESEARCH': 'o4-mini-deep-research', 'O4MINIDEEPRESEARCH20250626': 'o4-mini-deep-research-2025-06-26', 'COMPUTERUSEPREVIEW': 'computer-use-preview', 'COMPUTERUSEPREVIEW20250311': 'computer-use-preview-2025-03-11', 'GPT5CODEX': 'gpt-5-codex', 'GPT5PRO': 'gpt-5-pro', 'GPT5PRO20251006': 'gpt-5-pro-2025-10-06', 'GPT51CODEXMAX': 'gpt-5.1-codex-max'}, 'ModerationEntryType': {'MODERATIONRESULT': 'moderation_result', 'ERROR': 'error'}, 'ModerationInputType': {'TEXT': 'text', 'IMAGE': 'image'}, 'OpenApiAuthType': {'ANONYMOUS': 'anonymous', 'PROJECTCONNECTION': 'project_connection', 'MANAGEDIDENTITY': 'managed_identity'}, 'OutputContentType': {'OUTPUTTEXT': 'output_text', 'REFUSAL': 'refusal', 'REASONINGTEXT': 'reasoning_text'}, 'OutputItemType': {'OUTPUTMESSAGE': 'output_message', 'FILESEARCHCALL': 'file_search_call', 'FUNCTIONCALL': 'function_call', 'FUNCTIONCALLOUTPUT': 'function_call_output', 'WEBSEARCHCALL': 'web_search_call', 'COMPUTERCALL': 'computer_call', 'COMPUTERCALLOUTPUT': 'computer_call_output', 'REASONING': 'reasoning', 'TOOLSEARCHCALL': 'tool_search_call', 'TOOLSEARCHOUTPUT': 'tool_search_output', 'ADDITIONALTOOLS': 'additional_tools', 'COMPACTION': 'compaction', 'IMAGEGENERATIONCALL': 'image_generation_call', 'CODEINTERPRETERCALL': 'code_interpreter_call', 'LOCALSHELLCALL': 'local_shell_call', 'LOCALSHELLCALLOUTPUT': 'local_shell_call_output', 'SHELLCALL': 'shell_call', 'SHELLCALLOUTPUT': 'shell_call_output', 'APPLYPATCHCALL': 'apply_patch_call', 'APPLYPATCHCALLOUTPUT': 'apply_patch_call_output', 'MCPCALL': 'mcp_call', 'MCPLISTTOOLS': 'mcp_list_tools', 'MCPAPPROVALREQUEST': 'mcp_approval_request', 'MCPAPPROVALRESPONSE': 'mcp_approval_response', 'CUSTOMTOOLCALL': 'custom_tool_call', 'CUSTOMTOOLCALLOUTPUT': 'custom_tool_call_output', 'MESSAGE': 'message', 'STRUCTUREDOUTPUTS': 'structured_outputs', 'OAUTHCONSENTREQUEST': 'oauth_consent_request', 'MEMORYSEARCHCALL': 'memory_search_call', 'WORKFLOWACTION': 'workflow_action', 'A2APREVIEWCALL': 'a2a_preview_call', 'A2APREVIEWCALLOUTPUT': 'a2a_preview_call_output', 'BINGGROUNDINGCALL': 'bing_grounding_call', 'BINGGROUNDINGCALLOUTPUT': 'bing_grounding_call_output', 'SHAREPOINTGROUNDINGPREVIEWCALL': 'sharepoint_grounding_preview_call', 'SHAREPOINTGROUNDINGPREVIEWCALLOUTPUT': 'sharepoint_grounding_preview_call_output', 'AZUREAISEARCHCALL': 'azure_ai_search_call', 'AZUREAISEARCHCALLOUTPUT': 'azure_ai_search_call_output', 'BINGCUSTOMSEARCHPREVIEWCALL': 'bing_custom_search_preview_call', 'BINGCUSTOMSEARCHPREVIEWCALLOUTPUT': 'bing_custom_search_preview_call_output', 'OPENAPICALL': 'openapi_call', 'OPENAPICALLOUTPUT': 'openapi_call_output', 'BROWSERAUTOMATIONPREVIEWCALL': 'browser_automation_preview_call', 'BROWSERAUTOMATIONPREVIEWCALLOUTPUT': 'browser_automation_preview_call_output', 'FABRICDATAAGENTPREVIEWCALL': 'fabric_dataagent_preview_call', 'FABRICDATAAGENTPREVIEWCALLOUTPUT': 'fabric_dataagent_preview_call_output', 'AZUREFUNCTIONCALL': 'azure_function_call', 'AZUREFUNCTIONCALLOUTPUT': 'azure_function_call_output'}, 'OutputMessageContentType': {'OUTPUTTEXT': 'output_text', 'REFUSAL': 'refusal'}, 'PageOrder': {'ASC': 'asc', 'DESC': 'desc'}, 'PromptCacheRetentionEnum': {'INMEMORY': 'in_memory', '24H': '24h'}, 'RankerVersionType': {'AUTO': 'auto', 'DEFAULT20241115': 'default-2024-11-15'}, 'RealtimeMcpErrorType': {'PROTOCOLERROR': 'protocol_error', 'TOOLEXECUTIONERROR': 'tool_execution_error', 'HTTPERROR': 'http_error'}, 'ReasoningEffort': {'NONE': 'none', 'MINIMAL': 'minimal', 'LOW': 'low', 'MEDIUM': 'medium', 'HIGH': 'high', 'XHIGH': 'xhigh'}, 'ResponseErrorCode': {'SERVERERROR': 'server_error', 'RATELIMITEXCEEDED': 'rate_limit_exceeded', 'INVALIDPROMPT': 'invalid_prompt', 'VECTORSTORETIMEOUT': 'vector_store_timeout', 'INVALIDIMAGE': 'invalid_image', 'INVALIDIMAGEFORMAT': 'invalid_image_format', 'INVALIDBASE64IMAGE': 'invalid_base64_image', 'INVALIDIMAGEURL': 'invalid_image_url', 'IMAGETOOLARGE': 'image_too_large', 'IMAGETOOSMALL': 'image_too_small', 'IMAGEPARSEERROR': 'image_parse_error', 'IMAGECONTENTPOLICYVIOLATION': 'image_content_policy_violation', 'INVALIDIMAGEMODE': 'invalid_image_mode', 'IMAGEFILETOOLARGE': 'image_file_too_large', 'UNSUPPORTEDIMAGEMEDIATYPE': 'unsupported_image_media_type', 'EMPTYIMAGEFILE': 'empty_image_file', 'FAILEDTODOWNLOADIMAGE': 'failed_to_download_image', 'IMAGEFILENOTFOUND': 'image_file_not_found'}, 'ResponseStreamEventType': {'RESPONSEAUDIODELTA': 'response.audio.delta', 'RESPONSEAUDIODONE': 'response.audio.done', 'RESPONSEAUDIOTRANSCRIPTDELTA': 'response.audio.transcript.delta', 'RESPONSEAUDIOTRANSCRIPTDONE': 'response.audio.transcript.done', 'RESPONSECODEINTERPRETERCALLCODEDELTA': 'response.code_interpreter_call_code.delta', 'RESPONSECODEINTERPRETERCALLCODEDONE': 'response.code_interpreter_call_code.done', 'RESPONSECODEINTERPRETERCALLCOMPLETED': 'response.code_interpreter_call.completed', 'RESPONSECODEINTERPRETERCALLINPROGRESS': 'response.code_interpreter_call.in_progress', 'RESPONSECODEINTERPRETERCALLINTERPRETING': 'response.code_interpreter_call.interpreting', 'RESPONSECOMPLETED': 'response.completed', 'RESPONSECONTENTPARTADDED': 'response.content_part.added', 'RESPONSECONTENTPARTDONE': 'response.content_part.done', 'RESPONSECREATED': 'response.created', 'ERROR': 'error', 'RESPONSEFILESEARCHCALLCOMPLETED': 'response.file_search_call.completed', 'RESPONSEFILESEARCHCALLINPROGRESS': 'response.file_search_call.in_progress', 'RESPONSEFILESEARCHCALLSEARCHING': 'response.file_search_call.searching', 'RESPONSEFUNCTIONCALLARGUMENTSDELTA': 'response.function_call_arguments.delta', 'RESPONSEFUNCTIONCALLARGUMENTSDONE': 'response.function_call_arguments.done', 'RESPONSEINPROGRESS': 'response.in_progress', 'RESPONSEFAILED': 'response.failed', 'RESPONSEINCOMPLETE': 'response.incomplete', 'RESPONSEOUTPUTITEMADDED': 'response.output_item.added', 'RESPONSEOUTPUTITEMDONE': 'response.output_item.done', 'RESPONSEREASONINGSUMMARYPARTADDED': 'response.reasoning_summary_part.added', 'RESPONSEREASONINGSUMMARYPARTDONE': 'response.reasoning_summary_part.done', 'RESPONSEREASONINGSUMMARYTEXTDELTA': 'response.reasoning_summary_text.delta', 'RESPONSEREASONINGSUMMARYTEXTDONE': 'response.reasoning_summary_text.done', 'RESPONSEREASONINGTEXTDELTA': 'response.reasoning_text.delta', 'RESPONSEREASONINGTEXTDONE': 'response.reasoning_text.done', 'RESPONSEREFUSALDELTA': 'response.refusal.delta', 'RESPONSEREFUSALDONE': 'response.refusal.done', 'RESPONSEOUTPUTTEXTDELTA': 'response.output_text.delta', 'RESPONSEOUTPUTTEXTDONE': 'response.output_text.done', 'RESPONSEWEBSEARCHCALLCOMPLETED': 'response.web_search_call.completed', 'RESPONSEWEBSEARCHCALLINPROGRESS': 'response.web_search_call.in_progress', 'RESPONSEWEBSEARCHCALLSEARCHING': 'response.web_search_call.searching', 'RESPONSEIMAGEGENERATIONCALLCOMPLETED': 'response.image_generation_call.completed', 'RESPONSEIMAGEGENERATIONCALLGENERATING': 'response.image_generation_call.generating', 'RESPONSEIMAGEGENERATIONCALLINPROGRESS': 'response.image_generation_call.in_progress', 'RESPONSEIMAGEGENERATIONCALLPARTIALIMAGE': 'response.image_generation_call.partial_image', 'RESPONSEMCPCALLARGUMENTSDELTA': 'response.mcp_call_arguments.delta', 'RESPONSEMCPCALLARGUMENTSDONE': 'response.mcp_call_arguments.done', 'RESPONSEMCPCALLCOMPLETED': 'response.mcp_call.completed', 'RESPONSEMCPCALLFAILED': 'response.mcp_call.failed', 'RESPONSEMCPCALLINPROGRESS': 'response.mcp_call.in_progress', 'RESPONSEMCPLISTTOOLSCOMPLETED': 'response.mcp_list_tools.completed', 'RESPONSEMCPLISTTOOLSFAILED': 'response.mcp_list_tools.failed', 'RESPONSEMCPLISTTOOLSINPROGRESS': 'response.mcp_list_tools.in_progress', 'RESPONSEOUTPUTTEXTANNOTATIONADDED': 'response.output_text.annotation.added', 'RESPONSEQUEUED': 'response.queued', 'RESPONSECUSTOMTOOLCALLINPUTDELTA': 'response.custom_tool_call_input.delta', 'RESPONSECUSTOMTOOLCALLINPUTDONE': 'response.custom_tool_call_input.done'}, 'SearchContentType': {'TEXT': 'text', 'IMAGE': 'image'}, 'SearchContextSize': {'LOW': 'low', 'MEDIUM': 'medium', 'HIGH': 'high'}, 'ServiceTierEnum': {'AUTO': 'auto', 'DEFAULT': 'default', 'FLEX': 'flex', 'PRIORITY': 'priority'}, 'TextResponseFormatConfigurationType': {'TEXT': 'text', 'JSONSCHEMA': 'json_schema', 'JSONOBJECT': 'json_object'}, 'ToolCallStatus': {'INPROGRESS': 'in_progress', 'COMPLETED': 'completed', 'INCOMPLETE': 'incomplete', 'FAILED': 'failed'}, 'ToolChoiceOptions': {'NONE': 'none', 'AUTO': 'auto', 'REQUIRED': 'required'}, 'ToolChoiceParamType': {'ALLOWEDTOOLS': 'allowed_tools', 'FUNCTION': 'function', 'MCP': 'mcp', 'CUSTOM': 'custom', 'APPLYPATCH': 'apply_patch', 'SHELL': 'shell', 'FILESEARCH': 'file_search', 'WEBSEARCHPREVIEW': 'web_search_preview', 'COMPUTERUSEPREVIEW': 'computer_use_preview', 'WEBSEARCHPREVIEW20250311': 'web_search_preview_2025_03_11', 'IMAGEGENERATION': 'image_generation', 'CODEINTERPRETER': 'code_interpreter', 'COMPUTER': 'computer', 'COMPUTERUSE': 'computer_use'}, 'ToolSearchExecutionType': {'SERVER': 'server', 'CLIENT': 'client'}, 'ToolType': {'FUNCTION': 'function', 'FILESEARCH': 'file_search', 'COMPUTER': 'computer', 'COMPUTERUSEPREVIEW': 'computer_use_preview', 'WEBSEARCH': 'web_search', 'MCP': 'mcp', 'CODEINTERPRETER': 'code_interpreter', 'IMAGEGENERATION': 'image_generation', 'LOCALSHELL': 'local_shell', 'SHELL': 'shell', 'CUSTOM': 'custom', 'NAMESPACE': 'namespace', 'TOOLSEARCH': 'tool_search', 'WEBSEARCHPREVIEW': 'web_search_preview', 'APPLYPATCH': 'apply_patch', 'A2APREVIEW': 'a2a_preview', 'BINGCUSTOMSEARCHPREVIEW': 'bing_custom_search_preview', 'BROWSERAUTOMATIONPREVIEW': 'browser_automation_preview', 'FABRICDATAAGENTPREVIEW': 'fabric_dataagent_preview', 'SHAREPOINTGROUNDINGPREVIEW': 'sharepoint_grounding_preview', 'MEMORYSEARCHPREVIEW': 'memory_search_preview', 'WORKIQPREVIEW': 'work_iq_preview', 'AZUREAISEARCH': 'azure_ai_search', 'AZUREFUNCTION': 'azure_function', 'BINGGROUNDING': 'bing_grounding', 'CAPTURESTRUCTUREDOUTPUTS': 'capture_structured_outputs', 'OPENAPI': 'openapi'}} + +def _normalize_enum_value(value: str) -> str: + return ''.join(ch for ch in value.upper() if ch.isalnum()) + + +def _member_value(enum_name: str, member_name: str) -> str: + return _ENUM_VALUES.get(enum_name, {}).get(_normalize_enum_value(member_name), member_name.lower()) + + +class _EnumFallbackMeta(type): + def __getattr__(cls, name: str) -> _EnumMemberFallback: + return _EnumMemberFallback(_member_value(cls.__name__, name)) + + +class _EnumFallback(str, metaclass=_EnumFallbackMeta): + pass + + +def __getattr__(name: str) -> type[_EnumFallback]: + return type(name, (_EnumFallback,), {}) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_patch.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/_patch.py similarity index 100% rename from sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_patch.py rename to sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/models/_patch.py diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/py.typed b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/py.typed similarity index 100% rename from sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/py.typed rename to sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/py.typed diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/__init__.py deleted file mode 100644 index 9abd30ab9c84..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT license. -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -"""Model-only generated package surface.""" - -from .models import * # type: ignore # noqa: F401,F403 diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_types.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_types.py deleted file mode 100644 index c99439ce635a..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_types.py +++ /dev/null @@ -1,71 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from typing import Any, TYPE_CHECKING, Union - -if TYPE_CHECKING: - from . import models as _models -Filters = Union["_models.ComparisonFilter", "_models.CompoundFilter"] -ToolCallOutputContent = Union[dict[str, Any], str, list[Any]] -InputParam = Union[str, list["_models.Item"]] -ConversationParam = Union[str, "_models.ConversationParam_2"] -CreateResponseStreamingResponse = Union[ - "_models.ResponseAudioDeltaEvent", - "_models.ResponseAudioTranscriptDeltaEvent", - "_models.ResponseCodeInterpreterCallCodeDeltaEvent", - "_models.ResponseCodeInterpreterCallInProgressEvent", - "_models.ResponseCodeInterpreterCallInterpretingEvent", - "_models.ResponseContentPartAddedEvent", - "_models.ResponseCreatedEvent", - "_models.ResponseErrorEvent", - "_models.ResponseFileSearchCallInProgressEvent", - "_models.ResponseFileSearchCallSearchingEvent", - "_models.ResponseFunctionCallArgumentsDeltaEvent", - "_models.ResponseInProgressEvent", - "_models.ResponseFailedEvent", - "_models.ResponseIncompleteEvent", - "_models.ResponseOutputItemAddedEvent", - "_models.ResponseReasoningSummaryPartAddedEvent", - "_models.ResponseReasoningSummaryTextDeltaEvent", - "_models.ResponseReasoningTextDeltaEvent", - "_models.ResponseRefusalDeltaEvent", - "_models.ResponseTextDeltaEvent", - "_models.ResponseWebSearchCallInProgressEvent", - "_models.ResponseWebSearchCallSearchingEvent", - "_models.ResponseImageGenCallGeneratingEvent", - "_models.ResponseImageGenCallInProgressEvent", - "_models.ResponseImageGenCallPartialImageEvent", - "_models.ResponseMCPCallArgumentsDeltaEvent", - "_models.ResponseMCPCallFailedEvent", - "_models.ResponseMCPCallInProgressEvent", - "_models.ResponseMCPListToolsFailedEvent", - "_models.ResponseMCPListToolsInProgressEvent", - "_models.ResponseOutputTextAnnotationAddedEvent", - "_models.ResponseQueuedEvent", - "_models.ResponseCustomToolCallInputDeltaEvent", - "_models.ResponseAudioDoneEvent", - "_models.ResponseAudioTranscriptDoneEvent", - "_models.ResponseCodeInterpreterCallCodeDoneEvent", - "_models.ResponseCodeInterpreterCallCompletedEvent", - "_models.ResponseCompletedEvent", - "_models.ResponseContentPartDoneEvent", - "_models.ResponseFileSearchCallCompletedEvent", - "_models.ResponseFunctionCallArgumentsDoneEvent", - "_models.ResponseOutputItemDoneEvent", - "_models.ResponseReasoningSummaryPartDoneEvent", - "_models.ResponseReasoningSummaryTextDoneEvent", - "_models.ResponseReasoningTextDoneEvent", - "_models.ResponseRefusalDoneEvent", - "_models.ResponseTextDoneEvent", - "_models.ResponseWebSearchCallCompletedEvent", - "_models.ResponseImageGenCallCompletedEvent", - "_models.ResponseMCPCallArgumentsDoneEvent", - "_models.ResponseMCPCallCompletedEvent", - "_models.ResponseMCPListToolsCompletedEvent", - "_models.ResponseCustomToolCallInputDoneEvent", -] diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/model_base.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/model_base.py deleted file mode 100644 index 1139045a6acc..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/model_base.py +++ /dev/null @@ -1,1461 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression,too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=protected-access, broad-except - -import copy -import calendar -import decimal -import functools -import sys -import logging -import base64 -import re -import typing -import enum -import email.utils -from datetime import datetime, date, time, timedelta, timezone -from json import JSONEncoder -import xml.etree.ElementTree as ET -from collections.abc import MutableMapping -from typing_extensions import Self -import isodate -from azure.core.exceptions import DeserializationError -from azure.core import CaseInsensitiveEnumMeta -from azure.core.pipeline import PipelineResponse -from azure.core.serialization import _Null -from azure.core.rest import HttpResponse - -_LOGGER = logging.getLogger(__name__) - -__all__ = ["SdkJSONEncoder", "Model", "rest_field", "rest_discriminator"] - -TZ_UTC = timezone.utc -_T = typing.TypeVar("_T") -_NONE_TYPE = type(None) - - -def _timedelta_as_isostr(td: timedelta) -> str: - """Converts a datetime.timedelta object into an ISO 8601 formatted string, e.g. 'P4DT12H30M05S' - - Function adapted from the Tin Can Python project: https://github.com/RusticiSoftware/TinCanPython - - :param timedelta td: The timedelta to convert - :rtype: str - :return: ISO8601 version of this timedelta - """ - - # Split seconds to larger units - seconds = td.total_seconds() - minutes, seconds = divmod(seconds, 60) - hours, minutes = divmod(minutes, 60) - days, hours = divmod(hours, 24) - - days, hours, minutes = list(map(int, (days, hours, minutes))) - seconds = round(seconds, 6) - - # Build date - date_str = "" - if days: - date_str = "%sD" % days - - if hours or minutes or seconds: - # Build time - time_str = "T" - - # Hours - bigger_exists = date_str or hours - if bigger_exists: - time_str += "{:02}H".format(hours) - - # Minutes - bigger_exists = bigger_exists or minutes - if bigger_exists: - time_str += "{:02}M".format(minutes) - - # Seconds - try: - if seconds.is_integer(): - seconds_string = "{:02}".format(int(seconds)) - else: - # 9 chars long w/ leading 0, 6 digits after decimal - seconds_string = "%09.6f" % seconds - # Remove trailing zeros - seconds_string = seconds_string.rstrip("0") - except AttributeError: # int.is_integer() raises - seconds_string = "{:02}".format(seconds) - - time_str += "{}S".format(seconds_string) - else: - time_str = "" - - return "P" + date_str + time_str - - -def _serialize_bytes(o, format: typing.Optional[str] = None) -> str: - encoded = base64.b64encode(o).decode() - if format == "base64url": - return encoded.strip("=").replace("+", "-").replace("/", "_") - return encoded - - -def _serialize_datetime(o, format: typing.Optional[str] = None): - if hasattr(o, "year") and hasattr(o, "hour"): - if format == "rfc7231": - return email.utils.format_datetime(o, usegmt=True) - if format == "unix-timestamp": - return int(calendar.timegm(o.utctimetuple())) - - # astimezone() fails for naive times in Python 2.7, so make make sure o is aware (tzinfo is set) - if not o.tzinfo: - iso_formatted = o.replace(tzinfo=TZ_UTC).isoformat() - else: - iso_formatted = o.astimezone(TZ_UTC).isoformat() - # Replace the trailing "+00:00" UTC offset with "Z" (RFC 3339: https://www.ietf.org/rfc/rfc3339.txt) - return iso_formatted.replace("+00:00", "Z") - # Next try datetime.date or datetime.time - return o.isoformat() - - -def _is_readonly(p): - try: - return p._visibility == ["read"] - except AttributeError: - return False - - -class SdkJSONEncoder(JSONEncoder): - """A JSON encoder that's capable of serializing datetime objects and bytes.""" - - def __init__(self, *args, exclude_readonly: bool = False, format: typing.Optional[str] = None, **kwargs): - super().__init__(*args, **kwargs) - self.exclude_readonly = exclude_readonly - self.format = format - - def default(self, o): # pylint: disable=too-many-return-statements - if _is_model(o): - if self.exclude_readonly: - readonly_props = [p._rest_name for p in o._attr_to_rest_field.values() if _is_readonly(p)] - return {k: v for k, v in o.items() if k not in readonly_props} - return dict(o.items()) - try: - return super(SdkJSONEncoder, self).default(o) - except TypeError: - if isinstance(o, _Null): - return None - if isinstance(o, decimal.Decimal): - return float(o) - if isinstance(o, (bytes, bytearray)): - return _serialize_bytes(o, self.format) - try: - # First try datetime.datetime - return _serialize_datetime(o, self.format) - except AttributeError: - pass - # Last, try datetime.timedelta - try: - return _timedelta_as_isostr(o) - except AttributeError: - # This will be raised when it hits value.total_seconds in the method above - pass - return super(SdkJSONEncoder, self).default(o) - - -_VALID_DATE = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" + r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") -_VALID_RFC7231 = re.compile( - r"(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s\d{2}\s" - r"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT" -) - -_ARRAY_ENCODE_MAPPING = { - "pipeDelimited": "|", - "spaceDelimited": " ", - "commaDelimited": ",", - "newlineDelimited": "\n", -} - - -def _deserialize_array_encoded(delimit: str, attr): - if isinstance(attr, str): - if attr == "": - return [] - return attr.split(delimit) - return attr - - -def _deserialize_datetime(attr: typing.Union[str, datetime]) -> datetime: - """Deserialize ISO-8601 formatted string into Datetime object. - - :param str attr: response string to be deserialized. - :rtype: ~datetime.datetime - :returns: The datetime object from that input - """ - if isinstance(attr, datetime): - # i'm already deserialized - return attr - attr = attr.upper() - match = _VALID_DATE.match(attr) - if not match: - raise ValueError("Invalid datetime string: " + attr) - - check_decimal = attr.split(".") - if len(check_decimal) > 1: - decimal_str = "" - for digit in check_decimal[1]: - if digit.isdigit(): - decimal_str += digit - else: - break - if len(decimal_str) > 6: - attr = attr.replace(decimal_str, decimal_str[0:6]) - - date_obj = isodate.parse_datetime(attr) - test_utc = date_obj.utctimetuple() - if test_utc.tm_year > 9999 or test_utc.tm_year < 1: - raise OverflowError("Hit max or min date") - return date_obj # type: ignore[no-any-return] - - -def _deserialize_datetime_rfc7231(attr: typing.Union[str, datetime]) -> datetime: - """Deserialize RFC7231 formatted string into Datetime object. - - :param str attr: response string to be deserialized. - :rtype: ~datetime.datetime - :returns: The datetime object from that input - """ - if isinstance(attr, datetime): - # i'm already deserialized - return attr - match = _VALID_RFC7231.match(attr) - if not match: - raise ValueError("Invalid datetime string: " + attr) - - return email.utils.parsedate_to_datetime(attr) - - -def _deserialize_datetime_unix_timestamp(attr: typing.Union[float, datetime]) -> datetime: - """Deserialize unix timestamp into Datetime object. - - :param str attr: response string to be deserialized. - :rtype: ~datetime.datetime - :returns: The datetime object from that input - """ - if isinstance(attr, datetime): - # i'm already deserialized - return attr - return datetime.fromtimestamp(attr, TZ_UTC) - - -def _deserialize_date(attr: typing.Union[str, date]) -> date: - """Deserialize ISO-8601 formatted string into Date object. - :param str attr: response string to be deserialized. - :rtype: date - :returns: The date object from that input - """ - # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. - if isinstance(attr, date): - return attr - return isodate.parse_date(attr, defaultmonth=None, defaultday=None) # type: ignore - - -def _deserialize_time(attr: typing.Union[str, time]) -> time: - """Deserialize ISO-8601 formatted string into time object. - - :param str attr: response string to be deserialized. - :rtype: datetime.time - :returns: The time object from that input - """ - if isinstance(attr, time): - return attr - return isodate.parse_time(attr) # type: ignore[no-any-return] - - -def _deserialize_bytes(attr): - if isinstance(attr, (bytes, bytearray)): - return attr - return bytes(base64.b64decode(attr)) - - -def _deserialize_bytes_base64(attr): - if isinstance(attr, (bytes, bytearray)): - return attr - padding = "=" * (3 - (len(attr) + 3) % 4) # type: ignore - attr = attr + padding # type: ignore - encoded = attr.replace("-", "+").replace("_", "/") - return bytes(base64.b64decode(encoded)) - - -def _deserialize_duration(attr): - if isinstance(attr, timedelta): - return attr - return isodate.parse_duration(attr) - - -def _deserialize_decimal(attr): - if isinstance(attr, decimal.Decimal): - return attr - return decimal.Decimal(str(attr)) - - -def _deserialize_int_as_str(attr): - if isinstance(attr, int): - return attr - return int(attr) - - -_DESERIALIZE_MAPPING = { - datetime: _deserialize_datetime, - date: _deserialize_date, - time: _deserialize_time, - bytes: _deserialize_bytes, - bytearray: _deserialize_bytes, - timedelta: _deserialize_duration, - typing.Any: lambda x: x, - decimal.Decimal: _deserialize_decimal, -} - -_DESERIALIZE_MAPPING_WITHFORMAT = { - "rfc3339": _deserialize_datetime, - "rfc7231": _deserialize_datetime_rfc7231, - "unix-timestamp": _deserialize_datetime_unix_timestamp, - "base64": _deserialize_bytes, - "base64url": _deserialize_bytes_base64, -} - - -def get_deserializer(annotation: typing.Any, rf: typing.Optional["_RestField"] = None): - if annotation is int and rf and rf._format == "str": - return _deserialize_int_as_str - if annotation is str and rf and rf._format in _ARRAY_ENCODE_MAPPING: - return functools.partial(_deserialize_array_encoded, _ARRAY_ENCODE_MAPPING[rf._format]) - if rf and rf._format: - return _DESERIALIZE_MAPPING_WITHFORMAT.get(rf._format) - return _DESERIALIZE_MAPPING.get(annotation) # pyright: ignore - - -def _get_type_alias_type(module_name: str, alias_name: str): - types = { - k: v - for k, v in sys.modules[module_name].__dict__.items() - if isinstance(v, typing._GenericAlias) # type: ignore - } - if alias_name not in types: - return alias_name - return types[alias_name] - - -def _get_model(module_name: str, model_name: str): - models = {k: v for k, v in sys.modules[module_name].__dict__.items() if isinstance(v, type)} - module_end = module_name.rsplit(".", 1)[0] - models.update({k: v for k, v in sys.modules[module_end].__dict__.items() if isinstance(v, type)}) - if isinstance(model_name, str): - model_name = model_name.split(".")[-1] - if model_name not in models: - return model_name - return models[model_name] - - -_UNSET = object() - - -class _MyMutableMapping(MutableMapping[str, typing.Any]): - def __init__(self, data: dict[str, typing.Any]) -> None: - self._data = data - - def __contains__(self, key: typing.Any) -> bool: - return key in self._data - - def __getitem__(self, key: str) -> typing.Any: - # If this key has been deserialized (for mutable types), we need to handle serialization - if hasattr(self, "_attr_to_rest_field"): - cache_attr = f"_deserialized_{key}" - if hasattr(self, cache_attr): - rf = _get_rest_field(getattr(self, "_attr_to_rest_field"), key) - if rf: - value = self._data.get(key) - if isinstance(value, (dict, list, set)): - # For mutable types, serialize and return - # But also update _data with serialized form and clear flag - # so mutations via this returned value affect _data - serialized = _serialize(value, rf._format) - # If serialized form is same type (no transformation needed), - # return _data directly so mutations work - if isinstance(serialized, type(value)) and serialized == value: - return self._data.get(key) - # Otherwise return serialized copy and clear flag - try: - object.__delattr__(self, cache_attr) - except AttributeError: - pass - # Store serialized form back - self._data[key] = serialized - return serialized - return self._data.__getitem__(key) - - def __setitem__(self, key: str, value: typing.Any) -> None: - # Clear any cached deserialized value when setting through dictionary access - cache_attr = f"_deserialized_{key}" - try: - object.__delattr__(self, cache_attr) - except AttributeError: - pass - self._data.__setitem__(key, value) - - def __delitem__(self, key: str) -> None: - self._data.__delitem__(key) - - def __iter__(self) -> typing.Iterator[typing.Any]: - return self._data.__iter__() - - def __len__(self) -> int: - return self._data.__len__() - - def __ne__(self, other: typing.Any) -> bool: - return not self.__eq__(other) - - def keys(self) -> typing.KeysView[str]: - """ - :returns: a set-like object providing a view on D's keys - :rtype: ~typing.KeysView - """ - return self._data.keys() - - def values(self) -> typing.ValuesView[typing.Any]: - """ - :returns: an object providing a view on D's values - :rtype: ~typing.ValuesView - """ - return self._data.values() - - def items(self) -> typing.ItemsView[str, typing.Any]: - """ - :returns: set-like object providing a view on D's items - :rtype: ~typing.ItemsView - """ - return self._data.items() - - def get(self, key: str, default: typing.Any = None) -> typing.Any: - """ - Get the value for key if key is in the dictionary, else default. - :param str key: The key to look up. - :param any default: The value to return if key is not in the dictionary. Defaults to None - :returns: D[k] if k in D, else d. - :rtype: any - """ - try: - return self[key] - except KeyError: - return default - - @typing.overload - def pop(self, key: str) -> typing.Any: ... # pylint: disable=arguments-differ - - @typing.overload - def pop(self, key: str, default: _T) -> _T: ... # pylint: disable=signature-differs - - @typing.overload - def pop(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs - - def pop(self, key: str, default: typing.Any = _UNSET) -> typing.Any: - """ - Removes specified key and return the corresponding value. - :param str key: The key to pop. - :param any default: The value to return if key is not in the dictionary - :returns: The value corresponding to the key. - :rtype: any - :raises KeyError: If key is not found and default is not given. - """ - if default is _UNSET: - return self._data.pop(key) - return self._data.pop(key, default) - - def popitem(self) -> tuple[str, typing.Any]: - """ - Removes and returns some (key, value) pair - :returns: The (key, value) pair. - :rtype: tuple - :raises KeyError: if D is empty. - """ - return self._data.popitem() - - def clear(self) -> None: - """ - Remove all items from D. - """ - self._data.clear() - - def update(self, *args: typing.Any, **kwargs: typing.Any) -> None: # pylint: disable=arguments-differ - """ - Updates D from mapping/iterable E and F. - :param any args: Either a mapping object or an iterable of key-value pairs. - """ - self._data.update(*args, **kwargs) - - @typing.overload - def setdefault(self, key: str, default: None = None) -> None: ... - - @typing.overload - def setdefault(self, key: str, default: typing.Any) -> typing.Any: ... # pylint: disable=signature-differs - - def setdefault(self, key: str, default: typing.Any = _UNSET) -> typing.Any: - """ - Same as calling D.get(k, d), and setting D[k]=d if k not found - :param str key: The key to look up. - :param any default: The value to set if key is not in the dictionary - :returns: D[k] if k in D, else d. - :rtype: any - """ - if default is _UNSET: - return self._data.setdefault(key) - return self._data.setdefault(key, default) - - def __eq__(self, other: typing.Any) -> bool: - if isinstance(other, _MyMutableMapping): - return self._data == other._data - try: - other_model = self.__class__(other) - except Exception: - return False - return self._data == other_model._data - - def __repr__(self) -> str: - return str(self._data) - - -def _is_model(obj: typing.Any) -> bool: - return getattr(obj, "_is_model", False) - - -def _serialize(o, format: typing.Optional[str] = None): # pylint: disable=too-many-return-statements - if isinstance(o, list): - if format in _ARRAY_ENCODE_MAPPING and all(isinstance(x, str) for x in o): - return _ARRAY_ENCODE_MAPPING[format].join(o) - return [_serialize(x, format) for x in o] - if isinstance(o, dict): - return {k: _serialize(v, format) for k, v in o.items()} - if isinstance(o, set): - return {_serialize(x, format) for x in o} - if isinstance(o, tuple): - return tuple(_serialize(x, format) for x in o) - if isinstance(o, (bytes, bytearray)): - return _serialize_bytes(o, format) - if isinstance(o, decimal.Decimal): - return float(o) - if isinstance(o, enum.Enum): - return o.value - if isinstance(o, int): - if format == "str": - return str(o) - return o - try: - # First try datetime.datetime - return _serialize_datetime(o, format) - except AttributeError: - pass - # Last, try datetime.timedelta - try: - return _timedelta_as_isostr(o) - except AttributeError: - # This will be raised when it hits value.total_seconds in the method above - pass - return o - - -def _get_rest_field(attr_to_rest_field: dict[str, "_RestField"], rest_name: str) -> typing.Optional["_RestField"]: - try: - return next(rf for rf in attr_to_rest_field.values() if rf._rest_name == rest_name) - except StopIteration: - return None - - -def _create_value(rf: typing.Optional["_RestField"], value: typing.Any) -> typing.Any: - if not rf: - return _serialize(value, None) - if rf._is_multipart_file_input: - return value - if rf._is_model: - return _deserialize(rf._type, value) - if isinstance(value, ET.Element): - value = _deserialize(rf._type, value) - return _serialize(value, rf._format) - - -class Model(_MyMutableMapping): - _is_model = True - # label whether current class's _attr_to_rest_field has been calculated - # could not see _attr_to_rest_field directly because subclass inherits it from parent class - _calculated: set[str] = set() - - def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None: - class_name = self.__class__.__name__ - if len(args) > 1: - raise TypeError(f"{class_name}.__init__() takes 2 positional arguments but {len(args) + 1} were given") - dict_to_pass = { - rest_field._rest_name: rest_field._default - for rest_field in self._attr_to_rest_field.values() - if rest_field._default is not _UNSET - } - if args: - if isinstance(args[0], ET.Element): - dict_to_pass.update(self._init_from_xml(args[0])) - else: - dict_to_pass.update( - {k: _create_value(_get_rest_field(self._attr_to_rest_field, k), v) for k, v in args[0].items()} - ) - else: - non_attr_kwargs = [k for k in kwargs if k not in self._attr_to_rest_field] - if non_attr_kwargs: - # actual type errors only throw the first wrong keyword arg they see, so following that. - raise TypeError(f"{class_name}.__init__() got an unexpected keyword argument '{non_attr_kwargs[0]}'") - dict_to_pass.update( - { - self._attr_to_rest_field[k]._rest_name: _create_value(self._attr_to_rest_field[k], v) - for k, v in kwargs.items() - if v is not None - } - ) - super().__init__(dict_to_pass) - - def _init_from_xml(self, element: ET.Element) -> dict[str, typing.Any]: - """Deserialize an XML element into a dict mapping rest field names to values. - - :param ET.Element element: The XML element to deserialize from. - :returns: A dictionary of rest_name to deserialized value pairs. - :rtype: dict - """ - result: dict[str, typing.Any] = {} - model_meta = getattr(self, "_xml", {}) - existed_attr_keys: list[str] = [] - - for rf in self._attr_to_rest_field.values(): - prop_meta = getattr(rf, "_xml", {}) - xml_name = prop_meta.get("name", rf._rest_name) - xml_ns = _resolve_xml_ns(prop_meta, model_meta) - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - - # attribute - if prop_meta.get("attribute", False) and element.get(xml_name) is not None: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, element.get(xml_name)) - continue - - # unwrapped element is array - if prop_meta.get("unwrapped", False): - # unwrapped array could either use prop items meta/prop meta - _items_name = prop_meta.get("itemsName") - if _items_name: - xml_name = _items_name - _items_ns = prop_meta.get("itemsNs") - if _items_ns is not None: - xml_ns = _items_ns - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - items = element.findall(xml_name) # pyright: ignore - if len(items) > 0: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, items) - elif not rf._is_optional: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = [] - continue - - # text element is primitive type - if prop_meta.get("text", False): - if element.text is not None: - result[rf._rest_name] = _deserialize(rf._type, element.text) - continue - - # wrapped element could be normal property or array, it should only have one element - item = element.find(xml_name) - if item is not None: - existed_attr_keys.append(xml_name) - result[rf._rest_name] = _deserialize(rf._type, item) - - # rest thing is additional properties - for e in element: - if e.tag not in existed_attr_keys: - result[e.tag] = _convert_element(e) - - return result - - def copy(self) -> "Model": - return Model(self.__dict__) - - def __new__(cls, *args: typing.Any, **kwargs: typing.Any) -> Self: - if f"{cls.__module__}.{cls.__qualname__}" not in cls._calculated: - # we know the last nine classes in mro are going to be 'Model', '_MyMutableMapping', 'MutableMapping', - # 'Mapping', 'Collection', 'Sized', 'Iterable', 'Container' and 'object' - mros = cls.__mro__[:-9][::-1] # ignore parents, and reverse the mro order - attr_to_rest_field: dict[str, _RestField] = { # map attribute name to rest_field property - k: v for mro_class in mros for k, v in mro_class.__dict__.items() if k[0] != "_" and hasattr(v, "_type") - } - annotations = { - k: v - for mro_class in mros - if hasattr(mro_class, "__annotations__") - for k, v in mro_class.__annotations__.items() - } - for attr, rf in attr_to_rest_field.items(): - rf._module = cls.__module__ - if not rf._type: - rf._type = rf._get_deserialize_callable_from_annotation(annotations.get(attr, None)) - if not rf._rest_name_input: - rf._rest_name_input = attr - cls._attr_to_rest_field: dict[str, _RestField] = dict(attr_to_rest_field.items()) - cls._backcompat_attr_to_rest_field: dict[str, _RestField] = { - Model._get_backcompat_attribute_name(cls._attr_to_rest_field, attr): rf - for attr, rf in cls._attr_to_rest_field.items() - } - cls._calculated.add(f"{cls.__module__}.{cls.__qualname__}") - - return super().__new__(cls) - - def __init_subclass__(cls, discriminator: typing.Optional[str] = None) -> None: - for base in cls.__bases__: - if hasattr(base, "__mapping__"): - base.__mapping__[discriminator or cls.__name__] = cls # type: ignore - - @classmethod - def _get_backcompat_attribute_name(cls, attr_to_rest_field: dict[str, "_RestField"], attr_name: str) -> str: - rest_field_obj = attr_to_rest_field.get(attr_name) # pylint: disable=protected-access - if rest_field_obj is None: - return attr_name - original_tsp_name = getattr(rest_field_obj, "_original_tsp_name", None) # pylint: disable=protected-access - if original_tsp_name: - return original_tsp_name - return attr_name - - @classmethod - def _get_discriminator(cls, exist_discriminators) -> typing.Optional["_RestField"]: - for v in cls.__dict__.values(): - if isinstance(v, _RestField) and v._is_discriminator and v._rest_name not in exist_discriminators: - return v - return None - - @classmethod - def _deserialize(cls, data, exist_discriminators): - if not hasattr(cls, "__mapping__"): - return cls(data) - discriminator = cls._get_discriminator(exist_discriminators) - if discriminator is None: - return cls(data) - exist_discriminators.append(discriminator._rest_name) - if isinstance(data, ET.Element): - model_meta = getattr(cls, "_xml", {}) - prop_meta = getattr(discriminator, "_xml", {}) - xml_name = prop_meta.get("name", discriminator._rest_name) - xml_ns = _resolve_xml_ns(prop_meta, model_meta) - if xml_ns: - xml_name = "{" + xml_ns + "}" + xml_name - - if data.get(xml_name) is not None: - discriminator_value = data.get(xml_name) - else: - discriminator_value = data.find(xml_name).text # pyright: ignore - else: - discriminator_value = data.get(discriminator._rest_name) - mapped_cls = cls.__mapping__.get(discriminator_value, cls) # pyright: ignore # pylint: disable=no-member - return mapped_cls._deserialize(data, exist_discriminators) - - def as_dict(self, *, exclude_readonly: bool = False) -> dict[str, typing.Any]: - """Return a dict that can be turned into json using json.dump. - - :keyword bool exclude_readonly: Whether to remove the readonly properties. - :returns: A dict JSON compatible object - :rtype: dict - """ - - result = {} - readonly_props = [] - if exclude_readonly: - readonly_props = [p._rest_name for p in self._attr_to_rest_field.values() if _is_readonly(p)] - for k, v in self.items(): - if exclude_readonly and k in readonly_props: # pyright: ignore - continue - is_multipart_file_input = False - try: - is_multipart_file_input = next( - rf for rf in self._attr_to_rest_field.values() if rf._rest_name == k - )._is_multipart_file_input - except StopIteration: - pass - result[k] = v if is_multipart_file_input else Model._as_dict_value(v, exclude_readonly=exclude_readonly) - return result - - @staticmethod - def _as_dict_value(v: typing.Any, exclude_readonly: bool = False) -> typing.Any: - if v is None or isinstance(v, _Null): - return None - if isinstance(v, (list, tuple, set)): - return type(v)(Model._as_dict_value(x, exclude_readonly=exclude_readonly) for x in v) - if isinstance(v, dict): - return {dk: Model._as_dict_value(dv, exclude_readonly=exclude_readonly) for dk, dv in v.items()} - return v.as_dict(exclude_readonly=exclude_readonly) if hasattr(v, "as_dict") else v - - -def _deserialize_model(model_deserializer: typing.Optional[typing.Callable], obj): - if _is_model(obj): - return obj - return _deserialize(model_deserializer, obj) - - -def _deserialize_with_optional(if_obj_deserializer: typing.Optional[typing.Callable], obj): - if obj is None: - return obj - return _deserialize_with_callable(if_obj_deserializer, obj) - - -def _deserialize_with_union(deserializers, obj): - for deserializer in deserializers: - try: - return _deserialize(deserializer, obj) - except DeserializationError: - pass - raise DeserializationError() - - -def _deserialize_dict( - value_deserializer: typing.Optional[typing.Callable], - module: typing.Optional[str], - obj: dict[typing.Any, typing.Any], -): - if obj is None: - return obj - if isinstance(obj, ET.Element): - obj = {child.tag: child for child in obj} - return {k: _deserialize(value_deserializer, v, module) for k, v in obj.items()} - - -def _deserialize_multiple_sequence( - entry_deserializers: list[typing.Optional[typing.Callable]], - module: typing.Optional[str], - obj, -): - if obj is None: - return obj - return type(obj)(_deserialize(deserializer, entry, module) for entry, deserializer in zip(obj, entry_deserializers)) - - -def _is_array_encoded_deserializer(deserializer: functools.partial) -> bool: - return ( - isinstance(deserializer, functools.partial) - and isinstance(deserializer.args[0], functools.partial) - and deserializer.args[0].func == _deserialize_array_encoded # pylint: disable=comparison-with-callable - ) - - -def _deserialize_sequence( - deserializer: typing.Optional[typing.Callable], - module: typing.Optional[str], - obj, -): - if obj is None: - return obj - if isinstance(obj, ET.Element): - obj = list(obj) - - # encoded string may be deserialized to sequence - if isinstance(obj, str) and isinstance(deserializer, functools.partial): - # for list[str] - if _is_array_encoded_deserializer(deserializer): - return deserializer(obj) - - # for list[Union[...]] - if isinstance(deserializer.args[0], list): - for sub_deserializer in deserializer.args[0]: - if _is_array_encoded_deserializer(sub_deserializer): - return sub_deserializer(obj) - - if isinstance(obj, str): - raise DeserializationError() - return type(obj)(_deserialize(deserializer, entry, module) for entry in obj) - - -def _sorted_annotations(types: list[typing.Any]) -> list[typing.Any]: - return sorted( - types, - key=lambda x: hasattr(x, "__name__") and x.__name__.lower() in ("str", "float", "int", "bool"), - ) - - -def _get_deserialize_callable_from_annotation( # pylint: disable=too-many-return-statements, too-many-statements, too-many-branches - annotation: typing.Any, - module: typing.Optional[str], - rf: typing.Optional["_RestField"] = None, -) -> typing.Optional[typing.Callable[[typing.Any], typing.Any]]: - if not annotation: - return None - - # is it a type alias? - if isinstance(annotation, str): - if module is not None: - annotation = _get_type_alias_type(module, annotation) - - # is it a forward ref / in quotes? - if isinstance(annotation, (str, typing.ForwardRef)): - try: - model_name = annotation.__forward_arg__ # type: ignore - except AttributeError: - model_name = annotation - if module is not None: - annotation = _get_model(module, model_name) # type: ignore - - try: - if module and _is_model(annotation): - if rf: - rf._is_model = True - - return functools.partial(_deserialize_model, annotation) # pyright: ignore - except Exception: - pass - - # is it a literal? - try: - if annotation.__origin__ is typing.Literal: # pyright: ignore - return None - except AttributeError: - pass - - # is it optional? - try: - if any(a is _NONE_TYPE for a in annotation.__args__): # pyright: ignore - if rf: - rf._is_optional = True - if len(annotation.__args__) <= 2: # pyright: ignore - if_obj_deserializer = _get_deserialize_callable_from_annotation( - next(a for a in annotation.__args__ if a is not _NONE_TYPE), module, rf # pyright: ignore - ) - - return functools.partial(_deserialize_with_optional, if_obj_deserializer) - # the type is Optional[Union[...]], we need to remove the None type from the Union - annotation_copy = copy.copy(annotation) - annotation_copy.__args__ = [a for a in annotation_copy.__args__ if a is not _NONE_TYPE] # pyright: ignore - return _get_deserialize_callable_from_annotation(annotation_copy, module, rf) - except AttributeError: - pass - - # is it union? - if getattr(annotation, "__origin__", None) is typing.Union: - # initial ordering is we make `string` the last deserialization option, because it is often them most generic - deserializers = [ - _get_deserialize_callable_from_annotation(arg, module, rf) - for arg in _sorted_annotations(annotation.__args__) # pyright: ignore - ] - - return functools.partial(_deserialize_with_union, deserializers) - - try: - annotation_name = ( - annotation.__name__ if hasattr(annotation, "__name__") else annotation._name # pyright: ignore - ) - if annotation_name.lower() == "dict": - value_deserializer = _get_deserialize_callable_from_annotation( - annotation.__args__[1], module, rf # pyright: ignore - ) - - return functools.partial( - _deserialize_dict, - value_deserializer, - module, - ) - except (AttributeError, IndexError): - pass - try: - annotation_name = ( - annotation.__name__ if hasattr(annotation, "__name__") else annotation._name # pyright: ignore - ) - if annotation_name.lower() in ["list", "set", "tuple", "sequence"]: - if len(annotation.__args__) > 1: # pyright: ignore - entry_deserializers = [ - _get_deserialize_callable_from_annotation(dt, module, rf) - for dt in annotation.__args__ # pyright: ignore - ] - return functools.partial(_deserialize_multiple_sequence, entry_deserializers, module) - deserializer = _get_deserialize_callable_from_annotation( - annotation.__args__[0], module, rf # pyright: ignore - ) - - return functools.partial(_deserialize_sequence, deserializer, module) - except (TypeError, IndexError, AttributeError, SyntaxError): - pass - - def _deserialize_default( - deserializer, - obj, - ): - if obj is None: - return obj - try: - return _deserialize_with_callable(deserializer, obj) - except Exception: - pass - return obj - - if get_deserializer(annotation, rf): - return functools.partial(_deserialize_default, get_deserializer(annotation, rf)) - - return functools.partial(_deserialize_default, annotation) - - -def _deserialize_with_callable( - deserializer: typing.Optional[typing.Callable[[typing.Any], typing.Any]], - value: typing.Any, -): # pylint: disable=too-many-return-statements - try: - if value is None or isinstance(value, _Null): - return None - if isinstance(value, ET.Element): - if deserializer is str: - return value.text or "" - if deserializer is int: - return int(value.text) if value.text else None - if deserializer is float: - return float(value.text) if value.text else None - if deserializer is bool: - return value.text == "true" if value.text else None - if deserializer and deserializer in _DESERIALIZE_MAPPING.values(): - return deserializer(value.text) if value.text else None - if deserializer and deserializer in _DESERIALIZE_MAPPING_WITHFORMAT.values(): - return deserializer(value.text) if value.text else None - if deserializer is None: - return value - if deserializer in [int, float, bool]: - return deserializer(value) - if isinstance(deserializer, CaseInsensitiveEnumMeta): - try: - return deserializer(value.text if isinstance(value, ET.Element) else value) - except ValueError: - # for unknown value, return raw value - return value.text if isinstance(value, ET.Element) else value - if isinstance(deserializer, type) and issubclass(deserializer, Model): - return deserializer._deserialize(value, []) - return typing.cast(typing.Callable[[typing.Any], typing.Any], deserializer)(value) - except Exception as e: - raise DeserializationError() from e - - -def _deserialize( - deserializer: typing.Any, - value: typing.Any, - module: typing.Optional[str] = None, - rf: typing.Optional["_RestField"] = None, - format: typing.Optional[str] = None, -) -> typing.Any: - if isinstance(value, PipelineResponse): - value = value.http_response.json() - if rf is None and format: - rf = _RestField(format=format) - if not isinstance(deserializer, functools.partial): - deserializer = _get_deserialize_callable_from_annotation(deserializer, module, rf) - return _deserialize_with_callable(deserializer, value) - - -def _failsafe_deserialize( - deserializer: typing.Any, - response: HttpResponse, - module: typing.Optional[str] = None, - rf: typing.Optional["_RestField"] = None, - format: typing.Optional[str] = None, -) -> typing.Any: - try: - return _deserialize(deserializer, response.json(), module, rf, format) - except Exception: # pylint: disable=broad-except - _LOGGER.warning( - "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True - ) - return None - - -def _failsafe_deserialize_xml( - deserializer: typing.Any, - response: HttpResponse, -) -> typing.Any: - try: - return _deserialize_xml(deserializer, response.text()) - except Exception: # pylint: disable=broad-except - _LOGGER.warning( - "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True - ) - return None - - -# pylint: disable=too-many-instance-attributes -class _RestField: - def __init__( - self, - *, - name: typing.Optional[str] = None, - type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin - is_discriminator: bool = False, - visibility: typing.Optional[list[str]] = None, - default: typing.Any = _UNSET, - format: typing.Optional[str] = None, - is_multipart_file_input: bool = False, - xml: typing.Optional[dict[str, typing.Any]] = None, - original_tsp_name: typing.Optional[str] = None, - ): - self._type = type - self._rest_name_input = name - self._module: typing.Optional[str] = None - self._is_discriminator = is_discriminator - self._visibility = visibility - self._is_model = False - self._is_optional = False - self._default = default - self._format = format - self._is_multipart_file_input = is_multipart_file_input - self._xml = xml if xml is not None else {} - self._original_tsp_name = original_tsp_name - - @property - def _class_type(self) -> typing.Any: - result = getattr(self._type, "args", [None])[0] - # type may be wrapped by nested functools.partial so we need to check for that - if isinstance(result, functools.partial): - return getattr(result, "args", [None])[0] - return result - - @property - def _rest_name(self) -> str: - if self._rest_name_input is None: - raise ValueError("Rest name was never set") - return self._rest_name_input - - def __get__(self, obj: Model, type=None): # pylint: disable=redefined-builtin - # by this point, type and rest_name will have a value bc we default - # them in __new__ of the Model class - # Use _data.get() directly to avoid triggering __getitem__ which clears the cache - item = obj._data.get(self._rest_name) - if item is None: - return item - if self._is_model: - return item - - # For mutable types, we want mutations to directly affect _data - # Check if we've already deserialized this value - cache_attr = f"_deserialized_{self._rest_name}" - if hasattr(obj, cache_attr): - # Return the value from _data directly (it's been deserialized in place) - return obj._data.get(self._rest_name) - - deserialized = _deserialize(self._type, _serialize(item, self._format), rf=self) - - # For mutable types, store the deserialized value back in _data - # so mutations directly affect _data - if isinstance(deserialized, (dict, list, set)): - obj._data[self._rest_name] = deserialized - object.__setattr__(obj, cache_attr, True) # Mark as deserialized - return deserialized - - return deserialized - - def __set__(self, obj: Model, value) -> None: - # Clear the cached deserialized object when setting a new value - cache_attr = f"_deserialized_{self._rest_name}" - if hasattr(obj, cache_attr): - object.__delattr__(obj, cache_attr) - - if value is None: - # we want to wipe out entries if users set attr to None - try: - obj.__delitem__(self._rest_name) - except KeyError: - pass - return - if self._is_model: - if not _is_model(value): - value = _deserialize(self._type, value) - obj.__setitem__(self._rest_name, value) - return - obj.__setitem__(self._rest_name, _serialize(value, self._format)) - - def _get_deserialize_callable_from_annotation( - self, annotation: typing.Any - ) -> typing.Optional[typing.Callable[[typing.Any], typing.Any]]: - return _get_deserialize_callable_from_annotation(annotation, self._module, self) - - -def rest_field( - *, - name: typing.Optional[str] = None, - type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin - visibility: typing.Optional[list[str]] = None, - default: typing.Any = _UNSET, - format: typing.Optional[str] = None, - is_multipart_file_input: bool = False, - xml: typing.Optional[dict[str, typing.Any]] = None, - original_tsp_name: typing.Optional[str] = None, -) -> typing.Any: - return _RestField( - name=name, - type=type, - visibility=visibility, - default=default, - format=format, - is_multipart_file_input=is_multipart_file_input, - xml=xml, - original_tsp_name=original_tsp_name, - ) - - -def rest_discriminator( - *, - name: typing.Optional[str] = None, - type: typing.Optional[typing.Callable] = None, # pylint: disable=redefined-builtin - visibility: typing.Optional[list[str]] = None, - xml: typing.Optional[dict[str, typing.Any]] = None, -) -> typing.Any: - return _RestField(name=name, type=type, is_discriminator=True, visibility=visibility, xml=xml) - - -def serialize_xml(model: Model, exclude_readonly: bool = False) -> str: - """Serialize a model to XML. - - :param Model model: The model to serialize. - :param bool exclude_readonly: Whether to exclude readonly properties. - :returns: The XML representation of the model. - :rtype: str - """ - return ET.tostring(_get_element(model, exclude_readonly), encoding="unicode") # type: ignore - - -def _get_xml_ns(meta: dict[str, typing.Any]) -> typing.Optional[str]: - """Return the XML namespace from a metadata dict, checking both 'ns' (old-style) and 'namespace' (DPG) keys. - - :param dict meta: The metadata dictionary to extract namespace from. - :returns: The namespace string if 'ns' or 'namespace' key is present, None otherwise. - :rtype: str or None - """ - ns = meta.get("ns") - if ns is None: - ns = meta.get("namespace") - return ns - - -def _resolve_xml_ns( - prop_meta: dict[str, typing.Any], model_meta: typing.Optional[dict[str, typing.Any]] = None -) -> typing.Optional[str]: - """Resolve XML namespace for a property, falling back to model namespace when appropriate. - - Checks the property metadata first; if no namespace is found and the model does not declare - an explicit prefix, falls back to the model-level namespace. - - :param dict prop_meta: The property metadata dictionary. - :param dict model_meta: The model metadata dictionary, used as fallback. - :returns: The resolved namespace string, or None. - :rtype: str or None - """ - ns = _get_xml_ns(prop_meta) - if ns is None and model_meta is not None and not model_meta.get("prefix"): - ns = _get_xml_ns(model_meta) - return ns - - -def _set_xml_attribute(element: ET.Element, name: str, value: typing.Any, prop_meta: dict[str, typing.Any]) -> None: - """Set an XML attribute on an element, handling namespace prefix registration. - - :param ET.Element element: The element to set the attribute on. - :param str name: The default attribute name (wire name). - :param any value: The attribute value. - :param dict prop_meta: The property metadata dictionary. - """ - xml_name = prop_meta.get("name", name) - _attr_ns = _get_xml_ns(prop_meta) - if _attr_ns: - _attr_prefix = prop_meta.get("prefix") - if _attr_prefix: - _safe_register_namespace(_attr_prefix, _attr_ns) - xml_name = "{" + _attr_ns + "}" + xml_name - element.set(xml_name, _get_primitive_type_value(value)) - - -def _get_element( - o: typing.Any, - exclude_readonly: bool = False, - parent_meta: typing.Optional[dict[str, typing.Any]] = None, - wrapped_element: typing.Optional[ET.Element] = None, -) -> typing.Union[ET.Element, list[ET.Element]]: - if _is_model(o): - model_meta = getattr(o, "_xml", {}) - - # if prop is a model, then use the prop element directly, else generate a wrapper of model - if wrapped_element is None: - # When serializing as an array item (parent_meta is set), check if the parent has an - # explicit itemsName. This ensures correct element names for unwrapped arrays (where - # the element tag is the property/items name, not the model type name). - _items_name = parent_meta.get("itemsName") if parent_meta is not None else None - element_name = _items_name if _items_name else (model_meta.get("name") or o.__class__.__name__) - _model_ns = _get_xml_ns(model_meta) - wrapped_element = _create_xml_element( - element_name, - model_meta.get("prefix"), - _model_ns, - ) - - readonly_props = [] - if exclude_readonly: - readonly_props = [p._rest_name for p in o._attr_to_rest_field.values() if _is_readonly(p)] - - for k, v in o.items(): - # do not serialize readonly properties - if exclude_readonly and k in readonly_props: - continue - - prop_rest_field = _get_rest_field(o._attr_to_rest_field, k) - if prop_rest_field: - prop_meta = getattr(prop_rest_field, "_xml").copy() - # use the wire name as xml name if no specific name is set - if prop_meta.get("name") is None: - prop_meta["name"] = k - else: - # additional properties will not have rest field, use the wire name as xml name - prop_meta = {"name": k} - - # Propagate model namespace to properties only for old-style "ns"-keyed models. - # DPG-generated models use the "namespace" key and explicitly declare namespace on - # each property that needs it, so propagation is intentionally skipped for them. - if prop_meta.get("ns") is None and model_meta.get("ns"): - prop_meta["ns"] = model_meta.get("ns") - prop_meta["prefix"] = model_meta.get("prefix") - - if prop_meta.get("unwrapped", False): - # unwrapped could only set on array - wrapped_element.extend(_get_element(v, exclude_readonly, prop_meta)) - elif prop_meta.get("text", False): - # text could only set on primitive type - wrapped_element.text = _get_primitive_type_value(v) - elif prop_meta.get("attribute", False): - _set_xml_attribute(wrapped_element, k, v, prop_meta) - else: - # other wrapped prop element - wrapped_element.append(_get_wrapped_element(v, exclude_readonly, prop_meta)) - return wrapped_element - if isinstance(o, list): - return [_get_element(x, exclude_readonly, parent_meta) for x in o] # type: ignore - if isinstance(o, dict): - result = [] - _dict_ns = _get_xml_ns(parent_meta) if parent_meta else None - for k, v in o.items(): - result.append( - _get_wrapped_element( - v, - exclude_readonly, - { - "name": k, - "ns": _dict_ns, - "prefix": parent_meta.get("prefix") if parent_meta else None, - }, - ) - ) - return result - - # primitive case need to create element based on parent_meta - if parent_meta: - _items_ns = parent_meta.get("itemsNs") - if _items_ns is None: - _items_ns = _get_xml_ns(parent_meta) - return _get_wrapped_element( - o, - exclude_readonly, - { - "name": parent_meta.get("itemsName", parent_meta.get("name")), - "prefix": parent_meta.get("itemsPrefix", parent_meta.get("prefix")), - "ns": _items_ns, - }, - ) - - raise ValueError("Could not serialize value into xml: " + o) - - -def _get_wrapped_element( - v: typing.Any, - exclude_readonly: bool, - meta: typing.Optional[dict[str, typing.Any]], -) -> ET.Element: - _meta_ns = _get_xml_ns(meta) if meta else None - wrapped_element = _create_xml_element( - meta.get("name") if meta else None, meta.get("prefix") if meta else None, _meta_ns - ) - if isinstance(v, (dict, list)): - wrapped_element.extend(_get_element(v, exclude_readonly, meta)) - elif _is_model(v): - _get_element(v, exclude_readonly, meta, wrapped_element) - else: - wrapped_element.text = _get_primitive_type_value(v) - return wrapped_element # type: ignore[no-any-return] - - -def _get_primitive_type_value(v) -> str: - if v is True: - return "true" - if v is False: - return "false" - if isinstance(v, _Null): - return "" - return str(v) - - -def _safe_register_namespace(prefix: str, ns: str) -> None: - """Register an XML namespace prefix, handling reserved prefix patterns. - - Some prefixes (e.g. 'ns2') match Python's reserved 'ns\\d+' pattern used for - auto-generated prefixes, causing register_namespace to raise ValueError. - Falls back to directly registering in the internal namespace map. - - :param str prefix: The namespace prefix to register. - :param str ns: The namespace URI. - """ - try: - ET.register_namespace(prefix, ns) - except ValueError: - _ns_map = getattr(ET, "_namespace_map", None) - if _ns_map is not None: - _ns_map[ns] = prefix - - -def _create_xml_element( - tag: typing.Any, prefix: typing.Optional[str] = None, ns: typing.Optional[str] = None -) -> ET.Element: - if prefix and ns: - _safe_register_namespace(prefix, ns) - if ns: - return ET.Element("{" + ns + "}" + tag) - return ET.Element(tag) - - -def _deserialize_xml( - deserializer: typing.Any, - value: str, -) -> typing.Any: - element = ET.fromstring(value) # nosec - return _deserialize(deserializer, element) - - -def _convert_element(e: ET.Element): - # dict case - if len(e.attrib) > 0 or len({child.tag for child in e}) > 1: - dict_result: dict[str, typing.Any] = {} - for child in e: - if dict_result.get(child.tag) is not None: - if isinstance(dict_result[child.tag], list): - dict_result[child.tag].append(_convert_element(child)) - else: - dict_result[child.tag] = [dict_result[child.tag], _convert_element(child)] - else: - dict_result[child.tag] = _convert_element(child) - dict_result.update(e.attrib) - return dict_result - # array case - if len(e) > 0: - array_result: list[typing.Any] = [] - for child in e: - array_result.append(_convert_element(child)) - return array_result - # primitive case - return e.text diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/serialization.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/serialization.py deleted file mode 100644 index 81ec1de5922b..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/_utils/serialization.py +++ /dev/null @@ -1,2041 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression,too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -# pyright: reportUnnecessaryTypeIgnoreComment=false - -from base64 import b64decode, b64encode -import calendar -import datetime -import decimal -import email -from enum import Enum -import json -import logging -import re -import sys -import codecs -from typing import ( - Any, - cast, - Optional, - Union, - AnyStr, - IO, - Mapping, - Callable, - MutableMapping, -) - -try: - from urllib import quote # type: ignore -except ImportError: - from urllib.parse import quote -import xml.etree.ElementTree as ET - -import isodate # type: ignore -from typing_extensions import Self - -from azure.core.exceptions import DeserializationError, SerializationError -from azure.core.serialization import NULL as CoreNull - -_BOM = codecs.BOM_UTF8.decode(encoding="utf-8") - -JSON = MutableMapping[str, Any] - - -class RawDeserializer: - - # Accept "text" because we're open minded people... - JSON_REGEXP = re.compile(r"^(application|text)/([a-z+.]+\+)?json$") - - # Name used in context - CONTEXT_NAME = "deserialized_data" - - @classmethod - def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: Optional[str] = None) -> Any: - """Decode data according to content-type. - - Accept a stream of data as well, but will be load at once in memory for now. - - If no content-type, will return the string version (not bytes, not stream) - - :param data: Input, could be bytes or stream (will be decoded with UTF8) or text - :type data: str or bytes or IO - :param str content_type: The content type. - :return: The deserialized data. - :rtype: object - """ - if hasattr(data, "read"): - # Assume a stream - data = cast(IO, data).read() - - if isinstance(data, bytes): - data_as_str = data.decode(encoding="utf-8-sig") - else: - # Explain to mypy the correct type. - data_as_str = cast(str, data) - - # Remove Byte Order Mark if present in string - data_as_str = data_as_str.lstrip(_BOM) - - if content_type is None: - return data - - if cls.JSON_REGEXP.match(content_type): - try: - return json.loads(data_as_str) - except ValueError as err: - raise DeserializationError("JSON is invalid: {}".format(err), err) from err - elif "xml" in (content_type or []): - try: - - try: - if isinstance(data, unicode): # type: ignore - # If I'm Python 2.7 and unicode XML will scream if I try a "fromstring" on unicode string - data_as_str = data_as_str.encode(encoding="utf-8") # type: ignore - except NameError: - pass - - return ET.fromstring(data_as_str) # nosec - except ET.ParseError as err: - # It might be because the server has an issue, and returned JSON with - # content-type XML.... - # So let's try a JSON load, and if it's still broken - # let's flow the initial exception - def _json_attemp(data): - try: - return True, json.loads(data) - except ValueError: - return False, None # Don't care about this one - - success, json_result = _json_attemp(data) - if success: - return json_result - # If i'm here, it's not JSON, it's not XML, let's scream - # and raise the last context in this block (the XML exception) - # The function hack is because Py2.7 messes up with exception - # context otherwise. - _LOGGER.critical("Wasn't XML not JSON, failing") - raise DeserializationError("XML is invalid") from err - elif content_type.startswith("text/"): - return data_as_str - raise DeserializationError("Cannot deserialize content-type: {}".format(content_type)) - - @classmethod - def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], headers: Mapping) -> Any: - """Deserialize from HTTP response. - - Use bytes and headers to NOT use any requests/aiohttp or whatever - specific implementation. - Headers will tested for "content-type" - - :param bytes body_bytes: The body of the response. - :param dict headers: The headers of the response. - :returns: The deserialized data. - :rtype: object - """ - # Try to use content-type from headers if available - content_type = None - if "content-type" in headers: - content_type = headers["content-type"].split(";")[0].strip().lower() - # Ouch, this server did not declare what it sent... - # Let's guess it's JSON... - # Also, since Autorest was considering that an empty body was a valid JSON, - # need that test as well.... - else: - content_type = "application/json" - - if body_bytes: - return cls.deserialize_from_text(body_bytes, content_type) - return None - - -_LOGGER = logging.getLogger(__name__) - -try: - _long_type = long # type: ignore -except NameError: - _long_type = int - -TZ_UTC = datetime.timezone.utc - -_FLATTEN = re.compile(r"(? None: - self.additional_properties: Optional[dict[str, Any]] = {} - for k in kwargs: # pylint: disable=consider-using-dict-items - if k not in self._attribute_map: - _LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__) - elif k in self._validation and self._validation[k].get("readonly", False): - _LOGGER.warning("Readonly attribute %s will be ignored in class %s", k, self.__class__) - else: - setattr(self, k, kwargs[k]) - - def __eq__(self, other: Any) -> bool: - """Compare objects by comparing all attributes. - - :param object other: The object to compare - :returns: True if objects are equal - :rtype: bool - """ - if isinstance(other, self.__class__): - return self.__dict__ == other.__dict__ - return False - - def __ne__(self, other: Any) -> bool: - """Compare objects by comparing all attributes. - - :param object other: The object to compare - :returns: True if objects are not equal - :rtype: bool - """ - return not self.__eq__(other) - - def __str__(self) -> str: - return str(self.__dict__) - - @classmethod - def enable_additional_properties_sending(cls) -> None: - cls._attribute_map["additional_properties"] = {"key": "", "type": "{object}"} - - @classmethod - def is_xml_model(cls) -> bool: - try: - cls._xml_map # type: ignore - except AttributeError: - return False - return True - - @classmethod - def _create_xml_node(cls): - """Create XML node. - - :returns: The XML node - :rtype: xml.etree.ElementTree.Element - """ - try: - xml_map = cls._xml_map # type: ignore - except AttributeError: - xml_map = {} - - return _create_xml_node(xml_map.get("name", cls.__name__), xml_map.get("prefix", None), xml_map.get("ns", None)) - - def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: - """Return the JSON that would be sent to server from this model. - - This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`. - - If you want XML serialization, you can pass the kwargs is_xml=True. - - :param bool keep_readonly: If you want to serialize the readonly attributes - :returns: A dict JSON compatible object - :rtype: dict - """ - serializer = Serializer(self._infer_class_models()) - return serializer._serialize( # type: ignore # pylint: disable=protected-access - self, keep_readonly=keep_readonly, **kwargs - ) - - def as_dict( - self, - keep_readonly: bool = True, - key_transformer: Callable[[str, dict[str, Any], Any], Any] = attribute_transformer, - **kwargs: Any - ) -> JSON: - """Return a dict that can be serialized using json.dump. - - Advanced usage might optionally use a callback as parameter: - - .. code::python - - def my_key_transformer(key, attr_desc, value): - return key - - Key is the attribute name used in Python. Attr_desc - is a dict of metadata. Currently contains 'type' with the - msrest type and 'key' with the RestAPI encoded key. - Value is the current value in this object. - - The string returned will be used to serialize the key. - If the return type is a list, this is considered hierarchical - result dict. - - See the three examples in this file: - - - attribute_transformer - - full_restapi_key_transformer - - last_restapi_key_transformer - - If you want XML serialization, you can pass the kwargs is_xml=True. - - :param bool keep_readonly: If you want to serialize the readonly attributes - :param function key_transformer: A key transformer function. - :returns: A dict JSON compatible object - :rtype: dict - """ - serializer = Serializer(self._infer_class_models()) - return serializer._serialize( # type: ignore # pylint: disable=protected-access - self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs - ) - - @classmethod - def _infer_class_models(cls): - try: - str_models = cls.__module__.rsplit(".", 1)[0] - models = sys.modules[str_models] - client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} - if cls.__name__ not in client_models: - raise ValueError("Not Autorest generated code") - except Exception: # pylint: disable=broad-exception-caught - # Assume it's not Autorest generated (tests?). Add ourselves as dependencies. - client_models = {cls.__name__: cls} - return client_models - - @classmethod - def deserialize(cls, data: Any, content_type: Optional[str] = None) -> Self: - """Parse a str using the RestAPI syntax and return a model. - - :param str data: A str using RestAPI structure. JSON by default. - :param str content_type: JSON by default, set application/xml if XML. - :returns: An instance of this model - :raises DeserializationError: if something went wrong - :rtype: Self - """ - deserializer = Deserializer(cls._infer_class_models()) - return deserializer(cls.__name__, data, content_type=content_type) # type: ignore - - @classmethod - def from_dict( - cls, - data: Any, - key_extractors: Optional[Callable[[str, dict[str, Any], Any], Any]] = None, - content_type: Optional[str] = None, - ) -> Self: - """Parse a dict using given key extractor return a model. - - By default consider key - extractors (rest_key_case_insensitive_extractor, attribute_key_case_insensitive_extractor - and last_rest_key_case_insensitive_extractor) - - :param dict data: A dict using RestAPI structure - :param function key_extractors: A key extractor function. - :param str content_type: JSON by default, set application/xml if XML. - :returns: An instance of this model - :raises DeserializationError: if something went wrong - :rtype: Self - """ - deserializer = Deserializer(cls._infer_class_models()) - deserializer.key_extractors = ( # type: ignore - [ # type: ignore - attribute_key_case_insensitive_extractor, - rest_key_case_insensitive_extractor, - last_rest_key_case_insensitive_extractor, - ] - if key_extractors is None - else key_extractors - ) - return deserializer(cls.__name__, data, content_type=content_type) # type: ignore - - @classmethod - def _flatten_subtype(cls, key, objects): - if "_subtype_map" not in cls.__dict__: - return {} - result = dict(cls._subtype_map[key]) - for valuetype in cls._subtype_map[key].values(): - result |= objects[valuetype]._flatten_subtype(key, objects) # pylint: disable=protected-access - return result - - @classmethod - def _classify(cls, response, objects): - """Check the class _subtype_map for any child classes. - We want to ignore any inherited _subtype_maps. - - :param dict response: The initial data - :param dict objects: The class objects - :returns: The class to be used - :rtype: class - """ - for subtype_key in cls.__dict__.get("_subtype_map", {}).keys(): - subtype_value = None - - if not isinstance(response, ET.Element): - rest_api_response_key = cls._get_rest_key_parts(subtype_key)[-1] - subtype_value = response.get(rest_api_response_key, None) or response.get(subtype_key, None) - else: - subtype_value = xml_key_extractor(subtype_key, cls._attribute_map[subtype_key], response) - if subtype_value: - # Try to match base class. Can be class name only - # (bug to fix in Autorest to support x-ms-discriminator-name) - if cls.__name__ == subtype_value: - return cls - flatten_mapping_type = cls._flatten_subtype(subtype_key, objects) - try: - return objects[flatten_mapping_type[subtype_value]] # type: ignore - except KeyError: - _LOGGER.warning( - "Subtype value %s has no mapping, use base class %s.", - subtype_value, - cls.__name__, - ) - break - else: - _LOGGER.warning("Discriminator %s is absent or null, use base class %s.", subtype_key, cls.__name__) - break - return cls - - @classmethod - def _get_rest_key_parts(cls, attr_key): - """Get the RestAPI key of this attr, split it and decode part - :param str attr_key: Attribute key must be in attribute_map. - :returns: A list of RestAPI part - :rtype: list - """ - rest_split_key = _FLATTEN.split(cls._attribute_map[attr_key]["key"]) - return [_decode_attribute_map_key(key_part) for key_part in rest_split_key] - - -def _decode_attribute_map_key(key): - """This decode a key in an _attribute_map to the actual key we want to look at - inside the received data. - - :param str key: A key string from the generated code - :returns: The decoded key - :rtype: str - """ - return key.replace("\\.", ".") - - -class Serializer: # pylint: disable=too-many-public-methods - """Request object model serializer.""" - - basic_types = {str: "str", int: "int", bool: "bool", float: "float"} - - _xml_basic_types_serializers = {"bool": lambda x: str(x).lower()} - days = {0: "Mon", 1: "Tue", 2: "Wed", 3: "Thu", 4: "Fri", 5: "Sat", 6: "Sun"} - months = { - 1: "Jan", - 2: "Feb", - 3: "Mar", - 4: "Apr", - 5: "May", - 6: "Jun", - 7: "Jul", - 8: "Aug", - 9: "Sep", - 10: "Oct", - 11: "Nov", - 12: "Dec", - } - validation = { - "min_length": lambda x, y: len(x) < y, - "max_length": lambda x, y: len(x) > y, - "minimum": lambda x, y: x < y, - "maximum": lambda x, y: x > y, - "minimum_ex": lambda x, y: x <= y, - "maximum_ex": lambda x, y: x >= y, - "min_items": lambda x, y: len(x) < y, - "max_items": lambda x, y: len(x) > y, - "pattern": lambda x, y: not re.match(y, x, re.UNICODE), - "unique": lambda x, y: len(x) != len(set(x)), - "multiple": lambda x, y: x % y != 0, - } - - def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: - self.serialize_type = { - "iso-8601": Serializer.serialize_iso, - "rfc-1123": Serializer.serialize_rfc, - "unix-time": Serializer.serialize_unix, - "duration": Serializer.serialize_duration, - "date": Serializer.serialize_date, - "time": Serializer.serialize_time, - "decimal": Serializer.serialize_decimal, - "long": Serializer.serialize_long, - "bytearray": Serializer.serialize_bytearray, - "base64": Serializer.serialize_base64, - "object": self.serialize_object, - "[]": self.serialize_iter, - "{}": self.serialize_dict, - } - self.dependencies: dict[str, type] = dict(classes) if classes else {} - self.key_transformer = full_restapi_key_transformer - self.client_side_validation = True - - def _serialize( # pylint: disable=too-many-nested-blocks, too-many-branches, too-many-statements, too-many-locals - self, target_obj, data_type=None, **kwargs - ): - """Serialize data into a string according to type. - - :param object target_obj: The data to be serialized. - :param str data_type: The type to be serialized from. - :rtype: str, dict - :raises SerializationError: if serialization fails. - :returns: The serialized data. - """ - key_transformer = kwargs.get("key_transformer", self.key_transformer) - keep_readonly = kwargs.get("keep_readonly", False) - if target_obj is None: - return None - - attr_name = None - class_name = target_obj.__class__.__name__ - - if data_type: - return self.serialize_data(target_obj, data_type, **kwargs) - - if not hasattr(target_obj, "_attribute_map"): - data_type = type(target_obj).__name__ - if data_type in self.basic_types.values(): - return self.serialize_data(target_obj, data_type, **kwargs) - - # Force "is_xml" kwargs if we detect a XML model - try: - is_xml_model_serialization = kwargs["is_xml"] - except KeyError: - is_xml_model_serialization = kwargs.setdefault("is_xml", target_obj.is_xml_model()) - - serialized = {} - if is_xml_model_serialization: - serialized = target_obj._create_xml_node() # pylint: disable=protected-access - try: - attributes = target_obj._attribute_map # pylint: disable=protected-access - for attr, attr_desc in attributes.items(): - attr_name = attr - if not keep_readonly and target_obj._validation.get( # pylint: disable=protected-access - attr_name, {} - ).get("readonly", False): - continue - - if attr_name == "additional_properties" and attr_desc["key"] == "": - if target_obj.additional_properties is not None: - serialized |= target_obj.additional_properties - continue - try: - - orig_attr = getattr(target_obj, attr) - if is_xml_model_serialization: - pass # Don't provide "transformer" for XML for now. Keep "orig_attr" - else: # JSON - keys, orig_attr = key_transformer(attr, attr_desc.copy(), orig_attr) - keys = keys if isinstance(keys, list) else [keys] - - kwargs["serialization_ctxt"] = attr_desc - new_attr = self.serialize_data(orig_attr, attr_desc["type"], **kwargs) - - if is_xml_model_serialization: - xml_desc = attr_desc.get("xml", {}) - xml_name = xml_desc.get("name", attr_desc["key"]) - xml_prefix = xml_desc.get("prefix", None) - xml_ns = xml_desc.get("ns", None) - if xml_desc.get("attr", False): - if xml_ns: - ET.register_namespace(xml_prefix, xml_ns) - xml_name = "{{{}}}{}".format(xml_ns, xml_name) - serialized.set(xml_name, new_attr) # type: ignore - continue - if xml_desc.get("text", False): - serialized.text = new_attr # type: ignore - continue - if isinstance(new_attr, list): - serialized.extend(new_attr) # type: ignore - elif isinstance(new_attr, ET.Element): - # If the down XML has no XML/Name, - # we MUST replace the tag with the local tag. But keeping the namespaces. - if "name" not in getattr(orig_attr, "_xml_map", {}): - splitted_tag = new_attr.tag.split("}") - if len(splitted_tag) == 2: # Namespace - new_attr.tag = "}".join([splitted_tag[0], xml_name]) - else: - new_attr.tag = xml_name - serialized.append(new_attr) # type: ignore - else: # That's a basic type - # Integrate namespace if necessary - local_node = _create_xml_node(xml_name, xml_prefix, xml_ns) - local_node.text = str(new_attr) - serialized.append(local_node) # type: ignore - else: # JSON - for k in reversed(keys): # type: ignore - new_attr = {k: new_attr} - - _new_attr = new_attr - _serialized = serialized - for k in keys: # type: ignore - if k not in _serialized: - _serialized.update(_new_attr) # type: ignore - _new_attr = _new_attr[k] # type: ignore - _serialized = _serialized[k] - except ValueError as err: - if isinstance(err, SerializationError): - raise - - except (AttributeError, KeyError, TypeError) as err: - msg = "Attribute {} in object {} cannot be serialized.\n{}".format(attr_name, class_name, str(target_obj)) - raise SerializationError(msg) from err - return serialized - - def body(self, data, data_type, **kwargs): - """Serialize data intended for a request body. - - :param object data: The data to be serialized. - :param str data_type: The type to be serialized from. - :rtype: dict - :raises SerializationError: if serialization fails. - :raises ValueError: if data is None - :returns: The serialized request body - """ - - # Just in case this is a dict - internal_data_type_str = data_type.strip("[]{}") - internal_data_type = self.dependencies.get(internal_data_type_str, None) - try: - is_xml_model_serialization = kwargs["is_xml"] - except KeyError: - if internal_data_type and issubclass(internal_data_type, Model): - is_xml_model_serialization = kwargs.setdefault("is_xml", internal_data_type.is_xml_model()) - else: - is_xml_model_serialization = False - if internal_data_type and not isinstance(internal_data_type, Enum): - try: - deserializer = Deserializer(self.dependencies) - # Since it's on serialization, it's almost sure that format is not JSON REST - # We're not able to deal with additional properties for now. - deserializer.additional_properties_detection = False - if is_xml_model_serialization: - deserializer.key_extractors = [ # type: ignore - attribute_key_case_insensitive_extractor, - ] - else: - deserializer.key_extractors = [ - rest_key_case_insensitive_extractor, - attribute_key_case_insensitive_extractor, - last_rest_key_case_insensitive_extractor, - ] - data = deserializer._deserialize(data_type, data) # pylint: disable=protected-access - except DeserializationError as err: - raise SerializationError("Unable to build a model: " + str(err)) from err - - return self._serialize(data, data_type, **kwargs) - - def url(self, name, data, data_type, **kwargs): - """Serialize data intended for a URL path. - - :param str name: The name of the URL path parameter. - :param object data: The data to be serialized. - :param str data_type: The type to be serialized from. - :rtype: str - :returns: The serialized URL path - :raises TypeError: if serialization fails. - :raises ValueError: if data is None - """ - try: - output = self.serialize_data(data, data_type, **kwargs) - if data_type == "bool": - output = json.dumps(output) - - if kwargs.get("skip_quote") is True: - output = str(output) - output = output.replace("{", quote("{")).replace("}", quote("}")) - else: - output = quote(str(output), safe="") - except SerializationError as exc: - raise TypeError("{} must be type {}.".format(name, data_type)) from exc - return output - - def query(self, name, data, data_type, **kwargs): - """Serialize data intended for a URL query. - - :param str name: The name of the query parameter. - :param object data: The data to be serialized. - :param str data_type: The type to be serialized from. - :rtype: str, list - :raises TypeError: if serialization fails. - :raises ValueError: if data is None - :returns: The serialized query parameter - """ - try: - # Treat the list aside, since we don't want to encode the div separator - if data_type.startswith("["): - internal_data_type = data_type[1:-1] - do_quote = not kwargs.get("skip_quote", False) - return self.serialize_iter(data, internal_data_type, do_quote=do_quote, **kwargs) - - # Not a list, regular serialization - output = self.serialize_data(data, data_type, **kwargs) - if data_type == "bool": - output = json.dumps(output) - if kwargs.get("skip_quote") is True: - output = str(output) - else: - output = quote(str(output), safe="") - except SerializationError as exc: - raise TypeError("{} must be type {}.".format(name, data_type)) from exc - return str(output) - - def header(self, name, data, data_type, **kwargs): - """Serialize data intended for a request header. - - :param str name: The name of the header. - :param object data: The data to be serialized. - :param str data_type: The type to be serialized from. - :rtype: str - :raises TypeError: if serialization fails. - :raises ValueError: if data is None - :returns: The serialized header - """ - try: - if data_type in ["[str]"]: - data = ["" if d is None else d for d in data] - - output = self.serialize_data(data, data_type, **kwargs) - if data_type == "bool": - output = json.dumps(output) - except SerializationError as exc: - raise TypeError("{} must be type {}.".format(name, data_type)) from exc - return str(output) - - def serialize_data(self, data, data_type, **kwargs): - """Serialize generic data according to supplied data type. - - :param object data: The data to be serialized. - :param str data_type: The type to be serialized from. - :raises AttributeError: if required data is None. - :raises ValueError: if data is None - :raises SerializationError: if serialization fails. - :returns: The serialized data. - :rtype: str, int, float, bool, dict, list - """ - if data is None: - raise ValueError("No value for given attribute") - - try: - if data is CoreNull: - return None - if data_type in self.basic_types.values(): - return self.serialize_basic(data, data_type, **kwargs) - - if data_type in self.serialize_type: - return self.serialize_type[data_type](data, **kwargs) - - # If dependencies is empty, try with current data class - # It has to be a subclass of Enum anyway - enum_type = self.dependencies.get(data_type, cast(type, data.__class__)) - if issubclass(enum_type, Enum): - return Serializer.serialize_enum(data, enum_obj=enum_type) - - iter_type = data_type[0] + data_type[-1] - if iter_type in self.serialize_type: - return self.serialize_type[iter_type](data, data_type[1:-1], **kwargs) - - except (ValueError, TypeError) as err: - msg = "Unable to serialize value: {!r} as type: {!r}." - raise SerializationError(msg.format(data, data_type)) from err - return self._serialize(data, **kwargs) - - @classmethod - def _get_custom_serializers(cls, data_type, **kwargs): # pylint: disable=inconsistent-return-statements - custom_serializer = kwargs.get("basic_types_serializers", {}).get(data_type) - if custom_serializer: - return custom_serializer - if kwargs.get("is_xml", False): - return cls._xml_basic_types_serializers.get(data_type) - - @classmethod - def serialize_basic(cls, data, data_type, **kwargs): - """Serialize basic builting data type. - Serializes objects to str, int, float or bool. - - Possible kwargs: - - basic_types_serializers dict[str, callable] : If set, use the callable as serializer - - is_xml bool : If set, use xml_basic_types_serializers - - :param obj data: Object to be serialized. - :param str data_type: Type of object in the iterable. - :rtype: str, int, float, bool - :return: serialized object - :raises TypeError: raise if data_type is not one of str, int, float, bool. - """ - custom_serializer = cls._get_custom_serializers(data_type, **kwargs) - if custom_serializer: - return custom_serializer(data) - if data_type == "str": - return cls.serialize_unicode(data) - if data_type == "int": - return int(data) - if data_type == "float": - return float(data) - if data_type == "bool": - return bool(data) - raise TypeError("Unknown basic data type: {}".format(data_type)) - - @classmethod - def serialize_unicode(cls, data): - """Special handling for serializing unicode strings in Py2. - Encode to UTF-8 if unicode, otherwise handle as a str. - - :param str data: Object to be serialized. - :rtype: str - :return: serialized object - """ - try: # If I received an enum, return its value - return data.value - except AttributeError: - pass - - try: - if isinstance(data, unicode): # type: ignore - # Don't change it, JSON and XML ElementTree are totally able - # to serialize correctly u'' strings - return data - except NameError: - return str(data) - return str(data) - - def serialize_iter(self, data, iter_type, div=None, **kwargs): - """Serialize iterable. - - Supported kwargs: - - serialization_ctxt dict : The current entry of _attribute_map, or same format. - serialization_ctxt['type'] should be same as data_type. - - is_xml bool : If set, serialize as XML - - :param list data: Object to be serialized. - :param str iter_type: Type of object in the iterable. - :param str div: If set, this str will be used to combine the elements - in the iterable into a combined string. Default is 'None'. - Defaults to False. - :rtype: list, str - :return: serialized iterable - """ - if isinstance(data, str): - raise SerializationError("Refuse str type as a valid iter type.") - - serialization_ctxt = kwargs.get("serialization_ctxt", {}) - is_xml = kwargs.get("is_xml", False) - - serialized = [] - for d in data: - try: - serialized.append(self.serialize_data(d, iter_type, **kwargs)) - except ValueError as err: - if isinstance(err, SerializationError): - raise - serialized.append(None) - - if kwargs.get("do_quote", False): - serialized = ["" if s is None else quote(str(s), safe="") for s in serialized] - - if div: - serialized = ["" if s is None else str(s) for s in serialized] - serialized = div.join(serialized) - - if "xml" in serialization_ctxt or is_xml: - # XML serialization is more complicated - xml_desc = serialization_ctxt.get("xml", {}) - xml_name = xml_desc.get("name") - if not xml_name: - xml_name = serialization_ctxt["key"] - - # Create a wrap node if necessary (use the fact that Element and list have "append") - is_wrapped = xml_desc.get("wrapped", False) - node_name = xml_desc.get("itemsName", xml_name) - if is_wrapped: - final_result = _create_xml_node(xml_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) - else: - final_result = [] - # All list elements to "local_node" - for el in serialized: - if isinstance(el, ET.Element): - el_node = el - else: - el_node = _create_xml_node(node_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) - if el is not None: # Otherwise it writes "None" :-p - el_node.text = str(el) - final_result.append(el_node) - return final_result - return serialized - - def serialize_dict(self, attr, dict_type, **kwargs): - """Serialize a dictionary of objects. - - :param dict attr: Object to be serialized. - :param str dict_type: Type of object in the dictionary. - :rtype: dict - :return: serialized dictionary - """ - serialization_ctxt = kwargs.get("serialization_ctxt", {}) - serialized = {} - for key, value in attr.items(): - try: - serialized[self.serialize_unicode(key)] = self.serialize_data(value, dict_type, **kwargs) - except ValueError as err: - if isinstance(err, SerializationError): - raise - serialized[self.serialize_unicode(key)] = None - - if "xml" in serialization_ctxt: - # XML serialization is more complicated - xml_desc = serialization_ctxt["xml"] - xml_name = xml_desc["name"] - - final_result = _create_xml_node(xml_name, xml_desc.get("prefix", None), xml_desc.get("ns", None)) - for key, value in serialized.items(): - ET.SubElement(final_result, key).text = value - return final_result - - return serialized - - def serialize_object(self, attr, **kwargs): # pylint: disable=too-many-return-statements - """Serialize a generic object. - This will be handled as a dictionary. If object passed in is not - a basic type (str, int, float, dict, list) it will simply be - cast to str. - - :param dict attr: Object to be serialized. - :rtype: dict or str - :return: serialized object - """ - if attr is None: - return None - if isinstance(attr, ET.Element): - return attr - obj_type = type(attr) - if obj_type in self.basic_types: - return self.serialize_basic(attr, self.basic_types[obj_type], **kwargs) - if obj_type is _long_type: - return self.serialize_long(attr) - if obj_type is str: - return self.serialize_unicode(attr) - if obj_type is datetime.datetime: - return self.serialize_iso(attr) - if obj_type is datetime.date: - return self.serialize_date(attr) - if obj_type is datetime.time: - return self.serialize_time(attr) - if obj_type is datetime.timedelta: - return self.serialize_duration(attr) - if obj_type is decimal.Decimal: - return self.serialize_decimal(attr) - - # If it's a model or I know this dependency, serialize as a Model - if obj_type in self.dependencies.values() or isinstance(attr, Model): - return self._serialize(attr) - - if obj_type == dict: - serialized = {} - for key, value in attr.items(): - try: - serialized[self.serialize_unicode(key)] = self.serialize_object(value, **kwargs) - except ValueError: - serialized[self.serialize_unicode(key)] = None - return serialized - - if obj_type == list: - serialized = [] - for obj in attr: - try: - serialized.append(self.serialize_object(obj, **kwargs)) - except ValueError: - pass - return serialized - return str(attr) - - @staticmethod - def serialize_enum(attr, enum_obj=None): - try: - result = attr.value - except AttributeError: - result = attr - try: - enum_obj(result) # type: ignore - return result - except ValueError as exc: - for enum_value in enum_obj: # type: ignore - if enum_value.value.lower() == str(attr).lower(): - return enum_value.value - error = "{!r} is not valid value for enum {!r}" - raise SerializationError(error.format(attr, enum_obj)) from exc - - @staticmethod - def serialize_bytearray(attr, **kwargs): # pylint: disable=unused-argument - """Serialize bytearray into base-64 string. - - :param str attr: Object to be serialized. - :rtype: str - :return: serialized base64 - """ - return b64encode(attr).decode() - - @staticmethod - def serialize_base64(attr, **kwargs): # pylint: disable=unused-argument - """Serialize str into base-64 string. - - :param str attr: Object to be serialized. - :rtype: str - :return: serialized base64 - """ - encoded = b64encode(attr).decode("ascii") - return encoded.strip("=").replace("+", "-").replace("/", "_") - - @staticmethod - def serialize_decimal(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Decimal object to float. - - :param decimal attr: Object to be serialized. - :rtype: float - :return: serialized decimal - """ - return float(attr) - - @staticmethod - def serialize_long(attr, **kwargs): # pylint: disable=unused-argument - """Serialize long (Py2) or int (Py3). - - :param int attr: Object to be serialized. - :rtype: int/long - :return: serialized long - """ - return _long_type(attr) - - @staticmethod - def serialize_date(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Date object into ISO-8601 formatted string. - - :param Date attr: Object to be serialized. - :rtype: str - :return: serialized date - """ - if isinstance(attr, str): - attr = isodate.parse_date(attr) - t = "{:04}-{:02}-{:02}".format(attr.year, attr.month, attr.day) - return t - - @staticmethod - def serialize_time(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Time object into ISO-8601 formatted string. - - :param datetime.time attr: Object to be serialized. - :rtype: str - :return: serialized time - """ - if isinstance(attr, str): - attr = isodate.parse_time(attr) - t = "{:02}:{:02}:{:02}".format(attr.hour, attr.minute, attr.second) - if attr.microsecond: - t += ".{:02}".format(attr.microsecond) - return t - - @staticmethod - def serialize_duration(attr, **kwargs): # pylint: disable=unused-argument - """Serialize TimeDelta object into ISO-8601 formatted string. - - :param TimeDelta attr: Object to be serialized. - :rtype: str - :return: serialized duration - """ - if isinstance(attr, str): - attr = isodate.parse_duration(attr) - return isodate.duration_isoformat(attr) - - @staticmethod - def serialize_rfc(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Datetime object into RFC-1123 formatted string. - - :param Datetime attr: Object to be serialized. - :rtype: str - :raises TypeError: if format invalid. - :return: serialized rfc - """ - try: - if not attr.tzinfo: - _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") - utc = attr.utctimetuple() - except AttributeError as exc: - raise TypeError("RFC1123 object must be valid Datetime object.") from exc - - return "{}, {:02} {} {:04} {:02}:{:02}:{:02} GMT".format( - Serializer.days[utc.tm_wday], - utc.tm_mday, - Serializer.months[utc.tm_mon], - utc.tm_year, - utc.tm_hour, - utc.tm_min, - utc.tm_sec, - ) - - @staticmethod - def serialize_iso(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Datetime object into ISO-8601 formatted string. - - :param Datetime attr: Object to be serialized. - :rtype: str - :raises SerializationError: if format invalid. - :return: serialized iso - """ - if isinstance(attr, str): - attr = isodate.parse_datetime(attr) - try: - if not attr.tzinfo: - _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") - utc = attr.utctimetuple() - if utc.tm_year > 9999 or utc.tm_year < 1: - raise OverflowError("Hit max or min date") - - microseconds = str(attr.microsecond).rjust(6, "0").rstrip("0").ljust(3, "0") - if microseconds: - microseconds = "." + microseconds - date = "{:04}-{:02}-{:02}T{:02}:{:02}:{:02}".format( - utc.tm_year, utc.tm_mon, utc.tm_mday, utc.tm_hour, utc.tm_min, utc.tm_sec - ) - return date + microseconds + "Z" - except (ValueError, OverflowError) as err: - msg = "Unable to serialize datetime object." - raise SerializationError(msg) from err - except AttributeError as err: - msg = "ISO-8601 object must be valid Datetime object." - raise TypeError(msg) from err - - @staticmethod - def serialize_unix(attr, **kwargs): # pylint: disable=unused-argument - """Serialize Datetime object into IntTime format. - This is represented as seconds. - - :param Datetime attr: Object to be serialized. - :rtype: int - :raises SerializationError: if format invalid - :return: serialied unix - """ - if isinstance(attr, int): - return attr - try: - if not attr.tzinfo: - _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") - return int(calendar.timegm(attr.utctimetuple())) - except AttributeError as exc: - raise TypeError("Unix time object must be valid Datetime object.") from exc - - -def rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument - key = attr_desc["key"] - working_data = data - - while "." in key: - # Need the cast, as for some reasons "split" is typed as list[str | Any] - dict_keys = cast(list[str], _FLATTEN.split(key)) - if len(dict_keys) == 1: - key = _decode_attribute_map_key(dict_keys[0]) - break - working_key = _decode_attribute_map_key(dict_keys[0]) - working_data = working_data.get(working_key, data) - if working_data is None: - # If at any point while following flatten JSON path see None, it means - # that all properties under are None as well - return None - key = ".".join(dict_keys[1:]) - - return working_data.get(key) - - -def rest_key_case_insensitive_extractor( # pylint: disable=unused-argument, inconsistent-return-statements - attr, attr_desc, data -): - key = attr_desc["key"] - working_data = data - - while "." in key: - dict_keys = _FLATTEN.split(key) - if len(dict_keys) == 1: - key = _decode_attribute_map_key(dict_keys[0]) - break - working_key = _decode_attribute_map_key(dict_keys[0]) - working_data = attribute_key_case_insensitive_extractor(working_key, None, working_data) - if working_data is None: - # If at any point while following flatten JSON path see None, it means - # that all properties under are None as well - return None - key = ".".join(dict_keys[1:]) - - if working_data: - return attribute_key_case_insensitive_extractor(key, None, working_data) - - -def last_rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument - """Extract the attribute in "data" based on the last part of the JSON path key. - - :param str attr: The attribute to extract - :param dict attr_desc: The attribute description - :param dict data: The data to extract from - :rtype: object - :returns: The extracted attribute - """ - key = attr_desc["key"] - dict_keys = _FLATTEN.split(key) - return attribute_key_extractor(dict_keys[-1], None, data) - - -def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): # pylint: disable=unused-argument - """Extract the attribute in "data" based on the last part of the JSON path key. - - This is the case insensitive version of "last_rest_key_extractor" - :param str attr: The attribute to extract - :param dict attr_desc: The attribute description - :param dict data: The data to extract from - :rtype: object - :returns: The extracted attribute - """ - key = attr_desc["key"] - dict_keys = _FLATTEN.split(key) - return attribute_key_case_insensitive_extractor(dict_keys[-1], None, data) - - -def attribute_key_extractor(attr, _, data): - return data.get(attr) - - -def attribute_key_case_insensitive_extractor(attr, _, data): - found_key = None - lower_attr = attr.lower() - for key in data: - if lower_attr == key.lower(): - found_key = key - break - - return data.get(found_key) - - -def _extract_name_from_internal_type(internal_type): - """Given an internal type XML description, extract correct XML name with namespace. - - :param dict internal_type: An model type - :rtype: tuple - :returns: A tuple XML name + namespace dict - """ - internal_type_xml_map = getattr(internal_type, "_xml_map", {}) - xml_name = internal_type_xml_map.get("name", internal_type.__name__) - xml_ns = internal_type_xml_map.get("ns", None) - if xml_ns: - xml_name = "{{{}}}{}".format(xml_ns, xml_name) - return xml_name - - -def xml_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument,too-many-return-statements - if isinstance(data, dict): - return None - - # Test if this model is XML ready first - if not isinstance(data, ET.Element): - return None - - xml_desc = attr_desc.get("xml", {}) - xml_name = xml_desc.get("name", attr_desc["key"]) - - # Look for a children - is_iter_type = attr_desc["type"].startswith("[") - is_wrapped = xml_desc.get("wrapped", False) - internal_type = attr_desc.get("internalType", None) - internal_type_xml_map = getattr(internal_type, "_xml_map", {}) - - # Integrate namespace if necessary - xml_ns = xml_desc.get("ns", internal_type_xml_map.get("ns", None)) - if xml_ns: - xml_name = "{{{}}}{}".format(xml_ns, xml_name) - - # If it's an attribute, that's simple - if xml_desc.get("attr", False): - return data.get(xml_name) - - # If it's x-ms-text, that's simple too - if xml_desc.get("text", False): - return data.text - - # Scenario where I take the local name: - # - Wrapped node - # - Internal type is an enum (considered basic types) - # - Internal type has no XML/Name node - if is_wrapped or (internal_type and (issubclass(internal_type, Enum) or "name" not in internal_type_xml_map)): - children = data.findall(xml_name) - # If internal type has a local name and it's not a list, I use that name - elif not is_iter_type and internal_type and "name" in internal_type_xml_map: - xml_name = _extract_name_from_internal_type(internal_type) - children = data.findall(xml_name) - # That's an array - else: - if internal_type: # Complex type, ignore itemsName and use the complex type name - items_name = _extract_name_from_internal_type(internal_type) - else: - items_name = xml_desc.get("itemsName", xml_name) - children = data.findall(items_name) - - if len(children) == 0: - if is_iter_type: - if is_wrapped: - return None # is_wrapped no node, we want None - return [] # not wrapped, assume empty list - return None # Assume it's not there, maybe an optional node. - - # If is_iter_type and not wrapped, return all found children - if is_iter_type: - if not is_wrapped: - return children - # Iter and wrapped, should have found one node only (the wrap one) - if len(children) != 1: - raise DeserializationError( - "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( - xml_name - ) - ) - return list(children[0]) # Might be empty list and that's ok. - - # Here it's not a itertype, we should have found one element only or empty - if len(children) > 1: - raise DeserializationError("Find several XML '{}' where it was not expected".format(xml_name)) - return children[0] - - -class Deserializer: - """Response object model deserializer. - - :param dict classes: Class type dictionary for deserializing complex types. - :ivar list key_extractors: Ordered list of extractors to be used by this deserializer. - """ - - basic_types = {str: "str", int: "int", bool: "bool", float: "float"} - - valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") - - def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: - self.deserialize_type = { - "iso-8601": Deserializer.deserialize_iso, - "rfc-1123": Deserializer.deserialize_rfc, - "unix-time": Deserializer.deserialize_unix, - "duration": Deserializer.deserialize_duration, - "date": Deserializer.deserialize_date, - "time": Deserializer.deserialize_time, - "decimal": Deserializer.deserialize_decimal, - "long": Deserializer.deserialize_long, - "bytearray": Deserializer.deserialize_bytearray, - "base64": Deserializer.deserialize_base64, - "object": self.deserialize_object, - "[]": self.deserialize_iter, - "{}": self.deserialize_dict, - } - self.deserialize_expected_types = { - "duration": (isodate.Duration, datetime.timedelta), - "iso-8601": (datetime.datetime), - } - self.dependencies: dict[str, type] = dict(classes) if classes else {} - self.key_extractors = [rest_key_extractor, xml_key_extractor] - # Additional properties only works if the "rest_key_extractor" is used to - # extract the keys. Making it to work whatever the key extractor is too much - # complicated, with no real scenario for now. - # So adding a flag to disable additional properties detection. This flag should be - # used if your expect the deserialization to NOT come from a JSON REST syntax. - # Otherwise, result are unexpected - self.additional_properties_detection = True - - def __call__(self, target_obj, response_data, content_type=None): - """Call the deserializer to process a REST response. - - :param str target_obj: Target data type to deserialize to. - :param requests.Response response_data: REST response object. - :param str content_type: Swagger "produces" if available. - :raises DeserializationError: if deserialization fails. - :return: Deserialized object. - :rtype: object - """ - data = self._unpack_content(response_data, content_type) - return self._deserialize(target_obj, data) - - def _deserialize(self, target_obj, data): # pylint: disable=inconsistent-return-statements - """Call the deserializer on a model. - - Data needs to be already deserialized as JSON or XML ElementTree - - :param str target_obj: Target data type to deserialize to. - :param object data: Object to deserialize. - :raises DeserializationError: if deserialization fails. - :return: Deserialized object. - :rtype: object - """ - # This is already a model, go recursive just in case - if hasattr(data, "_attribute_map"): - constants = [name for name, config in getattr(data, "_validation", {}).items() if config.get("constant")] - try: - for attr, mapconfig in data._attribute_map.items(): # pylint: disable=protected-access - if attr in constants: - continue - value = getattr(data, attr) - if value is None: - continue - local_type = mapconfig["type"] - internal_data_type = local_type.strip("[]{}") - if internal_data_type not in self.dependencies or isinstance(internal_data_type, Enum): - continue - setattr(data, attr, self._deserialize(local_type, value)) - return data - except AttributeError: - return - - response, class_name = self._classify_target(target_obj, data) - - if isinstance(response, str): - return self.deserialize_data(data, response) - if isinstance(response, type) and issubclass(response, Enum): - return self.deserialize_enum(data, response) - - if data is None or data is CoreNull: - return data - try: - attributes = response._attribute_map # type: ignore # pylint: disable=protected-access - d_attrs = {} - for attr, attr_desc in attributes.items(): - # Check empty string. If it's not empty, someone has a real "additionalProperties"... - if attr == "additional_properties" and attr_desc["key"] == "": - continue - raw_value = None - # Enhance attr_desc with some dynamic data - attr_desc = attr_desc.copy() # Do a copy, do not change the real one - internal_data_type = attr_desc["type"].strip("[]{}") - if internal_data_type in self.dependencies: - attr_desc["internalType"] = self.dependencies[internal_data_type] - - for key_extractor in self.key_extractors: - found_value = key_extractor(attr, attr_desc, data) - if found_value is not None: - if raw_value is not None and raw_value != found_value: - msg = ( - "Ignoring extracted value '%s' from %s for key '%s'" - " (duplicate extraction, follow extractors order)" - ) - _LOGGER.warning(msg, found_value, key_extractor, attr) - continue - raw_value = found_value - - value = self.deserialize_data(raw_value, attr_desc["type"]) - d_attrs[attr] = value - except (AttributeError, TypeError, KeyError) as err: - msg = "Unable to deserialize to object: " + class_name # type: ignore - raise DeserializationError(msg) from err - additional_properties = self._build_additional_properties(attributes, data) - return self._instantiate_model(response, d_attrs, additional_properties) - - def _build_additional_properties(self, attribute_map, data): - if not self.additional_properties_detection: - return None - if "additional_properties" in attribute_map and attribute_map.get("additional_properties", {}).get("key") != "": - # Check empty string. If it's not empty, someone has a real "additionalProperties" - return None - if isinstance(data, ET.Element): - data = {el.tag: el.text for el in data} - - known_keys = { - _decode_attribute_map_key(_FLATTEN.split(desc["key"])[0]) - for desc in attribute_map.values() - if desc["key"] != "" - } - present_keys = set(data.keys()) - missing_keys = present_keys - known_keys - return {key: data[key] for key in missing_keys} - - def _classify_target(self, target, data): - """Check to see whether the deserialization target object can - be classified into a subclass. - Once classification has been determined, initialize object. - - :param str target: The target object type to deserialize to. - :param str/dict data: The response data to deserialize. - :return: The classified target object and its class name. - :rtype: tuple - """ - if target is None: - return None, None - - if isinstance(target, str): - try: - target = self.dependencies[target] - except KeyError: - return target, target - - try: - target = target._classify(data, self.dependencies) # type: ignore # pylint: disable=protected-access - except AttributeError: - pass # Target is not a Model, no classify - return target, target.__class__.__name__ # type: ignore - - def failsafe_deserialize(self, target_obj, data, content_type=None): - """Ignores any errors encountered in deserialization, - and falls back to not deserializing the object. Recommended - for use in error deserialization, as we want to return the - HttpResponseError to users, and not have them deal with - a deserialization error. - - :param str target_obj: The target object type to deserialize to. - :param str/dict data: The response data to deserialize. - :param str content_type: Swagger "produces" if available. - :return: Deserialized object. - :rtype: object - """ - try: - return self(target_obj, data, content_type=content_type) - except: # pylint: disable=bare-except - _LOGGER.debug( - "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True - ) - return None - - @staticmethod - def _unpack_content(raw_data, content_type=None): - """Extract the correct structure for deserialization. - - If raw_data is a PipelineResponse, try to extract the result of RawDeserializer. - if we can't, raise. Your Pipeline should have a RawDeserializer. - - If not a pipeline response and raw_data is bytes or string, use content-type - to decode it. If no content-type, try JSON. - - If raw_data is something else, bypass all logic and return it directly. - - :param obj raw_data: Data to be processed. - :param str content_type: How to parse if raw_data is a string/bytes. - :raises JSONDecodeError: If JSON is requested and parsing is impossible. - :raises UnicodeDecodeError: If bytes is not UTF8 - :rtype: object - :return: Unpacked content. - """ - # Assume this is enough to detect a Pipeline Response without importing it - context = getattr(raw_data, "context", {}) - if context: - if RawDeserializer.CONTEXT_NAME in context: - return context[RawDeserializer.CONTEXT_NAME] - raise ValueError("This pipeline didn't have the RawDeserializer policy; can't deserialize") - - # Assume this is enough to recognize universal_http.ClientResponse without importing it - if hasattr(raw_data, "body"): - return RawDeserializer.deserialize_from_http_generics(raw_data.text(), raw_data.headers) - - # Assume this enough to recognize requests.Response without importing it. - if hasattr(raw_data, "_content_consumed"): - return RawDeserializer.deserialize_from_http_generics(raw_data.text, raw_data.headers) - - if isinstance(raw_data, (str, bytes)) or hasattr(raw_data, "read"): - return RawDeserializer.deserialize_from_text(raw_data, content_type) # type: ignore - return raw_data - - def _instantiate_model(self, response, attrs, additional_properties=None): - """Instantiate a response model passing in deserialized args. - - :param Response response: The response model class. - :param dict attrs: The deserialized response attributes. - :param dict additional_properties: Additional properties to be set. - :rtype: Response - :return: The instantiated response model. - """ - if callable(response): - subtype = getattr(response, "_subtype_map", {}) - try: - readonly = [ - k - for k, v in response._validation.items() # pylint: disable=protected-access # type: ignore - if v.get("readonly") - ] - const = [ - k - for k, v in response._validation.items() # pylint: disable=protected-access # type: ignore - if v.get("constant") - ] - kwargs = {k: v for k, v in attrs.items() if k not in subtype and k not in readonly + const} - response_obj = response(**kwargs) - for attr in readonly: - setattr(response_obj, attr, attrs.get(attr)) - if additional_properties: - response_obj.additional_properties = additional_properties # type: ignore - return response_obj - except TypeError as err: - msg = "Unable to deserialize {} into model {}. ".format(kwargs, response) # type: ignore - raise DeserializationError(msg + str(err)) from err - else: - try: - for attr, value in attrs.items(): - setattr(response, attr, value) - return response - except Exception as exp: - msg = "Unable to populate response model. " - msg += "Type: {}, Error: {}".format(type(response), exp) - raise DeserializationError(msg) from exp - - def deserialize_data(self, data, data_type): # pylint: disable=too-many-return-statements - """Process data for deserialization according to data type. - - :param str data: The response string to be deserialized. - :param str data_type: The type to deserialize to. - :raises DeserializationError: if deserialization fails. - :return: Deserialized object. - :rtype: object - """ - if data is None: - return data - - try: - if not data_type: - return data - if data_type in self.basic_types.values(): - return self.deserialize_basic(data, data_type) - if data_type in self.deserialize_type: - if isinstance(data, self.deserialize_expected_types.get(data_type, tuple())): - return data - - is_a_text_parsing_type = lambda x: x not in [ # pylint: disable=unnecessary-lambda-assignment - "object", - "[]", - r"{}", - ] - if isinstance(data, ET.Element) and is_a_text_parsing_type(data_type) and not data.text: - return None - data_val = self.deserialize_type[data_type](data) - return data_val - - iter_type = data_type[0] + data_type[-1] - if iter_type in self.deserialize_type: - return self.deserialize_type[iter_type](data, data_type[1:-1]) - - obj_type = self.dependencies[data_type] - if issubclass(obj_type, Enum): - if isinstance(data, ET.Element): - data = data.text - return self.deserialize_enum(data, obj_type) - - except (ValueError, TypeError, AttributeError) as err: - msg = "Unable to deserialize response data." - msg += " Data: {}, {}".format(data, data_type) - raise DeserializationError(msg) from err - return self._deserialize(obj_type, data) - - def deserialize_iter(self, attr, iter_type): - """Deserialize an iterable. - - :param list attr: Iterable to be deserialized. - :param str iter_type: The type of object in the iterable. - :return: Deserialized iterable. - :rtype: list - """ - if attr is None: - return None - if isinstance(attr, ET.Element): # If I receive an element here, get the children - attr = list(attr) - if not isinstance(attr, (list, set)): - raise DeserializationError("Cannot deserialize as [{}] an object of type {}".format(iter_type, type(attr))) - return [self.deserialize_data(a, iter_type) for a in attr] - - def deserialize_dict(self, attr, dict_type): - """Deserialize a dictionary. - - :param dict/list attr: Dictionary to be deserialized. Also accepts - a list of key, value pairs. - :param str dict_type: The object type of the items in the dictionary. - :return: Deserialized dictionary. - :rtype: dict - """ - if isinstance(attr, list): - return {x["key"]: self.deserialize_data(x["value"], dict_type) for x in attr} - - if isinstance(attr, ET.Element): - # Transform value into {"Key": "value"} - attr = {el.tag: el.text for el in attr} - return {k: self.deserialize_data(v, dict_type) for k, v in attr.items()} - - def deserialize_object(self, attr, **kwargs): # pylint: disable=too-many-return-statements - """Deserialize a generic object. - This will be handled as a dictionary. - - :param dict attr: Dictionary to be deserialized. - :return: Deserialized object. - :rtype: dict - :raises TypeError: if non-builtin datatype encountered. - """ - if attr is None: - return None - if isinstance(attr, ET.Element): - # Do no recurse on XML, just return the tree as-is - return attr - if isinstance(attr, str): - return self.deserialize_basic(attr, "str") - obj_type = type(attr) - if obj_type in self.basic_types: - return self.deserialize_basic(attr, self.basic_types[obj_type]) - if obj_type is _long_type: - return self.deserialize_long(attr) - - if obj_type == dict: - deserialized = {} - for key, value in attr.items(): - try: - deserialized[key] = self.deserialize_object(value, **kwargs) - except ValueError: - deserialized[key] = None - return deserialized - - if obj_type == list: - deserialized = [] - for obj in attr: - try: - deserialized.append(self.deserialize_object(obj, **kwargs)) - except ValueError: - pass - return deserialized - - error = "Cannot deserialize generic object with type: " - raise TypeError(error + str(obj_type)) - - def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return-statements - """Deserialize basic builtin data type from string. - Will attempt to convert to str, int, float and bool. - This function will also accept '1', '0', 'true' and 'false' as - valid bool values. - - :param str attr: response string to be deserialized. - :param str data_type: deserialization data type. - :return: Deserialized basic type. - :rtype: str, int, float or bool - :raises TypeError: if string format is not valid or data_type is not one of str, int, float, bool. - """ - # If we're here, data is supposed to be a basic type. - # If it's still an XML node, take the text - if isinstance(attr, ET.Element): - attr = attr.text - if not attr: - if data_type == "str": - # None or '', node is empty string. - return "" - # None or '', node with a strong type is None. - # Don't try to model "empty bool" or "empty int" - return None - - if data_type == "bool": - if attr in [True, False, 1, 0]: - return bool(attr) - if isinstance(attr, str): - if attr.lower() in ["true", "1"]: - return True - if attr.lower() in ["false", "0"]: - return False - raise TypeError("Invalid boolean value: {}".format(attr)) - - if data_type == "str": - return self.deserialize_unicode(attr) - if data_type == "int": - return int(attr) - if data_type == "float": - return float(attr) - raise TypeError("Unknown basic data type: {}".format(data_type)) - - @staticmethod - def deserialize_unicode(data): - """Preserve unicode objects in Python 2, otherwise return data - as a string. - - :param str data: response string to be deserialized. - :return: Deserialized string. - :rtype: str or unicode - """ - # We might be here because we have an enum modeled as string, - # and we try to deserialize a partial dict with enum inside - if isinstance(data, Enum): - return data - - # Consider this is real string - try: - if isinstance(data, unicode): # type: ignore - return data - except NameError: - return str(data) - return str(data) - - @staticmethod - def deserialize_enum(data, enum_obj): - """Deserialize string into enum object. - - If the string is not a valid enum value it will be returned as-is - and a warning will be logged. - - :param str data: Response string to be deserialized. If this value is - None or invalid it will be returned as-is. - :param Enum enum_obj: Enum object to deserialize to. - :return: Deserialized enum object. - :rtype: Enum - """ - if isinstance(data, enum_obj) or data is None: - return data - if isinstance(data, Enum): - data = data.value - if isinstance(data, int): - # Workaround. We might consider remove it in the future. - try: - return list(enum_obj.__members__.values())[data] - except IndexError as exc: - error = "{!r} is not a valid index for enum {!r}" - raise DeserializationError(error.format(data, enum_obj)) from exc - try: - return enum_obj(str(data)) - except ValueError: - for enum_value in enum_obj: - if enum_value.value.lower() == str(data).lower(): - return enum_value - # We don't fail anymore for unknown value, we deserialize as a string - _LOGGER.warning("Deserializer is not able to find %s as valid enum in %s", data, enum_obj) - return Deserializer.deserialize_unicode(data) - - @staticmethod - def deserialize_bytearray(attr): - """Deserialize string into bytearray. - - :param str attr: response string to be deserialized. - :return: Deserialized bytearray - :rtype: bytearray - :raises TypeError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - return bytearray(b64decode(attr)) # type: ignore - - @staticmethod - def deserialize_base64(attr): - """Deserialize base64 encoded string into string. - - :param str attr: response string to be deserialized. - :return: Deserialized base64 string - :rtype: bytearray - :raises TypeError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - padding = "=" * (3 - (len(attr) + 3) % 4) # type: ignore - attr = attr + padding # type: ignore - encoded = attr.replace("-", "+").replace("_", "/") - return b64decode(encoded) - - @staticmethod - def deserialize_decimal(attr): - """Deserialize string into Decimal object. - - :param str attr: response string to be deserialized. - :return: Deserialized decimal - :raises DeserializationError: if string format invalid. - :rtype: decimal - """ - if isinstance(attr, ET.Element): - attr = attr.text - try: - return decimal.Decimal(str(attr)) # type: ignore - except decimal.DecimalException as err: - msg = "Invalid decimal {}".format(attr) - raise DeserializationError(msg) from err - - @staticmethod - def deserialize_long(attr): - """Deserialize string into long (Py2) or int (Py3). - - :param str attr: response string to be deserialized. - :return: Deserialized int - :rtype: long or int - :raises ValueError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - return _long_type(attr) # type: ignore - - @staticmethod - def deserialize_duration(attr): - """Deserialize ISO-8601 formatted string into TimeDelta object. - - :param str attr: response string to be deserialized. - :return: Deserialized duration - :rtype: TimeDelta - :raises DeserializationError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - try: - duration = isodate.parse_duration(attr) - except (ValueError, OverflowError, AttributeError) as err: - msg = "Cannot deserialize duration object." - raise DeserializationError(msg) from err - return duration - - @staticmethod - def deserialize_date(attr): - """Deserialize ISO-8601 formatted string into Date object. - - :param str attr: response string to be deserialized. - :return: Deserialized date - :rtype: Date - :raises DeserializationError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore - raise DeserializationError("Date must have only digits and -. Received: %s" % attr) - # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. - return isodate.parse_date(attr, defaultmonth=0, defaultday=0) - - @staticmethod - def deserialize_time(attr): - """Deserialize ISO-8601 formatted string into time object. - - :param str attr: response string to be deserialized. - :return: Deserialized time - :rtype: datetime.time - :raises DeserializationError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore - raise DeserializationError("Date must have only digits and -. Received: %s" % attr) - return isodate.parse_time(attr) - - @staticmethod - def deserialize_rfc(attr): - """Deserialize RFC-1123 formatted string into Datetime object. - - :param str attr: response string to be deserialized. - :return: Deserialized RFC datetime - :rtype: Datetime - :raises DeserializationError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - try: - parsed_date = email.utils.parsedate_tz(attr) # type: ignore - date_obj = datetime.datetime( - *parsed_date[:6], tzinfo=datetime.timezone(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) - ) - if not date_obj.tzinfo: - date_obj = date_obj.astimezone(tz=TZ_UTC) - except ValueError as err: - msg = "Cannot deserialize to rfc datetime object." - raise DeserializationError(msg) from err - return date_obj - - @staticmethod - def deserialize_iso(attr): - """Deserialize ISO-8601 formatted string into Datetime object. - - :param str attr: response string to be deserialized. - :return: Deserialized ISO datetime - :rtype: Datetime - :raises DeserializationError: if string format invalid. - """ - if isinstance(attr, ET.Element): - attr = attr.text - try: - attr = attr.upper() # type: ignore - match = Deserializer.valid_date.match(attr) - if not match: - raise ValueError("Invalid datetime string: " + attr) - - check_decimal = attr.split(".") - if len(check_decimal) > 1: - decimal_str = "" - for digit in check_decimal[1]: - if digit.isdigit(): - decimal_str += digit - else: - break - if len(decimal_str) > 6: - attr = attr.replace(decimal_str, decimal_str[0:6]) - - date_obj = isodate.parse_datetime(attr) - test_utc = date_obj.utctimetuple() - if test_utc.tm_year > 9999 or test_utc.tm_year < 1: - raise OverflowError("Hit max or min date") - except (ValueError, OverflowError, AttributeError) as err: - msg = "Cannot deserialize datetime object." - raise DeserializationError(msg) from err - return date_obj - - @staticmethod - def deserialize_unix(attr): - """Serialize Datetime object into IntTime format. - This is represented as seconds. - - :param int attr: Object to be serialized. - :return: Deserialized datetime - :rtype: Datetime - :raises DeserializationError: if format invalid - """ - if isinstance(attr, ET.Element): - attr = int(attr.text) # type: ignore - try: - attr = int(attr) - date_obj = datetime.datetime.fromtimestamp(attr, TZ_UTC) - except ValueError as err: - msg = "Cannot deserialize to unix datetime object." - raise DeserializationError(msg) from err - return date_obj diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/__init__.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/__init__.py deleted file mode 100644 index 49bdcf3683e2..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/__init__.py +++ /dev/null @@ -1,858 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=wrong-import-position - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - from ._patch import * # pylint: disable=unused-wildcard-import - - -from ._models import ( # type: ignore - A2APreviewTool, - A2AToolCall, - A2AToolCallOutput, - AISearchIndexResource, - AgentReference, - Annotation, - ApiErrorResponse, - ApplyPatchCreateFileOperation, - ApplyPatchCreateFileOperationParam, - ApplyPatchDeleteFileOperation, - ApplyPatchDeleteFileOperationParam, - ApplyPatchFileOperation, - ApplyPatchOperationParam, - ApplyPatchToolCallItemParam, - ApplyPatchToolCallOutputItemParam, - ApplyPatchToolParam, - ApplyPatchUpdateFileOperation, - ApplyPatchUpdateFileOperationParam, - ApproximateLocation, - AutoCodeInterpreterToolParam, - AzureAISearchTool, - AzureAISearchToolCall, - AzureAISearchToolCallOutput, - AzureAISearchToolResource, - AzureFunctionBinding, - AzureFunctionDefinition, - AzureFunctionDefinitionFunction, - AzureFunctionStorageQueue, - AzureFunctionTool, - AzureFunctionToolCall, - AzureFunctionToolCallOutput, - BingCustomSearchConfiguration, - BingCustomSearchPreviewTool, - BingCustomSearchToolCall, - BingCustomSearchToolCallOutput, - BingCustomSearchToolParameters, - BingGroundingSearchConfiguration, - BingGroundingSearchToolParameters, - BingGroundingTool, - BingGroundingToolCall, - BingGroundingToolCallOutput, - BrowserAutomationPreviewTool, - BrowserAutomationToolCall, - BrowserAutomationToolCallOutput, - BrowserAutomationToolConnectionParameters, - BrowserAutomationToolParameters, - CaptureStructuredOutputsTool, - ChatSummaryMemoryItem, - ClickParam, - CodeInterpreterOutputImage, - CodeInterpreterOutputLogs, - CodeInterpreterTool, - CompactResource, - CompactionSummaryItemParam, - ComparisonFilter, - CompoundFilter, - ComputerAction, - ComputerCallOutputItemParam, - ComputerCallSafetyCheckParam, - ComputerScreenshotContent, - ComputerScreenshotImage, - ComputerUsePreviewTool, - ContainerAutoParam, - ContainerFileCitationBody, - ContainerNetworkPolicyAllowlistParam, - ContainerNetworkPolicyDisabledParam, - ContainerNetworkPolicyDomainSecretParam, - ContainerNetworkPolicyParam, - ContainerReferenceResource, - ContainerSkill, - ContextManagementParam, - ConversationParam_2, - ConversationReference, - CoordParam, - CreateResponse, - CustomGrammarFormatParam, - CustomTextFormatParam, - CustomToolParam, - CustomToolParamFormat, - DeleteResponseResult, - DoubleClickAction, - DragParam, - Error, - FabricDataAgentToolCall, - FabricDataAgentToolCallOutput, - FabricDataAgentToolParameters, - FileCitationBody, - FilePath, - FileSearchTool, - FileSearchToolCallResults, - FunctionAndCustomToolCallOutput, - FunctionAndCustomToolCallOutputInputFileContent, - FunctionAndCustomToolCallOutputInputImageContent, - FunctionAndCustomToolCallOutputInputTextContent, - FunctionCallOutputItemParam, - FunctionShellAction, - FunctionShellActionParam, - FunctionShellCallEnvironment, - FunctionShellCallItemParam, - FunctionShellCallItemParamEnvironment, - FunctionShellCallItemParamEnvironmentContainerReferenceParam, - FunctionShellCallItemParamEnvironmentLocalEnvironmentParam, - FunctionShellCallOutputContent, - FunctionShellCallOutputContentParam, - FunctionShellCallOutputExitOutcome, - FunctionShellCallOutputExitOutcomeParam, - FunctionShellCallOutputItemParam, - FunctionShellCallOutputOutcome, - FunctionShellCallOutputOutcomeParam, - FunctionShellCallOutputTimeoutOutcome, - FunctionShellCallOutputTimeoutOutcomeParam, - FunctionShellToolParam, - FunctionShellToolParamEnvironment, - FunctionShellToolParamEnvironmentContainerReferenceParam, - FunctionShellToolParamEnvironmentLocalEnvironmentParam, - FunctionTool, - FunctionToolCallOutput, - FunctionToolCallOutputResource, - HybridSearchOptions, - ImageGenTool, - ImageGenToolInputImageMask, - InlineSkillParam, - InlineSkillSourceParam, - InputFileContent, - InputFileContentParam, - InputImageContent, - InputImageContentParamAutoParam, - InputTextContent, - InputTextContentParam, - Item, - ItemCodeInterpreterToolCall, - ItemComputerToolCall, - ItemCustomToolCall, - ItemCustomToolCallOutput, - ItemField, - ItemFieldApplyPatchToolCall, - ItemFieldApplyPatchToolCallOutput, - ItemFieldCodeInterpreterToolCall, - ItemFieldCompactionBody, - ItemFieldComputerToolCall, - ItemFieldComputerToolCallOutputResource, - ItemFieldCustomToolCall, - ItemFieldCustomToolCallOutput, - ItemFieldFileSearchToolCall, - ItemFieldFunctionShellCall, - ItemFieldFunctionShellCallOutput, - ItemFieldFunctionToolCall, - ItemFieldImageGenToolCall, - ItemFieldLocalShellToolCall, - ItemFieldLocalShellToolCallOutput, - ItemFieldMcpApprovalRequest, - ItemFieldMcpApprovalResponseResource, - ItemFieldMcpListTools, - ItemFieldMcpToolCall, - ItemFieldMessage, - ItemFieldReasoningItem, - ItemFieldWebSearchToolCall, - ItemFileSearchToolCall, - ItemFunctionToolCall, - ItemImageGenToolCall, - ItemLocalShellToolCall, - ItemLocalShellToolCallOutput, - ItemMcpApprovalRequest, - ItemMcpListTools, - ItemMcpToolCall, - ItemMessage, - ItemOutputMessage, - ItemReasoningItem, - ItemReferenceParam, - ItemWebSearchToolCall, - KeyPressAction, - LocalEnvironmentResource, - LocalShellExecAction, - LocalShellToolParam, - LocalSkillParam, - LogProb, - MCPApprovalResponse, - MCPListToolsTool, - MCPListToolsToolAnnotations, - MCPListToolsToolInputSchema, - MCPTool, - MCPToolFilter, - MCPToolRequireApproval, - MemoryItem, - MemorySearchItem, - MemorySearchOptions, - MemorySearchPreviewTool, - MemorySearchToolCallItemParam, - MemorySearchToolCallItemResource, - MessageContent, - MessageContentInputFileContent, - MessageContentInputImageContent, - MessageContentInputTextContent, - MessageContentOutputTextContent, - MessageContentReasoningTextContent, - MessageContentRefusalContent, - Metadata, - MicrosoftFabricPreviewTool, - MoveParam, - OAuthConsentRequestOutputItem, - OpenApiAnonymousAuthDetails, - OpenApiAuthDetails, - OpenApiFunctionDefinition, - OpenApiFunctionDefinitionFunction, - OpenApiManagedAuthDetails, - OpenApiManagedSecurityScheme, - OpenApiProjectConnectionAuthDetails, - OpenApiProjectConnectionSecurityScheme, - OpenApiTool, - OpenApiToolCall, - OpenApiToolCallOutput, - OutputContent, - OutputContentOutputTextContent, - OutputContentReasoningTextContent, - OutputContentRefusalContent, - OutputItem, - OutputItemApplyPatchToolCall, - OutputItemApplyPatchToolCallOutput, - OutputItemCodeInterpreterToolCall, - OutputItemCompactionBody, - OutputItemComputerToolCall, - OutputItemComputerToolCallOutputResource, - OutputItemCustomToolCall, - OutputItemCustomToolCallOutput, - OutputItemFileSearchToolCall, - OutputItemFunctionShellCall, - OutputItemFunctionShellCallOutput, - OutputItemFunctionToolCall, - OutputItemImageGenToolCall, - OutputItemLocalShellToolCall, - OutputItemLocalShellToolCallOutput, - OutputItemMcpApprovalRequest, - OutputItemMcpApprovalResponseResource, - OutputItemMcpListTools, - OutputItemMcpToolCall, - OutputItemMessage, - OutputItemOutputMessage, - OutputItemReasoningItem, - OutputItemWebSearchToolCall, - OutputMessageContent, - OutputMessageContentOutputTextContent, - OutputMessageContentRefusalContent, - Prompt, - RankingOptions, - Reasoning, - ReasoningTextContent, - ResponseAudioDeltaEvent, - ResponseAudioDoneEvent, - ResponseAudioTranscriptDeltaEvent, - ResponseAudioTranscriptDoneEvent, - ResponseCodeInterpreterCallCodeDeltaEvent, - ResponseCodeInterpreterCallCodeDoneEvent, - ResponseCodeInterpreterCallCompletedEvent, - ResponseCodeInterpreterCallInProgressEvent, - ResponseCodeInterpreterCallInterpretingEvent, - ResponseCompletedEvent, - ResponseContentPartAddedEvent, - ResponseContentPartDoneEvent, - ResponseCreatedEvent, - ResponseCustomToolCallInputDeltaEvent, - ResponseCustomToolCallInputDoneEvent, - ResponseErrorEvent, - ResponseErrorInfo, - ResponseFailedEvent, - ResponseFileSearchCallCompletedEvent, - ResponseFileSearchCallInProgressEvent, - ResponseFileSearchCallSearchingEvent, - ResponseFormatJsonSchemaSchema, - ResponseFunctionCallArgumentsDeltaEvent, - ResponseFunctionCallArgumentsDoneEvent, - ResponseImageGenCallCompletedEvent, - ResponseImageGenCallGeneratingEvent, - ResponseImageGenCallInProgressEvent, - ResponseImageGenCallPartialImageEvent, - ResponseInProgressEvent, - ResponseIncompleteDetails, - ResponseIncompleteEvent, - ResponseLogProb, - ResponseLogProbTopLogprobs, - ResponseMCPCallArgumentsDeltaEvent, - ResponseMCPCallArgumentsDoneEvent, - ResponseMCPCallCompletedEvent, - ResponseMCPCallFailedEvent, - ResponseMCPCallInProgressEvent, - ResponseMCPListToolsCompletedEvent, - ResponseMCPListToolsFailedEvent, - ResponseMCPListToolsInProgressEvent, - ResponseObject, - ResponseOutputItemAddedEvent, - ResponseOutputItemDoneEvent, - ResponseOutputTextAnnotationAddedEvent, - ResponsePromptVariables, - ResponseQueuedEvent, - ResponseReasoningSummaryPartAddedEvent, - ResponseReasoningSummaryPartAddedEventPart, - ResponseReasoningSummaryPartDoneEvent, - ResponseReasoningSummaryPartDoneEventPart, - ResponseReasoningSummaryTextDeltaEvent, - ResponseReasoningSummaryTextDoneEvent, - ResponseReasoningTextDeltaEvent, - ResponseReasoningTextDoneEvent, - ResponseRefusalDeltaEvent, - ResponseRefusalDoneEvent, - ResponseStreamEvent, - ResponseStreamOptions, - ResponseTextDeltaEvent, - ResponseTextDoneEvent, - ResponseTextParam, - ResponseUsage, - ResponseUsageInputTokensDetails, - ResponseUsageOutputTokensDetails, - ResponseWebSearchCallCompletedEvent, - ResponseWebSearchCallInProgressEvent, - ResponseWebSearchCallSearchingEvent, - ScreenshotParam, - ScrollParam, - SharepointGroundingToolCall, - SharepointGroundingToolCallOutput, - SharepointGroundingToolParameters, - SharepointPreviewTool, - SkillReferenceParam, - SpecificApplyPatchParam, - SpecificFunctionShellParam, - StructuredOutputDefinition, - StructuredOutputsOutputItem, - SummaryTextContent, - TextContent, - TextResponseFormatConfiguration, - TextResponseFormatConfigurationResponseFormatJsonObject, - TextResponseFormatConfigurationResponseFormatText, - TextResponseFormatJsonSchema, - Tool, - ToolChoiceAllowed, - ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, - ToolChoiceCustom, - ToolChoiceFileSearch, - ToolChoiceFunction, - ToolChoiceImageGeneration, - ToolChoiceMCP, - ToolChoiceParam, - ToolChoiceWebSearchPreview, - ToolChoiceWebSearchPreview20250311, - ToolProjectConnection, - TopLogProb, - TypeParam, - UrlCitationBody, - UserProfileMemoryItem, - VectorStoreFileAttributes, - WaitParam, - WebSearchActionFind, - WebSearchActionOpenPage, - WebSearchActionSearch, - WebSearchActionSearchSources, - WebSearchApproximateLocation, - WebSearchConfiguration, - WebSearchPreviewTool, - WebSearchTool, - WebSearchToolFilters, - WorkIQPreviewTool, - WorkIQPreviewToolParameters, - WorkflowActionOutputItem, -) - -from ._enums import ( # type: ignore - AnnotationType, - ApplyPatchCallOutputStatus, - ApplyPatchCallOutputStatusParam, - ApplyPatchCallStatus, - ApplyPatchCallStatusParam, - ApplyPatchFileOperationType, - ApplyPatchOperationParamType, - AzureAISearchQueryType, - ClickButtonType, - ComputerActionType, - ComputerEnvironment, - ContainerMemoryLimit, - ContainerNetworkPolicyParamType, - ContainerSkillType, - CustomToolParamFormatType, - DetailEnum, - FunctionAndCustomToolCallOutputType, - FunctionCallItemStatus, - FunctionShellCallEnvironmentType, - FunctionShellCallItemParamEnvironmentType, - FunctionShellCallItemStatus, - FunctionShellCallOutputOutcomeParamType, - FunctionShellCallOutputOutcomeType, - FunctionShellToolParamEnvironmentType, - GrammarSyntax1, - ImageDetail, - ImageGenActionEnum, - IncludeEnum, - InputFidelity, - ItemFieldType, - ItemType, - LocalShellCallOutputStatusEnum, - LocalShellCallStatus, - MCPToolCallStatus, - MemoryItemKind, - MessageContentType, - MessageRole, - MessageStatus, - ModelIdsCompaction, - OpenApiAuthType, - OutputContentType, - OutputItemType, - OutputMessageContentType, - PageOrder, - RankerVersionType, - ResponseErrorCode, - ResponseStreamEventType, - SearchContextSize, - TextResponseFormatConfigurationType, - ToolCallStatus, - ToolChoiceOptions, - ToolChoiceParamType, - ToolType, -) -from ._patch import __all__ as _patch_all -from ._patch import * -from ._patch import patch_sdk as _patch_sdk - -__all__ = [ - "A2APreviewTool", - "A2AToolCall", - "A2AToolCallOutput", - "AISearchIndexResource", - "AgentReference", - "Annotation", - "ApiErrorResponse", - "ApplyPatchCreateFileOperation", - "ApplyPatchCreateFileOperationParam", - "ApplyPatchDeleteFileOperation", - "ApplyPatchDeleteFileOperationParam", - "ApplyPatchFileOperation", - "ApplyPatchOperationParam", - "ApplyPatchToolCallItemParam", - "ApplyPatchToolCallOutputItemParam", - "ApplyPatchToolParam", - "ApplyPatchUpdateFileOperation", - "ApplyPatchUpdateFileOperationParam", - "ApproximateLocation", - "AutoCodeInterpreterToolParam", - "AzureAISearchTool", - "AzureAISearchToolCall", - "AzureAISearchToolCallOutput", - "AzureAISearchToolResource", - "AzureFunctionBinding", - "AzureFunctionDefinition", - "AzureFunctionDefinitionFunction", - "AzureFunctionStorageQueue", - "AzureFunctionTool", - "AzureFunctionToolCall", - "AzureFunctionToolCallOutput", - "BingCustomSearchConfiguration", - "BingCustomSearchPreviewTool", - "BingCustomSearchToolCall", - "BingCustomSearchToolCallOutput", - "BingCustomSearchToolParameters", - "BingGroundingSearchConfiguration", - "BingGroundingSearchToolParameters", - "BingGroundingTool", - "BingGroundingToolCall", - "BingGroundingToolCallOutput", - "BrowserAutomationPreviewTool", - "BrowserAutomationToolCall", - "BrowserAutomationToolCallOutput", - "BrowserAutomationToolConnectionParameters", - "BrowserAutomationToolParameters", - "CaptureStructuredOutputsTool", - "ChatSummaryMemoryItem", - "ClickParam", - "CodeInterpreterOutputImage", - "CodeInterpreterOutputLogs", - "CodeInterpreterTool", - "CompactResource", - "CompactionSummaryItemParam", - "ComparisonFilter", - "CompoundFilter", - "ComputerAction", - "ComputerCallOutputItemParam", - "ComputerCallSafetyCheckParam", - "ComputerScreenshotContent", - "ComputerScreenshotImage", - "ComputerUsePreviewTool", - "ContainerAutoParam", - "ContainerFileCitationBody", - "ContainerNetworkPolicyAllowlistParam", - "ContainerNetworkPolicyDisabledParam", - "ContainerNetworkPolicyDomainSecretParam", - "ContainerNetworkPolicyParam", - "ContainerReferenceResource", - "ContainerSkill", - "ContextManagementParam", - "ConversationParam_2", - "ConversationReference", - "CoordParam", - "CreateResponse", - "CustomGrammarFormatParam", - "CustomTextFormatParam", - "CustomToolParam", - "CustomToolParamFormat", - "DeleteResponseResult", - "DoubleClickAction", - "DragParam", - "Error", - "FabricDataAgentToolCall", - "FabricDataAgentToolCallOutput", - "FabricDataAgentToolParameters", - "FileCitationBody", - "FilePath", - "FileSearchTool", - "FileSearchToolCallResults", - "FunctionAndCustomToolCallOutput", - "FunctionAndCustomToolCallOutputInputFileContent", - "FunctionAndCustomToolCallOutputInputImageContent", - "FunctionAndCustomToolCallOutputInputTextContent", - "FunctionCallOutputItemParam", - "FunctionShellAction", - "FunctionShellActionParam", - "FunctionShellCallEnvironment", - "FunctionShellCallItemParam", - "FunctionShellCallItemParamEnvironment", - "FunctionShellCallItemParamEnvironmentContainerReferenceParam", - "FunctionShellCallItemParamEnvironmentLocalEnvironmentParam", - "FunctionShellCallOutputContent", - "FunctionShellCallOutputContentParam", - "FunctionShellCallOutputExitOutcome", - "FunctionShellCallOutputExitOutcomeParam", - "FunctionShellCallOutputItemParam", - "FunctionShellCallOutputOutcome", - "FunctionShellCallOutputOutcomeParam", - "FunctionShellCallOutputTimeoutOutcome", - "FunctionShellCallOutputTimeoutOutcomeParam", - "FunctionShellToolParam", - "FunctionShellToolParamEnvironment", - "FunctionShellToolParamEnvironmentContainerReferenceParam", - "FunctionShellToolParamEnvironmentLocalEnvironmentParam", - "FunctionTool", - "FunctionToolCallOutput", - "FunctionToolCallOutputResource", - "HybridSearchOptions", - "ImageGenTool", - "ImageGenToolInputImageMask", - "InlineSkillParam", - "InlineSkillSourceParam", - "InputFileContent", - "InputFileContentParam", - "InputImageContent", - "InputImageContentParamAutoParam", - "InputTextContent", - "InputTextContentParam", - "Item", - "ItemCodeInterpreterToolCall", - "ItemComputerToolCall", - "ItemCustomToolCall", - "ItemCustomToolCallOutput", - "ItemField", - "ItemFieldApplyPatchToolCall", - "ItemFieldApplyPatchToolCallOutput", - "ItemFieldCodeInterpreterToolCall", - "ItemFieldCompactionBody", - "ItemFieldComputerToolCall", - "ItemFieldComputerToolCallOutputResource", - "ItemFieldCustomToolCall", - "ItemFieldCustomToolCallOutput", - "ItemFieldFileSearchToolCall", - "ItemFieldFunctionShellCall", - "ItemFieldFunctionShellCallOutput", - "ItemFieldFunctionToolCall", - "ItemFieldImageGenToolCall", - "ItemFieldLocalShellToolCall", - "ItemFieldLocalShellToolCallOutput", - "ItemFieldMcpApprovalRequest", - "ItemFieldMcpApprovalResponseResource", - "ItemFieldMcpListTools", - "ItemFieldMcpToolCall", - "ItemFieldMessage", - "ItemFieldReasoningItem", - "ItemFieldWebSearchToolCall", - "ItemFileSearchToolCall", - "ItemFunctionToolCall", - "ItemImageGenToolCall", - "ItemLocalShellToolCall", - "ItemLocalShellToolCallOutput", - "ItemMcpApprovalRequest", - "ItemMcpListTools", - "ItemMcpToolCall", - "ItemMessage", - "ItemOutputMessage", - "ItemReasoningItem", - "ItemReferenceParam", - "ItemWebSearchToolCall", - "KeyPressAction", - "LocalEnvironmentResource", - "LocalShellExecAction", - "LocalShellToolParam", - "LocalSkillParam", - "LogProb", - "MCPApprovalResponse", - "MCPListToolsTool", - "MCPListToolsToolAnnotations", - "MCPListToolsToolInputSchema", - "MCPTool", - "MCPToolFilter", - "MCPToolRequireApproval", - "MemoryItem", - "MemorySearchItem", - "MemorySearchOptions", - "MemorySearchPreviewTool", - "MemorySearchToolCallItemParam", - "MemorySearchToolCallItemResource", - "MessageContent", - "MessageContentInputFileContent", - "MessageContentInputImageContent", - "MessageContentInputTextContent", - "MessageContentOutputTextContent", - "MessageContentReasoningTextContent", - "MessageContentRefusalContent", - "Metadata", - "MicrosoftFabricPreviewTool", - "MoveParam", - "OAuthConsentRequestOutputItem", - "OpenApiAnonymousAuthDetails", - "OpenApiAuthDetails", - "OpenApiFunctionDefinition", - "OpenApiFunctionDefinitionFunction", - "OpenApiManagedAuthDetails", - "OpenApiManagedSecurityScheme", - "OpenApiProjectConnectionAuthDetails", - "OpenApiProjectConnectionSecurityScheme", - "OpenApiTool", - "OpenApiToolCall", - "OpenApiToolCallOutput", - "OutputContent", - "OutputContentOutputTextContent", - "OutputContentReasoningTextContent", - "OutputContentRefusalContent", - "OutputItem", - "OutputItemApplyPatchToolCall", - "OutputItemApplyPatchToolCallOutput", - "OutputItemCodeInterpreterToolCall", - "OutputItemCompactionBody", - "OutputItemComputerToolCall", - "OutputItemComputerToolCallOutputResource", - "OutputItemCustomToolCall", - "OutputItemCustomToolCallOutput", - "OutputItemFileSearchToolCall", - "OutputItemFunctionShellCall", - "OutputItemFunctionShellCallOutput", - "OutputItemFunctionToolCall", - "OutputItemImageGenToolCall", - "OutputItemLocalShellToolCall", - "OutputItemLocalShellToolCallOutput", - "OutputItemMcpApprovalRequest", - "OutputItemMcpApprovalResponseResource", - "OutputItemMcpListTools", - "OutputItemMcpToolCall", - "OutputItemMessage", - "OutputItemOutputMessage", - "OutputItemReasoningItem", - "OutputItemWebSearchToolCall", - "OutputMessageContent", - "OutputMessageContentOutputTextContent", - "OutputMessageContentRefusalContent", - "Prompt", - "RankingOptions", - "Reasoning", - "ReasoningTextContent", - "ResponseAudioDeltaEvent", - "ResponseAudioDoneEvent", - "ResponseAudioTranscriptDeltaEvent", - "ResponseAudioTranscriptDoneEvent", - "ResponseCodeInterpreterCallCodeDeltaEvent", - "ResponseCodeInterpreterCallCodeDoneEvent", - "ResponseCodeInterpreterCallCompletedEvent", - "ResponseCodeInterpreterCallInProgressEvent", - "ResponseCodeInterpreterCallInterpretingEvent", - "ResponseCompletedEvent", - "ResponseContentPartAddedEvent", - "ResponseContentPartDoneEvent", - "ResponseCreatedEvent", - "ResponseCustomToolCallInputDeltaEvent", - "ResponseCustomToolCallInputDoneEvent", - "ResponseErrorEvent", - "ResponseErrorInfo", - "ResponseFailedEvent", - "ResponseFileSearchCallCompletedEvent", - "ResponseFileSearchCallInProgressEvent", - "ResponseFileSearchCallSearchingEvent", - "ResponseFormatJsonSchemaSchema", - "ResponseFunctionCallArgumentsDeltaEvent", - "ResponseFunctionCallArgumentsDoneEvent", - "ResponseImageGenCallCompletedEvent", - "ResponseImageGenCallGeneratingEvent", - "ResponseImageGenCallInProgressEvent", - "ResponseImageGenCallPartialImageEvent", - "ResponseInProgressEvent", - "ResponseIncompleteDetails", - "ResponseIncompleteEvent", - "ResponseLogProb", - "ResponseLogProbTopLogprobs", - "ResponseMCPCallArgumentsDeltaEvent", - "ResponseMCPCallArgumentsDoneEvent", - "ResponseMCPCallCompletedEvent", - "ResponseMCPCallFailedEvent", - "ResponseMCPCallInProgressEvent", - "ResponseMCPListToolsCompletedEvent", - "ResponseMCPListToolsFailedEvent", - "ResponseMCPListToolsInProgressEvent", - "ResponseObject", - "ResponseOutputItemAddedEvent", - "ResponseOutputItemDoneEvent", - "ResponseOutputTextAnnotationAddedEvent", - "ResponsePromptVariables", - "ResponseQueuedEvent", - "ResponseReasoningSummaryPartAddedEvent", - "ResponseReasoningSummaryPartAddedEventPart", - "ResponseReasoningSummaryPartDoneEvent", - "ResponseReasoningSummaryPartDoneEventPart", - "ResponseReasoningSummaryTextDeltaEvent", - "ResponseReasoningSummaryTextDoneEvent", - "ResponseReasoningTextDeltaEvent", - "ResponseReasoningTextDoneEvent", - "ResponseRefusalDeltaEvent", - "ResponseRefusalDoneEvent", - "ResponseStreamEvent", - "ResponseStreamOptions", - "ResponseTextDeltaEvent", - "ResponseTextDoneEvent", - "ResponseTextParam", - "ResponseUsage", - "ResponseUsageInputTokensDetails", - "ResponseUsageOutputTokensDetails", - "ResponseWebSearchCallCompletedEvent", - "ResponseWebSearchCallInProgressEvent", - "ResponseWebSearchCallSearchingEvent", - "ScreenshotParam", - "ScrollParam", - "SharepointGroundingToolCall", - "SharepointGroundingToolCallOutput", - "SharepointGroundingToolParameters", - "SharepointPreviewTool", - "SkillReferenceParam", - "SpecificApplyPatchParam", - "SpecificFunctionShellParam", - "StructuredOutputDefinition", - "StructuredOutputsOutputItem", - "SummaryTextContent", - "TextContent", - "TextResponseFormatConfiguration", - "TextResponseFormatConfigurationResponseFormatJsonObject", - "TextResponseFormatConfigurationResponseFormatText", - "TextResponseFormatJsonSchema", - "Tool", - "ToolChoiceAllowed", - "ToolChoiceCodeInterpreter", - "ToolChoiceComputerUsePreview", - "ToolChoiceCustom", - "ToolChoiceFileSearch", - "ToolChoiceFunction", - "ToolChoiceImageGeneration", - "ToolChoiceMCP", - "ToolChoiceParam", - "ToolChoiceWebSearchPreview", - "ToolChoiceWebSearchPreview20250311", - "ToolProjectConnection", - "TopLogProb", - "TypeParam", - "UrlCitationBody", - "UserProfileMemoryItem", - "VectorStoreFileAttributes", - "WaitParam", - "WebSearchActionFind", - "WebSearchActionOpenPage", - "WebSearchActionSearch", - "WebSearchActionSearchSources", - "WebSearchApproximateLocation", - "WebSearchConfiguration", - "WebSearchPreviewTool", - "WebSearchTool", - "WebSearchToolFilters", - "WorkIQPreviewTool", - "WorkIQPreviewToolParameters", - "WorkflowActionOutputItem", - "AnnotationType", - "ApplyPatchCallOutputStatus", - "ApplyPatchCallOutputStatusParam", - "ApplyPatchCallStatus", - "ApplyPatchCallStatusParam", - "ApplyPatchFileOperationType", - "ApplyPatchOperationParamType", - "AzureAISearchQueryType", - "ClickButtonType", - "ComputerActionType", - "ComputerEnvironment", - "ContainerMemoryLimit", - "ContainerNetworkPolicyParamType", - "ContainerSkillType", - "CustomToolParamFormatType", - "DetailEnum", - "FunctionAndCustomToolCallOutputType", - "FunctionCallItemStatus", - "FunctionShellCallEnvironmentType", - "FunctionShellCallItemParamEnvironmentType", - "FunctionShellCallItemStatus", - "FunctionShellCallOutputOutcomeParamType", - "FunctionShellCallOutputOutcomeType", - "FunctionShellToolParamEnvironmentType", - "GrammarSyntax1", - "ImageDetail", - "ImageGenActionEnum", - "IncludeEnum", - "InputFidelity", - "ItemFieldType", - "ItemType", - "LocalShellCallOutputStatusEnum", - "LocalShellCallStatus", - "MCPToolCallStatus", - "MemoryItemKind", - "MessageContentType", - "MessageRole", - "MessageStatus", - "ModelIdsCompaction", - "OpenApiAuthType", - "OutputContentType", - "OutputItemType", - "OutputMessageContentType", - "PageOrder", - "RankerVersionType", - "ResponseErrorCode", - "ResponseStreamEventType", - "SearchContextSize", - "TextResponseFormatConfigurationType", - "ToolCallStatus", - "ToolChoiceOptions", - "ToolChoiceParamType", - "ToolType", -] -__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore -_patch_sdk() diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_enums.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_enums.py deleted file mode 100644 index 4ac334096a58..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_enums.py +++ /dev/null @@ -1,1226 +0,0 @@ -# pylint: disable=too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- - -from enum import Enum -from azure.core import CaseInsensitiveEnumMeta - - -class AnnotationType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of AnnotationType.""" - - FILE_CITATION = "file_citation" - """FILE_CITATION.""" - URL_CITATION = "url_citation" - """URL_CITATION.""" - CONTAINER_FILE_CITATION = "container_file_citation" - """CONTAINER_FILE_CITATION.""" - FILE_PATH = "file_path" - """FILE_PATH.""" - - -class ApplyPatchCallOutputStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ApplyPatchCallOutputStatus.""" - - COMPLETED = "completed" - """COMPLETED.""" - FAILED = "failed" - """FAILED.""" - - -class ApplyPatchCallOutputStatusParam(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Apply patch call output status.""" - - COMPLETED = "completed" - """COMPLETED.""" - FAILED = "failed" - """FAILED.""" - - -class ApplyPatchCallStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ApplyPatchCallStatus.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - - -class ApplyPatchCallStatusParam(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Apply patch call status.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - - -class ApplyPatchFileOperationType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ApplyPatchFileOperationType.""" - - CREATE_FILE = "create_file" - """CREATE_FILE.""" - DELETE_FILE = "delete_file" - """DELETE_FILE.""" - UPDATE_FILE = "update_file" - """UPDATE_FILE.""" - - -class ApplyPatchOperationParamType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ApplyPatchOperationParamType.""" - - CREATE_FILE = "create_file" - """CREATE_FILE.""" - DELETE_FILE = "delete_file" - """DELETE_FILE.""" - UPDATE_FILE = "update_file" - """UPDATE_FILE.""" - - -class AzureAISearchQueryType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Available query types for Azure AI Search tool.""" - - SIMPLE = "simple" - """Query type ``simple``.""" - SEMANTIC = "semantic" - """Query type ``semantic``.""" - VECTOR = "vector" - """Query type ``vector``.""" - VECTOR_SIMPLE_HYBRID = "vector_simple_hybrid" - """Query type ``vector_simple_hybrid``.""" - VECTOR_SEMANTIC_HYBRID = "vector_semantic_hybrid" - """Query type ``vector_semantic_hybrid``.""" - - -class ClickButtonType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ClickButtonType.""" - - LEFT = "left" - """LEFT.""" - RIGHT = "right" - """RIGHT.""" - WHEEL = "wheel" - """WHEEL.""" - BACK = "back" - """BACK.""" - FORWARD = "forward" - """FORWARD.""" - - -class ComputerActionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ComputerActionType.""" - - CLICK = "click" - """CLICK.""" - DOUBLE_CLICK = "double_click" - """DOUBLE_CLICK.""" - DRAG = "drag" - """DRAG.""" - KEYPRESS = "keypress" - """KEYPRESS.""" - MOVE = "move" - """MOVE.""" - SCREENSHOT = "screenshot" - """SCREENSHOT.""" - SCROLL = "scroll" - """SCROLL.""" - TYPE = "type" - """TYPE.""" - WAIT = "wait" - """WAIT.""" - - -class ComputerEnvironment(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ComputerEnvironment.""" - - WINDOWS = "windows" - """WINDOWS.""" - MAC = "mac" - """MAC.""" - LINUX = "linux" - """LINUX.""" - UBUNTU = "ubuntu" - """UBUNTU.""" - BROWSER = "browser" - """BROWSER.""" - - -class ContainerMemoryLimit(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ContainerMemoryLimit.""" - - ENUM_1_G = "1g" - """1_G.""" - ENUM_4_G = "4g" - """4_G.""" - ENUM_16_G = "16g" - """16_G.""" - ENUM_64_G = "64g" - """64_G.""" - - -class ContainerNetworkPolicyParamType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ContainerNetworkPolicyParamType.""" - - DISABLED = "disabled" - """DISABLED.""" - ALLOWLIST = "allowlist" - """ALLOWLIST.""" - - -class ContainerSkillType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ContainerSkillType.""" - - SKILL_REFERENCE = "skill_reference" - """SKILL_REFERENCE.""" - INLINE = "inline" - """INLINE.""" - - -class CustomToolParamFormatType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of CustomToolParamFormatType.""" - - TEXT = "text" - """TEXT.""" - GRAMMAR = "grammar" - """GRAMMAR.""" - - -class DetailEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of DetailEnum.""" - - LOW = "low" - """LOW.""" - HIGH = "high" - """HIGH.""" - AUTO = "auto" - """AUTO.""" - - -class FunctionAndCustomToolCallOutputType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionAndCustomToolCallOutputType.""" - - INPUT_TEXT = "input_text" - """INPUT_TEXT.""" - INPUT_IMAGE = "input_image" - """INPUT_IMAGE.""" - INPUT_FILE = "input_file" - """INPUT_FILE.""" - - -class FunctionCallItemStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionCallItemStatus.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - - -class FunctionShellCallEnvironmentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionShellCallEnvironmentType.""" - - LOCAL = "local" - """LOCAL.""" - CONTAINER_REFERENCE = "container_reference" - """CONTAINER_REFERENCE.""" - - -class FunctionShellCallItemParamEnvironmentType( # pylint: disable=name-too-long - str, Enum, metaclass=CaseInsensitiveEnumMeta -): - """Type of FunctionShellCallItemParamEnvironmentType.""" - - LOCAL = "local" - """LOCAL.""" - CONTAINER_REFERENCE = "container_reference" - """CONTAINER_REFERENCE.""" - - -class FunctionShellCallItemStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Shell call status.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - - -class FunctionShellCallOutputOutcomeParamType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionShellCallOutputOutcomeParamType.""" - - TIMEOUT = "timeout" - """TIMEOUT.""" - EXIT = "exit" - """EXIT.""" - - -class FunctionShellCallOutputOutcomeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionShellCallOutputOutcomeType.""" - - TIMEOUT = "timeout" - """TIMEOUT.""" - EXIT = "exit" - """EXIT.""" - - -class FunctionShellToolParamEnvironmentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of FunctionShellToolParamEnvironmentType.""" - - CONTAINER_AUTO = "container_auto" - """CONTAINER_AUTO.""" - LOCAL = "local" - """LOCAL.""" - CONTAINER_REFERENCE = "container_reference" - """CONTAINER_REFERENCE.""" - - -class GrammarSyntax1(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of GrammarSyntax1.""" - - LARK = "lark" - """LARK.""" - REGEX = "regex" - """REGEX.""" - - -class ImageDetail(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ImageDetail.""" - - LOW = "low" - """LOW.""" - HIGH = "high" - """HIGH.""" - AUTO = "auto" - """AUTO.""" - - -class ImageGenActionEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ImageGenActionEnum.""" - - GENERATE = "generate" - """GENERATE.""" - EDIT = "edit" - """EDIT.""" - AUTO = "auto" - """AUTO.""" - - -class IncludeEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Specify additional output data to include in the model response. Currently supported values - are: - - * `web_search_call.action.sources`: Include the sources of the web search tool call. - * `code_interpreter_call.outputs`: Includes the outputs of python code execution in code - interpreter tool call items. - * `computer_call_output.output.image_url`: Include image urls from the computer call output. - * `file_search_call.results`: Include the search results of the file search tool call. - * `message.input_image.image_url`: Include image urls from the input message. - * `message.output_text.logprobs`: Include logprobs with assistant messages. - * `reasoning.encrypted_content`: Includes an encrypted version of reasoning tokens in reasoning - item outputs. This enables reasoning items to be used in multi-turn conversations when using - the Responses API statelessly (like when the `store` parameter is set to `false`, or when an - organization is enrolled in the zero data retention program). - """ - - FILE_SEARCH_CALL_RESULTS = "file_search_call.results" - """FILE_SEARCH_CALL_RESULTS.""" - WEB_SEARCH_CALL_RESULTS = "web_search_call.results" - """WEB_SEARCH_CALL_RESULTS.""" - WEB_SEARCH_CALL_ACTION_SOURCES = "web_search_call.action.sources" - """WEB_SEARCH_CALL_ACTION_SOURCES.""" - MESSAGE_INPUT_IMAGE_IMAGE_URL = "message.input_image.image_url" - """MESSAGE_INPUT_IMAGE_IMAGE_URL.""" - COMPUTER_CALL_OUTPUT_OUTPUT_IMAGE_URL = "computer_call_output.output.image_url" - """COMPUTER_CALL_OUTPUT_OUTPUT_IMAGE_URL.""" - CODE_INTERPRETER_CALL_OUTPUTS = "code_interpreter_call.outputs" - """CODE_INTERPRETER_CALL_OUTPUTS.""" - REASONING_ENCRYPTED_CONTENT = "reasoning.encrypted_content" - """REASONING_ENCRYPTED_CONTENT.""" - MESSAGE_OUTPUT_TEXT_LOGPROBS = "message.output_text.logprobs" - """MESSAGE_OUTPUT_TEXT_LOGPROBS.""" - MEMORY_SEARCH_CALL_RESULTS = "memory_search_call.results" - """MEMORY_SEARCH_CALL_RESULTS.""" - - -class InputFidelity(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Control how much effort the model will exert to match the style and features, especially facial - features, of input images. This parameter is only supported for ``gpt-image-1`` and - ``gpt-image-1.5`` and later models, unsupported for ``gpt-image-1-mini``. Supports ``high`` and - ``low``. Defaults to ``low``. - """ - - HIGH = "high" - """HIGH.""" - LOW = "low" - """LOW.""" - - -class ItemFieldType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ItemFieldType.""" - - MESSAGE = "message" - """MESSAGE.""" - FUNCTION_CALL = "function_call" - """FUNCTION_CALL.""" - FUNCTION_CALL_OUTPUT = "function_call_output" - """FUNCTION_CALL_OUTPUT.""" - FILE_SEARCH_CALL = "file_search_call" - """FILE_SEARCH_CALL.""" - WEB_SEARCH_CALL = "web_search_call" - """WEB_SEARCH_CALL.""" - IMAGE_GENERATION_CALL = "image_generation_call" - """IMAGE_GENERATION_CALL.""" - COMPUTER_CALL = "computer_call" - """COMPUTER_CALL.""" - COMPUTER_CALL_OUTPUT = "computer_call_output" - """COMPUTER_CALL_OUTPUT.""" - REASONING = "reasoning" - """REASONING.""" - COMPACTION = "compaction" - """COMPACTION.""" - CODE_INTERPRETER_CALL = "code_interpreter_call" - """CODE_INTERPRETER_CALL.""" - LOCAL_SHELL_CALL = "local_shell_call" - """LOCAL_SHELL_CALL.""" - LOCAL_SHELL_CALL_OUTPUT = "local_shell_call_output" - """LOCAL_SHELL_CALL_OUTPUT.""" - SHELL_CALL = "shell_call" - """SHELL_CALL.""" - SHELL_CALL_OUTPUT = "shell_call_output" - """SHELL_CALL_OUTPUT.""" - APPLY_PATCH_CALL = "apply_patch_call" - """APPLY_PATCH_CALL.""" - APPLY_PATCH_CALL_OUTPUT = "apply_patch_call_output" - """APPLY_PATCH_CALL_OUTPUT.""" - MCP_LIST_TOOLS = "mcp_list_tools" - """MCP_LIST_TOOLS.""" - MCP_APPROVAL_REQUEST = "mcp_approval_request" - """MCP_APPROVAL_REQUEST.""" - MCP_APPROVAL_RESPONSE = "mcp_approval_response" - """MCP_APPROVAL_RESPONSE.""" - MCP_CALL = "mcp_call" - """MCP_CALL.""" - CUSTOM_TOOL_CALL = "custom_tool_call" - """CUSTOM_TOOL_CALL.""" - CUSTOM_TOOL_CALL_OUTPUT = "custom_tool_call_output" - """CUSTOM_TOOL_CALL_OUTPUT.""" - - -class ItemType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ItemType.""" - - MESSAGE = "message" - """MESSAGE.""" - OUTPUT_MESSAGE = "output_message" - """OUTPUT_MESSAGE.""" - FILE_SEARCH_CALL = "file_search_call" - """FILE_SEARCH_CALL.""" - COMPUTER_CALL = "computer_call" - """COMPUTER_CALL.""" - COMPUTER_CALL_OUTPUT = "computer_call_output" - """COMPUTER_CALL_OUTPUT.""" - WEB_SEARCH_CALL = "web_search_call" - """WEB_SEARCH_CALL.""" - FUNCTION_CALL = "function_call" - """FUNCTION_CALL.""" - FUNCTION_CALL_OUTPUT = "function_call_output" - """FUNCTION_CALL_OUTPUT.""" - REASONING = "reasoning" - """REASONING.""" - COMPACTION = "compaction" - """COMPACTION.""" - IMAGE_GENERATION_CALL = "image_generation_call" - """IMAGE_GENERATION_CALL.""" - CODE_INTERPRETER_CALL = "code_interpreter_call" - """CODE_INTERPRETER_CALL.""" - LOCAL_SHELL_CALL = "local_shell_call" - """LOCAL_SHELL_CALL.""" - LOCAL_SHELL_CALL_OUTPUT = "local_shell_call_output" - """LOCAL_SHELL_CALL_OUTPUT.""" - SHELL_CALL = "shell_call" - """SHELL_CALL.""" - SHELL_CALL_OUTPUT = "shell_call_output" - """SHELL_CALL_OUTPUT.""" - APPLY_PATCH_CALL = "apply_patch_call" - """APPLY_PATCH_CALL.""" - APPLY_PATCH_CALL_OUTPUT = "apply_patch_call_output" - """APPLY_PATCH_CALL_OUTPUT.""" - MCP_LIST_TOOLS = "mcp_list_tools" - """MCP_LIST_TOOLS.""" - MCP_APPROVAL_REQUEST = "mcp_approval_request" - """MCP_APPROVAL_REQUEST.""" - MCP_APPROVAL_RESPONSE = "mcp_approval_response" - """MCP_APPROVAL_RESPONSE.""" - MCP_CALL = "mcp_call" - """MCP_CALL.""" - CUSTOM_TOOL_CALL_OUTPUT = "custom_tool_call_output" - """CUSTOM_TOOL_CALL_OUTPUT.""" - CUSTOM_TOOL_CALL = "custom_tool_call" - """CUSTOM_TOOL_CALL.""" - ITEM_REFERENCE = "item_reference" - """ITEM_REFERENCE.""" - STRUCTURED_OUTPUTS = "structured_outputs" - """STRUCTURED_OUTPUTS.""" - OAUTH_CONSENT_REQUEST = "oauth_consent_request" - """OAUTH_CONSENT_REQUEST.""" - MEMORY_SEARCH_CALL = "memory_search_call" - """MEMORY_SEARCH_CALL.""" - WORKFLOW_ACTION = "workflow_action" - """WORKFLOW_ACTION.""" - A2_A_PREVIEW_CALL = "a2a_preview_call" - """A2_A_PREVIEW_CALL.""" - A2_A_PREVIEW_CALL_OUTPUT = "a2a_preview_call_output" - """A2_A_PREVIEW_CALL_OUTPUT.""" - BING_GROUNDING_CALL = "bing_grounding_call" - """BING_GROUNDING_CALL.""" - BING_GROUNDING_CALL_OUTPUT = "bing_grounding_call_output" - """BING_GROUNDING_CALL_OUTPUT.""" - SHAREPOINT_GROUNDING_PREVIEW_CALL = "sharepoint_grounding_preview_call" - """SHAREPOINT_GROUNDING_PREVIEW_CALL.""" - SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT = "sharepoint_grounding_preview_call_output" - """SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT.""" - AZURE_AI_SEARCH_CALL = "azure_ai_search_call" - """AZURE_AI_SEARCH_CALL.""" - AZURE_AI_SEARCH_CALL_OUTPUT = "azure_ai_search_call_output" - """AZURE_AI_SEARCH_CALL_OUTPUT.""" - BING_CUSTOM_SEARCH_PREVIEW_CALL = "bing_custom_search_preview_call" - """BING_CUSTOM_SEARCH_PREVIEW_CALL.""" - BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT = "bing_custom_search_preview_call_output" - """BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT.""" - OPENAPI_CALL = "openapi_call" - """OPENAPI_CALL.""" - OPENAPI_CALL_OUTPUT = "openapi_call_output" - """OPENAPI_CALL_OUTPUT.""" - BROWSER_AUTOMATION_PREVIEW_CALL = "browser_automation_preview_call" - """BROWSER_AUTOMATION_PREVIEW_CALL.""" - BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT = "browser_automation_preview_call_output" - """BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT.""" - FABRIC_DATAAGENT_PREVIEW_CALL = "fabric_dataagent_preview_call" - """FABRIC_DATAAGENT_PREVIEW_CALL.""" - FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT = "fabric_dataagent_preview_call_output" - """FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT.""" - AZURE_FUNCTION_CALL = "azure_function_call" - """AZURE_FUNCTION_CALL.""" - AZURE_FUNCTION_CALL_OUTPUT = "azure_function_call_output" - """AZURE_FUNCTION_CALL_OUTPUT.""" - - -class LocalShellCallOutputStatusEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of LocalShellCallOutputStatusEnum.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - - -class LocalShellCallStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of LocalShellCallStatus.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - - -class MCPToolCallStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of MCPToolCallStatus.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - CALLING = "calling" - """CALLING.""" - FAILED = "failed" - """FAILED.""" - - -class MemoryItemKind(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Memory item kind.""" - - USER_PROFILE = "user_profile" - """User profile information extracted from conversations.""" - CHAT_SUMMARY = "chat_summary" - """Summary of chat conversations.""" - - -class MessageContentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of MessageContentType.""" - - INPUT_TEXT = "input_text" - """INPUT_TEXT.""" - OUTPUT_TEXT = "output_text" - """OUTPUT_TEXT.""" - TEXT = "text" - """TEXT.""" - SUMMARY_TEXT = "summary_text" - """SUMMARY_TEXT.""" - REASONING_TEXT = "reasoning_text" - """REASONING_TEXT.""" - REFUSAL = "refusal" - """REFUSAL.""" - INPUT_IMAGE = "input_image" - """INPUT_IMAGE.""" - COMPUTER_SCREENSHOT = "computer_screenshot" - """COMPUTER_SCREENSHOT.""" - INPUT_FILE = "input_file" - """INPUT_FILE.""" - - -class MessageRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of MessageRole.""" - - UNKNOWN = "unknown" - """UNKNOWN.""" - USER = "user" - """USER.""" - ASSISTANT = "assistant" - """ASSISTANT.""" - SYSTEM = "system" - """SYSTEM.""" - CRITIC = "critic" - """CRITIC.""" - DISCRIMINATOR = "discriminator" - """DISCRIMINATOR.""" - DEVELOPER = "developer" - """DEVELOPER.""" - TOOL = "tool" - """TOOL.""" - - -class MessageStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of MessageStatus.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - - -class ModelIdsCompaction(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Model ID used to generate the response, like ``gpt-5`` or ``o3``. OpenAI offers a wide range of - models with different capabilities, performance characteristics, and price points. Refer to the - `model guide `_ to browse and compare available models. - """ - - GPT5_2 = "gpt-5.2" - """GPT5_2.""" - GPT5_2_2025_12_11 = "gpt-5.2-2025-12-11" - """GPT5_2_2025_12_11.""" - GPT5_2_CHAT_LATEST = "gpt-5.2-chat-latest" - """GPT5_2_CHAT_LATEST.""" - GPT5_2_PRO = "gpt-5.2-pro" - """GPT5_2_PRO.""" - GPT5_2_PRO2025_12_11 = "gpt-5.2-pro-2025-12-11" - """GPT5_2_PRO2025_12_11.""" - GPT5_1 = "gpt-5.1" - """GPT5_1.""" - GPT5_1_2025_11_13 = "gpt-5.1-2025-11-13" - """GPT5_1_2025_11_13.""" - GPT5_1_CODEX = "gpt-5.1-codex" - """GPT5_1_CODEX.""" - GPT5_1_MINI = "gpt-5.1-mini" - """GPT5_1_MINI.""" - GPT5_1_CHAT_LATEST = "gpt-5.1-chat-latest" - """GPT5_1_CHAT_LATEST.""" - GPT5 = "gpt-5" - """GPT5.""" - GPT5_MINI = "gpt-5-mini" - """GPT5_MINI.""" - GPT5_NANO = "gpt-5-nano" - """GPT5_NANO.""" - GPT5_2025_08_07 = "gpt-5-2025-08-07" - """GPT5_2025_08_07.""" - GPT5_MINI2025_08_07 = "gpt-5-mini-2025-08-07" - """GPT5_MINI2025_08_07.""" - GPT5_NANO2025_08_07 = "gpt-5-nano-2025-08-07" - """GPT5_NANO2025_08_07.""" - GPT5_CHAT_LATEST = "gpt-5-chat-latest" - """GPT5_CHAT_LATEST.""" - GPT4_1 = "gpt-4.1" - """GPT4_1.""" - GPT4_1_MINI = "gpt-4.1-mini" - """GPT4_1_MINI.""" - GPT4_1_NANO = "gpt-4.1-nano" - """GPT4_1_NANO.""" - GPT4_1_2025_04_14 = "gpt-4.1-2025-04-14" - """GPT4_1_2025_04_14.""" - GPT4_1_MINI2025_04_14 = "gpt-4.1-mini-2025-04-14" - """GPT4_1_MINI2025_04_14.""" - GPT4_1_NANO2025_04_14 = "gpt-4.1-nano-2025-04-14" - """GPT4_1_NANO2025_04_14.""" - O4_MINI = "o4-mini" - """O4_MINI.""" - O4_MINI2025_04_16 = "o4-mini-2025-04-16" - """O4_MINI2025_04_16.""" - O3 = "o3" - """O3.""" - O3_2025_04_16 = "o3-2025-04-16" - """O3_2025_04_16.""" - O3_MINI = "o3-mini" - """O3_MINI.""" - O3_MINI2025_01_31 = "o3-mini-2025-01-31" - """O3_MINI2025_01_31.""" - O1 = "o1" - """O1.""" - O1_2024_12_17 = "o1-2024-12-17" - """O1_2024_12_17.""" - O1_PREVIEW = "o1-preview" - """O1_PREVIEW.""" - O1_PREVIEW2024_09_12 = "o1-preview-2024-09-12" - """O1_PREVIEW2024_09_12.""" - O1_MINI = "o1-mini" - """O1_MINI.""" - O1_MINI2024_09_12 = "o1-mini-2024-09-12" - """O1_MINI2024_09_12.""" - GPT4_O = "gpt-4o" - """GPT4_O.""" - GPT4_O2024_11_20 = "gpt-4o-2024-11-20" - """GPT4_O2024_11_20.""" - GPT4_O2024_08_06 = "gpt-4o-2024-08-06" - """GPT4_O2024_08_06.""" - GPT4_O2024_05_13 = "gpt-4o-2024-05-13" - """GPT4_O2024_05_13.""" - GPT4_O_AUDIO_PREVIEW = "gpt-4o-audio-preview" - """GPT4_O_AUDIO_PREVIEW.""" - GPT4_O_AUDIO_PREVIEW2024_10_01 = "gpt-4o-audio-preview-2024-10-01" - """GPT4_O_AUDIO_PREVIEW2024_10_01.""" - GPT4_O_AUDIO_PREVIEW2024_12_17 = "gpt-4o-audio-preview-2024-12-17" - """GPT4_O_AUDIO_PREVIEW2024_12_17.""" - GPT4_O_AUDIO_PREVIEW2025_06_03 = "gpt-4o-audio-preview-2025-06-03" - """GPT4_O_AUDIO_PREVIEW2025_06_03.""" - GPT4_O_MINI_AUDIO_PREVIEW = "gpt-4o-mini-audio-preview" - """GPT4_O_MINI_AUDIO_PREVIEW.""" - GPT4_O_MINI_AUDIO_PREVIEW2024_12_17 = "gpt-4o-mini-audio-preview-2024-12-17" - """GPT4_O_MINI_AUDIO_PREVIEW2024_12_17.""" - GPT4_O_SEARCH_PREVIEW = "gpt-4o-search-preview" - """GPT4_O_SEARCH_PREVIEW.""" - GPT4_O_MINI_SEARCH_PREVIEW = "gpt-4o-mini-search-preview" - """GPT4_O_MINI_SEARCH_PREVIEW.""" - GPT4_O_SEARCH_PREVIEW2025_03_11 = "gpt-4o-search-preview-2025-03-11" - """GPT4_O_SEARCH_PREVIEW2025_03_11.""" - GPT4_O_MINI_SEARCH_PREVIEW2025_03_11 = "gpt-4o-mini-search-preview-2025-03-11" - """GPT4_O_MINI_SEARCH_PREVIEW2025_03_11.""" - CHATGPT4_O_LATEST = "chatgpt-4o-latest" - """CHATGPT4_O_LATEST.""" - CODEX_MINI_LATEST = "codex-mini-latest" - """CODEX_MINI_LATEST.""" - GPT4_O_MINI = "gpt-4o-mini" - """GPT4_O_MINI.""" - GPT4_O_MINI2024_07_18 = "gpt-4o-mini-2024-07-18" - """GPT4_O_MINI2024_07_18.""" - GPT4_TURBO = "gpt-4-turbo" - """GPT4_TURBO.""" - GPT4_TURBO2024_04_09 = "gpt-4-turbo-2024-04-09" - """GPT4_TURBO2024_04_09.""" - GPT4_0125_PREVIEW = "gpt-4-0125-preview" - """GPT4_0125_PREVIEW.""" - GPT4_TURBO_PREVIEW = "gpt-4-turbo-preview" - """GPT4_TURBO_PREVIEW.""" - GPT4_1106_PREVIEW = "gpt-4-1106-preview" - """GPT4_1106_PREVIEW.""" - GPT4_VISION_PREVIEW = "gpt-4-vision-preview" - """GPT4_VISION_PREVIEW.""" - GPT4 = "gpt-4" - """GPT4.""" - GPT4_0314 = "gpt-4-0314" - """GPT4_0314.""" - GPT4_0613 = "gpt-4-0613" - """GPT4_0613.""" - GPT4_32_K = "gpt-4-32k" - """GPT4_32_K.""" - GPT4_32_K0314 = "gpt-4-32k-0314" - """GPT4_32_K0314.""" - GPT4_32_K0613 = "gpt-4-32k-0613" - """GPT4_32_K0613.""" - GPT3_5_TURBO = "gpt-3.5-turbo" - """GPT3_5_TURBO.""" - GPT3_5_TURBO16_K = "gpt-3.5-turbo-16k" - """GPT3_5_TURBO16_K.""" - GPT3_5_TURBO0301 = "gpt-3.5-turbo-0301" - """GPT3_5_TURBO0301.""" - GPT3_5_TURBO0613 = "gpt-3.5-turbo-0613" - """GPT3_5_TURBO0613.""" - GPT3_5_TURBO1106 = "gpt-3.5-turbo-1106" - """GPT3_5_TURBO1106.""" - GPT3_5_TURBO0125 = "gpt-3.5-turbo-0125" - """GPT3_5_TURBO0125.""" - GPT3_5_TURBO16_K0613 = "gpt-3.5-turbo-16k-0613" - """GPT3_5_TURBO16_K0613.""" - O1_PRO = "o1-pro" - """O1_PRO.""" - O1_PRO2025_03_19 = "o1-pro-2025-03-19" - """O1_PRO2025_03_19.""" - O3_PRO = "o3-pro" - """O3_PRO.""" - O3_PRO2025_06_10 = "o3-pro-2025-06-10" - """O3_PRO2025_06_10.""" - O3_DEEP_RESEARCH = "o3-deep-research" - """O3_DEEP_RESEARCH.""" - O3_DEEP_RESEARCH2025_06_26 = "o3-deep-research-2025-06-26" - """O3_DEEP_RESEARCH2025_06_26.""" - O4_MINI_DEEP_RESEARCH = "o4-mini-deep-research" - """O4_MINI_DEEP_RESEARCH.""" - O4_MINI_DEEP_RESEARCH2025_06_26 = "o4-mini-deep-research-2025-06-26" - """O4_MINI_DEEP_RESEARCH2025_06_26.""" - COMPUTER_USE_PREVIEW = "computer-use-preview" - """COMPUTER_USE_PREVIEW.""" - COMPUTER_USE_PREVIEW2025_03_11 = "computer-use-preview-2025-03-11" - """COMPUTER_USE_PREVIEW2025_03_11.""" - GPT5_CODEX = "gpt-5-codex" - """GPT5_CODEX.""" - GPT5_PRO = "gpt-5-pro" - """GPT5_PRO.""" - GPT5_PRO2025_10_06 = "gpt-5-pro-2025-10-06" - """GPT5_PRO2025_10_06.""" - GPT5_1_CODEX_MAX = "gpt-5.1-codex-max" - """GPT5_1_CODEX_MAX.""" - - -class OpenApiAuthType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Authentication type for OpenApi endpoint. Allowed types are: - - * Anonymous (no authentication required) - * Project Connection (requires project_connection_id to endpoint, as setup in AI Foundry) - * Managed_Identity (requires audience for identity based auth). - """ - - ANONYMOUS = "anonymous" - """ANONYMOUS.""" - PROJECT_CONNECTION = "project_connection" - """PROJECT_CONNECTION.""" - MANAGED_IDENTITY = "managed_identity" - """MANAGED_IDENTITY.""" - - -class OutputContentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of OutputContentType.""" - - OUTPUT_TEXT = "output_text" - """OUTPUT_TEXT.""" - REFUSAL = "refusal" - """REFUSAL.""" - REASONING_TEXT = "reasoning_text" - """REASONING_TEXT.""" - - -class OutputItemType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of OutputItemType.""" - - OUTPUT_MESSAGE = "output_message" - """OUTPUT_MESSAGE.""" - FILE_SEARCH_CALL = "file_search_call" - """FILE_SEARCH_CALL.""" - FUNCTION_CALL = "function_call" - """FUNCTION_CALL.""" - WEB_SEARCH_CALL = "web_search_call" - """WEB_SEARCH_CALL.""" - COMPUTER_CALL = "computer_call" - """COMPUTER_CALL.""" - REASONING = "reasoning" - """REASONING.""" - COMPACTION = "compaction" - """COMPACTION.""" - IMAGE_GENERATION_CALL = "image_generation_call" - """IMAGE_GENERATION_CALL.""" - CODE_INTERPRETER_CALL = "code_interpreter_call" - """CODE_INTERPRETER_CALL.""" - LOCAL_SHELL_CALL = "local_shell_call" - """LOCAL_SHELL_CALL.""" - SHELL_CALL = "shell_call" - """SHELL_CALL.""" - SHELL_CALL_OUTPUT = "shell_call_output" - """SHELL_CALL_OUTPUT.""" - APPLY_PATCH_CALL = "apply_patch_call" - """APPLY_PATCH_CALL.""" - APPLY_PATCH_CALL_OUTPUT = "apply_patch_call_output" - """APPLY_PATCH_CALL_OUTPUT.""" - MCP_CALL = "mcp_call" - """MCP_CALL.""" - MCP_LIST_TOOLS = "mcp_list_tools" - """MCP_LIST_TOOLS.""" - MCP_APPROVAL_REQUEST = "mcp_approval_request" - """MCP_APPROVAL_REQUEST.""" - CUSTOM_TOOL_CALL = "custom_tool_call" - """CUSTOM_TOOL_CALL.""" - MESSAGE = "message" - """MESSAGE.""" - COMPUTER_CALL_OUTPUT = "computer_call_output" - """COMPUTER_CALL_OUTPUT.""" - FUNCTION_CALL_OUTPUT = "function_call_output" - """FUNCTION_CALL_OUTPUT.""" - LOCAL_SHELL_CALL_OUTPUT = "local_shell_call_output" - """LOCAL_SHELL_CALL_OUTPUT.""" - MCP_APPROVAL_RESPONSE = "mcp_approval_response" - """MCP_APPROVAL_RESPONSE.""" - CUSTOM_TOOL_CALL_OUTPUT = "custom_tool_call_output" - """CUSTOM_TOOL_CALL_OUTPUT.""" - STRUCTURED_OUTPUTS = "structured_outputs" - """STRUCTURED_OUTPUTS.""" - OAUTH_CONSENT_REQUEST = "oauth_consent_request" - """OAUTH_CONSENT_REQUEST.""" - MEMORY_SEARCH_CALL = "memory_search_call" - """MEMORY_SEARCH_CALL.""" - WORKFLOW_ACTION = "workflow_action" - """WORKFLOW_ACTION.""" - A2_A_PREVIEW_CALL = "a2a_preview_call" - """A2_A_PREVIEW_CALL.""" - A2_A_PREVIEW_CALL_OUTPUT = "a2a_preview_call_output" - """A2_A_PREVIEW_CALL_OUTPUT.""" - BING_GROUNDING_CALL = "bing_grounding_call" - """BING_GROUNDING_CALL.""" - BING_GROUNDING_CALL_OUTPUT = "bing_grounding_call_output" - """BING_GROUNDING_CALL_OUTPUT.""" - SHAREPOINT_GROUNDING_PREVIEW_CALL = "sharepoint_grounding_preview_call" - """SHAREPOINT_GROUNDING_PREVIEW_CALL.""" - SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT = "sharepoint_grounding_preview_call_output" - """SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT.""" - AZURE_AI_SEARCH_CALL = "azure_ai_search_call" - """AZURE_AI_SEARCH_CALL.""" - AZURE_AI_SEARCH_CALL_OUTPUT = "azure_ai_search_call_output" - """AZURE_AI_SEARCH_CALL_OUTPUT.""" - BING_CUSTOM_SEARCH_PREVIEW_CALL = "bing_custom_search_preview_call" - """BING_CUSTOM_SEARCH_PREVIEW_CALL.""" - BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT = "bing_custom_search_preview_call_output" - """BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT.""" - OPENAPI_CALL = "openapi_call" - """OPENAPI_CALL.""" - OPENAPI_CALL_OUTPUT = "openapi_call_output" - """OPENAPI_CALL_OUTPUT.""" - BROWSER_AUTOMATION_PREVIEW_CALL = "browser_automation_preview_call" - """BROWSER_AUTOMATION_PREVIEW_CALL.""" - BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT = "browser_automation_preview_call_output" - """BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT.""" - FABRIC_DATAAGENT_PREVIEW_CALL = "fabric_dataagent_preview_call" - """FABRIC_DATAAGENT_PREVIEW_CALL.""" - FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT = "fabric_dataagent_preview_call_output" - """FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT.""" - AZURE_FUNCTION_CALL = "azure_function_call" - """AZURE_FUNCTION_CALL.""" - AZURE_FUNCTION_CALL_OUTPUT = "azure_function_call_output" - """AZURE_FUNCTION_CALL_OUTPUT.""" - - -class OutputMessageContentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of OutputMessageContentType.""" - - OUTPUT_TEXT = "output_text" - """OUTPUT_TEXT.""" - REFUSAL = "refusal" - """REFUSAL.""" - - -class PageOrder(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of PageOrder.""" - - ASC = "asc" - """ASC.""" - DESC = "desc" - """DESC.""" - - -class RankerVersionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of RankerVersionType.""" - - AUTO = "auto" - """AUTO.""" - DEFAULT2024_11_15 = "default-2024-11-15" - """DEFAULT2024_11_15.""" - - -class ResponseErrorCode(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The error code for the response.""" - - SERVER_ERROR = "server_error" - """SERVER_ERROR.""" - RATE_LIMIT_EXCEEDED = "rate_limit_exceeded" - """RATE_LIMIT_EXCEEDED.""" - INVALID_PROMPT = "invalid_prompt" - """INVALID_PROMPT.""" - VECTOR_STORE_TIMEOUT = "vector_store_timeout" - """VECTOR_STORE_TIMEOUT.""" - INVALID_IMAGE = "invalid_image" - """INVALID_IMAGE.""" - INVALID_IMAGE_FORMAT = "invalid_image_format" - """INVALID_IMAGE_FORMAT.""" - INVALID_BASE64_IMAGE = "invalid_base64_image" - """INVALID_BASE64_IMAGE.""" - INVALID_IMAGE_URL = "invalid_image_url" - """INVALID_IMAGE_URL.""" - IMAGE_TOO_LARGE = "image_too_large" - """IMAGE_TOO_LARGE.""" - IMAGE_TOO_SMALL = "image_too_small" - """IMAGE_TOO_SMALL.""" - IMAGE_PARSE_ERROR = "image_parse_error" - """IMAGE_PARSE_ERROR.""" - IMAGE_CONTENT_POLICY_VIOLATION = "image_content_policy_violation" - """IMAGE_CONTENT_POLICY_VIOLATION.""" - INVALID_IMAGE_MODE = "invalid_image_mode" - """INVALID_IMAGE_MODE.""" - IMAGE_FILE_TOO_LARGE = "image_file_too_large" - """IMAGE_FILE_TOO_LARGE.""" - UNSUPPORTED_IMAGE_MEDIA_TYPE = "unsupported_image_media_type" - """UNSUPPORTED_IMAGE_MEDIA_TYPE.""" - EMPTY_IMAGE_FILE = "empty_image_file" - """EMPTY_IMAGE_FILE.""" - FAILED_TO_DOWNLOAD_IMAGE = "failed_to_download_image" - """FAILED_TO_DOWNLOAD_IMAGE.""" - IMAGE_FILE_NOT_FOUND = "image_file_not_found" - """IMAGE_FILE_NOT_FOUND.""" - - -class ResponseStreamEventType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ResponseStreamEventType.""" - - RESPONSE_AUDIO_DELTA = "response.audio.delta" - """RESPONSE_AUDIO_DELTA.""" - RESPONSE_AUDIO_DONE = "response.audio.done" - """RESPONSE_AUDIO_DONE.""" - RESPONSE_AUDIO_TRANSCRIPT_DELTA = "response.audio.transcript.delta" - """RESPONSE_AUDIO_TRANSCRIPT_DELTA.""" - RESPONSE_AUDIO_TRANSCRIPT_DONE = "response.audio.transcript.done" - """RESPONSE_AUDIO_TRANSCRIPT_DONE.""" - RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA = "response.code_interpreter_call_code.delta" - """RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA.""" - RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE = "response.code_interpreter_call_code.done" - """RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE.""" - RESPONSE_CODE_INTERPRETER_CALL_COMPLETED = "response.code_interpreter_call.completed" - """RESPONSE_CODE_INTERPRETER_CALL_COMPLETED.""" - RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS = "response.code_interpreter_call.in_progress" - """RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS.""" - RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING = "response.code_interpreter_call.interpreting" - """RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING.""" - RESPONSE_COMPLETED = "response.completed" - """RESPONSE_COMPLETED.""" - RESPONSE_CONTENT_PART_ADDED = "response.content_part.added" - """RESPONSE_CONTENT_PART_ADDED.""" - RESPONSE_CONTENT_PART_DONE = "response.content_part.done" - """RESPONSE_CONTENT_PART_DONE.""" - RESPONSE_CREATED = "response.created" - """RESPONSE_CREATED.""" - ERROR = "error" - """ERROR.""" - RESPONSE_FILE_SEARCH_CALL_COMPLETED = "response.file_search_call.completed" - """RESPONSE_FILE_SEARCH_CALL_COMPLETED.""" - RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS = "response.file_search_call.in_progress" - """RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS.""" - RESPONSE_FILE_SEARCH_CALL_SEARCHING = "response.file_search_call.searching" - """RESPONSE_FILE_SEARCH_CALL_SEARCHING.""" - RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA = "response.function_call_arguments.delta" - """RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA.""" - RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE = "response.function_call_arguments.done" - """RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE.""" - RESPONSE_IN_PROGRESS = "response.in_progress" - """RESPONSE_IN_PROGRESS.""" - RESPONSE_FAILED = "response.failed" - """RESPONSE_FAILED.""" - RESPONSE_INCOMPLETE = "response.incomplete" - """RESPONSE_INCOMPLETE.""" - RESPONSE_OUTPUT_ITEM_ADDED = "response.output_item.added" - """RESPONSE_OUTPUT_ITEM_ADDED.""" - RESPONSE_OUTPUT_ITEM_DONE = "response.output_item.done" - """RESPONSE_OUTPUT_ITEM_DONE.""" - RESPONSE_REASONING_SUMMARY_PART_ADDED = "response.reasoning_summary_part.added" - """RESPONSE_REASONING_SUMMARY_PART_ADDED.""" - RESPONSE_REASONING_SUMMARY_PART_DONE = "response.reasoning_summary_part.done" - """RESPONSE_REASONING_SUMMARY_PART_DONE.""" - RESPONSE_REASONING_SUMMARY_TEXT_DELTA = "response.reasoning_summary_text.delta" - """RESPONSE_REASONING_SUMMARY_TEXT_DELTA.""" - RESPONSE_REASONING_SUMMARY_TEXT_DONE = "response.reasoning_summary_text.done" - """RESPONSE_REASONING_SUMMARY_TEXT_DONE.""" - RESPONSE_REASONING_TEXT_DELTA = "response.reasoning_text.delta" - """RESPONSE_REASONING_TEXT_DELTA.""" - RESPONSE_REASONING_TEXT_DONE = "response.reasoning_text.done" - """RESPONSE_REASONING_TEXT_DONE.""" - RESPONSE_REFUSAL_DELTA = "response.refusal.delta" - """RESPONSE_REFUSAL_DELTA.""" - RESPONSE_REFUSAL_DONE = "response.refusal.done" - """RESPONSE_REFUSAL_DONE.""" - RESPONSE_OUTPUT_TEXT_DELTA = "response.output_text.delta" - """RESPONSE_OUTPUT_TEXT_DELTA.""" - RESPONSE_OUTPUT_TEXT_DONE = "response.output_text.done" - """RESPONSE_OUTPUT_TEXT_DONE.""" - RESPONSE_WEB_SEARCH_CALL_COMPLETED = "response.web_search_call.completed" - """RESPONSE_WEB_SEARCH_CALL_COMPLETED.""" - RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS = "response.web_search_call.in_progress" - """RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS.""" - RESPONSE_WEB_SEARCH_CALL_SEARCHING = "response.web_search_call.searching" - """RESPONSE_WEB_SEARCH_CALL_SEARCHING.""" - RESPONSE_IMAGE_GENERATION_CALL_COMPLETED = "response.image_generation_call.completed" - """RESPONSE_IMAGE_GENERATION_CALL_COMPLETED.""" - RESPONSE_IMAGE_GENERATION_CALL_GENERATING = "response.image_generation_call.generating" - """RESPONSE_IMAGE_GENERATION_CALL_GENERATING.""" - RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS = "response.image_generation_call.in_progress" - """RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS.""" - RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE = "response.image_generation_call.partial_image" - """RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE.""" - RESPONSE_MCP_CALL_ARGUMENTS_DELTA = "response.mcp_call_arguments.delta" - """RESPONSE_MCP_CALL_ARGUMENTS_DELTA.""" - RESPONSE_MCP_CALL_ARGUMENTS_DONE = "response.mcp_call_arguments.done" - """RESPONSE_MCP_CALL_ARGUMENTS_DONE.""" - RESPONSE_MCP_CALL_COMPLETED = "response.mcp_call.completed" - """RESPONSE_MCP_CALL_COMPLETED.""" - RESPONSE_MCP_CALL_FAILED = "response.mcp_call.failed" - """RESPONSE_MCP_CALL_FAILED.""" - RESPONSE_MCP_CALL_IN_PROGRESS = "response.mcp_call.in_progress" - """RESPONSE_MCP_CALL_IN_PROGRESS.""" - RESPONSE_MCP_LIST_TOOLS_COMPLETED = "response.mcp_list_tools.completed" - """RESPONSE_MCP_LIST_TOOLS_COMPLETED.""" - RESPONSE_MCP_LIST_TOOLS_FAILED = "response.mcp_list_tools.failed" - """RESPONSE_MCP_LIST_TOOLS_FAILED.""" - RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS = "response.mcp_list_tools.in_progress" - """RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS.""" - RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED = "response.output_text.annotation.added" - """RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED.""" - RESPONSE_QUEUED = "response.queued" - """RESPONSE_QUEUED.""" - RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA = "response.custom_tool_call_input.delta" - """RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA.""" - RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE = "response.custom_tool_call_input.done" - """RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE.""" - - -class SearchContextSize(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of SearchContextSize.""" - - LOW = "low" - """LOW.""" - MEDIUM = "medium" - """MEDIUM.""" - HIGH = "high" - """HIGH.""" - - -class TextResponseFormatConfigurationType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of TextResponseFormatConfigurationType.""" - - TEXT = "text" - """TEXT.""" - JSON_SCHEMA = "json_schema" - """JSON_SCHEMA.""" - JSON_OBJECT = "json_object" - """JSON_OBJECT.""" - - -class ToolCallStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """The status of a tool call.""" - - IN_PROGRESS = "in_progress" - """IN_PROGRESS.""" - COMPLETED = "completed" - """COMPLETED.""" - INCOMPLETE = "incomplete" - """INCOMPLETE.""" - FAILED = "failed" - """FAILED.""" - - -class ToolChoiceOptions(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Tool choice mode.""" - - NONE = "none" - """NONE.""" - AUTO = "auto" - """AUTO.""" - REQUIRED = "required" - """REQUIRED.""" - - -class ToolChoiceParamType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ToolChoiceParamType.""" - - ALLOWED_TOOLS = "allowed_tools" - """ALLOWED_TOOLS.""" - FUNCTION = "function" - """FUNCTION.""" - MCP = "mcp" - """MCP.""" - CUSTOM = "custom" - """CUSTOM.""" - APPLY_PATCH = "apply_patch" - """APPLY_PATCH.""" - SHELL = "shell" - """SHELL.""" - FILE_SEARCH = "file_search" - """FILE_SEARCH.""" - WEB_SEARCH_PREVIEW = "web_search_preview" - """WEB_SEARCH_PREVIEW.""" - COMPUTER_USE_PREVIEW = "computer_use_preview" - """COMPUTER_USE_PREVIEW.""" - WEB_SEARCH_PREVIEW2025_03_11 = "web_search_preview_2025_03_11" - """WEB_SEARCH_PREVIEW2025_03_11.""" - IMAGE_GENERATION = "image_generation" - """IMAGE_GENERATION.""" - CODE_INTERPRETER = "code_interpreter" - """CODE_INTERPRETER.""" - - -class ToolType(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Type of ToolType.""" - - FUNCTION = "function" - """FUNCTION.""" - FILE_SEARCH = "file_search" - """FILE_SEARCH.""" - COMPUTER_USE_PREVIEW = "computer_use_preview" - """COMPUTER_USE_PREVIEW.""" - WEB_SEARCH = "web_search" - """WEB_SEARCH.""" - MCP = "mcp" - """MCP.""" - CODE_INTERPRETER = "code_interpreter" - """CODE_INTERPRETER.""" - IMAGE_GENERATION = "image_generation" - """IMAGE_GENERATION.""" - LOCAL_SHELL = "local_shell" - """LOCAL_SHELL.""" - SHELL = "shell" - """SHELL.""" - CUSTOM = "custom" - """CUSTOM.""" - WEB_SEARCH_PREVIEW = "web_search_preview" - """WEB_SEARCH_PREVIEW.""" - APPLY_PATCH = "apply_patch" - """APPLY_PATCH.""" - A2_A_PREVIEW = "a2a_preview" - """A2_A_PREVIEW.""" - BING_CUSTOM_SEARCH_PREVIEW = "bing_custom_search_preview" - """BING_CUSTOM_SEARCH_PREVIEW.""" - BROWSER_AUTOMATION_PREVIEW = "browser_automation_preview" - """BROWSER_AUTOMATION_PREVIEW.""" - FABRIC_DATAAGENT_PREVIEW = "fabric_dataagent_preview" - """FABRIC_DATAAGENT_PREVIEW.""" - SHAREPOINT_GROUNDING_PREVIEW = "sharepoint_grounding_preview" - """SHAREPOINT_GROUNDING_PREVIEW.""" - MEMORY_SEARCH_PREVIEW = "memory_search_preview" - """MEMORY_SEARCH_PREVIEW.""" - WORK_IQ_PREVIEW = "work_iq_preview" - """WORK_IQ_PREVIEW.""" - AZURE_AI_SEARCH = "azure_ai_search" - """AZURE_AI_SEARCH.""" - AZURE_FUNCTION = "azure_function" - """AZURE_FUNCTION.""" - BING_GROUNDING = "bing_grounding" - """BING_GROUNDING.""" - CAPTURE_STRUCTURED_OUTPUTS = "capture_structured_outputs" - """CAPTURE_STRUCTURED_OUTPUTS.""" - OPENAPI = "openapi" - """OPENAPI.""" diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_models.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_models.py deleted file mode 100644 index 7e15ca44d5eb..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_models.py +++ /dev/null @@ -1,17025 +0,0 @@ -# pylint: disable=line-too-long,useless-suppression,too-many-lines -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# Code generated by Microsoft (R) Python Code Generator. -# Changes may cause incorrect behavior and will be lost if the code is regenerated. -# -------------------------------------------------------------------------- -# pylint: disable=useless-super-delegation - -import datetime -from typing import Any, Literal, Mapping, Optional, TYPE_CHECKING, Union, overload - -from .._utils.model_base import Model as _Model, rest_discriminator, rest_field -from ._enums import ( - AnnotationType, - ApplyPatchFileOperationType, - ApplyPatchOperationParamType, - ComputerActionType, - ContainerNetworkPolicyParamType, - ContainerSkillType, - CustomToolParamFormatType, - FunctionAndCustomToolCallOutputType, - FunctionShellCallEnvironmentType, - FunctionShellCallItemParamEnvironmentType, - FunctionShellCallOutputOutcomeParamType, - FunctionShellCallOutputOutcomeType, - FunctionShellToolParamEnvironmentType, - ItemFieldType, - ItemType, - MemoryItemKind, - MessageContentType, - OpenApiAuthType, - OutputContentType, - OutputItemType, - OutputMessageContentType, - ResponseStreamEventType, - TextResponseFormatConfigurationType, - ToolChoiceParamType, - ToolType, -) - -if TYPE_CHECKING: - from .. import _types, models as _models - - -class Tool(_Model): - """A tool that can be used to generate a response. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - A2APreviewTool, ApplyPatchToolParam, AzureAISearchTool, AzureFunctionTool, - BingCustomSearchPreviewTool, BingGroundingTool, BrowserAutomationPreviewTool, - CaptureStructuredOutputsTool, CodeInterpreterTool, ComputerUsePreviewTool, CustomToolParam, - MicrosoftFabricPreviewTool, FileSearchTool, FunctionTool, ImageGenTool, LocalShellToolParam, - MCPTool, MemorySearchPreviewTool, OpenApiTool, SharepointPreviewTool, FunctionShellToolParam, - WebSearchTool, WebSearchPreviewTool, WorkIQPreviewTool - - :ivar type: Required. Known values are: "function", "file_search", "computer_use_preview", - "web_search", "mcp", "code_interpreter", "image_generation", "local_shell", "shell", "custom", - "web_search_preview", "apply_patch", "a2a_preview", "bing_custom_search_preview", - "browser_automation_preview", "fabric_dataagent_preview", "sharepoint_grounding_preview", - "memory_search_preview", "work_iq_preview", "azure_ai_search", "azure_function", - "bing_grounding", "capture_structured_outputs", and "openapi". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ToolType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"function\", \"file_search\", \"computer_use_preview\", - \"web_search\", \"mcp\", \"code_interpreter\", \"image_generation\", \"local_shell\", - \"shell\", \"custom\", \"web_search_preview\", \"apply_patch\", \"a2a_preview\", - \"bing_custom_search_preview\", \"browser_automation_preview\", \"fabric_dataagent_preview\", - \"sharepoint_grounding_preview\", \"memory_search_preview\", \"work_iq_preview\", - \"azure_ai_search\", \"azure_function\", \"bing_grounding\", \"capture_structured_outputs\", - and \"openapi\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class A2APreviewTool(Tool, discriminator="a2a_preview"): - """An agent implementing the A2A protocol. - - :ivar type: The type of the tool. Always ``"a2a_preview``. Required. A2_A_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.A2_A_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar base_url: Base URL of the agent. - :vartype base_url: str - :ivar agent_card_path: The path to the agent card relative to the ``base_url``. If not - provided, defaults to ``/.well-known/agent-card.json``. - :vartype agent_card_path: str - :ivar project_connection_id: The connection ID in the project for the A2A server. The - connection stores authentication and other connection details needed to connect to the A2A - server. - :vartype project_connection_id: str - """ - - type: Literal[ToolType.A2_A_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the tool. Always ``\"a2a_preview``. Required. A2_A_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - base_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Base URL of the agent.""" - agent_card_path: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The path to the agent card relative to the ``base_url``. If not provided, defaults to - ``/.well-known/agent-card.json``.""" - project_connection_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The connection ID in the project for the A2A server. The connection stores authentication and - other connection details needed to connect to the A2A server.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - description: Optional[str] = None, - base_url: Optional[str] = None, - agent_card_path: Optional[str] = None, - project_connection_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.A2_A_PREVIEW # type: ignore - - -class OutputItem(_Model): - """OutputItem. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - A2AToolCall, A2AToolCallOutput, OutputItemApplyPatchToolCall, - OutputItemApplyPatchToolCallOutput, AzureAISearchToolCall, AzureAISearchToolCallOutput, - AzureFunctionToolCall, AzureFunctionToolCallOutput, BingCustomSearchToolCall, - BingCustomSearchToolCallOutput, BingGroundingToolCall, BingGroundingToolCallOutput, - BrowserAutomationToolCall, BrowserAutomationToolCallOutput, OutputItemCodeInterpreterToolCall, - OutputItemCompactionBody, OutputItemComputerToolCall, OutputItemComputerToolCallOutputResource, - OutputItemCustomToolCall, OutputItemCustomToolCallOutput, FabricDataAgentToolCall, - FabricDataAgentToolCallOutput, OutputItemFileSearchToolCall, OutputItemFunctionToolCall, - FunctionToolCallOutputResource, OutputItemImageGenToolCall, OutputItemLocalShellToolCall, - OutputItemLocalShellToolCallOutput, OutputItemMcpApprovalRequest, - OutputItemMcpApprovalResponseResource, OutputItemMcpToolCall, OutputItemMcpListTools, - MemorySearchToolCallItemResource, OutputItemMessage, OAuthConsentRequestOutputItem, - OpenApiToolCall, OpenApiToolCallOutput, OutputItemOutputMessage, OutputItemReasoningItem, - SharepointGroundingToolCall, SharepointGroundingToolCallOutput, OutputItemFunctionShellCall, - OutputItemFunctionShellCallOutput, StructuredOutputsOutputItem, OutputItemWebSearchToolCall, - WorkflowActionOutputItem - - :ivar type: Required. Known values are: "output_message", "file_search_call", "function_call", - "web_search_call", "computer_call", "reasoning", "compaction", "image_generation_call", - "code_interpreter_call", "local_shell_call", "shell_call", "shell_call_output", - "apply_patch_call", "apply_patch_call_output", "mcp_call", "mcp_list_tools", - "mcp_approval_request", "custom_tool_call", "message", "computer_call_output", - "function_call_output", "local_shell_call_output", "mcp_approval_response", - "custom_tool_call_output", "structured_outputs", "oauth_consent_request", "memory_search_call", - "workflow_action", "a2a_preview_call", "a2a_preview_call_output", "bing_grounding_call", - "bing_grounding_call_output", "sharepoint_grounding_preview_call", - "sharepoint_grounding_preview_call_output", "azure_ai_search_call", - "azure_ai_search_call_output", "bing_custom_search_preview_call", - "bing_custom_search_preview_call_output", "openapi_call", "openapi_call_output", - "browser_automation_preview_call", "browser_automation_preview_call_output", - "fabric_dataagent_preview_call", "fabric_dataagent_preview_call_output", "azure_function_call", - and "azure_function_call_output". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OutputItemType - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"output_message\", \"file_search_call\", \"function_call\", - \"web_search_call\", \"computer_call\", \"reasoning\", \"compaction\", - \"image_generation_call\", \"code_interpreter_call\", \"local_shell_call\", \"shell_call\", - \"shell_call_output\", \"apply_patch_call\", \"apply_patch_call_output\", \"mcp_call\", - \"mcp_list_tools\", \"mcp_approval_request\", \"custom_tool_call\", \"message\", - \"computer_call_output\", \"function_call_output\", \"local_shell_call_output\", - \"mcp_approval_response\", \"custom_tool_call_output\", \"structured_outputs\", - \"oauth_consent_request\", \"memory_search_call\", \"workflow_action\", \"a2a_preview_call\", - \"a2a_preview_call_output\", \"bing_grounding_call\", \"bing_grounding_call_output\", - \"sharepoint_grounding_preview_call\", \"sharepoint_grounding_preview_call_output\", - \"azure_ai_search_call\", \"azure_ai_search_call_output\", \"bing_custom_search_preview_call\", - \"bing_custom_search_preview_call_output\", \"openapi_call\", \"openapi_call_output\", - \"browser_automation_preview_call\", \"browser_automation_preview_call_output\", - \"fabric_dataagent_preview_call\", \"fabric_dataagent_preview_call_output\", - \"azure_function_call\", and \"azure_function_call_output\".""" - agent_reference: Optional["_models.AgentReference"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The agent that created the item.""" - response_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The response on which the item is created.""" - - @overload - def __init__( - self, - *, - type: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class A2AToolCall(OutputItem, discriminator="a2a_preview_call"): - """An A2A (Agent-to-Agent) tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. A2_A_PREVIEW_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.A2_A_PREVIEW_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the A2A agent card being called. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.A2_A_PREVIEW_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. A2_A_PREVIEW_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the A2A agent card being called. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.A2_A_PREVIEW_CALL # type: ignore - - -class A2AToolCallOutput(OutputItem, discriminator="a2a_preview_call_output"): - """The output of an A2A (Agent-to-Agent) tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. A2_A_PREVIEW_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.A2_A_PREVIEW_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the A2A agent card that was called. Required. - :vartype name: str - :ivar output: The output from the A2A tool call. Is one of the following types: {str: Any}, - str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.A2_A_PREVIEW_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. A2_A_PREVIEW_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the A2A agent card that was called. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the A2A tool call. Is one of the following types: {str: Any}, str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.A2_A_PREVIEW_CALL_OUTPUT # type: ignore - - -class AgentReference(_Model): - """AgentReference. - - :ivar type: Required. Default value is "agent_reference". - :vartype type: str - :ivar name: The name of the agent. Required. - :vartype name: str - :ivar version: The version identifier of the agent. - :vartype version: str - """ - - type: Literal["agent_reference"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required. Default value is \"agent_reference\".""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the agent. Required.""" - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The version identifier of the agent.""" - - @overload - def __init__( - self, - *, - name: str, - version: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["agent_reference"] = "agent_reference" - - -class AISearchIndexResource(_Model): - """A AI Search Index resource. - - :ivar project_connection_id: An index connection ID in an IndexResource attached to this agent. - :vartype project_connection_id: str - :ivar index_name: The name of an index in an IndexResource attached to this agent. - :vartype index_name: str - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar query_type: Type of query in an AIIndexResource attached to this agent. Known values are: - "simple", "semantic", "vector", "vector_simple_hybrid", and "vector_semantic_hybrid". - :vartype query_type: str or - ~azure.ai.agentserver.responses.models.models.AzureAISearchQueryType - :ivar top_k: Number of documents to retrieve from search and present to the model. - :vartype top_k: int - :ivar filter: filter string for search resource. `Learn more here - `_. - :vartype filter: str - :ivar index_asset_id: Index asset id for search resource. - :vartype index_asset_id: str - """ - - project_connection_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An index connection ID in an IndexResource attached to this agent.""" - index_name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of an index in an IndexResource attached to this agent.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - query_type: Optional[Union[str, "_models.AzureAISearchQueryType"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Type of query in an AIIndexResource attached to this agent. Known values are: \"simple\", - \"semantic\", \"vector\", \"vector_simple_hybrid\", and \"vector_semantic_hybrid\".""" - top_k: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Number of documents to retrieve from search and present to the model.""" - filter: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """filter string for search resource. `Learn more here - `_.""" - index_asset_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Index asset id for search resource.""" - - @overload - def __init__( - self, - *, - project_connection_id: Optional[str] = None, - index_name: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - query_type: Optional[Union[str, "_models.AzureAISearchQueryType"]] = None, - top_k: Optional[int] = None, - filter: Optional[str] = None, # pylint: disable=redefined-builtin - index_asset_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class Annotation(_Model): - """An annotation that applies to a span of output text. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ContainerFileCitationBody, FileCitationBody, FilePath, UrlCitationBody - - :ivar type: Required. Known values are: "file_citation", "url_citation", - "container_file_citation", and "file_path". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AnnotationType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"file_citation\", \"url_citation\", \"container_file_citation\", - and \"file_path\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ApiErrorResponse(_Model): - """Error response for API failures. - - :ivar error: Required. - :vartype error: ~azure.ai.agentserver.responses.models.models.Error - """ - - error: "_models.Error" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - error: "_models.Error", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ApplyPatchFileOperation(_Model): - """Apply patch operation. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ApplyPatchCreateFileOperation, ApplyPatchDeleteFileOperation, ApplyPatchUpdateFileOperation - - :ivar type: Required. Known values are: "create_file", "delete_file", and "update_file". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ApplyPatchFileOperationType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"create_file\", \"delete_file\", and \"update_file\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ApplyPatchCreateFileOperation(ApplyPatchFileOperation, discriminator="create_file"): - """Apply patch create file operation. - - :ivar type: Create a new file with the provided diff. Required. CREATE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CREATE_FILE - :ivar path: Path of the file to create. Required. - :vartype path: str - :ivar diff: Diff to apply. Required. - :vartype diff: str - """ - - type: Literal[ApplyPatchFileOperationType.CREATE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Create a new file with the provided diff. Required. CREATE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to create. Required.""" - diff: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Diff to apply. Required.""" - - @overload - def __init__( - self, - *, - path: str, - diff: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchFileOperationType.CREATE_FILE # type: ignore - - -class ApplyPatchOperationParam(_Model): - """Apply patch operation. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ApplyPatchCreateFileOperationParam, ApplyPatchDeleteFileOperationParam, - ApplyPatchUpdateFileOperationParam - - :ivar type: Required. Known values are: "create_file", "delete_file", and "update_file". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.ApplyPatchOperationParamType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"create_file\", \"delete_file\", and \"update_file\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ApplyPatchCreateFileOperationParam(ApplyPatchOperationParam, discriminator="create_file"): - """Apply patch create file operation. - - :ivar type: The operation type. Always ``create_file``. Required. CREATE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CREATE_FILE - :ivar path: Path of the file to create relative to the workspace root. Required. - :vartype path: str - :ivar diff: Unified diff content to apply when creating the file. Required. - :vartype diff: str - """ - - type: Literal[ApplyPatchOperationParamType.CREATE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The operation type. Always ``create_file``. Required. CREATE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to create relative to the workspace root. Required.""" - diff: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unified diff content to apply when creating the file. Required.""" - - @overload - def __init__( - self, - *, - path: str, - diff: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchOperationParamType.CREATE_FILE # type: ignore - - -class ApplyPatchDeleteFileOperation(ApplyPatchFileOperation, discriminator="delete_file"): - """Apply patch delete file operation. - - :ivar type: Delete the specified file. Required. DELETE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.DELETE_FILE - :ivar path: Path of the file to delete. Required. - :vartype path: str - """ - - type: Literal[ApplyPatchFileOperationType.DELETE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Delete the specified file. Required. DELETE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to delete. Required.""" - - @overload - def __init__( - self, - *, - path: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchFileOperationType.DELETE_FILE # type: ignore - - -class ApplyPatchDeleteFileOperationParam(ApplyPatchOperationParam, discriminator="delete_file"): - """Apply patch delete file operation. - - :ivar type: The operation type. Always ``delete_file``. Required. DELETE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.DELETE_FILE - :ivar path: Path of the file to delete relative to the workspace root. Required. - :vartype path: str - """ - - type: Literal[ApplyPatchOperationParamType.DELETE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The operation type. Always ``delete_file``. Required. DELETE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to delete relative to the workspace root. Required.""" - - @overload - def __init__( - self, - *, - path: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchOperationParamType.DELETE_FILE # type: ignore - - -class Item(_Model): - """Content item used to generate a response. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ApplyPatchToolCallItemParam, ApplyPatchToolCallOutputItemParam, ItemCodeInterpreterToolCall, - CompactionSummaryItemParam, ItemComputerToolCall, ComputerCallOutputItemParam, - ItemCustomToolCall, ItemCustomToolCallOutput, ItemFileSearchToolCall, ItemFunctionToolCall, - FunctionCallOutputItemParam, ItemImageGenToolCall, ItemReferenceParam, ItemLocalShellToolCall, - ItemLocalShellToolCallOutput, ItemMcpApprovalRequest, MCPApprovalResponse, ItemMcpToolCall, - ItemMcpListTools, MemorySearchToolCallItemParam, ItemMessage, ItemOutputMessage, - ItemReasoningItem, FunctionShellCallItemParam, FunctionShellCallOutputItemParam, - ItemWebSearchToolCall - - :ivar type: Required. Known values are: "message", "output_message", "file_search_call", - "computer_call", "computer_call_output", "web_search_call", "function_call", - "function_call_output", "reasoning", "compaction", "image_generation_call", - "code_interpreter_call", "local_shell_call", "local_shell_call_output", "shell_call", - "shell_call_output", "apply_patch_call", "apply_patch_call_output", "mcp_list_tools", - "mcp_approval_request", "mcp_approval_response", "mcp_call", "custom_tool_call_output", - "custom_tool_call", "item_reference", "structured_outputs", "oauth_consent_request", - "memory_search_call", "workflow_action", "a2a_preview_call", "a2a_preview_call_output", - "bing_grounding_call", "bing_grounding_call_output", "sharepoint_grounding_preview_call", - "sharepoint_grounding_preview_call_output", "azure_ai_search_call", - "azure_ai_search_call_output", "bing_custom_search_preview_call", - "bing_custom_search_preview_call_output", "openapi_call", "openapi_call_output", - "browser_automation_preview_call", "browser_automation_preview_call_output", - "fabric_dataagent_preview_call", "fabric_dataagent_preview_call_output", "azure_function_call", - and "azure_function_call_output". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ItemType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"message\", \"output_message\", \"file_search_call\", - \"computer_call\", \"computer_call_output\", \"web_search_call\", \"function_call\", - \"function_call_output\", \"reasoning\", \"compaction\", \"image_generation_call\", - \"code_interpreter_call\", \"local_shell_call\", \"local_shell_call_output\", \"shell_call\", - \"shell_call_output\", \"apply_patch_call\", \"apply_patch_call_output\", \"mcp_list_tools\", - \"mcp_approval_request\", \"mcp_approval_response\", \"mcp_call\", \"custom_tool_call_output\", - \"custom_tool_call\", \"item_reference\", \"structured_outputs\", \"oauth_consent_request\", - \"memory_search_call\", \"workflow_action\", \"a2a_preview_call\", \"a2a_preview_call_output\", - \"bing_grounding_call\", \"bing_grounding_call_output\", \"sharepoint_grounding_preview_call\", - \"sharepoint_grounding_preview_call_output\", \"azure_ai_search_call\", - \"azure_ai_search_call_output\", \"bing_custom_search_preview_call\", - \"bing_custom_search_preview_call_output\", \"openapi_call\", \"openapi_call_output\", - \"browser_automation_preview_call\", \"browser_automation_preview_call_output\", - \"fabric_dataagent_preview_call\", \"fabric_dataagent_preview_call_output\", - \"azure_function_call\", and \"azure_function_call_output\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ApplyPatchToolCallItemParam(Item, discriminator="apply_patch_call"): - """Apply patch tool call. - - :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL - :ivar id: - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. - Required. Known values are: "in_progress" and "completed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ApplyPatchCallStatusParam - :ivar operation: The specific create, delete, or update instruction for the apply_patch tool - call. Required. - :vartype operation: ~azure.ai.agentserver.responses.models.models.ApplyPatchOperationParam - """ - - type: Literal[ItemType.APPLY_PATCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallStatusParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. - Known values are: \"in_progress\" and \"completed\".""" - operation: "_models.ApplyPatchOperationParam" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The specific create, delete, or update instruction for the apply_patch tool call. Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ApplyPatchCallStatusParam"], - operation: "_models.ApplyPatchOperationParam", - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.APPLY_PATCH_CALL # type: ignore - - -class ApplyPatchToolCallOutputItemParam(Item, discriminator="apply_patch_call_output"): - """Apply patch tool call output. - - :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. - APPLY_PATCH_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL_OUTPUT - :ivar id: - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call output. One of ``completed`` or - ``failed``. Required. Known values are: "completed" and "failed". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.ApplyPatchCallOutputStatusParam - :ivar output: - :vartype output: str - """ - - type: Literal[ItemType.APPLY_PATCH_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallOutputStatusParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. - Known values are: \"completed\" and \"failed\".""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ApplyPatchCallOutputStatusParam"], - id: Optional[str] = None, # pylint: disable=redefined-builtin - output: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.APPLY_PATCH_CALL_OUTPUT # type: ignore - - -class ApplyPatchToolParam(Tool, discriminator="apply_patch"): - """Apply patch tool. - - :ivar type: The type of the tool. Always ``apply_patch``. Required. APPLY_PATCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH - """ - - type: Literal[ToolType.APPLY_PATCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the tool. Always ``apply_patch``. Required. APPLY_PATCH.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.APPLY_PATCH # type: ignore - - -class ApplyPatchUpdateFileOperation(ApplyPatchFileOperation, discriminator="update_file"): - """Apply patch update file operation. - - :ivar type: Update an existing file with the provided diff. Required. UPDATE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.UPDATE_FILE - :ivar path: Path of the file to update. Required. - :vartype path: str - :ivar diff: Diff to apply. Required. - :vartype diff: str - """ - - type: Literal[ApplyPatchFileOperationType.UPDATE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Update an existing file with the provided diff. Required. UPDATE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to update. Required.""" - diff: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Diff to apply. Required.""" - - @overload - def __init__( - self, - *, - path: str, - diff: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchFileOperationType.UPDATE_FILE # type: ignore - - -class ApplyPatchUpdateFileOperationParam(ApplyPatchOperationParam, discriminator="update_file"): - """Apply patch update file operation. - - :ivar type: The operation type. Always ``update_file``. Required. UPDATE_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.UPDATE_FILE - :ivar path: Path of the file to update relative to the workspace root. Required. - :vartype path: str - :ivar diff: Unified diff content to apply to the existing file. Required. - :vartype diff: str - """ - - type: Literal[ApplyPatchOperationParamType.UPDATE_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The operation type. Always ``update_file``. Required. UPDATE_FILE.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Path of the file to update relative to the workspace root. Required.""" - diff: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unified diff content to apply to the existing file. Required.""" - - @overload - def __init__( - self, - *, - path: str, - diff: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ApplyPatchOperationParamType.UPDATE_FILE # type: ignore - - -class ApproximateLocation(_Model): - """ApproximateLocation. - - :ivar type: The type of location approximation. Always ``approximate``. Required. Default value - is "approximate". - :vartype type: str - :ivar country: - :vartype country: str - :ivar region: - :vartype region: str - :ivar city: - :vartype city: str - :ivar timezone: - :vartype timezone: str - """ - - type: Literal["approximate"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of location approximation. Always ``approximate``. Required. Default value is - \"approximate\".""" - country: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - region: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - city: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - timezone: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - country: Optional[str] = None, - region: Optional[str] = None, - city: Optional[str] = None, - timezone: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["approximate"] = "approximate" - - -class AutoCodeInterpreterToolParam(_Model): - """Automatic Code Interpreter Tool Parameters. - - :ivar type: Always ``auto``. Required. Default value is "auto". - :vartype type: str - :ivar file_ids: An optional list of uploaded files to make available to your code. - :vartype file_ids: list[str] - :ivar memory_limit: Known values are: "1g", "4g", "16g", and "64g". - :vartype memory_limit: str or - ~azure.ai.agentserver.responses.models.models.ContainerMemoryLimit - :ivar network_policy: - :vartype network_policy: - ~azure.ai.agentserver.responses.models.models.ContainerNetworkPolicyParam - """ - - type: Literal["auto"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Always ``auto``. Required. Default value is \"auto\".""" - file_ids: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An optional list of uploaded files to make available to your code.""" - memory_limit: Optional[Union[str, "_models.ContainerMemoryLimit"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"1g\", \"4g\", \"16g\", and \"64g\".""" - network_policy: Optional["_models.ContainerNetworkPolicyParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - file_ids: Optional[list[str]] = None, - memory_limit: Optional[Union[str, "_models.ContainerMemoryLimit"]] = None, - network_policy: Optional["_models.ContainerNetworkPolicyParam"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["auto"] = "auto" - - -class AzureAISearchTool(Tool, discriminator="azure_ai_search"): - """The input definition information for an Azure AI search tool as used to configure an agent. - - :ivar type: The object type, which is always 'azure_ai_search'. Required. AZURE_AI_SEARCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_AI_SEARCH - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar azure_ai_search: The azure ai search index resource. Required. - :vartype azure_ai_search: - ~azure.ai.agentserver.responses.models.models.AzureAISearchToolResource - """ - - type: Literal[ToolType.AZURE_AI_SEARCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'azure_ai_search'. Required. AZURE_AI_SEARCH.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - azure_ai_search: "_models.AzureAISearchToolResource" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The azure ai search index resource. Required.""" - - @overload - def __init__( - self, - *, - azure_ai_search: "_models.AzureAISearchToolResource", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.AZURE_AI_SEARCH # type: ignore - - -class AzureAISearchToolCall(OutputItem, discriminator="azure_ai_search_call"): - """An Azure AI Search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. AZURE_AI_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_AI_SEARCH_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.AZURE_AI_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. AZURE_AI_SEARCH_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.AZURE_AI_SEARCH_CALL # type: ignore - - -class AzureAISearchToolCallOutput(OutputItem, discriminator="azure_ai_search_call_output"): - """The output of an Azure AI Search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. AZURE_AI_SEARCH_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_AI_SEARCH_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the Azure AI Search tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.AZURE_AI_SEARCH_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. AZURE_AI_SEARCH_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the Azure AI Search tool call. Is one of the following types: {str: Any}, str, - [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.AZURE_AI_SEARCH_CALL_OUTPUT # type: ignore - - -class AzureAISearchToolResource(_Model): - """A set of index resources used by the ``azure_ai_search`` tool. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar indexes: The indices attached to this agent. There can be a maximum of 1 index resource - attached to the agent. Required. - :vartype indexes: list[~azure.ai.agentserver.responses.models.models.AISearchIndexResource] - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - indexes: list["_models.AISearchIndexResource"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The indices attached to this agent. There can be a maximum of 1 index resource attached to the - agent. Required.""" - - @overload - def __init__( - self, - *, - indexes: list["_models.AISearchIndexResource"], - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class AzureFunctionBinding(_Model): - """The structure for keeping storage queue name and URI. - - :ivar type: The type of binding, which is always 'storage_queue'. Required. Default value is - "storage_queue". - :vartype type: str - :ivar storage_queue: Storage queue. Required. - :vartype storage_queue: ~azure.ai.agentserver.responses.models.models.AzureFunctionStorageQueue - """ - - type: Literal["storage_queue"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of binding, which is always 'storage_queue'. Required. Default value is - \"storage_queue\".""" - storage_queue: "_models.AzureFunctionStorageQueue" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Storage queue. Required.""" - - @overload - def __init__( - self, - *, - storage_queue: "_models.AzureFunctionStorageQueue", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["storage_queue"] = "storage_queue" - - -class AzureFunctionDefinition(_Model): - """The definition of Azure function. - - :ivar function: The definition of azure function and its parameters. Required. - :vartype function: - ~azure.ai.agentserver.responses.models.models.AzureFunctionDefinitionFunction - :ivar input_binding: Input storage queue. The queue storage trigger runs a function as messages - are added to it. Required. - :vartype input_binding: ~azure.ai.agentserver.responses.models.models.AzureFunctionBinding - :ivar output_binding: Output storage queue. The function writes output to this queue when the - input items are processed. Required. - :vartype output_binding: ~azure.ai.agentserver.responses.models.models.AzureFunctionBinding - """ - - function: "_models.AzureFunctionDefinitionFunction" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The definition of azure function and its parameters. Required.""" - input_binding: "_models.AzureFunctionBinding" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Input storage queue. The queue storage trigger runs a function as messages are added to it. - Required.""" - output_binding: "_models.AzureFunctionBinding" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Output storage queue. The function writes output to this queue when the input items are - processed. Required.""" - - @overload - def __init__( - self, - *, - function: "_models.AzureFunctionDefinitionFunction", - input_binding: "_models.AzureFunctionBinding", - output_binding: "_models.AzureFunctionBinding", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class AzureFunctionDefinitionFunction(_Model): - """AzureFunctionDefinitionFunction. - - :ivar name: The name of the function to be called. Required. - :vartype name: str - :ivar description: A description of what the function does, used by the model to choose when - and how to call the function. - :vartype description: str - :ivar parameters: The parameters the functions accepts, described as a JSON Schema object. - Required. - :vartype parameters: dict[str, any] - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to be called. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A description of what the function does, used by the model to choose when and how to call the - function.""" - parameters: dict[str, Any] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The parameters the functions accepts, described as a JSON Schema object. Required.""" - - @overload - def __init__( - self, - *, - name: str, - parameters: dict[str, Any], - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class AzureFunctionStorageQueue(_Model): - """The structure for keeping storage queue name and URI. - - :ivar queue_service_endpoint: URI to the Azure Storage Queue service allowing you to manipulate - a queue. Required. - :vartype queue_service_endpoint: str - :ivar queue_name: The name of an Azure function storage queue. Required. - :vartype queue_name: str - """ - - queue_service_endpoint: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """URI to the Azure Storage Queue service allowing you to manipulate a queue. Required.""" - queue_name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of an Azure function storage queue. Required.""" - - @overload - def __init__( - self, - *, - queue_service_endpoint: str, - queue_name: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class AzureFunctionTool(Tool, discriminator="azure_function"): - """The input definition information for an Azure Function Tool, as used to configure an Agent. - - :ivar type: The object type, which is always 'browser_automation'. Required. AZURE_FUNCTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_FUNCTION - :ivar azure_function: The Azure Function Tool definition. Required. - :vartype azure_function: ~azure.ai.agentserver.responses.models.models.AzureFunctionDefinition - """ - - type: Literal[ToolType.AZURE_FUNCTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'browser_automation'. Required. AZURE_FUNCTION.""" - azure_function: "_models.AzureFunctionDefinition" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The Azure Function Tool definition. Required.""" - - @overload - def __init__( - self, - *, - azure_function: "_models.AzureFunctionDefinition", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.AZURE_FUNCTION # type: ignore - - -class AzureFunctionToolCall(OutputItem, discriminator="azure_function_call"): - """An Azure Function tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. AZURE_FUNCTION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_FUNCTION_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the Azure Function being called. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.AZURE_FUNCTION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. AZURE_FUNCTION_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the Azure Function being called. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.AZURE_FUNCTION_CALL # type: ignore - - -class AzureFunctionToolCallOutput(OutputItem, discriminator="azure_function_call_output"): - """The output of an Azure Function tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. AZURE_FUNCTION_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.AZURE_FUNCTION_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the Azure Function that was called. Required. - :vartype name: str - :ivar output: The output from the Azure Function tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.AZURE_FUNCTION_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. AZURE_FUNCTION_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the Azure Function that was called. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the Azure Function tool call. Is one of the following types: {str: Any}, str, - [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.AZURE_FUNCTION_CALL_OUTPUT # type: ignore - - -class BingCustomSearchConfiguration(_Model): - """A bing custom search configuration. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connection_id: Project connection id for grounding with bing search. Required. - :vartype project_connection_id: str - :ivar instance_name: Name of the custom configuration instance given to config. Required. - :vartype instance_name: str - :ivar market: The market where the results come from. - :vartype market: str - :ivar set_lang: The language to use for user interface strings when calling Bing API. - :vartype set_lang: str - :ivar count: The number of search results to return in the bing api response. - :vartype count: int - :ivar freshness: Filter search results by a specific time range. See `accepted values here - `_. - :vartype freshness: str - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Project connection id for grounding with bing search. Required.""" - instance_name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Name of the custom configuration instance given to config. Required.""" - market: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The market where the results come from.""" - set_lang: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The language to use for user interface strings when calling Bing API.""" - count: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The number of search results to return in the bing api response.""" - freshness: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Filter search results by a specific time range. See `accepted values here - `_.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - instance_name: str, - name: Optional[str] = None, - description: Optional[str] = None, - market: Optional[str] = None, - set_lang: Optional[str] = None, - count: Optional[int] = None, - freshness: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class BingCustomSearchPreviewTool(Tool, discriminator="bing_custom_search_preview"): - """The input definition information for a Bing custom search tool as used to configure an agent. - - :ivar type: The object type, which is always 'bing_custom_search_preview'. Required. - BING_CUSTOM_SEARCH_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.BING_CUSTOM_SEARCH_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar bing_custom_search_preview: The bing custom search tool parameters. Required. - :vartype bing_custom_search_preview: - ~azure.ai.agentserver.responses.models.models.BingCustomSearchToolParameters - """ - - type: Literal[ToolType.BING_CUSTOM_SEARCH_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'bing_custom_search_preview'. Required. - BING_CUSTOM_SEARCH_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - bing_custom_search_preview: "_models.BingCustomSearchToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The bing custom search tool parameters. Required.""" - - @overload - def __init__( - self, - *, - bing_custom_search_preview: "_models.BingCustomSearchToolParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.BING_CUSTOM_SEARCH_PREVIEW # type: ignore - - -class BingCustomSearchToolCall(OutputItem, discriminator="bing_custom_search_preview_call"): - """A Bing custom search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BING_CUSTOM_SEARCH_PREVIEW_CALL. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.BING_CUSTOM_SEARCH_PREVIEW_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BING_CUSTOM_SEARCH_PREVIEW_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BING_CUSTOM_SEARCH_PREVIEW_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BING_CUSTOM_SEARCH_PREVIEW_CALL # type: ignore - - -class BingCustomSearchToolCallOutput(OutputItem, discriminator="bing_custom_search_preview_call_output"): - """The output of a Bing custom search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the Bing custom search tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the Bing custom search tool call. Is one of the following types: {str: Any}, - str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT # type: ignore - - -class BingCustomSearchToolParameters(_Model): - """The bing custom search tool parameters. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar search_configurations: The project connections attached to this tool. There can be a - maximum of 1 connection resource attached to the tool. Required. - :vartype search_configurations: - list[~azure.ai.agentserver.responses.models.models.BingCustomSearchConfiguration] - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - search_configurations: list["_models.BingCustomSearchConfiguration"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The project connections attached to this tool. There can be a maximum of 1 connection resource - attached to the tool. Required.""" - - @overload - def __init__( - self, - *, - search_configurations: list["_models.BingCustomSearchConfiguration"], - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class BingGroundingSearchConfiguration(_Model): - """Search configuration for Bing Grounding. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connection_id: Project connection id for grounding with bing search. Required. - :vartype project_connection_id: str - :ivar market: The market where the results come from. - :vartype market: str - :ivar set_lang: The language to use for user interface strings when calling Bing API. - :vartype set_lang: str - :ivar count: The number of search results to return in the bing api response. - :vartype count: int - :ivar freshness: Filter search results by a specific time range. See `accepted values here - `_. - :vartype freshness: str - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Project connection id for grounding with bing search. Required.""" - market: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The market where the results come from.""" - set_lang: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The language to use for user interface strings when calling Bing API.""" - count: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The number of search results to return in the bing api response.""" - freshness: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Filter search results by a specific time range. See `accepted values here - `_.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - name: Optional[str] = None, - description: Optional[str] = None, - market: Optional[str] = None, - set_lang: Optional[str] = None, - count: Optional[int] = None, - freshness: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class BingGroundingSearchToolParameters(_Model): - """The bing grounding search tool parameters. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar search_configurations: The search configurations attached to this tool. There can be a - maximum of 1 search configuration resource attached to the tool. Required. - :vartype search_configurations: - list[~azure.ai.agentserver.responses.models.models.BingGroundingSearchConfiguration] - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - search_configurations: list["_models.BingGroundingSearchConfiguration"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The search configurations attached to this tool. There can be a maximum of 1 search - configuration resource attached to the tool. Required.""" - - @overload - def __init__( - self, - *, - search_configurations: list["_models.BingGroundingSearchConfiguration"], - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class BingGroundingTool(Tool, discriminator="bing_grounding"): - """The input definition information for a bing grounding search tool as used to configure an - agent. - - :ivar type: The object type, which is always 'bing_grounding'. Required. BING_GROUNDING. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.BING_GROUNDING - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar bing_grounding: The bing grounding search tool parameters. Required. - :vartype bing_grounding: - ~azure.ai.agentserver.responses.models.models.BingGroundingSearchToolParameters - """ - - type: Literal[ToolType.BING_GROUNDING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'bing_grounding'. Required. BING_GROUNDING.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - bing_grounding: "_models.BingGroundingSearchToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The bing grounding search tool parameters. Required.""" - - @overload - def __init__( - self, - *, - bing_grounding: "_models.BingGroundingSearchToolParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.BING_GROUNDING # type: ignore - - -class BingGroundingToolCall(OutputItem, discriminator="bing_grounding_call"): - """A Bing grounding tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BING_GROUNDING_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.BING_GROUNDING_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BING_GROUNDING_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BING_GROUNDING_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BING_GROUNDING_CALL # type: ignore - - -class BingGroundingToolCallOutput(OutputItem, discriminator="bing_grounding_call_output"): - """The output of a Bing grounding tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BING_GROUNDING_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.BING_GROUNDING_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the Bing grounding tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BING_GROUNDING_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BING_GROUNDING_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the Bing grounding tool call. Is one of the following types: {str: Any}, str, - [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BING_GROUNDING_CALL_OUTPUT # type: ignore - - -class BrowserAutomationPreviewTool(Tool, discriminator="browser_automation_preview"): - """The input definition information for a Browser Automation Tool, as used to configure an Agent. - - :ivar type: The object type, which is always 'browser_automation_preview'. Required. - BROWSER_AUTOMATION_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.BROWSER_AUTOMATION_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar browser_automation_preview: The Browser Automation Tool parameters. Required. - :vartype browser_automation_preview: - ~azure.ai.agentserver.responses.models.models.BrowserAutomationToolParameters - """ - - type: Literal[ToolType.BROWSER_AUTOMATION_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'browser_automation_preview'. Required. - BROWSER_AUTOMATION_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - browser_automation_preview: "_models.BrowserAutomationToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The Browser Automation Tool parameters. Required.""" - - @overload - def __init__( - self, - *, - browser_automation_preview: "_models.BrowserAutomationToolParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.BROWSER_AUTOMATION_PREVIEW # type: ignore - - -class BrowserAutomationToolCall(OutputItem, discriminator="browser_automation_preview_call"): - """A browser automation tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BROWSER_AUTOMATION_PREVIEW_CALL. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.BROWSER_AUTOMATION_PREVIEW_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BROWSER_AUTOMATION_PREVIEW_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BROWSER_AUTOMATION_PREVIEW_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BROWSER_AUTOMATION_PREVIEW_CALL # type: ignore - - -class BrowserAutomationToolCallOutput(OutputItem, discriminator="browser_automation_preview_call_output"): - """The output of a browser automation tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the browser automation tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the browser automation tool call. Is one of the following types: {str: Any}, - str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT # type: ignore - - -class BrowserAutomationToolConnectionParameters(_Model): # pylint: disable=name-too-long - """Definition of input parameters for the connection used by the Browser Automation Tool. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connection_id: The ID of the project connection to your Azure Playwright - resource. Required. - :vartype project_connection_id: str - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the project connection to your Azure Playwright resource. Required.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class BrowserAutomationToolParameters(_Model): - """Definition of input parameters for the Browser Automation Tool. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar connection: The project connection parameters associated with the Browser Automation - Tool. Required. - :vartype connection: - ~azure.ai.agentserver.responses.models.models.BrowserAutomationToolConnectionParameters - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - connection: "_models.BrowserAutomationToolConnectionParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The project connection parameters associated with the Browser Automation Tool. Required.""" - - @overload - def __init__( - self, - *, - connection: "_models.BrowserAutomationToolConnectionParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CaptureStructuredOutputsTool(Tool, discriminator="capture_structured_outputs"): - """A tool for capturing structured outputs. - - :ivar type: The type of the tool. Always ``capture_structured_outputs``. Required. - CAPTURE_STRUCTURED_OUTPUTS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CAPTURE_STRUCTURED_OUTPUTS - :ivar outputs: The structured outputs to capture from the model. Required. - :vartype outputs: ~azure.ai.agentserver.responses.models.models.StructuredOutputDefinition - """ - - type: Literal[ToolType.CAPTURE_STRUCTURED_OUTPUTS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the tool. Always ``capture_structured_outputs``. Required. - CAPTURE_STRUCTURED_OUTPUTS.""" - outputs: "_models.StructuredOutputDefinition" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The structured outputs to capture from the model. Required.""" - - @overload - def __init__( - self, - *, - outputs: "_models.StructuredOutputDefinition", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.CAPTURE_STRUCTURED_OUTPUTS # type: ignore - - -class MemoryItem(_Model): - """A single memory item stored in the memory store, containing content and metadata. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ChatSummaryMemoryItem, UserProfileMemoryItem - - :ivar memory_id: The unique ID of the memory item. Required. - :vartype memory_id: str - :ivar updated_at: The last update time of the memory item. Required. - :vartype updated_at: ~datetime.datetime - :ivar scope: The namespace that logically groups and isolates memories, such as a user ID. - Required. - :vartype scope: str - :ivar content: The content of the memory. Required. - :vartype content: str - :ivar kind: The kind of the memory item. Required. Known values are: "user_profile" and - "chat_summary". - :vartype kind: str or ~azure.ai.agentserver.responses.models.models.MemoryItemKind - """ - - __mapping__: dict[str, _Model] = {} - memory_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the memory item. Required.""" - updated_at: datetime.datetime = rest_field( - visibility=["read", "create", "update", "delete", "query"], format="unix-timestamp" - ) - """The last update time of the memory item. Required.""" - scope: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The namespace that logically groups and isolates memories, such as a user ID. Required.""" - content: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the memory. Required.""" - kind: str = rest_discriminator(name="kind", visibility=["read", "create", "update", "delete", "query"]) - """The kind of the memory item. Required. Known values are: \"user_profile\" and \"chat_summary\".""" - - @overload - def __init__( - self, - *, - memory_id: str, - updated_at: datetime.datetime, - scope: str, - content: str, - kind: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ChatSummaryMemoryItem(MemoryItem, discriminator="chat_summary"): - """A memory item containing a summary extracted from conversations. - - :ivar memory_id: The unique ID of the memory item. Required. - :vartype memory_id: str - :ivar updated_at: The last update time of the memory item. Required. - :vartype updated_at: ~datetime.datetime - :ivar scope: The namespace that logically groups and isolates memories, such as a user ID. - Required. - :vartype scope: str - :ivar content: The content of the memory. Required. - :vartype content: str - :ivar kind: The kind of the memory item. Required. Summary of chat conversations. - :vartype kind: str or ~azure.ai.agentserver.responses.models.models.CHAT_SUMMARY - """ - - kind: Literal[MemoryItemKind.CHAT_SUMMARY] = rest_discriminator(name="kind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The kind of the memory item. Required. Summary of chat conversations.""" - - @overload - def __init__( - self, - *, - memory_id: str, - updated_at: datetime.datetime, - scope: str, - content: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.kind = MemoryItemKind.CHAT_SUMMARY # type: ignore - - -class ComputerAction(_Model): - """ComputerAction. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ClickParam, DoubleClickAction, DragParam, KeyPressAction, MoveParam, ScreenshotParam, - ScrollParam, TypeParam, WaitParam - - :ivar type: Required. Known values are: "click", "double_click", "drag", "keypress", "move", - "screenshot", "scroll", "type", and "wait". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ComputerActionType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"click\", \"double_click\", \"drag\", \"keypress\", \"move\", - \"screenshot\", \"scroll\", \"type\", and \"wait\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ClickParam(ComputerAction, discriminator="click"): - """Click. - - :ivar type: Specifies the event type. For a click action, this property is always ``click``. - Required. CLICK. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CLICK - :ivar button: Indicates which mouse button was pressed during the click. One of ``left``, - ``right``, ``wheel``, ``back``, or ``forward``. Required. Known values are: "left", "right", - "wheel", "back", and "forward". - :vartype button: str or ~azure.ai.agentserver.responses.models.models.ClickButtonType - :ivar x: The x-coordinate where the click occurred. Required. - :vartype x: int - :ivar y: The y-coordinate where the click occurred. Required. - :vartype y: int - """ - - type: Literal[ComputerActionType.CLICK] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a click action, this property is always ``click``. Required. - CLICK.""" - button: Union[str, "_models.ClickButtonType"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Indicates which mouse button was pressed during the click. One of ``left``, ``right``, - ``wheel``, ``back``, or ``forward``. Required. Known values are: \"left\", \"right\", - \"wheel\", \"back\", and \"forward\".""" - x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The x-coordinate where the click occurred. Required.""" - y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The y-coordinate where the click occurred. Required.""" - - @overload - def __init__( - self, - *, - button: Union[str, "_models.ClickButtonType"], - x: int, - y: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.CLICK # type: ignore - - -class CodeInterpreterOutputImage(_Model): - """Code interpreter output image. - - :ivar type: The type of the output. Always ``image``. Required. Default value is "image". - :vartype type: str - :ivar url: The URL of the image output from the code interpreter. Required. - :vartype url: str - """ - - type: Literal["image"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the output. Always ``image``. Required. Default value is \"image\".""" - url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the image output from the code interpreter. Required.""" - - @overload - def __init__( - self, - *, - url: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["image"] = "image" - - -class CodeInterpreterOutputLogs(_Model): - """Code interpreter output logs. - - :ivar type: The type of the output. Always ``logs``. Required. Default value is "logs". - :vartype type: str - :ivar logs: The logs output from the code interpreter. Required. - :vartype logs: str - """ - - type: Literal["logs"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the output. Always ``logs``. Required. Default value is \"logs\".""" - logs: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The logs output from the code interpreter. Required.""" - - @overload - def __init__( - self, - *, - logs: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["logs"] = "logs" - - -class CodeInterpreterTool(Tool, discriminator="code_interpreter"): - """Code interpreter. - - :ivar type: The type of the code interpreter tool. Always ``code_interpreter``. Required. - CODE_INTERPRETER. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CODE_INTERPRETER - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar container: The code interpreter container. Can be a container ID or an object that - specifies uploaded file IDs to make available to your code, along with an optional - ``memory_limit`` setting. If not provided, the service assumes auto. Is either a str type or a - AutoCodeInterpreterToolParam type. - :vartype container: str or - ~azure.ai.agentserver.responses.models.models.AutoCodeInterpreterToolParam - """ - - type: Literal[ToolType.CODE_INTERPRETER] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the code interpreter tool. Always ``code_interpreter``. Required. CODE_INTERPRETER.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - container: Optional[Union[str, "_models.AutoCodeInterpreterToolParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The code interpreter container. Can be a container ID or an object that specifies uploaded file - IDs to make available to your code, along with an optional ``memory_limit`` setting. If not - provided, the service assumes auto. Is either a str type or a AutoCodeInterpreterToolParam - type.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - description: Optional[str] = None, - container: Optional[Union[str, "_models.AutoCodeInterpreterToolParam"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.CODE_INTERPRETER # type: ignore - - -class CompactionSummaryItemParam(Item, discriminator="compaction"): - """Compaction item. - - :ivar id: - :vartype id: str - :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPACTION - :ivar encrypted_content: The encrypted content of the compaction summary. Required. - :vartype encrypted_content: str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - type: Literal[ItemType.COMPACTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``compaction``. Required. COMPACTION.""" - encrypted_content: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The encrypted content of the compaction summary. Required.""" - - @overload - def __init__( - self, - *, - encrypted_content: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.COMPACTION # type: ignore - - -class CompactResource(_Model): - """The compacted response object. - - :ivar id: The unique identifier for the compacted response. Required. - :vartype id: str - :ivar object: The object type. Always ``response.compaction``. Required. Default value is - "response.compaction". - :vartype object: str - :ivar output: The compacted list of output items. Required. - :vartype output: list[~azure.ai.agentserver.responses.models.models.ItemField] - :ivar created_at: Unix timestamp (in seconds) when the compacted conversation was created. - Required. - :vartype created_at: ~datetime.datetime - :ivar usage: Token accounting for the compaction pass, including cached, reasoning, and total - tokens. Required. - :vartype usage: ~azure.ai.agentserver.responses.models.models.ResponseUsage - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier for the compacted response. Required.""" - object: Literal["response.compaction"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The object type. Always ``response.compaction``. Required. Default value is - \"response.compaction\".""" - output: list["_models.ItemField"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The compacted list of output items. Required.""" - created_at: datetime.datetime = rest_field( - visibility=["read", "create", "update", "delete", "query"], format="unix-timestamp" - ) - """Unix timestamp (in seconds) when the compacted conversation was created. Required.""" - usage: "_models.ResponseUsage" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Token accounting for the compaction pass, including cached, reasoning, and total tokens. - Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - output: list["_models.ItemField"], - created_at: datetime.datetime, - usage: "_models.ResponseUsage", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.object: Literal["response.compaction"] = "response.compaction" - - -class ComparisonFilter(_Model): - """Comparison Filter. - - :ivar type: Specifies the comparison operator: ``eq``, ``ne``, ``gt``, ``gte``, ``lt``, - ``lte``, ``in``, ``nin``. - - * `eq`: equals - * `ne`: not equal - * `gt`: greater than - * `gte`: greater than or equal - * `lt`: less than - * `lte`: less than or equal - * `in`: in - * `nin`: not in. Required. Is one of the following types: Literal["eq"], Literal["ne"], - Literal["gt"], Literal["gte"], Literal["lt"], Literal["lte"] - :vartype type: str or str or str or str or str or str - :ivar key: The key to compare against the value. Required. - :vartype key: str - :ivar value: The value to compare against the attribute key; supports string, number, or - boolean types. Required. Is one of the following types: str, int, bool, [Union[str, int]] - :vartype value: str or int or bool or list[str or int] - """ - - type: Literal["eq", "ne", "gt", "gte", "lt", "lte"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Specifies the comparison operator: ``eq``, ``ne``, ``gt``, ``gte``, ``lt``, ``lte``, ``in``, - ``nin``. - - * `eq`: equals - * `ne`: not equal - * `gt`: greater than - * `gte`: greater than or equal - * `lt`: less than - * `lte`: less than or equal - * `in`: in - * `nin`: not in. Required. Is one of the following types: Literal[\"eq\"], - Literal[\"ne\"], Literal[\"gt\"], Literal[\"gte\"], Literal[\"lt\"], Literal[\"lte\"]""" - key: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The key to compare against the value. Required.""" - value: Union[str, int, bool, list[Union[str, int]]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The value to compare against the attribute key; supports string, number, or boolean types. - Required. Is one of the following types: str, int, bool, [Union[str, int]]""" - - @overload - def __init__( - self, - *, - type: Literal["eq", "ne", "gt", "gte", "lt", "lte"], - key: str, - value: Union[str, int, bool, list[Union[str, int]]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CompoundFilter(_Model): - """Compound Filter. - - :ivar type: Type of operation: ``and`` or ``or``. Required. Is either a Literal["and"] type or - a Literal["or"] type. - :vartype type: str or str - :ivar filters: Array of filters to combine. Items can be ``ComparisonFilter`` or - ``CompoundFilter``. Required. - :vartype filters: list[~azure.ai.agentserver.responses.models.models.ComparisonFilter or any] - """ - - type: Literal["and", "or"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Type of operation: ``and`` or ``or``. Required. Is either a Literal[\"and\"] type or a - Literal[\"or\"] type.""" - filters: list[Union["_models.ComparisonFilter", Any]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Array of filters to combine. Items can be ``ComparisonFilter`` or ``CompoundFilter``. Required.""" - - @overload - def __init__( - self, - *, - type: Literal["and", "or"], - filters: list[Union["_models.ComparisonFilter", Any]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ComputerCallOutputItemParam(Item, discriminator="computer_call_output"): - """Computer tool call output. - - :ivar id: - :vartype id: str - :ivar call_id: The ID of the computer tool call that produced the output. Required. - :vartype call_id: str - :ivar type: The type of the computer tool call output. Always ``computer_call_output``. - Required. COMPUTER_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL_OUTPUT - :ivar output: Required. - :vartype output: ~azure.ai.agentserver.responses.models.models.ComputerScreenshotImage - :ivar acknowledged_safety_checks: - :vartype acknowledged_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar status: Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.FunctionCallItemStatus - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the computer tool call that produced the output. Required.""" - type: Literal[ItemType.COMPUTER_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer tool call output. Always ``computer_call_output``. Required. - COMPUTER_CALL_OUTPUT.""" - output: "_models.ComputerScreenshotImage" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - status: Optional[Union[str, "_models.FunctionCallItemStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - - @overload - def __init__( - self, - *, - call_id: str, - output: "_models.ComputerScreenshotImage", - id: Optional[str] = None, # pylint: disable=redefined-builtin - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = None, - status: Optional[Union[str, "_models.FunctionCallItemStatus"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.COMPUTER_CALL_OUTPUT # type: ignore - - -class ComputerCallSafetyCheckParam(_Model): - """A pending safety check for the computer call. - - :ivar id: The ID of the pending safety check. Required. - :vartype id: str - :ivar code: - :vartype code: str - :ivar message: - :vartype message: str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the pending safety check. Required.""" - code: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - message: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - code: Optional[str] = None, - message: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MessageContent(_Model): - """A content part that makes up an input or output item. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ComputerScreenshotContent, MessageContentInputFileContent, MessageContentInputImageContent, - MessageContentInputTextContent, MessageContentOutputTextContent, - MessageContentReasoningTextContent, MessageContentRefusalContent, SummaryTextContent, - TextContent - - :ivar type: Required. Known values are: "input_text", "output_text", "text", "summary_text", - "reasoning_text", "refusal", "input_image", "computer_screenshot", and "input_file". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MessageContentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"input_text\", \"output_text\", \"text\", \"summary_text\", - \"reasoning_text\", \"refusal\", \"input_image\", \"computer_screenshot\", and \"input_file\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ComputerScreenshotContent(MessageContent, discriminator="computer_screenshot"): - """Computer screenshot. - - :ivar type: Specifies the event type. For a computer screenshot, this property is always set to - ``computer_screenshot``. Required. COMPUTER_SCREENSHOT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_SCREENSHOT - :ivar image_url: Required. - :vartype image_url: str - :ivar file_id: Required. - :vartype file_id: str - """ - - type: Literal[MessageContentType.COMPUTER_SCREENSHOT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a computer screenshot, this property is always set to - ``computer_screenshot``. Required. COMPUTER_SCREENSHOT.""" - image_url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - file_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - image_url: str, - file_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.COMPUTER_SCREENSHOT # type: ignore - - -class ComputerScreenshotImage(_Model): - """A computer screenshot image used with the computer use tool. - - :ivar type: Specifies the event type. For a computer screenshot, this property is always set to - ``computer_screenshot``. Required. Default value is "computer_screenshot". - :vartype type: str - :ivar image_url: The URL of the screenshot image. - :vartype image_url: str - :ivar file_id: The identifier of an uploaded file that contains the screenshot. - :vartype file_id: str - """ - - type: Literal["computer_screenshot"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Specifies the event type. For a computer screenshot, this property is always set to - ``computer_screenshot``. Required. Default value is \"computer_screenshot\".""" - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the screenshot image.""" - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The identifier of an uploaded file that contains the screenshot.""" - - @overload - def __init__( - self, - *, - image_url: Optional[str] = None, - file_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["computer_screenshot"] = "computer_screenshot" - - -class ComputerUsePreviewTool(Tool, discriminator="computer_use_preview"): - """Computer use preview. - - :ivar type: The type of the computer use tool. Always ``computer_use_preview``. Required. - COMPUTER_USE_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_USE_PREVIEW - :ivar environment: The type of computer environment to control. Required. Known values are: - "windows", "mac", "linux", "ubuntu", and "browser". - :vartype environment: str or ~azure.ai.agentserver.responses.models.models.ComputerEnvironment - :ivar display_width: The width of the computer display. Required. - :vartype display_width: int - :ivar display_height: The height of the computer display. Required. - :vartype display_height: int - """ - - type: Literal[ToolType.COMPUTER_USE_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer use tool. Always ``computer_use_preview``. Required. - COMPUTER_USE_PREVIEW.""" - environment: Union[str, "_models.ComputerEnvironment"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The type of computer environment to control. Required. Known values are: \"windows\", \"mac\", - \"linux\", \"ubuntu\", and \"browser\".""" - display_width: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The width of the computer display. Required.""" - display_height: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The height of the computer display. Required.""" - - @overload - def __init__( - self, - *, - environment: Union[str, "_models.ComputerEnvironment"], - display_width: int, - display_height: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.COMPUTER_USE_PREVIEW # type: ignore - - -class FunctionShellToolParamEnvironment(_Model): - """FunctionShellToolParamEnvironment. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ContainerAutoParam, FunctionShellToolParamEnvironmentContainerReferenceParam, - FunctionShellToolParamEnvironmentLocalEnvironmentParam - - :ivar type: Required. Known values are: "container_auto", "local", and "container_reference". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellToolParamEnvironmentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"container_auto\", \"local\", and \"container_reference\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContainerAutoParam(FunctionShellToolParamEnvironment, discriminator="container_auto"): - """ContainerAutoParam. - - :ivar type: Automatically creates a container for this request. Required. CONTAINER_AUTO. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CONTAINER_AUTO - :ivar file_ids: An optional list of uploaded files to make available to your code. - :vartype file_ids: list[str] - :ivar memory_limit: Known values are: "1g", "4g", "16g", and "64g". - :vartype memory_limit: str or - ~azure.ai.agentserver.responses.models.models.ContainerMemoryLimit - :ivar skills: An optional list of skills referenced by id or inline data. - :vartype skills: list[~azure.ai.agentserver.responses.models.models.ContainerSkill] - :ivar network_policy: - :vartype network_policy: - ~azure.ai.agentserver.responses.models.models.ContainerNetworkPolicyParam - """ - - type: Literal[FunctionShellToolParamEnvironmentType.CONTAINER_AUTO] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Automatically creates a container for this request. Required. CONTAINER_AUTO.""" - file_ids: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An optional list of uploaded files to make available to your code.""" - memory_limit: Optional[Union[str, "_models.ContainerMemoryLimit"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"1g\", \"4g\", \"16g\", and \"64g\".""" - skills: Optional[list["_models.ContainerSkill"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """An optional list of skills referenced by id or inline data.""" - network_policy: Optional["_models.ContainerNetworkPolicyParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - file_ids: Optional[list[str]] = None, - memory_limit: Optional[Union[str, "_models.ContainerMemoryLimit"]] = None, - skills: Optional[list["_models.ContainerSkill"]] = None, - network_policy: Optional["_models.ContainerNetworkPolicyParam"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellToolParamEnvironmentType.CONTAINER_AUTO # type: ignore - - -class ContainerFileCitationBody(Annotation, discriminator="container_file_citation"): - """Container file citation. - - :ivar type: The type of the container file citation. Always ``container_file_citation``. - Required. CONTAINER_FILE_CITATION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CONTAINER_FILE_CITATION - :ivar container_id: The ID of the container file. Required. - :vartype container_id: str - :ivar file_id: The ID of the file. Required. - :vartype file_id: str - :ivar start_index: The index of the first character of the container file citation in the - message. Required. - :vartype start_index: int - :ivar end_index: The index of the last character of the container file citation in the message. - Required. - :vartype end_index: int - :ivar filename: The filename of the container file cited. Required. - :vartype filename: str - """ - - type: Literal[AnnotationType.CONTAINER_FILE_CITATION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the container file citation. Always ``container_file_citation``. Required. - CONTAINER_FILE_CITATION.""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the container file. Required.""" - file_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the file. Required.""" - start_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the first character of the container file citation in the message. Required.""" - end_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the last character of the container file citation in the message. Required.""" - filename: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The filename of the container file cited. Required.""" - - @overload - def __init__( - self, - *, - container_id: str, - file_id: str, - start_index: int, - end_index: int, - filename: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = AnnotationType.CONTAINER_FILE_CITATION # type: ignore - - -class ContainerNetworkPolicyParam(_Model): - """Network access policy for the container. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ContainerNetworkPolicyAllowlistParam, ContainerNetworkPolicyDisabledParam - - :ivar type: Required. Known values are: "disabled" and "allowlist". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.ContainerNetworkPolicyParamType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"disabled\" and \"allowlist\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContainerNetworkPolicyAllowlistParam(ContainerNetworkPolicyParam, discriminator="allowlist"): - """ContainerNetworkPolicyAllowlistParam. - - :ivar type: Allow outbound network access only to specified domains. Always ``allowlist``. - Required. ALLOWLIST. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ALLOWLIST - :ivar allowed_domains: A list of allowed domains when type is ``allowlist``. Required. - :vartype allowed_domains: list[str] - :ivar domain_secrets: Optional domain-scoped secrets for allowlisted domains. - :vartype domain_secrets: - list[~azure.ai.agentserver.responses.models.models.ContainerNetworkPolicyDomainSecretParam] - """ - - type: Literal[ContainerNetworkPolicyParamType.ALLOWLIST] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Allow outbound network access only to specified domains. Always ``allowlist``. Required. - ALLOWLIST.""" - allowed_domains: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A list of allowed domains when type is ``allowlist``. Required.""" - domain_secrets: Optional[list["_models.ContainerNetworkPolicyDomainSecretParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Optional domain-scoped secrets for allowlisted domains.""" - - @overload - def __init__( - self, - *, - allowed_domains: list[str], - domain_secrets: Optional[list["_models.ContainerNetworkPolicyDomainSecretParam"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ContainerNetworkPolicyParamType.ALLOWLIST # type: ignore - - -class ContainerNetworkPolicyDisabledParam(ContainerNetworkPolicyParam, discriminator="disabled"): - """ContainerNetworkPolicyDisabledParam. - - :ivar type: Disable outbound network access. Always ``disabled``. Required. DISABLED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.DISABLED - """ - - type: Literal[ContainerNetworkPolicyParamType.DISABLED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Disable outbound network access. Always ``disabled``. Required. DISABLED.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ContainerNetworkPolicyParamType.DISABLED # type: ignore - - -class ContainerNetworkPolicyDomainSecretParam(_Model): - """ContainerNetworkPolicyDomainSecretParam. - - :ivar domain: The domain associated with the secret. Required. - :vartype domain: str - :ivar name: The name of the secret to inject for the domain. Required. - :vartype name: str - :ivar value: The secret value to inject for the domain. Required. - :vartype value: str - """ - - domain: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The domain associated with the secret. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the secret to inject for the domain. Required.""" - value: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The secret value to inject for the domain. Required.""" - - @overload - def __init__( - self, - *, - domain: str, - name: str, - value: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallEnvironment(_Model): - """FunctionShellCallEnvironment. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ContainerReferenceResource, LocalEnvironmentResource - - :ivar type: Required. Known values are: "local" and "container_reference". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallEnvironmentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"local\" and \"container_reference\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContainerReferenceResource(FunctionShellCallEnvironment, discriminator="container_reference"): - """Container Reference. - - :ivar type: The environment type. Always ``container_reference``. Required. - CONTAINER_REFERENCE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CONTAINER_REFERENCE - :ivar container_id: Required. - :vartype container_id: str - """ - - type: Literal[FunctionShellCallEnvironmentType.CONTAINER_REFERENCE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The environment type. Always ``container_reference``. Required. CONTAINER_REFERENCE.""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - container_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallEnvironmentType.CONTAINER_REFERENCE # type: ignore - - -class ContainerSkill(_Model): - """ContainerSkill. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - InlineSkillParam, SkillReferenceParam - - :ivar type: Required. Known values are: "skill_reference" and "inline". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ContainerSkillType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"skill_reference\" and \"inline\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ContextManagementParam(_Model): - """ContextManagementParam. - - :ivar type: The context management entry type. Currently only 'compaction' is supported. - Required. - :vartype type: str - :ivar compact_threshold: - :vartype compact_threshold: int - """ - - type: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The context management entry type. Currently only 'compaction' is supported. Required.""" - compact_threshold: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - type: str, - compact_threshold: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ConversationParam_2(_Model): - """Conversation object. - - :ivar id: The unique ID of the conversation. Required. - :vartype id: str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the conversation. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ConversationReference(_Model): - """Conversation. - - :ivar id: The unique ID of the conversation that this response was associated with. Required. - :vartype id: str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the conversation that this response was associated with. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CoordParam(_Model): - """Coordinate. - - :ivar x: The x-coordinate. Required. - :vartype x: int - :ivar y: The y-coordinate. Required. - :vartype y: int - """ - - x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The x-coordinate. Required.""" - y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The y-coordinate. Required.""" - - @overload - def __init__( - self, - *, - x: int, - y: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CreateResponse(_Model): - """CreateResponse. - - :ivar metadata: - :vartype metadata: ~azure.ai.agentserver.responses.models.models.Metadata - :ivar top_logprobs: - :vartype top_logprobs: int - :ivar temperature: - :vartype temperature: int - :ivar top_p: - :vartype top_p: int - :ivar user: This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use - ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your - end-users. Used to boost cache hit rates by better bucketing similar requests and to help - OpenAI detect and prevent abuse. `Learn more - `_. - :vartype user: str - :ivar safety_identifier: A stable identifier used to help detect users of your application that - may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies - each user. We recommend hashing their username or email address, in order to avoid sending us - any identifying information. `Learn more - `_. - :vartype safety_identifier: str - :ivar prompt_cache_key: Used by OpenAI to cache responses for similar requests to optimize your - cache hit rates. Replaces the ``user`` field. `Learn more `_. - :vartype prompt_cache_key: str - :ivar service_tier: Is one of the following types: Literal["auto"], Literal["default"], - Literal["flex"], Literal["scale"], Literal["priority"] - :vartype service_tier: str or str or str or str or str - :ivar prompt_cache_retention: Is either a Literal["in-memory"] type or a Literal["24h"] type. - :vartype prompt_cache_retention: str or str - :ivar previous_response_id: - :vartype previous_response_id: str - :ivar model: The model deployment to use for the creation of this response. - :vartype model: str - :ivar reasoning: - :vartype reasoning: ~azure.ai.agentserver.responses.models.models.Reasoning - :ivar background: - :vartype background: bool - :ivar max_output_tokens: - :vartype max_output_tokens: int - :ivar max_tool_calls: - :vartype max_tool_calls: int - :ivar text: - :vartype text: ~azure.ai.agentserver.responses.models.models.ResponseTextParam - :ivar tools: - :vartype tools: list[~azure.ai.agentserver.responses.models.models.Tool] - :ivar tool_choice: Is either a Union[str, "_models.ToolChoiceOptions"] type or a - ToolChoiceParam type. - :vartype tool_choice: str or ~azure.ai.agentserver.responses.models.models.ToolChoiceOptions or - ~azure.ai.agentserver.responses.models.models.ToolChoiceParam - :ivar prompt: - :vartype prompt: ~azure.ai.agentserver.responses.models.models.Prompt - :ivar truncation: Is either a Literal["auto"] type or a Literal["disabled"] type. - :vartype truncation: str or str - :ivar input: Is either a str type or a [Item] type. - :vartype input: str or list[~azure.ai.agentserver.responses.models.models.Item] - :ivar include: - :vartype include: list[str or ~azure.ai.agentserver.responses.models.models.IncludeEnum] - :ivar parallel_tool_calls: - :vartype parallel_tool_calls: bool - :ivar store: - :vartype store: bool - :ivar instructions: - :vartype instructions: str - :ivar stream: - :vartype stream: bool - :ivar stream_options: - :vartype stream_options: ~azure.ai.agentserver.responses.models.models.ResponseStreamOptions - :ivar conversation: Is either a str type or a ConversationParam_2 type. - :vartype conversation: str or ~azure.ai.agentserver.responses.models.models.ConversationParam_2 - :ivar context_management: Context management configuration for this request. - :vartype context_management: - list[~azure.ai.agentserver.responses.models.models.ContextManagementParam] - :ivar agent_reference: The agent to use for generating the response. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar structured_inputs: The structured inputs to the response that can participate in prompt - template substitution or tool argument bindings. - :vartype structured_inputs: dict[str, any] - """ - - metadata: Optional["_models.Metadata"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - top_logprobs: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - temperature: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - top_p: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - user: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use - ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your - end-users. Used to boost cache hit rates by better bucketing similar requests and to help - OpenAI detect and prevent abuse. `Learn more - `_.""" - safety_identifier: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A stable identifier used to help detect users of your application that may be violating - OpenAI's usage policies. The IDs should be a string that uniquely identifies each user. We - recommend hashing their username or email address, in order to avoid sending us any identifying - information. `Learn more `_.""" - prompt_cache_key: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. - Replaces the ``user`` field. `Learn more `_.""" - service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"auto\"], Literal[\"default\"], Literal[\"flex\"], - Literal[\"scale\"], Literal[\"priority\"]""" - prompt_cache_retention: Optional[Literal["in-memory", "24h"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Literal[\"in-memory\"] type or a Literal[\"24h\"] type.""" - previous_response_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - model: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The model deployment to use for the creation of this response.""" - reasoning: Optional["_models.Reasoning"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - background: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - max_output_tokens: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - max_tool_calls: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - text: Optional["_models.ResponseTextParam"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - tools: Optional[list["_models.Tool"]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - tool_choice: Optional[Union[str, "_models.ToolChoiceOptions", "_models.ToolChoiceParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Union[str, \"_models.ToolChoiceOptions\"] type or a ToolChoiceParam type.""" - prompt: Optional["_models.Prompt"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - truncation: Optional[Literal["auto", "disabled"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Literal[\"auto\"] type or a Literal[\"disabled\"] type.""" - input: Optional["_types.InputParam"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Is either a str type or a [Item] type.""" - include: Optional[list[Union[str, "_models.IncludeEnum"]]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - parallel_tool_calls: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - store: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - instructions: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - stream: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - stream_options: Optional["_models.ResponseStreamOptions"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - conversation: Optional["_types.ConversationParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a str type or a ConversationParam_2 type.""" - context_management: Optional[list["_models.ContextManagementParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Context management configuration for this request.""" - agent_reference: Optional["_models.AgentReference"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The agent to use for generating the response.""" - structured_inputs: Optional[dict[str, Any]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The structured inputs to the response that can participate in prompt template substitution or - tool argument bindings.""" - - @overload - def __init__( # pylint: disable=too-many-locals - self, - *, - metadata: Optional["_models.Metadata"] = None, - top_logprobs: Optional[int] = None, - temperature: Optional[int] = None, - top_p: Optional[int] = None, - user: Optional[str] = None, - safety_identifier: Optional[str] = None, - prompt_cache_key: Optional[str] = None, - service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = None, - prompt_cache_retention: Optional[Literal["in-memory", "24h"]] = None, - previous_response_id: Optional[str] = None, - model: Optional[str] = None, - reasoning: Optional["_models.Reasoning"] = None, - background: Optional[bool] = None, - max_output_tokens: Optional[int] = None, - max_tool_calls: Optional[int] = None, - text: Optional["_models.ResponseTextParam"] = None, - tools: Optional[list["_models.Tool"]] = None, - tool_choice: Optional[Union[str, "_models.ToolChoiceOptions", "_models.ToolChoiceParam"]] = None, - prompt: Optional["_models.Prompt"] = None, - truncation: Optional[Literal["auto", "disabled"]] = None, - input: Optional["_types.InputParam"] = None, - include: Optional[list[Union[str, "_models.IncludeEnum"]]] = None, - parallel_tool_calls: Optional[bool] = None, - store: Optional[bool] = None, - instructions: Optional[str] = None, - stream: Optional[bool] = None, - stream_options: Optional["_models.ResponseStreamOptions"] = None, - conversation: Optional["_types.ConversationParam"] = None, - context_management: Optional[list["_models.ContextManagementParam"]] = None, - agent_reference: Optional["_models.AgentReference"] = None, - structured_inputs: Optional[dict[str, Any]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CustomToolParamFormat(_Model): - """The input format for the custom tool. Default is unconstrained text. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - CustomGrammarFormatParam, CustomTextFormatParam - - :ivar type: Required. Known values are: "text" and "grammar". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CustomToolParamFormatType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"text\" and \"grammar\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class CustomGrammarFormatParam(CustomToolParamFormat, discriminator="grammar"): - """Grammar format. - - :ivar type: Grammar format. Always ``grammar``. Required. GRAMMAR. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.GRAMMAR - :ivar syntax: The syntax of the grammar definition. One of ``lark`` or ``regex``. Required. - Known values are: "lark" and "regex". - :vartype syntax: str or ~azure.ai.agentserver.responses.models.models.GrammarSyntax1 - :ivar definition: The grammar definition. Required. - :vartype definition: str - """ - - type: Literal[CustomToolParamFormatType.GRAMMAR] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Grammar format. Always ``grammar``. Required. GRAMMAR.""" - syntax: Union[str, "_models.GrammarSyntax1"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The syntax of the grammar definition. One of ``lark`` or ``regex``. Required. Known values are: - \"lark\" and \"regex\".""" - definition: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The grammar definition. Required.""" - - @overload - def __init__( - self, - *, - syntax: Union[str, "_models.GrammarSyntax1"], - definition: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = CustomToolParamFormatType.GRAMMAR # type: ignore - - -class CustomTextFormatParam(CustomToolParamFormat, discriminator="text"): - """Text format. - - :ivar type: Unconstrained text format. Always ``text``. Required. TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TEXT - """ - - type: Literal[CustomToolParamFormatType.TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Unconstrained text format. Always ``text``. Required. TEXT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = CustomToolParamFormatType.TEXT # type: ignore - - -class CustomToolParam(Tool, discriminator="custom"): - """Custom tool. - - :ivar type: The type of the custom tool. Always ``custom``. Required. CUSTOM. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM - :ivar name: The name of the custom tool, used to identify it in tool calls. Required. - :vartype name: str - :ivar description: Optional description of the custom tool, used to provide more context. - :vartype description: str - :ivar format: The input format for the custom tool. Default is unconstrained text. - :vartype format: ~azure.ai.agentserver.responses.models.models.CustomToolParamFormat - """ - - type: Literal[ToolType.CUSTOM] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool. Always ``custom``. Required. CUSTOM.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the custom tool, used to identify it in tool calls. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional description of the custom tool, used to provide more context.""" - format: Optional["_models.CustomToolParamFormat"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The input format for the custom tool. Default is unconstrained text.""" - - @overload - def __init__( - self, - *, - name: str, - description: Optional[str] = None, - format: Optional["_models.CustomToolParamFormat"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.CUSTOM # type: ignore - - -class DeleteResponseResult(_Model): - """The result of a delete response operation. - - :ivar id: The operation ID. Required. - :vartype id: str - :ivar deleted: Always return true. Required. Default value is True. - :vartype deleted: bool - :ivar object: Required. Default value is "response". - :vartype object: str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The operation ID. Required.""" - deleted: Literal[True] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Always return true. Required. Default value is True.""" - object: Literal["response"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required. Default value is \"response\".""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.deleted: Literal[True] = True - self.object: Literal["response"] = "response" - - -class DoubleClickAction(ComputerAction, discriminator="double_click"): - """DoubleClick. - - :ivar type: Specifies the event type. For a double click action, this property is always set to - ``double_click``. Required. DOUBLE_CLICK. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.DOUBLE_CLICK - :ivar x: The x-coordinate where the double click occurred. Required. - :vartype x: int - :ivar y: The y-coordinate where the double click occurred. Required. - :vartype y: int - """ - - type: Literal[ComputerActionType.DOUBLE_CLICK] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a double click action, this property is always set to - ``double_click``. Required. DOUBLE_CLICK.""" - x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The x-coordinate where the double click occurred. Required.""" - y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The y-coordinate where the double click occurred. Required.""" - - @overload - def __init__( - self, - *, - x: int, - y: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.DOUBLE_CLICK # type: ignore - - -class DragParam(ComputerAction, discriminator="drag"): - """Drag. - - :ivar type: Specifies the event type. For a drag action, this property is always set to - ``drag``. Required. DRAG. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.DRAG - :ivar path: An array of coordinates representing the path of the drag action. Coordinates will - appear as an array of objects, eg - - .. code-block:: - - [ - { x: 100, y: 200 }, - { x: 200, y: 300 } - ]. Required. - :vartype path: list[~azure.ai.agentserver.responses.models.models.CoordParam] - """ - - type: Literal[ComputerActionType.DRAG] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a drag action, this property is always set to ``drag``. Required. - DRAG.""" - path: list["_models.CoordParam"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An array of coordinates representing the path of the drag action. Coordinates will appear as an - array of objects, eg - - .. code-block:: - - [ - { x: 100, y: 200 }, - { x: 200, y: 300 } - ]. Required.""" - - @overload - def __init__( - self, - *, - path: list["_models.CoordParam"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.DRAG # type: ignore - - -class Error(_Model): - """Error. - - :ivar code: Required. - :vartype code: str - :ivar message: Required. - :vartype message: str - :ivar param: - :vartype param: str - :ivar type: - :vartype type: str - :ivar details: - :vartype details: list[~azure.ai.agentserver.responses.models.models.Error] - :ivar additional_info: - :vartype additional_info: dict[str, any] - :ivar debug_info: - :vartype debug_info: dict[str, any] - """ - - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - message: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - param: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - type: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - details: Optional[list["_models.Error"]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - additional_info: Optional[dict[str, Any]] = rest_field( - name="additionalInfo", visibility=["read", "create", "update", "delete", "query"] - ) - debug_info: Optional[dict[str, Any]] = rest_field( - name="debugInfo", visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - code: str, - message: str, - param: Optional[str] = None, - type: Optional[str] = None, - details: Optional[list["_models.Error"]] = None, - additional_info: Optional[dict[str, Any]] = None, - debug_info: Optional[dict[str, Any]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FabricDataAgentToolCall(OutputItem, discriminator="fabric_dataagent_preview_call"): - """A Fabric data agent tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. FABRIC_DATAAGENT_PREVIEW_CALL. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FABRIC_DATAAGENT_PREVIEW_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.FABRIC_DATAAGENT_PREVIEW_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. FABRIC_DATAAGENT_PREVIEW_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.FABRIC_DATAAGENT_PREVIEW_CALL # type: ignore - - -class FabricDataAgentToolCallOutput(OutputItem, discriminator="fabric_dataagent_preview_call_output"): - """The output of a Fabric data agent tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the Fabric data agent tool call. Is one of the following types: - {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the Fabric data agent tool call. Is one of the following types: {str: Any}, - str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT # type: ignore - - -class FabricDataAgentToolParameters(_Model): - """The fabric data agent tool parameters. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connections: The project connections attached to this tool. There can be a - maximum of 1 connection resource attached to the tool. - :vartype project_connections: - list[~azure.ai.agentserver.responses.models.models.ToolProjectConnection] - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connections: Optional[list["_models.ToolProjectConnection"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The project connections attached to this tool. There can be a maximum of 1 connection resource - attached to the tool.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - description: Optional[str] = None, - project_connections: Optional[list["_models.ToolProjectConnection"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FileCitationBody(Annotation, discriminator="file_citation"): - """File citation. - - :ivar type: The type of the file citation. Always ``file_citation``. Required. FILE_CITATION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_CITATION - :ivar file_id: The ID of the file. Required. - :vartype file_id: str - :ivar index: The index of the file in the list of files. Required. - :vartype index: int - :ivar filename: The filename of the file cited. Required. - :vartype filename: str - """ - - type: Literal[AnnotationType.FILE_CITATION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file citation. Always ``file_citation``. Required. FILE_CITATION.""" - file_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the file. Required.""" - index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the file in the list of files. Required.""" - filename: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The filename of the file cited. Required.""" - - @overload - def __init__( - self, - *, - file_id: str, - index: int, - filename: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = AnnotationType.FILE_CITATION # type: ignore - - -class FilePath(Annotation, discriminator="file_path"): - """File path. - - :ivar type: The type of the file path. Always ``file_path``. Required. FILE_PATH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_PATH - :ivar file_id: The ID of the file. Required. - :vartype file_id: str - :ivar index: The index of the file in the list of files. Required. - :vartype index: int - """ - - type: Literal[AnnotationType.FILE_PATH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file path. Always ``file_path``. Required. FILE_PATH.""" - file_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the file. Required.""" - index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the file in the list of files. Required.""" - - @overload - def __init__( - self, - *, - file_id: str, - index: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = AnnotationType.FILE_PATH # type: ignore - - -class FileSearchTool(Tool, discriminator="file_search"): - """File search. - - :ivar type: The type of the file search tool. Always ``file_search``. Required. FILE_SEARCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_SEARCH - :ivar vector_store_ids: The IDs of the vector stores to search. Required. - :vartype vector_store_ids: list[str] - :ivar max_num_results: The maximum number of results to return. This number should be between 1 - and 50 inclusive. - :vartype max_num_results: int - :ivar ranking_options: Ranking options for search. - :vartype ranking_options: ~azure.ai.agentserver.responses.models.models.RankingOptions - :ivar filters: Is either a ComparisonFilter type or a CompoundFilter type. - :vartype filters: ~azure.ai.agentserver.responses.models.models.ComparisonFilter or - ~azure.ai.agentserver.responses.models.models.CompoundFilter - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - """ - - type: Literal[ToolType.FILE_SEARCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file search tool. Always ``file_search``. Required. FILE_SEARCH.""" - vector_store_ids: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The IDs of the vector stores to search. Required.""" - max_num_results: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The maximum number of results to return. This number should be between 1 and 50 inclusive.""" - ranking_options: Optional["_models.RankingOptions"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Ranking options for search.""" - filters: Optional["_types.Filters"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Is either a ComparisonFilter type or a CompoundFilter type.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - - @overload - def __init__( - self, - *, - vector_store_ids: list[str], - max_num_results: Optional[int] = None, - ranking_options: Optional["_models.RankingOptions"] = None, - filters: Optional["_types.Filters"] = None, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.FILE_SEARCH # type: ignore - - -class FileSearchToolCallResults(_Model): - """FileSearchToolCallResults. - - :ivar file_id: - :vartype file_id: str - :ivar text: - :vartype text: str - :ivar filename: - :vartype filename: str - :ivar attributes: - :vartype attributes: ~azure.ai.agentserver.responses.models.models.VectorStoreFileAttributes - :ivar score: - :vartype score: float - """ - - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - text: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - filename: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - attributes: Optional["_models.VectorStoreFileAttributes"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - score: Optional[float] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - file_id: Optional[str] = None, - text: Optional[str] = None, - filename: Optional[str] = None, - attributes: Optional["_models.VectorStoreFileAttributes"] = None, - score: Optional[float] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionAndCustomToolCallOutput(_Model): - """FunctionAndCustomToolCallOutput. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - FunctionAndCustomToolCallOutputInputFileContent, - FunctionAndCustomToolCallOutputInputImageContent, - FunctionAndCustomToolCallOutputInputTextContent - - :ivar type: Required. Known values are: "input_text", "input_image", and "input_file". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutputType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"input_text\", \"input_image\", and \"input_file\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionAndCustomToolCallOutputInputFileContent( - FunctionAndCustomToolCallOutput, discriminator="input_file" -): # pylint: disable=name-too-long - """Input file. - - :ivar type: The type of the input item. Always ``input_file``. Required. INPUT_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_FILE - :ivar file_id: - :vartype file_id: str - :ivar filename: The name of the file to be sent to the model. - :vartype filename: str - :ivar file_url: The URL of the file to be sent to the model. - :vartype file_url: str - :ivar file_data: The content of the file to be sent to the model. - :vartype file_data: str - """ - - type: Literal[FunctionAndCustomToolCallOutputType.INPUT_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_file``. Required. INPUT_FILE.""" - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - filename: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the file to be sent to the model.""" - file_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the file to be sent to the model.""" - file_data: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the file to be sent to the model.""" - - @overload - def __init__( - self, - *, - file_id: Optional[str] = None, - filename: Optional[str] = None, - file_url: Optional[str] = None, - file_data: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionAndCustomToolCallOutputType.INPUT_FILE # type: ignore - - -class FunctionAndCustomToolCallOutputInputImageContent( - FunctionAndCustomToolCallOutput, discriminator="input_image" -): # pylint: disable=name-too-long - """Input image. - - :ivar type: The type of the input item. Always ``input_image``. Required. INPUT_IMAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_IMAGE - :ivar image_url: - :vartype image_url: str - :ivar file_id: - :vartype file_id: str - :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, - or ``auto``. Defaults to ``auto``. Required. Known values are: "low", "high", and "auto". - :vartype detail: str or ~azure.ai.agentserver.responses.models.models.ImageDetail - """ - - type: Literal[FunctionAndCustomToolCallOutputType.INPUT_IMAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_image``. Required. INPUT_IMAGE.""" - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - detail: Union[str, "_models.ImageDetail"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The detail level of the image to be sent to the model. One of ``high``, ``low``, or ``auto``. - Defaults to ``auto``. Required. Known values are: \"low\", \"high\", and \"auto\".""" - - @overload - def __init__( - self, - *, - detail: Union[str, "_models.ImageDetail"], - image_url: Optional[str] = None, - file_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionAndCustomToolCallOutputType.INPUT_IMAGE # type: ignore - - -class FunctionAndCustomToolCallOutputInputTextContent( - FunctionAndCustomToolCallOutput, discriminator="input_text" -): # pylint: disable=name-too-long - """Input text. - - :ivar type: The type of the input item. Always ``input_text``. Required. INPUT_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_TEXT - :ivar text: The text input to the model. Required. - :vartype text: str - """ - - type: Literal[FunctionAndCustomToolCallOutputType.INPUT_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_text``. Required. INPUT_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text input to the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionAndCustomToolCallOutputType.INPUT_TEXT # type: ignore - - -class FunctionCallOutputItemParam(Item, discriminator="function_call_output"): - """Function tool call output. - - :ivar id: - :vartype id: str - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar type: The type of the function tool call output. Always ``function_call_output``. - Required. FUNCTION_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL_OUTPUT - :ivar output: Text, image, or file output of the function tool call. Required. Is either a str - type or a [Union["_models.InputTextContentParam", "_models.InputImageContentParamAutoParam", - "_models.InputFileContentParam"]] type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.InputTextContentParam or - ~azure.ai.agentserver.responses.models.models.InputImageContentParamAutoParam or - ~azure.ai.agentserver.responses.models.models.InputFileContentParam] - :ivar status: Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.FunctionCallItemStatus - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - type: Literal[ItemType.FUNCTION_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call output. Always ``function_call_output``. Required. - FUNCTION_CALL_OUTPUT.""" - output: Union[ - str, - list[ - Union[ - "_models.InputTextContentParam", - "_models.InputImageContentParamAutoParam", - "_models.InputFileContentParam", - ] - ], - ] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Text, image, or file output of the function tool call. Required. Is either a str type or a - [Union[\"_models.InputTextContentParam\", \"_models.InputImageContentParamAutoParam\", - \"_models.InputFileContentParam\"]] type.""" - status: Optional[Union[str, "_models.FunctionCallItemStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[ - str, - list[ - Union[ - "_models.InputTextContentParam", - "_models.InputImageContentParamAutoParam", - "_models.InputFileContentParam", - ] - ], - ], - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Union[str, "_models.FunctionCallItemStatus"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.FUNCTION_CALL_OUTPUT # type: ignore - - -class FunctionShellAction(_Model): - """Shell exec action. - - :ivar commands: Required. - :vartype commands: list[str] - :ivar timeout_ms: Required. - :vartype timeout_ms: int - :ivar max_output_length: Required. - :vartype max_output_length: int - """ - - commands: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - timeout_ms: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - max_output_length: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - commands: list[str], - timeout_ms: int, - max_output_length: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellActionParam(_Model): - """Shell action. - - :ivar commands: Ordered shell commands for the execution environment to run. Required. - :vartype commands: list[str] - :ivar timeout_ms: - :vartype timeout_ms: int - :ivar max_output_length: - :vartype max_output_length: int - """ - - commands: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Ordered shell commands for the execution environment to run. Required.""" - timeout_ms: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - max_output_length: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - commands: list[str], - timeout_ms: Optional[int] = None, - max_output_length: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallItemParam(Item, discriminator="shell_call"): - """Shell tool call. - - :ivar id: - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL - :ivar action: The shell commands and limits that describe how to run the tool call. Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.FunctionShellActionParam - :ivar status: Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallItemStatus - :ivar environment: - :vartype environment: - ~azure.ai.agentserver.responses.models.models.FunctionShellCallItemParamEnvironment - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - type: Literal[ItemType.SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" - action: "_models.FunctionShellActionParam" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The shell commands and limits that describe how to run the tool call. Required.""" - status: Optional[Union[str, "_models.FunctionShellCallItemStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - environment: Optional["_models.FunctionShellCallItemParamEnvironment"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - call_id: str, - action: "_models.FunctionShellActionParam", - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Union[str, "_models.FunctionShellCallItemStatus"]] = None, - environment: Optional["_models.FunctionShellCallItemParamEnvironment"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.SHELL_CALL # type: ignore - - -class FunctionShellCallItemParamEnvironment(_Model): - """The environment to execute the shell commands in. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - FunctionShellCallItemParamEnvironmentContainerReferenceParam, - FunctionShellCallItemParamEnvironmentLocalEnvironmentParam - - :ivar type: Required. Known values are: "local" and "container_reference". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallItemParamEnvironmentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"local\" and \"container_reference\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallItemParamEnvironmentContainerReferenceParam( - FunctionShellCallItemParamEnvironment, discriminator="container_reference" -): # pylint: disable=name-too-long - """FunctionShellCallItemParamEnvironmentContainerReferenceParam. - - :ivar type: References a container created with the /v1/containers endpoint. Required. - CONTAINER_REFERENCE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CONTAINER_REFERENCE - :ivar container_id: The ID of the referenced container. Required. - :vartype container_id: str - """ - - type: Literal[FunctionShellCallItemParamEnvironmentType.CONTAINER_REFERENCE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """References a container created with the /v1/containers endpoint. Required. CONTAINER_REFERENCE.""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the referenced container. Required.""" - - @overload - def __init__( - self, - *, - container_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallItemParamEnvironmentType.CONTAINER_REFERENCE # type: ignore - - -class FunctionShellCallItemParamEnvironmentLocalEnvironmentParam( - FunctionShellCallItemParamEnvironment, discriminator="local" -): # pylint: disable=name-too-long - """FunctionShellCallItemParamEnvironmentLocalEnvironmentParam. - - :ivar type: Use a local computer environment. Required. LOCAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL - :ivar skills: An optional list of skills. - :vartype skills: list[~azure.ai.agentserver.responses.models.models.LocalSkillParam] - """ - - type: Literal[FunctionShellCallItemParamEnvironmentType.LOCAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Use a local computer environment. Required. LOCAL.""" - skills: Optional[list["_models.LocalSkillParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """An optional list of skills.""" - - @overload - def __init__( - self, - *, - skills: Optional[list["_models.LocalSkillParam"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallItemParamEnvironmentType.LOCAL # type: ignore - - -class FunctionShellCallOutputContent(_Model): - """Shell call output content. - - :ivar stdout: The standard output that was captured. Required. - :vartype stdout: str - :ivar stderr: The standard error output that was captured. Required. - :vartype stderr: str - :ivar outcome: Shell call outcome. Required. - :vartype outcome: ~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputOutcome - :ivar created_by: The identifier of the actor that created the item. - :vartype created_by: str - """ - - stdout: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The standard output that was captured. Required.""" - stderr: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The standard error output that was captured. Required.""" - outcome: "_models.FunctionShellCallOutputOutcome" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Shell call outcome. Required.""" - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The identifier of the actor that created the item.""" - - @overload - def __init__( - self, - *, - stdout: str, - stderr: str, - outcome: "_models.FunctionShellCallOutputOutcome", - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallOutputContentParam(_Model): - """Shell output content. - - :ivar stdout: Captured stdout output for the shell call. Required. - :vartype stdout: str - :ivar stderr: Captured stderr output for the shell call. Required. - :vartype stderr: str - :ivar outcome: The exit or timeout outcome associated with this shell call. Required. - :vartype outcome: - ~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputOutcomeParam - """ - - stdout: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Captured stdout output for the shell call. Required.""" - stderr: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Captured stderr output for the shell call. Required.""" - outcome: "_models.FunctionShellCallOutputOutcomeParam" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The exit or timeout outcome associated with this shell call. Required.""" - - @overload - def __init__( - self, - *, - stdout: str, - stderr: str, - outcome: "_models.FunctionShellCallOutputOutcomeParam", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallOutputOutcome(_Model): - """Shell call outcome. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - FunctionShellCallOutputExitOutcome, FunctionShellCallOutputTimeoutOutcome - - :ivar type: Required. Known values are: "timeout" and "exit". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputOutcomeType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"timeout\" and \"exit\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallOutputExitOutcome(FunctionShellCallOutputOutcome, discriminator="exit"): - """Shell call exit outcome. - - :ivar type: The outcome type. Always ``exit``. Required. EXIT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.EXIT - :ivar exit_code: Exit code from the shell process. Required. - :vartype exit_code: int - """ - - type: Literal[FunctionShellCallOutputOutcomeType.EXIT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The outcome type. Always ``exit``. Required. EXIT.""" - exit_code: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Exit code from the shell process. Required.""" - - @overload - def __init__( - self, - *, - exit_code: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallOutputOutcomeType.EXIT # type: ignore - - -class FunctionShellCallOutputOutcomeParam(_Model): - """Shell call outcome. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - FunctionShellCallOutputExitOutcomeParam, FunctionShellCallOutputTimeoutOutcomeParam - - :ivar type: Required. Known values are: "timeout" and "exit". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputOutcomeParamType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"timeout\" and \"exit\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionShellCallOutputExitOutcomeParam(FunctionShellCallOutputOutcomeParam, discriminator="exit"): - """Shell call exit outcome. - - :ivar type: The outcome type. Always ``exit``. Required. EXIT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.EXIT - :ivar exit_code: The exit code returned by the shell process. Required. - :vartype exit_code: int - """ - - type: Literal[FunctionShellCallOutputOutcomeParamType.EXIT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The outcome type. Always ``exit``. Required. EXIT.""" - exit_code: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The exit code returned by the shell process. Required.""" - - @overload - def __init__( - self, - *, - exit_code: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallOutputOutcomeParamType.EXIT # type: ignore - - -class FunctionShellCallOutputItemParam(Item, discriminator="shell_call_output"): - """Shell tool call output. - - :ivar id: - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar type: The type of the item. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL_OUTPUT - :ivar output: Captured chunks of stdout and stderr output, along with their associated - outcomes. Required. - :vartype output: - list[~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputContentParam] - :ivar status: Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.FunctionShellCallItemStatus - :ivar max_output_length: - :vartype max_output_length: int - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - type: Literal[ItemType.SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" - output: list["_models.FunctionShellCallOutputContentParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Captured chunks of stdout and stderr output, along with their associated outcomes. Required.""" - status: Optional[Union[str, "_models.FunctionShellCallItemStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - max_output_length: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - call_id: str, - output: list["_models.FunctionShellCallOutputContentParam"], - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Union[str, "_models.FunctionShellCallItemStatus"]] = None, - max_output_length: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.SHELL_CALL_OUTPUT # type: ignore - - -class FunctionShellCallOutputTimeoutOutcome(FunctionShellCallOutputOutcome, discriminator="timeout"): - """Shell call timeout outcome. - - :ivar type: The outcome type. Always ``timeout``. Required. TIMEOUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TIMEOUT - """ - - type: Literal[FunctionShellCallOutputOutcomeType.TIMEOUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The outcome type. Always ``timeout``. Required. TIMEOUT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallOutputOutcomeType.TIMEOUT # type: ignore - - -class FunctionShellCallOutputTimeoutOutcomeParam( - FunctionShellCallOutputOutcomeParam, discriminator="timeout" -): # pylint: disable=name-too-long - """Shell call timeout outcome. - - :ivar type: The outcome type. Always ``timeout``. Required. TIMEOUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TIMEOUT - """ - - type: Literal[FunctionShellCallOutputOutcomeParamType.TIMEOUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The outcome type. Always ``timeout``. Required. TIMEOUT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallOutputOutcomeParamType.TIMEOUT # type: ignore - - -class FunctionShellToolParam(Tool, discriminator="shell"): - """Shell tool. - - :ivar type: The type of the shell tool. Always ``shell``. Required. SHELL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL - :ivar environment: - :vartype environment: - ~azure.ai.agentserver.responses.models.models.FunctionShellToolParamEnvironment - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - """ - - type: Literal[ToolType.SHELL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the shell tool. Always ``shell``. Required. SHELL.""" - environment: Optional["_models.FunctionShellToolParamEnvironment"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - - @overload - def __init__( - self, - *, - environment: Optional["_models.FunctionShellToolParamEnvironment"] = None, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.SHELL # type: ignore - - -class FunctionShellToolParamEnvironmentContainerReferenceParam( - FunctionShellToolParamEnvironment, discriminator="container_reference" -): # pylint: disable=name-too-long - """FunctionShellToolParamEnvironmentContainerReferenceParam. - - :ivar type: References a container created with the /v1/containers endpoint. Required. - CONTAINER_REFERENCE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CONTAINER_REFERENCE - :ivar container_id: The ID of the referenced container. Required. - :vartype container_id: str - """ - - type: Literal[FunctionShellToolParamEnvironmentType.CONTAINER_REFERENCE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """References a container created with the /v1/containers endpoint. Required. CONTAINER_REFERENCE.""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the referenced container. Required.""" - - @overload - def __init__( - self, - *, - container_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellToolParamEnvironmentType.CONTAINER_REFERENCE # type: ignore - - -class FunctionShellToolParamEnvironmentLocalEnvironmentParam( - FunctionShellToolParamEnvironment, discriminator="local" -): # pylint: disable=name-too-long - """FunctionShellToolParamEnvironmentLocalEnvironmentParam. - - :ivar type: Use a local computer environment. Required. LOCAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL - :ivar skills: An optional list of skills. - :vartype skills: list[~azure.ai.agentserver.responses.models.models.LocalSkillParam] - """ - - type: Literal[FunctionShellToolParamEnvironmentType.LOCAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Use a local computer environment. Required. LOCAL.""" - skills: Optional[list["_models.LocalSkillParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """An optional list of skills.""" - - @overload - def __init__( - self, - *, - skills: Optional[list["_models.LocalSkillParam"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellToolParamEnvironmentType.LOCAL # type: ignore - - -class FunctionTool(Tool, discriminator="function"): - """Function. - - :ivar type: The type of the function tool. Always ``function``. Required. FUNCTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION - :ivar name: The name of the function to call. Required. - :vartype name: str - :ivar description: - :vartype description: str - :ivar parameters: Required. - :vartype parameters: dict[str, any] - :ivar strict: Required. - :vartype strict: bool - """ - - type: Literal[ToolType.FUNCTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool. Always ``function``. Required. FUNCTION.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to call. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - parameters: dict[str, Any] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - strict: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - name: str, - parameters: dict[str, Any], - strict: bool, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.FUNCTION # type: ignore - - -class ItemField(_Model): - """An item representing a message, tool call, tool output, reasoning, or other response element. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ItemFieldApplyPatchToolCall, ItemFieldApplyPatchToolCallOutput, - ItemFieldCodeInterpreterToolCall, ItemFieldCompactionBody, ItemFieldComputerToolCall, - ItemFieldComputerToolCallOutputResource, ItemFieldCustomToolCall, - ItemFieldCustomToolCallOutput, ItemFieldFileSearchToolCall, ItemFieldFunctionToolCall, - FunctionToolCallOutput, ItemFieldImageGenToolCall, ItemFieldLocalShellToolCall, - ItemFieldLocalShellToolCallOutput, ItemFieldMcpApprovalRequest, - ItemFieldMcpApprovalResponseResource, ItemFieldMcpToolCall, ItemFieldMcpListTools, - ItemFieldMessage, ItemFieldReasoningItem, ItemFieldFunctionShellCall, - ItemFieldFunctionShellCallOutput, ItemFieldWebSearchToolCall - - :ivar type: Required. Known values are: "message", "function_call", "function_call_output", - "file_search_call", "web_search_call", "image_generation_call", "computer_call", - "computer_call_output", "reasoning", "compaction", "code_interpreter_call", "local_shell_call", - "local_shell_call_output", "shell_call", "shell_call_output", "apply_patch_call", - "apply_patch_call_output", "mcp_list_tools", "mcp_approval_request", "mcp_approval_response", - "mcp_call", "custom_tool_call", and "custom_tool_call_output". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ItemFieldType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"message\", \"function_call\", \"function_call_output\", - \"file_search_call\", \"web_search_call\", \"image_generation_call\", \"computer_call\", - \"computer_call_output\", \"reasoning\", \"compaction\", \"code_interpreter_call\", - \"local_shell_call\", \"local_shell_call_output\", \"shell_call\", \"shell_call_output\", - \"apply_patch_call\", \"apply_patch_call_output\", \"mcp_list_tools\", - \"mcp_approval_request\", \"mcp_approval_response\", \"mcp_call\", \"custom_tool_call\", and - \"custom_tool_call_output\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class FunctionToolCallOutput(ItemField, discriminator="function_call_output"): - """Function tool call output. - - :ivar id: The unique ID of the function tool call output. Populated when this item is returned - via API. - :vartype id: str - :ivar type: The type of the function tool call output. Always ``function_call_output``. - Required. FUNCTION_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL_OUTPUT - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the function call generated by your code. Can be a string or an - list of output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] - type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutput] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call output. Populated when this item is returned via API.""" - type: Literal[ItemFieldType.FUNCTION_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call output. Always ``function_call_output``. Required. - FUNCTION_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the function call generated by your code. Can be a string or an list of output - content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]], - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.FUNCTION_CALL_OUTPUT # type: ignore - - -class FunctionToolCallOutputResource(OutputItem, discriminator="function_call_output"): - """FunctionToolCallOutputResource. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: The unique ID of the function tool call output. Populated when this item is returned - via API. - :vartype id: str - :ivar type: The type of the function tool call output. Always ``function_call_output``. - Required. FUNCTION_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL_OUTPUT - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the function call generated by your code. Can be a string or an - list of output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] - type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutput] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call output. Populated when this item is returned via API.""" - type: Literal[OutputItemType.FUNCTION_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call output. Always ``function_call_output``. Required. - FUNCTION_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the function call generated by your code. Can be a string or an list of output - content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.FUNCTION_CALL_OUTPUT # type: ignore - - -class HybridSearchOptions(_Model): - """HybridSearchOptions. - - :ivar embedding_weight: The weight of the embedding in the reciprocal ranking fusion. Required. - :vartype embedding_weight: int - :ivar text_weight: The weight of the text in the reciprocal ranking fusion. Required. - :vartype text_weight: int - """ - - embedding_weight: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The weight of the embedding in the reciprocal ranking fusion. Required.""" - text_weight: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The weight of the text in the reciprocal ranking fusion. Required.""" - - @overload - def __init__( - self, - *, - embedding_weight: int, - text_weight: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ImageGenTool(Tool, discriminator="image_generation"): - """Image generation tool. - - :ivar type: The type of the image generation tool. Always ``image_generation``. Required. - IMAGE_GENERATION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.IMAGE_GENERATION - :ivar model: Is one of the following types: Literal["gpt-image-1"], - Literal["gpt-image-1-mini"], Literal["gpt-image-1.5"], str - :vartype model: str or str or str or str - :ivar quality: The quality of the generated image. One of ``low``, ``medium``, ``high``, or - ``auto``. Default: ``auto``. Is one of the following types: Literal["low"], Literal["medium"], - Literal["high"], Literal["auto"] - :vartype quality: str or str or str or str - :ivar size: The size of the generated image. One of ``1024x1024``, ``1024x1536``, - ``1536x1024``, or ``auto``. Default: ``auto``. Is one of the following types: - Literal["1024x1024"], Literal["1024x1536"], Literal["1536x1024"], Literal["auto"] - :vartype size: str or str or str or str - :ivar output_format: The output format of the generated image. One of ``png``, ``webp``, or - ``jpeg``. Default: ``png``. Is one of the following types: Literal["png"], Literal["webp"], - Literal["jpeg"] - :vartype output_format: str or str or str - :ivar output_compression: Compression level for the output image. Default: 100. - :vartype output_compression: int - :ivar moderation: Moderation level for the generated image. Default: ``auto``. Is either a - Literal["auto"] type or a Literal["low"] type. - :vartype moderation: str or str - :ivar background: Background type for the generated image. One of ``transparent``, ``opaque``, - or ``auto``. Default: ``auto``. Is one of the following types: Literal["transparent"], - Literal["opaque"], Literal["auto"] - :vartype background: str or str or str - :ivar input_fidelity: Known values are: "high" and "low". - :vartype input_fidelity: str or ~azure.ai.agentserver.responses.models.models.InputFidelity - :ivar input_image_mask: Optional mask for inpainting. Contains ``image_url`` (string, optional) - and ``file_id`` (string, optional). - :vartype input_image_mask: - ~azure.ai.agentserver.responses.models.models.ImageGenToolInputImageMask - :ivar partial_images: Number of partial images to generate in streaming mode, from 0 (default - value) to 3. - :vartype partial_images: int - :ivar action: Whether to generate a new image or edit an existing image. Default: ``auto``. - Known values are: "generate", "edit", and "auto". - :vartype action: str or ~azure.ai.agentserver.responses.models.models.ImageGenActionEnum - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - """ - - type: Literal[ToolType.IMAGE_GENERATION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the image generation tool. Always ``image_generation``. Required. IMAGE_GENERATION.""" - model: Optional[Union[Literal["gpt-image-1"], Literal["gpt-image-1-mini"], Literal["gpt-image-1.5"], str]] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """Is one of the following types: Literal[\"gpt-image-1\"], Literal[\"gpt-image-1-mini\"], - Literal[\"gpt-image-1.5\"], str""" - quality: Optional[Literal["low", "medium", "high", "auto"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The quality of the generated image. One of ``low``, ``medium``, ``high``, or ``auto``. Default: - ``auto``. Is one of the following types: Literal[\"low\"], Literal[\"medium\"], - Literal[\"high\"], Literal[\"auto\"]""" - size: Optional[Literal["1024x1024", "1024x1536", "1536x1024", "auto"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The size of the generated image. One of ``1024x1024``, ``1024x1536``, ``1536x1024``, or - ``auto``. Default: ``auto``. Is one of the following types: Literal[\"1024x1024\"], - Literal[\"1024x1536\"], Literal[\"1536x1024\"], Literal[\"auto\"]""" - output_format: Optional[Literal["png", "webp", "jpeg"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output format of the generated image. One of ``png``, ``webp``, or ``jpeg``. Default: - ``png``. Is one of the following types: Literal[\"png\"], Literal[\"webp\"], Literal[\"jpeg\"]""" - output_compression: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Compression level for the output image. Default: 100.""" - moderation: Optional[Literal["auto", "low"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Moderation level for the generated image. Default: ``auto``. Is either a Literal[\"auto\"] type - or a Literal[\"low\"] type.""" - background: Optional[Literal["transparent", "opaque", "auto"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Background type for the generated image. One of ``transparent``, ``opaque``, or ``auto``. - Default: ``auto``. Is one of the following types: Literal[\"transparent\"], - Literal[\"opaque\"], Literal[\"auto\"]""" - input_fidelity: Optional[Union[str, "_models.InputFidelity"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"high\" and \"low\".""" - input_image_mask: Optional["_models.ImageGenToolInputImageMask"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Optional mask for inpainting. Contains ``image_url`` (string, optional) and ``file_id`` - (string, optional).""" - partial_images: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Number of partial images to generate in streaming mode, from 0 (default value) to 3.""" - action: Optional[Union[str, "_models.ImageGenActionEnum"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Whether to generate a new image or edit an existing image. Default: ``auto``. Known values are: - \"generate\", \"edit\", and \"auto\".""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - - @overload - def __init__( - self, - *, - model: Optional[ - Union[Literal["gpt-image-1"], Literal["gpt-image-1-mini"], Literal["gpt-image-1.5"], str] - ] = None, - quality: Optional[Literal["low", "medium", "high", "auto"]] = None, - size: Optional[Literal["1024x1024", "1024x1536", "1536x1024", "auto"]] = None, - output_format: Optional[Literal["png", "webp", "jpeg"]] = None, - output_compression: Optional[int] = None, - moderation: Optional[Literal["auto", "low"]] = None, - background: Optional[Literal["transparent", "opaque", "auto"]] = None, - input_fidelity: Optional[Union[str, "_models.InputFidelity"]] = None, - input_image_mask: Optional["_models.ImageGenToolInputImageMask"] = None, - partial_images: Optional[int] = None, - action: Optional[Union[str, "_models.ImageGenActionEnum"]] = None, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.IMAGE_GENERATION # type: ignore - - -class ImageGenToolInputImageMask(_Model): - """ImageGenToolInputImageMask. - - :ivar image_url: - :vartype image_url: str - :ivar file_id: - :vartype file_id: str - """ - - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - image_url: Optional[str] = None, - file_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class InlineSkillParam(ContainerSkill, discriminator="inline"): - """InlineSkillParam. - - :ivar type: Defines an inline skill for this request. Required. INLINE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INLINE - :ivar name: The name of the skill. Required. - :vartype name: str - :ivar description: The description of the skill. Required. - :vartype description: str - :ivar source: Inline skill payload. Required. - :vartype source: ~azure.ai.agentserver.responses.models.models.InlineSkillSourceParam - """ - - type: Literal[ContainerSkillType.INLINE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Defines an inline skill for this request. Required. INLINE.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the skill. Required.""" - description: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The description of the skill. Required.""" - source: "_models.InlineSkillSourceParam" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Inline skill payload. Required.""" - - @overload - def __init__( - self, - *, - name: str, - description: str, - source: "_models.InlineSkillSourceParam", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ContainerSkillType.INLINE # type: ignore - - -class InlineSkillSourceParam(_Model): - """Inline skill payload. - - :ivar type: The type of the inline skill source. Must be ``base64``. Required. Default value is - "base64". - :vartype type: str - :ivar media_type: The media type of the inline skill payload. Must be ``application/zip``. - Required. Default value is "application/zip". - :vartype media_type: str - :ivar data: Base64-encoded skill zip bundle. Required. - :vartype data: str - """ - - type: Literal["base64"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the inline skill source. Must be ``base64``. Required. Default value is \"base64\".""" - media_type: Literal["application/zip"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The media type of the inline skill payload. Must be ``application/zip``. Required. Default - value is \"application/zip\".""" - data: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Base64-encoded skill zip bundle. Required.""" - - @overload - def __init__( - self, - *, - data: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["base64"] = "base64" - self.media_type: Literal["application/zip"] = "application/zip" - - -class InputFileContent(_Model): - """Input file. - - :ivar type: The type of the input item. Always ``input_file``. Required. Default value is - "input_file". - :vartype type: str - :ivar file_id: - :vartype file_id: str - :ivar filename: The name of the file to be sent to the model. - :vartype filename: str - :ivar file_url: The URL of the file to be sent to the model. - :vartype file_url: str - :ivar file_data: The content of the file to be sent to the model. - :vartype file_data: str - """ - - type: Literal["input_file"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_file``. Required. Default value is \"input_file\".""" - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - filename: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the file to be sent to the model.""" - file_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the file to be sent to the model.""" - file_data: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the file to be sent to the model.""" - - @overload - def __init__( - self, - *, - file_id: Optional[str] = None, - filename: Optional[str] = None, - file_url: Optional[str] = None, - file_data: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_file"] = "input_file" - - -class InputFileContentParam(_Model): - """Input file. - - :ivar type: The type of the input item. Always ``input_file``. Required. Default value is - "input_file". - :vartype type: str - :ivar file_id: - :vartype file_id: str - :ivar filename: - :vartype filename: str - :ivar file_data: - :vartype file_data: str - :ivar file_url: - :vartype file_url: str - """ - - type: Literal["input_file"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_file``. Required. Default value is \"input_file\".""" - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - filename: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_data: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - file_id: Optional[str] = None, - filename: Optional[str] = None, - file_data: Optional[str] = None, - file_url: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_file"] = "input_file" - - -class InputImageContent(_Model): - """Input image. - - :ivar type: The type of the input item. Always ``input_image``. Required. Default value is - "input_image". - :vartype type: str - :ivar image_url: - :vartype image_url: str - :ivar file_id: - :vartype file_id: str - :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, - or ``auto``. Defaults to ``auto``. Required. Known values are: "low", "high", and "auto". - :vartype detail: str or ~azure.ai.agentserver.responses.models.models.ImageDetail - """ - - type: Literal["input_image"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_image``. Required. Default value is \"input_image\".""" - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - detail: Union[str, "_models.ImageDetail"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The detail level of the image to be sent to the model. One of ``high``, ``low``, or ``auto``. - Defaults to ``auto``. Required. Known values are: \"low\", \"high\", and \"auto\".""" - - @overload - def __init__( - self, - *, - detail: Union[str, "_models.ImageDetail"], - image_url: Optional[str] = None, - file_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_image"] = "input_image" - - -class InputImageContentParamAutoParam(_Model): - """Input image. - - :ivar type: The type of the input item. Always ``input_image``. Required. Default value is - "input_image". - :vartype type: str - :ivar image_url: - :vartype image_url: str - :ivar file_id: - :vartype file_id: str - :ivar detail: Known values are: "low", "high", and "auto". - :vartype detail: str or ~azure.ai.agentserver.responses.models.models.DetailEnum - """ - - type: Literal["input_image"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_image``. Required. Default value is \"input_image\".""" - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - detail: Optional[Union[str, "_models.DetailEnum"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Known values are: \"low\", \"high\", and \"auto\".""" - - @overload - def __init__( - self, - *, - image_url: Optional[str] = None, - file_id: Optional[str] = None, - detail: Optional[Union[str, "_models.DetailEnum"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_image"] = "input_image" - - -class InputTextContent(_Model): - """Input text. - - :ivar type: The type of the input item. Always ``input_text``. Required. Default value is - "input_text". - :vartype type: str - :ivar text: The text input to the model. Required. - :vartype text: str - """ - - type: Literal["input_text"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_text``. Required. Default value is \"input_text\".""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text input to the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_text"] = "input_text" - - -class InputTextContentParam(_Model): - """Input text. - - :ivar type: The type of the input item. Always ``input_text``. Required. Default value is - "input_text". - :vartype type: str - :ivar text: The text input to the model. Required. - :vartype text: str - """ - - type: Literal["input_text"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the input item. Always ``input_text``. Required. Default value is \"input_text\".""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text input to the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["input_text"] = "input_text" - - -class ItemCodeInterpreterToolCall(Item, discriminator="code_interpreter_call"): - """Code interpreter tool call. - - :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. - Required. CODE_INTERPRETER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CODE_INTERPRETER_CALL - :ivar id: The unique ID of the code interpreter tool call. Required. - :vartype id: str - :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, - ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the - following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], - Literal["interpreting"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar container_id: The ID of the container used to run the code. Required. - :vartype container_id: str - :ivar code: Required. - :vartype code: str - :ivar outputs: Required. - :vartype outputs: list[~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputLogs - or ~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputImage] - """ - - type: Literal[ItemType.CODE_INTERPRETER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. - CODE_INTERPRETER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the code interpreter tool call. Required.""" - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, - ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], - Literal[\"interpreting\"], Literal[\"failed\"]""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the container used to run the code. Required.""" - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"], - container_id: str, - code: str, - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.CODE_INTERPRETER_CALL # type: ignore - - -class ItemComputerToolCall(Item, discriminator="computer_call"): - """Computer tool call. - - :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL - :ivar id: The unique ID of the computer call. Required. - :vartype id: str - :ivar call_id: An identifier used when responding to the tool call with output. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.ComputerAction - :ivar pending_safety_checks: The pending safety checks for the computer call. Required. - :vartype pending_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemType.COMPUTER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the computer call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used when responding to the tool call with output. Required.""" - action: "_models.ComputerAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The pending safety checks for the computer call. Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.ComputerAction", - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"], - status: Literal["in_progress", "completed", "incomplete"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.COMPUTER_CALL # type: ignore - - -class ItemCustomToolCall(Item, discriminator="custom_tool_call"): - """Custom tool call. - - :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. - CUSTOM_TOOL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL - :ivar id: The unique ID of the custom tool call in the OpenAI platform. - :vartype id: str - :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. - :vartype call_id: str - :ivar name: The name of the custom tool being called. Required. - :vartype name: str - :ivar input: The input for the custom tool call generated by the model. Required. - :vartype input: str - """ - - type: Literal[ItemType.CUSTOM_TOOL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used to map this custom tool call to a tool call output. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the custom tool being called. Required.""" - input: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The input for the custom tool call generated by the model. Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - input: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.CUSTOM_TOOL_CALL # type: ignore - - -class ItemCustomToolCallOutput(Item, discriminator="custom_tool_call_output"): - """Custom tool call output. - - :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. - Required. CUSTOM_TOOL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL_OUTPUT - :ivar id: The unique ID of the custom tool call output in the OpenAI platform. - :vartype id: str - :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. - Required. - :vartype call_id: str - :ivar output: The output from the custom tool call generated by your code. Can be a string or - an list of output content. Required. Is either a str type or a - [FunctionAndCustomToolCallOutput] type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutput] - """ - - type: Literal[ItemType.CUSTOM_TOOL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. - CUSTOM_TOOL_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call output in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The call ID, used to map this custom tool call output to a custom tool call. Required.""" - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the custom tool call generated by your code. Can be a string or an list of - output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]], - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.CUSTOM_TOOL_CALL_OUTPUT # type: ignore - - -class ItemFieldApplyPatchToolCall(ItemField, discriminator="apply_patch_call"): - """Apply patch tool call. - - :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL - :ivar id: The unique ID of the apply patch tool call. Populated when this item is returned via - API. Required. - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. - Required. Known values are: "in_progress" and "completed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ApplyPatchCallStatus - :ivar operation: Apply patch operation. Required. - :vartype operation: ~azure.ai.agentserver.responses.models.models.ApplyPatchFileOperation - :ivar created_by: The ID of the entity that created this tool call. - :vartype created_by: str - """ - - type: Literal[ItemFieldType.APPLY_PATCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call. Populated when this item is returned via API. - Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. - Known values are: \"in_progress\" and \"completed\".""" - operation: "_models.ApplyPatchFileOperation" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Apply patch operation. Required.""" - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the entity that created this tool call.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.ApplyPatchCallStatus"], - operation: "_models.ApplyPatchFileOperation", - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.APPLY_PATCH_CALL # type: ignore - - -class ItemFieldApplyPatchToolCallOutput(ItemField, discriminator="apply_patch_call_output"): - """Apply patch tool call output. - - :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. - APPLY_PATCH_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL_OUTPUT - :ivar id: The unique ID of the apply patch tool call output. Populated when this item is - returned via API. Required. - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call output. One of ``completed`` or - ``failed``. Required. Known values are: "completed" and "failed". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.ApplyPatchCallOutputStatus - :ivar output: - :vartype output: str - :ivar created_by: The ID of the entity that created this tool call output. - :vartype created_by: str - """ - - type: Literal[ItemFieldType.APPLY_PATCH_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call output. Populated when this item is returned via - API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallOutputStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. - Known values are: \"completed\" and \"failed\".""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the entity that created this tool call output.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.ApplyPatchCallOutputStatus"], - output: Optional[str] = None, - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.APPLY_PATCH_CALL_OUTPUT # type: ignore - - -class ItemFieldCodeInterpreterToolCall(ItemField, discriminator="code_interpreter_call"): - """Code interpreter tool call. - - :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. - Required. CODE_INTERPRETER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CODE_INTERPRETER_CALL - :ivar id: The unique ID of the code interpreter tool call. Required. - :vartype id: str - :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, - ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the - following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], - Literal["interpreting"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar container_id: The ID of the container used to run the code. Required. - :vartype container_id: str - :ivar code: Required. - :vartype code: str - :ivar outputs: Required. - :vartype outputs: list[~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputLogs - or ~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputImage] - """ - - type: Literal[ItemFieldType.CODE_INTERPRETER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. - CODE_INTERPRETER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the code interpreter tool call. Required.""" - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, - ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], - Literal[\"interpreting\"], Literal[\"failed\"]""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the container used to run the code. Required.""" - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"], - container_id: str, - code: str, - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.CODE_INTERPRETER_CALL # type: ignore - - -class ItemFieldCompactionBody(ItemField, discriminator="compaction"): - """Compaction item. - - :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPACTION - :ivar id: The unique ID of the compaction item. Required. - :vartype id: str - :ivar encrypted_content: The encrypted content that was produced by compaction. Required. - :vartype encrypted_content: str - :ivar created_by: The identifier of the actor that created the item. - :vartype created_by: str - """ - - type: Literal[ItemFieldType.COMPACTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``compaction``. Required. COMPACTION.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the compaction item. Required.""" - encrypted_content: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The encrypted content that was produced by compaction. Required.""" - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The identifier of the actor that created the item.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - encrypted_content: str, - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.COMPACTION # type: ignore - - -class ItemFieldComputerToolCall(ItemField, discriminator="computer_call"): - """Computer tool call. - - :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL - :ivar id: The unique ID of the computer call. Required. - :vartype id: str - :ivar call_id: An identifier used when responding to the tool call with output. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.ComputerAction - :ivar pending_safety_checks: The pending safety checks for the computer call. Required. - :vartype pending_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemFieldType.COMPUTER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the computer call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used when responding to the tool call with output. Required.""" - action: "_models.ComputerAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The pending safety checks for the computer call. Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.ComputerAction", - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"], - status: Literal["in_progress", "completed", "incomplete"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.COMPUTER_CALL # type: ignore - - -class ItemFieldComputerToolCallOutputResource(ItemField, discriminator="computer_call_output"): - """ItemFieldComputerToolCallOutputResource. - - :ivar type: The type of the computer tool call output. Always ``computer_call_output``. - Required. COMPUTER_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL_OUTPUT - :ivar id: The ID of the computer tool call output. - :vartype id: str - :ivar call_id: The ID of the computer tool call that produced the output. Required. - :vartype call_id: str - :ivar acknowledged_safety_checks: The safety checks reported by the API that have been - acknowledged by the developer. - :vartype acknowledged_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar output: Required. - :vartype output: ~azure.ai.agentserver.responses.models.models.ComputerScreenshotImage - :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or - ``incomplete``. Populated when input items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemFieldType.COMPUTER_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer tool call output. Always ``computer_call_output``. Required. - COMPUTER_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the computer tool call output.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the computer tool call that produced the output. Required.""" - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The safety checks reported by the API that have been acknowledged by the developer.""" - output: "_models.ComputerScreenshotImage" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when input items are returned via API. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - output: "_models.ComputerScreenshotImage", - id: Optional[str] = None, # pylint: disable=redefined-builtin - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.COMPUTER_CALL_OUTPUT # type: ignore - - -class ItemFieldCustomToolCall(ItemField, discriminator="custom_tool_call"): - """Custom tool call. - - :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. - CUSTOM_TOOL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL - :ivar id: The unique ID of the custom tool call in the OpenAI platform. - :vartype id: str - :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. - :vartype call_id: str - :ivar name: The name of the custom tool being called. Required. - :vartype name: str - :ivar input: The input for the custom tool call generated by the model. Required. - :vartype input: str - """ - - type: Literal[ItemFieldType.CUSTOM_TOOL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used to map this custom tool call to a tool call output. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the custom tool being called. Required.""" - input: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The input for the custom tool call generated by the model. Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - input: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.CUSTOM_TOOL_CALL # type: ignore - - -class ItemFieldCustomToolCallOutput(ItemField, discriminator="custom_tool_call_output"): - """Custom tool call output. - - :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. - Required. CUSTOM_TOOL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL_OUTPUT - :ivar id: The unique ID of the custom tool call output in the OpenAI platform. - :vartype id: str - :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. - Required. - :vartype call_id: str - :ivar output: The output from the custom tool call generated by your code. Can be a string or - an list of output content. Required. Is either a str type or a - [FunctionAndCustomToolCallOutput] type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutput] - """ - - type: Literal[ItemFieldType.CUSTOM_TOOL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. - CUSTOM_TOOL_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call output in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The call ID, used to map this custom tool call output to a custom tool call. Required.""" - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the custom tool call generated by your code. Can be a string or an list of - output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]], - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.CUSTOM_TOOL_CALL_OUTPUT # type: ignore - - -class ItemFieldFileSearchToolCall(ItemField, discriminator="file_search_call"): - """File search tool call. - - :ivar id: The unique ID of the file search tool call. Required. - :vartype id: str - :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. - FILE_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_SEARCH_CALL - :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, - ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], - Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar queries: The queries used to search for files. Required. - :vartype queries: list[str] - :ivar results: - :vartype results: list[~azure.ai.agentserver.responses.models.models.FileSearchToolCallResults] - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the file search tool call. Required.""" - type: Literal[ItemFieldType.FILE_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` - or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], - Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" - queries: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The queries used to search for files. Required.""" - results: Optional[list["_models.FileSearchToolCallResults"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"], - queries: list[str], - results: Optional[list["_models.FileSearchToolCallResults"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.FILE_SEARCH_CALL # type: ignore - - -class ItemFieldFunctionShellCall(ItemField, discriminator="shell_call"): - """Shell tool call. - - :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL - :ivar id: The unique ID of the shell tool call. Populated when this item is returned via API. - Required. - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar action: The shell commands and limits that describe how to run the tool call. Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.FunctionShellAction - :ivar status: The status of the shell call. One of ``in_progress``, ``completed``, or - ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.LocalShellCallStatus - :ivar environment: Required. - :vartype environment: - ~azure.ai.agentserver.responses.models.models.FunctionShellCallEnvironment - :ivar created_by: The ID of the entity that created this tool call. - :vartype created_by: str - """ - - type: Literal[ItemFieldType.SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call. Populated when this item is returned via API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - action: "_models.FunctionShellAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The shell commands and limits that describe how to run the tool call. Required.""" - status: Union[str, "_models.LocalShellCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the shell call. One of ``in_progress``, ``completed``, or ``incomplete``. - Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - environment: "_models.FunctionShellCallEnvironment" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the entity that created this tool call.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.FunctionShellAction", - status: Union[str, "_models.LocalShellCallStatus"], - environment: "_models.FunctionShellCallEnvironment", - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.SHELL_CALL # type: ignore - - -class ItemFieldFunctionShellCallOutput(ItemField, discriminator="shell_call_output"): - """Shell call output. - - :ivar type: The type of the shell call output. Always ``shell_call_output``. Required. - SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL_OUTPUT - :ivar id: The unique ID of the shell call output. Populated when this item is returned via API. - Required. - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the shell call output. One of ``in_progress``, ``completed``, or - ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.LocalShellCallOutputStatusEnum - :ivar output: An array of shell call output contents. Required. - :vartype output: - list[~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputContent] - :ivar max_output_length: Required. - :vartype max_output_length: int - :ivar created_by: The identifier of the actor that created the item. - :vartype created_by: str - """ - - type: Literal[ItemFieldType.SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the shell call output. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell call output. Populated when this item is returned via API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - status: Union[str, "_models.LocalShellCallOutputStatusEnum"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the shell call output. One of ``in_progress``, ``completed``, or ``incomplete``. - Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - output: list["_models.FunctionShellCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """An array of shell call output contents. Required.""" - max_output_length: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - created_by: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The identifier of the actor that created the item.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.LocalShellCallOutputStatusEnum"], - output: list["_models.FunctionShellCallOutputContent"], - max_output_length: int, - created_by: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.SHELL_CALL_OUTPUT # type: ignore - - -class ItemFieldFunctionToolCall(ItemField, discriminator="function_call"): - """Function tool call. - - :ivar id: The unique ID of the function tool call. - :vartype id: str - :ivar type: The type of the function tool call. Always ``function_call``. Required. - FUNCTION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the function to run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the function. Required. - :vartype arguments: str - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call.""" - type: Literal[ItemFieldType.FUNCTION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the function. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.FUNCTION_CALL # type: ignore - - -class ItemFieldImageGenToolCall(ItemField, discriminator="image_generation_call"): - """Image generation call. - - :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.IMAGE_GENERATION_CALL - :ivar id: The unique ID of the image generation call. Required. - :vartype id: str - :ivar status: The status of the image generation call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] - :vartype status: str or str or str or str - :ivar result: Required. - :vartype result: str - """ - - type: Literal[ItemFieldType.IMAGE_GENERATION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the image generation call. Required.""" - status: Literal["in_progress", "completed", "generating", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the image generation call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" - result: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "generating", "failed"], - result: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.IMAGE_GENERATION_CALL # type: ignore - - -class ItemFieldLocalShellToolCall(ItemField, discriminator="local_shell_call"): - """Local shell call. - - :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. - LOCAL_SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL - :ivar id: The unique ID of the local shell call. Required. - :vartype id: str - :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.LocalShellExecAction - :ivar status: The status of the local shell call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemFieldType.LOCAL_SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - action: "_models.LocalShellExecAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the local shell call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.LocalShellExecAction", - status: Literal["in_progress", "completed", "incomplete"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.LOCAL_SHELL_CALL # type: ignore - - -class ItemFieldLocalShellToolCallOutput(ItemField, discriminator="local_shell_call_output"): - """Local shell call output. - - :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. - Required. LOCAL_SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL_OUTPUT - :ivar id: The unique ID of the local shell tool call generated by the model. Required. - :vartype id: str - :ivar output: A JSON string of the output of the local shell tool call. Required. - :vartype output: str - :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], - Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemFieldType.LOCAL_SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. - LOCAL_SHELL_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - output: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the output of the local shell tool call. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], - Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - output: str, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.LOCAL_SHELL_CALL_OUTPUT # type: ignore - - -class ItemFieldMcpApprovalRequest(ItemField, discriminator="mcp_approval_request"): - """MCP approval request. - - :ivar type: The type of the item. Always ``mcp_approval_request``. Required. - MCP_APPROVAL_REQUEST. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_REQUEST - :ivar id: The unique ID of the approval request. Required. - :vartype id: str - :ivar server_label: The label of the MCP server making the request. Required. - :vartype server_label: str - :ivar name: The name of the tool to run. Required. - :vartype name: str - :ivar arguments: A JSON string of arguments for the tool. Required. - :vartype arguments: str - """ - - type: Literal[ItemFieldType.MCP_APPROVAL_REQUEST] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the approval request. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server making the request. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of arguments for the tool. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.MCP_APPROVAL_REQUEST # type: ignore - - -class ItemFieldMcpApprovalResponseResource(ItemField, discriminator="mcp_approval_response"): - """MCP approval response. - - :ivar type: The type of the item. Always ``mcp_approval_response``. Required. - MCP_APPROVAL_RESPONSE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_RESPONSE - :ivar id: The unique ID of the approval response. Required. - :vartype id: str - :ivar approval_request_id: The ID of the approval request being answered. Required. - :vartype approval_request_id: str - :ivar approve: Whether the request was approved. Required. - :vartype approve: bool - :ivar reason: - :vartype reason: str - """ - - type: Literal[ItemFieldType.MCP_APPROVAL_RESPONSE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the approval response. Required.""" - approval_request_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the approval request being answered. Required.""" - approve: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether the request was approved. Required.""" - reason: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - approval_request_id: str, - approve: bool, - reason: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.MCP_APPROVAL_RESPONSE # type: ignore - - -class ItemFieldMcpListTools(ItemField, discriminator="mcp_list_tools"): - """MCP list tools. - - :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_LIST_TOOLS - :ivar id: The unique ID of the list. Required. - :vartype id: str - :ivar server_label: The label of the MCP server. Required. - :vartype server_label: str - :ivar tools: The tools available on the server. Required. - :vartype tools: list[~azure.ai.agentserver.responses.models.models.MCPListToolsTool] - :ivar error: - :vartype error: str - """ - - type: Literal[ItemFieldType.MCP_LIST_TOOLS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the list. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server. Required.""" - tools: list["_models.MCPListToolsTool"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The tools available on the server. Required.""" - error: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - tools: list["_models.MCPListToolsTool"], - error: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.MCP_LIST_TOOLS # type: ignore - - -class ItemFieldMcpToolCall(ItemField, discriminator="mcp_call"): - """MCP tool call. - - :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_CALL - :ivar id: The unique ID of the tool call. Required. - :vartype id: str - :ivar server_label: The label of the MCP server running the tool. Required. - :vartype server_label: str - :ivar name: The name of the tool that was run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments passed to the tool. Required. - :vartype arguments: str - :ivar output: - :vartype output: str - :ivar error: - :vartype error: dict[str, any] - :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, - ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", - "incomplete", "calling", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.MCPToolCallStatus - :ivar approval_request_id: - :vartype approval_request_id: str - """ - - type: Literal[ItemFieldType.MCP_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server running the tool. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool that was run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments passed to the tool. Required.""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - error: Optional[dict[str, Any]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, - ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", - \"calling\", and \"failed\".""" - approval_request_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - output: Optional[str] = None, - error: Optional[dict[str, Any]] = None, - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = None, - approval_request_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.MCP_CALL # type: ignore - - -class ItemFieldMessage(ItemField, discriminator="message"): - """Message. - - :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MESSAGE - :ivar id: The unique ID of the message. Required. - :vartype id: str - :ivar status: The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Required. Known values are: "in_progress", - "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.MessageStatus - :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, - ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: - "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". - :vartype role: str or ~azure.ai.agentserver.responses.models.models.MessageRole - :ivar content: The content of the message. Required. - :vartype content: list[~azure.ai.agentserver.responses.models.models.MessageContent] - """ - - type: Literal[ItemFieldType.MESSAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the message. Always set to ``message``. Required. MESSAGE.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the message. Required.""" - status: Union[str, "_models.MessageStatus"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated when - items are returned via API. Required. Known values are: \"in_progress\", \"completed\", and - \"incomplete\".""" - role: Union[str, "_models.MessageRole"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, - ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", - \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and - \"tool\".""" - content: list["_models.MessageContent"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the message. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Union[str, "_models.MessageStatus"], - role: Union[str, "_models.MessageRole"], - content: list["_models.MessageContent"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.MESSAGE # type: ignore - - -class ItemFieldReasoningItem(ItemField, discriminator="reasoning"): - """Reasoning. - - :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REASONING - :ivar id: The unique identifier of the reasoning content. Required. - :vartype id: str - :ivar encrypted_content: - :vartype encrypted_content: str - :ivar summary: Reasoning summary content. Required. - :vartype summary: list[~azure.ai.agentserver.responses.models.models.SummaryTextContent] - :ivar content: Reasoning text content. - :vartype content: list[~azure.ai.agentserver.responses.models.models.ReasoningTextContent] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemFieldType.REASONING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the object. Always ``reasoning``. Required. REASONING.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the reasoning content. Required.""" - encrypted_content: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - summary: list["_models.SummaryTextContent"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Reasoning summary content. Required.""" - content: Optional[list["_models.ReasoningTextContent"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Reasoning text content.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - summary: list["_models.SummaryTextContent"], - encrypted_content: Optional[str] = None, - content: Optional[list["_models.ReasoningTextContent"]] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.REASONING # type: ignore - - -class ItemFieldWebSearchToolCall(ItemField, discriminator="web_search_call"): - """Web search tool call. - - :ivar id: The unique ID of the web search tool call. Required. - :vartype id: str - :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. - WEB_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_CALL - :ivar status: The status of the web search tool call. Required. Is one of the following types: - Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"] - :vartype status: str or str or str or str - :ivar action: An object describing the specific action taken in this web search call. Includes - details on how the model used the web (search, open_page, find_in_page). Required. Is one of - the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind - :vartype action: ~azure.ai.agentserver.responses.models.models.WebSearchActionSearch or - ~azure.ai.agentserver.responses.models.models.WebSearchActionOpenPage or - ~azure.ai.agentserver.responses.models.models.WebSearchActionFind - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the web search tool call. Required.""" - type: Literal[ItemFieldType.WEB_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the web search tool call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"]""" - action: Union["_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind"] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """An object describing the specific action taken in this web search call. Includes details on how - the model used the web (search, open_page, find_in_page). Required. Is one of the following - types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "failed"], - action: Union[ - "_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind" - ], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemFieldType.WEB_SEARCH_CALL # type: ignore - - -class ItemFileSearchToolCall(Item, discriminator="file_search_call"): - """File search tool call. - - :ivar id: The unique ID of the file search tool call. Required. - :vartype id: str - :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. - FILE_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_SEARCH_CALL - :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, - ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], - Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar queries: The queries used to search for files. Required. - :vartype queries: list[str] - :ivar results: - :vartype results: list[~azure.ai.agentserver.responses.models.models.FileSearchToolCallResults] - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the file search tool call. Required.""" - type: Literal[ItemType.FILE_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` - or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], - Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" - queries: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The queries used to search for files. Required.""" - results: Optional[list["_models.FileSearchToolCallResults"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"], - queries: list[str], - results: Optional[list["_models.FileSearchToolCallResults"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.FILE_SEARCH_CALL # type: ignore - - -class ItemFunctionToolCall(Item, discriminator="function_call"): - """Function tool call. - - :ivar id: The unique ID of the function tool call. - :vartype id: str - :ivar type: The type of the function tool call. Always ``function_call``. Required. - FUNCTION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the function to run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the function. Required. - :vartype arguments: str - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call.""" - type: Literal[ItemType.FUNCTION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the function. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.FUNCTION_CALL # type: ignore - - -class ItemImageGenToolCall(Item, discriminator="image_generation_call"): - """Image generation call. - - :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.IMAGE_GENERATION_CALL - :ivar id: The unique ID of the image generation call. Required. - :vartype id: str - :ivar status: The status of the image generation call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] - :vartype status: str or str or str or str - :ivar result: Required. - :vartype result: str - """ - - type: Literal[ItemType.IMAGE_GENERATION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the image generation call. Required.""" - status: Literal["in_progress", "completed", "generating", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the image generation call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" - result: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "generating", "failed"], - result: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.IMAGE_GENERATION_CALL # type: ignore - - -class ItemLocalShellToolCall(Item, discriminator="local_shell_call"): - """Local shell call. - - :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. - LOCAL_SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL - :ivar id: The unique ID of the local shell call. Required. - :vartype id: str - :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.LocalShellExecAction - :ivar status: The status of the local shell call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemType.LOCAL_SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - action: "_models.LocalShellExecAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the local shell call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.LocalShellExecAction", - status: Literal["in_progress", "completed", "incomplete"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.LOCAL_SHELL_CALL # type: ignore - - -class ItemLocalShellToolCallOutput(Item, discriminator="local_shell_call_output"): - """Local shell call output. - - :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. - Required. LOCAL_SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL_OUTPUT - :ivar id: The unique ID of the local shell tool call generated by the model. Required. - :vartype id: str - :ivar output: A JSON string of the output of the local shell tool call. Required. - :vartype output: str - :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], - Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemType.LOCAL_SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. - LOCAL_SHELL_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - output: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the output of the local shell tool call. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], - Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - output: str, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.LOCAL_SHELL_CALL_OUTPUT # type: ignore - - -class ItemMcpApprovalRequest(Item, discriminator="mcp_approval_request"): - """MCP approval request. - - :ivar type: The type of the item. Always ``mcp_approval_request``. Required. - MCP_APPROVAL_REQUEST. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_REQUEST - :ivar id: The unique ID of the approval request. Required. - :vartype id: str - :ivar server_label: The label of the MCP server making the request. Required. - :vartype server_label: str - :ivar name: The name of the tool to run. Required. - :vartype name: str - :ivar arguments: A JSON string of arguments for the tool. Required. - :vartype arguments: str - """ - - type: Literal[ItemType.MCP_APPROVAL_REQUEST] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the approval request. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server making the request. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of arguments for the tool. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MCP_APPROVAL_REQUEST # type: ignore - - -class ItemMcpListTools(Item, discriminator="mcp_list_tools"): - """MCP list tools. - - :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_LIST_TOOLS - :ivar id: The unique ID of the list. Required. - :vartype id: str - :ivar server_label: The label of the MCP server. Required. - :vartype server_label: str - :ivar tools: The tools available on the server. Required. - :vartype tools: list[~azure.ai.agentserver.responses.models.models.MCPListToolsTool] - :ivar error: - :vartype error: str - """ - - type: Literal[ItemType.MCP_LIST_TOOLS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the list. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server. Required.""" - tools: list["_models.MCPListToolsTool"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The tools available on the server. Required.""" - error: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - tools: list["_models.MCPListToolsTool"], - error: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MCP_LIST_TOOLS # type: ignore - - -class ItemMcpToolCall(Item, discriminator="mcp_call"): - """MCP tool call. - - :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_CALL - :ivar id: The unique ID of the tool call. Required. - :vartype id: str - :ivar server_label: The label of the MCP server running the tool. Required. - :vartype server_label: str - :ivar name: The name of the tool that was run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments passed to the tool. Required. - :vartype arguments: str - :ivar output: - :vartype output: str - :ivar error: - :vartype error: dict[str, any] - :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, - ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", - "incomplete", "calling", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.MCPToolCallStatus - :ivar approval_request_id: - :vartype approval_request_id: str - """ - - type: Literal[ItemType.MCP_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server running the tool. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool that was run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments passed to the tool. Required.""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - error: Optional[dict[str, Any]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, - ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", - \"calling\", and \"failed\".""" - approval_request_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - output: Optional[str] = None, - error: Optional[dict[str, Any]] = None, - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = None, - approval_request_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MCP_CALL # type: ignore - - -class ItemMessage(Item, discriminator="message"): - """Message. - - :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MESSAGE - :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, - ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: - "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". - :vartype role: str or ~azure.ai.agentserver.responses.models.models.MessageRole - :ivar content: Required. Is either a str type or a [MessageContent] type. - :vartype content: str or list[~azure.ai.agentserver.responses.models.models.MessageContent] - """ - - type: Literal[ItemType.MESSAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the message. Always set to ``message``. Required. MESSAGE.""" - role: Union[str, "_models.MessageRole"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, - ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", - \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and - \"tool\".""" - content: Union[str, list["_models.MessageContent"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required. Is either a str type or a [MessageContent] type.""" - - @overload - def __init__( - self, - *, - role: Union[str, "_models.MessageRole"], - content: Union[str, list["_models.MessageContent"]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MESSAGE # type: ignore - - -class ItemOutputMessage(Item, discriminator="output_message"): - """Output message. - - :ivar id: The unique ID of the output message. Required. - :vartype id: str - :ivar type: The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OUTPUT_MESSAGE - :ivar role: The role of the output message. Always ``assistant``. Required. Default value is - "assistant". - :vartype role: str - :ivar content: The content of the output message. Required. - :vartype content: list[~azure.ai.agentserver.responses.models.models.OutputMessageContent] - :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or - ``incomplete``. Populated when input items are returned via API. Required. Is one of the - following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the output message. Required.""" - type: Literal[ItemType.OUTPUT_MESSAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE.""" - role: Literal["assistant"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The role of the output message. Always ``assistant``. Required. Default value is \"assistant\".""" - content: list["_models.OutputMessageContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The content of the output message. Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when input items are returned via API. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - content: list["_models.OutputMessageContent"], - status: Literal["in_progress", "completed", "incomplete"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.OUTPUT_MESSAGE # type: ignore - self.role: Literal["assistant"] = "assistant" - - -class ItemReasoningItem(Item, discriminator="reasoning"): - """Reasoning. - - :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REASONING - :ivar id: The unique identifier of the reasoning content. Required. - :vartype id: str - :ivar encrypted_content: - :vartype encrypted_content: str - :ivar summary: Reasoning summary content. Required. - :vartype summary: list[~azure.ai.agentserver.responses.models.models.SummaryTextContent] - :ivar content: Reasoning text content. - :vartype content: list[~azure.ai.agentserver.responses.models.models.ReasoningTextContent] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[ItemType.REASONING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the object. Always ``reasoning``. Required. REASONING.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the reasoning content. Required.""" - encrypted_content: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - summary: list["_models.SummaryTextContent"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Reasoning summary content. Required.""" - content: Optional[list["_models.ReasoningTextContent"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Reasoning text content.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - summary: list["_models.SummaryTextContent"], - encrypted_content: Optional[str] = None, - content: Optional[list["_models.ReasoningTextContent"]] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.REASONING # type: ignore - - -class ItemReferenceParam(Item, discriminator="item_reference"): - """Item reference. - - :ivar type: The type of item to reference. Always ``item_reference``. Required. ITEM_REFERENCE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ITEM_REFERENCE - :ivar id: The ID of the item to reference. Required. - :vartype id: str - """ - - type: Literal[ItemType.ITEM_REFERENCE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of item to reference. Always ``item_reference``. Required. ITEM_REFERENCE.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item to reference. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.ITEM_REFERENCE # type: ignore - - -class ItemWebSearchToolCall(Item, discriminator="web_search_call"): - """Web search tool call. - - :ivar id: The unique ID of the web search tool call. Required. - :vartype id: str - :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. - WEB_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_CALL - :ivar status: The status of the web search tool call. Required. Is one of the following types: - Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"] - :vartype status: str or str or str or str - :ivar action: An object describing the specific action taken in this web search call. Includes - details on how the model used the web (search, open_page, find_in_page). Required. Is one of - the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind - :vartype action: ~azure.ai.agentserver.responses.models.models.WebSearchActionSearch or - ~azure.ai.agentserver.responses.models.models.WebSearchActionOpenPage or - ~azure.ai.agentserver.responses.models.models.WebSearchActionFind - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the web search tool call. Required.""" - type: Literal[ItemType.WEB_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the web search tool call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"]""" - action: Union["_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind"] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """An object describing the specific action taken in this web search call. Includes details on how - the model used the web (search, open_page, find_in_page). Required. Is one of the following - types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "failed"], - action: Union[ - "_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind" - ], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.WEB_SEARCH_CALL # type: ignore - - -class KeyPressAction(ComputerAction, discriminator="keypress"): - """KeyPress. - - :ivar type: Specifies the event type. For a keypress action, this property is always set to - ``keypress``. Required. KEYPRESS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.KEYPRESS - :ivar keys_property: The combination of keys the model is requesting to be pressed. This is an - array of strings, each representing a key. Required. - :vartype keys_property: list[str] - """ - - type: Literal[ComputerActionType.KEYPRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a keypress action, this property is always set to ``keypress``. - Required. KEYPRESS.""" - keys_property: list[str] = rest_field( - name="keys", visibility=["read", "create", "update", "delete", "query"], original_tsp_name="keys" - ) - """The combination of keys the model is requesting to be pressed. This is an array of strings, - each representing a key. Required.""" - - @overload - def __init__( - self, - *, - keys_property: list[str], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.KEYPRESS # type: ignore - - -class LocalEnvironmentResource(FunctionShellCallEnvironment, discriminator="local"): - """Local Environment. - - :ivar type: The environment type. Always ``local``. Required. LOCAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL - """ - - type: Literal[FunctionShellCallEnvironmentType.LOCAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The environment type. Always ``local``. Required. LOCAL.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = FunctionShellCallEnvironmentType.LOCAL # type: ignore - - -class LocalShellExecAction(_Model): - """Local shell exec action. - - :ivar type: The type of the local shell action. Always ``exec``. Required. Default value is - "exec". - :vartype type: str - :ivar command: The command to run. Required. - :vartype command: list[str] - :ivar timeout_ms: - :vartype timeout_ms: int - :ivar working_directory: - :vartype working_directory: str - :ivar env: Environment variables to set for the command. Required. - :vartype env: dict[str, str] - :ivar user: - :vartype user: str - """ - - type: Literal["exec"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the local shell action. Always ``exec``. Required. Default value is \"exec\".""" - command: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The command to run. Required.""" - timeout_ms: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - working_directory: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - env: dict[str, str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Environment variables to set for the command. Required.""" - user: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - command: list[str], - env: dict[str, str], - timeout_ms: Optional[int] = None, - working_directory: Optional[str] = None, - user: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["exec"] = "exec" - - -class LocalShellToolParam(Tool, discriminator="local_shell"): - """Local shell tool. - - :ivar type: The type of the local shell tool. Always ``local_shell``. Required. LOCAL_SHELL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - """ - - type: Literal[ToolType.LOCAL_SHELL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell tool. Always ``local_shell``. Required. LOCAL_SHELL.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.LOCAL_SHELL # type: ignore - - -class LocalSkillParam(_Model): - """LocalSkillParam. - - :ivar name: The name of the skill. Required. - :vartype name: str - :ivar description: The description of the skill. Required. - :vartype description: str - :ivar path: The path to the directory containing the skill. Required. - :vartype path: str - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the skill. Required.""" - description: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The description of the skill. Required.""" - path: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The path to the directory containing the skill. Required.""" - - @overload - def __init__( - self, - *, - name: str, - description: str, - path: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class LogProb(_Model): - """Log probability. - - :ivar token: Required. - :vartype token: str - :ivar logprob: Required. - :vartype logprob: int - :ivar bytes: Required. - :vartype bytes: list[int] - :ivar top_logprobs: Required. - :vartype top_logprobs: list[~azure.ai.agentserver.responses.models.models.TopLogProb] - """ - - token: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - logprob: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - bytes: list[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - top_logprobs: list["_models.TopLogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - token: str, - logprob: int, - bytes: list[int], - top_logprobs: list["_models.TopLogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MCPApprovalResponse(Item, discriminator="mcp_approval_response"): - """MCP approval response. - - :ivar type: The type of the item. Always ``mcp_approval_response``. Required. - MCP_APPROVAL_RESPONSE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_RESPONSE - :ivar id: - :vartype id: str - :ivar approval_request_id: The ID of the approval request being answered. Required. - :vartype approval_request_id: str - :ivar approve: Whether the request was approved. Required. - :vartype approve: bool - :ivar reason: - :vartype reason: str - """ - - type: Literal[ItemType.MCP_APPROVAL_RESPONSE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - approval_request_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the approval request being answered. Required.""" - approve: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether the request was approved. Required.""" - reason: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - approval_request_id: str, - approve: bool, - id: Optional[str] = None, # pylint: disable=redefined-builtin - reason: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MCP_APPROVAL_RESPONSE # type: ignore - - -class MCPListToolsTool(_Model): - """MCP list tools tool. - - :ivar name: The name of the tool. Required. - :vartype name: str - :ivar description: - :vartype description: str - :ivar input_schema: The JSON schema describing the tool's input. Required. - :vartype input_schema: - ~azure.ai.agentserver.responses.models.models.MCPListToolsToolInputSchema - :ivar annotations: - :vartype annotations: ~azure.ai.agentserver.responses.models.models.MCPListToolsToolAnnotations - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - input_schema: "_models.MCPListToolsToolInputSchema" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The JSON schema describing the tool's input. Required.""" - annotations: Optional["_models.MCPListToolsToolAnnotations"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - name: str, - input_schema: "_models.MCPListToolsToolInputSchema", - description: Optional[str] = None, - annotations: Optional["_models.MCPListToolsToolAnnotations"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MCPListToolsToolAnnotations(_Model): - """MCPListToolsToolAnnotations.""" - - -class MCPListToolsToolInputSchema(_Model): - """MCPListToolsToolInputSchema.""" - - -class MCPTool(Tool, discriminator="mcp"): - """MCP tool. - - :ivar type: The type of the MCP tool. Always ``mcp``. Required. MCP. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP - :ivar server_label: A label for this MCP server, used to identify it in tool calls. Required. - :vartype server_label: str - :ivar server_url: The URL for the MCP server. One of ``server_url`` or ``connector_id`` must be - provided. - :vartype server_url: str - :ivar connector_id: Identifier for service connectors, like those available in ChatGPT. One of - ``server_url`` or ``connector_id`` must be provided. Learn more about service connectors `here - `_. Currently supported ``connector_id`` values are: - - * Dropbox: `connector_dropbox` - * Gmail: `connector_gmail` - * Google Calendar: `connector_googlecalendar` - * Google Drive: `connector_googledrive` - * Microsoft Teams: `connector_microsoftteams` - * Outlook Calendar: `connector_outlookcalendar` - * Outlook Email: `connector_outlookemail` - * SharePoint: `connector_sharepoint`. Is one of the following types: - Literal["connector_dropbox"], Literal["connector_gmail"], Literal["connector_googlecalendar"], - Literal["connector_googledrive"], Literal["connector_microsoftteams"], - Literal["connector_outlookcalendar"], Literal["connector_outlookemail"], - Literal["connector_sharepoint"] - :vartype connector_id: str or str or str or str or str or str or str or str - :ivar authorization: An OAuth access token that can be used with a remote MCP server, either - with a custom MCP server URL or a service connector. Your application must handle the OAuth - authorization flow and provide the token here. - :vartype authorization: str - :ivar server_description: Optional description of the MCP server, used to provide more context. - :vartype server_description: str - :ivar headers: - :vartype headers: dict[str, str] - :ivar allowed_tools: Is either a [str] type or a MCPToolFilter type. - :vartype allowed_tools: list[str] or - ~azure.ai.agentserver.responses.models.models.MCPToolFilter - :ivar require_approval: Is one of the following types: MCPToolRequireApproval, - Literal["always"], Literal["never"] - :vartype require_approval: ~azure.ai.agentserver.responses.models.models.MCPToolRequireApproval - or str or str - :ivar project_connection_id: The connection ID in the project for the MCP server. The - connection stores authentication and other connection details needed to connect to the MCP - server. - :vartype project_connection_id: str - """ - - type: Literal[ToolType.MCP] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the MCP tool. Always ``mcp``. Required. MCP.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A label for this MCP server, used to identify it in tool calls. Required.""" - server_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL for the MCP server. One of ``server_url`` or ``connector_id`` must be provided.""" - connector_id: Optional[ - Literal[ - "connector_dropbox", - "connector_gmail", - "connector_googlecalendar", - "connector_googledrive", - "connector_microsoftteams", - "connector_outlookcalendar", - "connector_outlookemail", - "connector_sharepoint", - ] - ] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Identifier for service connectors, like those available in ChatGPT. One of ``server_url`` or - ``connector_id`` must be provided. Learn more about service connectors `here - `_. Currently supported ``connector_id`` values are: - - * Dropbox: `connector_dropbox` - * Gmail: `connector_gmail` - * Google Calendar: `connector_googlecalendar` - * Google Drive: `connector_googledrive` - * Microsoft Teams: `connector_microsoftteams` - * Outlook Calendar: `connector_outlookcalendar` - * Outlook Email: `connector_outlookemail` - * SharePoint: `connector_sharepoint`. Is one of the following types: - Literal[\"connector_dropbox\"], Literal[\"connector_gmail\"], - Literal[\"connector_googlecalendar\"], Literal[\"connector_googledrive\"], - Literal[\"connector_microsoftteams\"], Literal[\"connector_outlookcalendar\"], - Literal[\"connector_outlookemail\"], Literal[\"connector_sharepoint\"]""" - authorization: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An OAuth access token that can be used with a remote MCP server, either with a custom MCP - server URL or a service connector. Your application must handle the OAuth authorization flow - and provide the token here.""" - server_description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional description of the MCP server, used to provide more context.""" - headers: Optional[dict[str, str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - allowed_tools: Optional[Union[list[str], "_models.MCPToolFilter"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a [str] type or a MCPToolFilter type.""" - require_approval: Optional[Union["_models.MCPToolRequireApproval", Literal["always"], Literal["never"]]] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """Is one of the following types: MCPToolRequireApproval, Literal[\"always\"], Literal[\"never\"]""" - project_connection_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The connection ID in the project for the MCP server. The connection stores authentication and - other connection details needed to connect to the MCP server.""" - - @overload - def __init__( - self, - *, - server_label: str, - server_url: Optional[str] = None, - connector_id: Optional[ - Literal[ - "connector_dropbox", - "connector_gmail", - "connector_googlecalendar", - "connector_googledrive", - "connector_microsoftteams", - "connector_outlookcalendar", - "connector_outlookemail", - "connector_sharepoint", - ] - ] = None, - authorization: Optional[str] = None, - server_description: Optional[str] = None, - headers: Optional[dict[str, str]] = None, - allowed_tools: Optional[Union[list[str], "_models.MCPToolFilter"]] = None, - require_approval: Optional[Union["_models.MCPToolRequireApproval", Literal["always"], Literal["never"]]] = None, - project_connection_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.MCP # type: ignore - - -class MCPToolFilter(_Model): - """MCP tool filter. - - :ivar tool_names: MCP allowed tools. - :vartype tool_names: list[str] - :ivar read_only: Indicates whether or not a tool modifies data or is read-only. If an MCP - server is `annotated with `readOnlyHint` - `_, - it will match this filter. - :vartype read_only: bool - """ - - tool_names: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """MCP allowed tools.""" - read_only: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Indicates whether or not a tool modifies data or is read-only. If an MCP server is `annotated - with `readOnlyHint` - `_, - it will match this filter.""" - - @overload - def __init__( - self, - *, - tool_names: Optional[list[str]] = None, - read_only: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MCPToolRequireApproval(_Model): - """MCPToolRequireApproval. - - :ivar always: - :vartype always: ~azure.ai.agentserver.responses.models.models.MCPToolFilter - :ivar never: - :vartype never: ~azure.ai.agentserver.responses.models.models.MCPToolFilter - """ - - always: Optional["_models.MCPToolFilter"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - never: Optional["_models.MCPToolFilter"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - always: Optional["_models.MCPToolFilter"] = None, - never: Optional["_models.MCPToolFilter"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MemorySearchItem(_Model): - """A retrieved memory item from memory search. - - :ivar memory_item: Retrieved memory item. Required. - :vartype memory_item: ~azure.ai.agentserver.responses.models.models.MemoryItem - """ - - memory_item: "_models.MemoryItem" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Retrieved memory item. Required.""" - - @overload - def __init__( - self, - *, - memory_item: "_models.MemoryItem", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MemorySearchOptions(_Model): - """Memory search options. - - :ivar max_memories: Maximum number of memory items to return. - :vartype max_memories: int - """ - - max_memories: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Maximum number of memory items to return.""" - - @overload - def __init__( - self, - *, - max_memories: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class MemorySearchPreviewTool(Tool, discriminator="memory_search_preview"): - """A tool for integrating memories into the agent. - - :ivar type: The type of the tool. Always ``memory_search_preview``. Required. - MEMORY_SEARCH_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MEMORY_SEARCH_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar memory_store_name: The name of the memory store to use. Required. - :vartype memory_store_name: str - :ivar scope: The namespace used to group and isolate memories, such as a user ID. Limits which - memories can be retrieved or updated. Use special variable ``{{$userId}}`` to scope memories to - the current signed-in user. Required. - :vartype scope: str - :ivar search_options: Options for searching the memory store. - :vartype search_options: ~azure.ai.agentserver.responses.models.models.MemorySearchOptions - :ivar update_delay: Time to wait before updating memories after inactivity (seconds). Default - 300. - :vartype update_delay: int - """ - - type: Literal[ToolType.MEMORY_SEARCH_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the tool. Always ``memory_search_preview``. Required. MEMORY_SEARCH_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - memory_store_name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the memory store to use. Required.""" - scope: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The namespace used to group and isolate memories, such as a user ID. Limits which memories can - be retrieved or updated. Use special variable ``{{$userId}}`` to scope memories to the current - signed-in user. Required.""" - search_options: Optional["_models.MemorySearchOptions"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Options for searching the memory store.""" - update_delay: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Time to wait before updating memories after inactivity (seconds). Default 300.""" - - @overload - def __init__( - self, - *, - memory_store_name: str, - scope: str, - name: Optional[str] = None, - description: Optional[str] = None, - search_options: Optional["_models.MemorySearchOptions"] = None, - update_delay: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.MEMORY_SEARCH_PREVIEW # type: ignore - - -class MemorySearchToolCallItemParam(Item, discriminator="memory_search_call"): - """MemorySearchToolCallItemParam. - - :ivar type: Required. MEMORY_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MEMORY_SEARCH_CALL - :ivar results: The results returned from the memory search. - :vartype results: list[~azure.ai.agentserver.responses.models.models.MemorySearchItem] - """ - - type: Literal[ItemType.MEMORY_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. MEMORY_SEARCH_CALL.""" - results: Optional[list["_models.MemorySearchItem"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The results returned from the memory search.""" - - @overload - def __init__( - self, - *, - results: Optional[list["_models.MemorySearchItem"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ItemType.MEMORY_SEARCH_CALL # type: ignore - - -class MemorySearchToolCallItemResource(OutputItem, discriminator="memory_search_call"): - """MemorySearchToolCallItemResource. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. MEMORY_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MEMORY_SEARCH_CALL - :ivar status: The status of the memory search tool call. One of ``in_progress``, ``searching``, - ``completed``, ``incomplete`` or ``failed``,. Required. Is one of the following types: - Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["incomplete"], - Literal["failed"] - :vartype status: str or str or str or str or str - :ivar results: The results returned from the memory search. - :vartype results: list[~azure.ai.agentserver.responses.models.models.MemorySearchItem] - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.MEMORY_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. MEMORY_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the memory search tool call. One of ``in_progress``, ``searching``, - ``completed``, ``incomplete`` or ``failed``,. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], - Literal[\"incomplete\"], Literal[\"failed\"]""" - results: Optional[list["_models.MemorySearchItem"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The results returned from the memory search.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - results: Optional[list["_models.MemorySearchItem"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MEMORY_SEARCH_CALL # type: ignore - - -class MessageContentInputFileContent(MessageContent, discriminator="input_file"): - """Input file. - - :ivar type: The type of the input item. Always ``input_file``. Required. INPUT_FILE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_FILE - :ivar file_id: - :vartype file_id: str - :ivar filename: The name of the file to be sent to the model. - :vartype filename: str - :ivar file_url: The URL of the file to be sent to the model. - :vartype file_url: str - :ivar file_data: The content of the file to be sent to the model. - :vartype file_data: str - """ - - type: Literal[MessageContentType.INPUT_FILE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_file``. Required. INPUT_FILE.""" - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - filename: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the file to be sent to the model.""" - file_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the file to be sent to the model.""" - file_data: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the file to be sent to the model.""" - - @overload - def __init__( - self, - *, - file_id: Optional[str] = None, - filename: Optional[str] = None, - file_url: Optional[str] = None, - file_data: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.INPUT_FILE # type: ignore - - -class MessageContentInputImageContent(MessageContent, discriminator="input_image"): - """Input image. - - :ivar type: The type of the input item. Always ``input_image``. Required. INPUT_IMAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_IMAGE - :ivar image_url: - :vartype image_url: str - :ivar file_id: - :vartype file_id: str - :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, - or ``auto``. Defaults to ``auto``. Required. Known values are: "low", "high", and "auto". - :vartype detail: str or ~azure.ai.agentserver.responses.models.models.ImageDetail - """ - - type: Literal[MessageContentType.INPUT_IMAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_image``. Required. INPUT_IMAGE.""" - image_url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - file_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - detail: Union[str, "_models.ImageDetail"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The detail level of the image to be sent to the model. One of ``high``, ``low``, or ``auto``. - Defaults to ``auto``. Required. Known values are: \"low\", \"high\", and \"auto\".""" - - @overload - def __init__( - self, - *, - detail: Union[str, "_models.ImageDetail"], - image_url: Optional[str] = None, - file_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.INPUT_IMAGE # type: ignore - - -class MessageContentInputTextContent(MessageContent, discriminator="input_text"): - """Input text. - - :ivar type: The type of the input item. Always ``input_text``. Required. INPUT_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.INPUT_TEXT - :ivar text: The text input to the model. Required. - :vartype text: str - """ - - type: Literal[MessageContentType.INPUT_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the input item. Always ``input_text``. Required. INPUT_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text input to the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.INPUT_TEXT # type: ignore - - -class MessageContentOutputTextContent(MessageContent, discriminator="output_text"): - """Output text. - - :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OUTPUT_TEXT - :ivar text: The text output from the model. Required. - :vartype text: str - :ivar annotations: The annotations of the text output. Required. - :vartype annotations: list[~azure.ai.agentserver.responses.models.models.Annotation] - :ivar logprobs: Required. - :vartype logprobs: list[~azure.ai.agentserver.responses.models.models.LogProb] - """ - - type: Literal[MessageContentType.OUTPUT_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text output from the model. Required.""" - annotations: list["_models.Annotation"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The annotations of the text output. Required.""" - logprobs: list["_models.LogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - annotations: list["_models.Annotation"], - logprobs: list["_models.LogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.OUTPUT_TEXT # type: ignore - - -class MessageContentReasoningTextContent(MessageContent, discriminator="reasoning_text"): - """Reasoning text. - - :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. - REASONING_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REASONING_TEXT - :ivar text: The reasoning text from the model. Required. - :vartype text: str - """ - - type: Literal[MessageContentType.REASONING_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the reasoning text. Always ``reasoning_text``. Required. REASONING_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The reasoning text from the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.REASONING_TEXT # type: ignore - - -class MessageContentRefusalContent(MessageContent, discriminator="refusal"): - """Refusal. - - :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REFUSAL - :ivar refusal: The refusal explanation from the model. Required. - :vartype refusal: str - """ - - type: Literal[MessageContentType.REFUSAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" - refusal: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The refusal explanation from the model. Required.""" - - @overload - def __init__( - self, - *, - refusal: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.REFUSAL # type: ignore - - -class Metadata(_Model): - """Set of 16 key-value pairs that can be attached to an object. This can be useful for storing - additional information about the object in a structured format, and querying for objects via - API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are - strings with a maximum length of 512 characters. - - """ - - -class MicrosoftFabricPreviewTool(Tool, discriminator="fabric_dataagent_preview"): - """The input definition information for a Microsoft Fabric tool as used to configure an agent. - - :ivar type: The object type, which is always 'fabric_dataagent_preview'. Required. - FABRIC_DATAAGENT_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FABRIC_DATAAGENT_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar fabric_dataagent_preview: The fabric data agent tool parameters. Required. - :vartype fabric_dataagent_preview: - ~azure.ai.agentserver.responses.models.models.FabricDataAgentToolParameters - """ - - type: Literal[ToolType.FABRIC_DATAAGENT_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'fabric_dataagent_preview'. Required. - FABRIC_DATAAGENT_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - fabric_dataagent_preview: "_models.FabricDataAgentToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The fabric data agent tool parameters. Required.""" - - @overload - def __init__( - self, - *, - fabric_dataagent_preview: "_models.FabricDataAgentToolParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.FABRIC_DATAAGENT_PREVIEW # type: ignore - - -class MoveParam(ComputerAction, discriminator="move"): - """Move. - - :ivar type: Specifies the event type. For a move action, this property is always set to - ``move``. Required. MOVE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MOVE - :ivar x: The x-coordinate to move to. Required. - :vartype x: int - :ivar y: The y-coordinate to move to. Required. - :vartype y: int - """ - - type: Literal[ComputerActionType.MOVE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a move action, this property is always set to ``move``. Required. - MOVE.""" - x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The x-coordinate to move to. Required.""" - y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The y-coordinate to move to. Required.""" - - @overload - def __init__( - self, - *, - x: int, - y: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.MOVE # type: ignore - - -class OAuthConsentRequestOutputItem(OutputItem, discriminator="oauth_consent_request"): - """Request from the service for the user to perform OAuth consent. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: Required. - :vartype id: str - :ivar type: Required. OAUTH_CONSENT_REQUEST. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OAUTH_CONSENT_REQUEST - :ivar consent_link: The link the user can use to perform OAuth consent. Required. - :vartype consent_link: str - :ivar server_label: The server label for the OAuth consent request. Required. - :vartype server_label: str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - type: Literal[OutputItemType.OAUTH_CONSENT_REQUEST] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. OAUTH_CONSENT_REQUEST.""" - consent_link: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The link the user can use to perform OAuth consent. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The server label for the OAuth consent request. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - consent_link: str, - server_label: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.OAUTH_CONSENT_REQUEST # type: ignore - - -class OpenApiAuthDetails(_Model): - """authentication details for OpenApiFunctionDefinition. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - OpenApiAnonymousAuthDetails, OpenApiManagedAuthDetails, OpenApiProjectConnectionAuthDetails - - :ivar type: The type of authentication, must be anonymous/project_connection/managed_identity. - Required. Known values are: "anonymous", "project_connection", and "managed_identity". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OpenApiAuthType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """The type of authentication, must be anonymous/project_connection/managed_identity. Required. - Known values are: \"anonymous\", \"project_connection\", and \"managed_identity\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OpenApiAnonymousAuthDetails(OpenApiAuthDetails, discriminator="anonymous"): - """Security details for OpenApi anonymous authentication. - - :ivar type: The object type, which is always 'anonymous'. Required. ANONYMOUS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ANONYMOUS - """ - - type: Literal[OpenApiAuthType.ANONYMOUS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'anonymous'. Required. ANONYMOUS.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OpenApiAuthType.ANONYMOUS # type: ignore - - -class OpenApiFunctionDefinition(_Model): - """The input definition information for an openapi function. - - :ivar name: The name of the function to be called. Required. - :vartype name: str - :ivar description: A description of what the function does, used by the model to choose when - and how to call the function. - :vartype description: str - :ivar spec: The openapi function shape, described as a JSON Schema object. Required. - :vartype spec: dict[str, any] - :ivar auth: Open API authentication details. Required. - :vartype auth: ~azure.ai.agentserver.responses.models.models.OpenApiAuthDetails - :ivar default_params: List of OpenAPI spec parameters that will use user-provided defaults. - :vartype default_params: list[str] - :ivar functions: List of function definitions used by OpenApi tool. - :vartype functions: - list[~azure.ai.agentserver.responses.models.models.OpenApiFunctionDefinitionFunction] - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to be called. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A description of what the function does, used by the model to choose when and how to call the - function.""" - spec: dict[str, Any] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The openapi function shape, described as a JSON Schema object. Required.""" - auth: "_models.OpenApiAuthDetails" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Open API authentication details. Required.""" - default_params: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """List of OpenAPI spec parameters that will use user-provided defaults.""" - functions: Optional[list["_models.OpenApiFunctionDefinitionFunction"]] = rest_field(visibility=["read"]) - """List of function definitions used by OpenApi tool.""" - - @overload - def __init__( - self, - *, - name: str, - spec: dict[str, Any], - auth: "_models.OpenApiAuthDetails", - description: Optional[str] = None, - default_params: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OpenApiFunctionDefinitionFunction(_Model): - """OpenApiFunctionDefinitionFunction. - - :ivar name: The name of the function to be called. Required. - :vartype name: str - :ivar description: A description of what the function does, used by the model to choose when - and how to call the function. - :vartype description: str - :ivar parameters: The parameters the functions accepts, described as a JSON Schema object. - Required. - :vartype parameters: dict[str, any] - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to be called. Required.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A description of what the function does, used by the model to choose when and how to call the - function.""" - parameters: dict[str, Any] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The parameters the functions accepts, described as a JSON Schema object. Required.""" - - @overload - def __init__( - self, - *, - name: str, - parameters: dict[str, Any], - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OpenApiManagedAuthDetails(OpenApiAuthDetails, discriminator="managed_identity"): - """Security details for OpenApi managed_identity authentication. - - :ivar type: The object type, which is always 'managed_identity'. Required. MANAGED_IDENTITY. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MANAGED_IDENTITY - :ivar security_scheme: Connection auth security details. Required. - :vartype security_scheme: - ~azure.ai.agentserver.responses.models.models.OpenApiManagedSecurityScheme - """ - - type: Literal[OpenApiAuthType.MANAGED_IDENTITY] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'managed_identity'. Required. MANAGED_IDENTITY.""" - security_scheme: "_models.OpenApiManagedSecurityScheme" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Connection auth security details. Required.""" - - @overload - def __init__( - self, - *, - security_scheme: "_models.OpenApiManagedSecurityScheme", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OpenApiAuthType.MANAGED_IDENTITY # type: ignore - - -class OpenApiManagedSecurityScheme(_Model): - """Security scheme for OpenApi managed_identity authentication. - - :ivar audience: Authentication scope for managed_identity auth type. Required. - :vartype audience: str - """ - - audience: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Authentication scope for managed_identity auth type. Required.""" - - @overload - def __init__( - self, - *, - audience: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OpenApiProjectConnectionAuthDetails(OpenApiAuthDetails, discriminator="project_connection"): - """Security details for OpenApi project connection authentication. - - :ivar type: The object type, which is always 'project_connection'. Required. - PROJECT_CONNECTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.PROJECT_CONNECTION - :ivar security_scheme: Project connection auth security details. Required. - :vartype security_scheme: - ~azure.ai.agentserver.responses.models.models.OpenApiProjectConnectionSecurityScheme - """ - - type: Literal[OpenApiAuthType.PROJECT_CONNECTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'project_connection'. Required. PROJECT_CONNECTION.""" - security_scheme: "_models.OpenApiProjectConnectionSecurityScheme" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Project connection auth security details. Required.""" - - @overload - def __init__( - self, - *, - security_scheme: "_models.OpenApiProjectConnectionSecurityScheme", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OpenApiAuthType.PROJECT_CONNECTION # type: ignore - - -class OpenApiProjectConnectionSecurityScheme(_Model): - """Security scheme for OpenApi managed_identity authentication. - - :ivar project_connection_id: Project connection id for Project Connection auth type. Required. - :vartype project_connection_id: str - """ - - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Project connection id for Project Connection auth type. Required.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OpenApiTool(Tool, discriminator="openapi"): - """The input definition information for an OpenAPI tool as used to configure an agent. - - :ivar type: The object type, which is always 'openapi'. Required. OPENAPI. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OPENAPI - :ivar openapi: The openapi function definition. Required. - :vartype openapi: ~azure.ai.agentserver.responses.models.models.OpenApiFunctionDefinition - """ - - type: Literal[ToolType.OPENAPI] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'openapi'. Required. OPENAPI.""" - openapi: "_models.OpenApiFunctionDefinition" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The openapi function definition. Required.""" - - @overload - def __init__( - self, - *, - openapi: "_models.OpenApiFunctionDefinition", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.OPENAPI # type: ignore - - -class OpenApiToolCall(OutputItem, discriminator="openapi_call"): - """An OpenAPI tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. OPENAPI_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OPENAPI_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the OpenAPI operation being called. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.OPENAPI_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. OPENAPI_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the OpenAPI operation being called. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.OPENAPI_CALL # type: ignore - - -class OpenApiToolCallOutput(OutputItem, discriminator="openapi_call_output"): - """The output of an OpenAPI tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. OPENAPI_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OPENAPI_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the OpenAPI operation that was called. Required. - :vartype name: str - :ivar output: The output from the OpenAPI tool call. Is one of the following types: {str: Any}, - str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.OPENAPI_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. OPENAPI_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the OpenAPI operation that was called. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the OpenAPI tool call. Is one of the following types: {str: Any}, str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.OPENAPI_CALL_OUTPUT # type: ignore - - -class OutputContent(_Model): - """OutputContent. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - OutputContentOutputTextContent, OutputContentReasoningTextContent, OutputContentRefusalContent - - :ivar type: Required. Known values are: "output_text", "refusal", and "reasoning_text". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OutputContentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"output_text\", \"refusal\", and \"reasoning_text\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OutputContentOutputTextContent(OutputContent, discriminator="output_text"): - """Output text. - - :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OUTPUT_TEXT - :ivar text: The text output from the model. Required. - :vartype text: str - :ivar annotations: The annotations of the text output. Required. - :vartype annotations: list[~azure.ai.agentserver.responses.models.models.Annotation] - :ivar logprobs: Required. - :vartype logprobs: list[~azure.ai.agentserver.responses.models.models.LogProb] - """ - - type: Literal[OutputContentType.OUTPUT_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text output from the model. Required.""" - annotations: list["_models.Annotation"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The annotations of the text output. Required.""" - logprobs: list["_models.LogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - annotations: list["_models.Annotation"], - logprobs: list["_models.LogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputContentType.OUTPUT_TEXT # type: ignore - - -class OutputContentReasoningTextContent(OutputContent, discriminator="reasoning_text"): - """Reasoning text. - - :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. - REASONING_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REASONING_TEXT - :ivar text: The reasoning text from the model. Required. - :vartype text: str - """ - - type: Literal[OutputContentType.REASONING_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the reasoning text. Always ``reasoning_text``. Required. REASONING_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The reasoning text from the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputContentType.REASONING_TEXT # type: ignore - - -class OutputContentRefusalContent(OutputContent, discriminator="refusal"): - """Refusal. - - :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REFUSAL - :ivar refusal: The refusal explanation from the model. Required. - :vartype refusal: str - """ - - type: Literal[OutputContentType.REFUSAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" - refusal: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The refusal explanation from the model. Required.""" - - @overload - def __init__( - self, - *, - refusal: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputContentType.REFUSAL # type: ignore - - -class OutputItemApplyPatchToolCall(OutputItem, discriminator="apply_patch_call"): - """Apply patch tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL - :ivar id: The unique ID of the apply patch tool call. Populated when this item is returned via - API. Required. - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. - Required. Known values are: "in_progress" and "completed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ApplyPatchCallStatus - :ivar operation: Apply patch operation. Required. - :vartype operation: ~azure.ai.agentserver.responses.models.models.ApplyPatchFileOperation - """ - - type: Literal[OutputItemType.APPLY_PATCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call. Populated when this item is returned via API. - Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. - Known values are: \"in_progress\" and \"completed\".""" - operation: "_models.ApplyPatchFileOperation" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Apply patch operation. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.ApplyPatchCallStatus"], - operation: "_models.ApplyPatchFileOperation", - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.APPLY_PATCH_CALL # type: ignore - - -class OutputItemApplyPatchToolCallOutput(OutputItem, discriminator="apply_patch_call_output"): - """Apply patch tool call output. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. - APPLY_PATCH_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH_CALL_OUTPUT - :ivar id: The unique ID of the apply patch tool call output. Populated when this item is - returned via API. Required. - :vartype id: str - :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the apply patch tool call output. One of ``completed`` or - ``failed``. Required. Known values are: "completed" and "failed". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.ApplyPatchCallOutputStatus - :ivar output: - :vartype output: str - """ - - type: Literal[OutputItemType.APPLY_PATCH_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call output. Populated when this item is returned via - API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the apply patch tool call generated by the model. Required.""" - status: Union[str, "_models.ApplyPatchCallOutputStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. - Known values are: \"completed\" and \"failed\".""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.ApplyPatchCallOutputStatus"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.APPLY_PATCH_CALL_OUTPUT # type: ignore - - -class OutputItemCodeInterpreterToolCall(OutputItem, discriminator="code_interpreter_call"): - """Code interpreter tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. - Required. CODE_INTERPRETER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CODE_INTERPRETER_CALL - :ivar id: The unique ID of the code interpreter tool call. Required. - :vartype id: str - :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, - ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the - following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], - Literal["interpreting"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar container_id: The ID of the container used to run the code. Required. - :vartype container_id: str - :ivar code: Required. - :vartype code: str - :ivar outputs: Required. - :vartype outputs: list[~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputLogs - or ~azure.ai.agentserver.responses.models.models.CodeInterpreterOutputImage] - """ - - type: Literal[OutputItemType.CODE_INTERPRETER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. - CODE_INTERPRETER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the code interpreter tool call. Required.""" - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, - ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], - Literal[\"interpreting\"], Literal[\"failed\"]""" - container_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the container used to run the code. Required.""" - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"], - container_id: str, - code: str, - outputs: list[Union["_models.CodeInterpreterOutputLogs", "_models.CodeInterpreterOutputImage"]], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.CODE_INTERPRETER_CALL # type: ignore - - -class OutputItemCompactionBody(OutputItem, discriminator="compaction"): - """Compaction item. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPACTION - :ivar id: The unique ID of the compaction item. Required. - :vartype id: str - :ivar encrypted_content: The encrypted content that was produced by compaction. Required. - :vartype encrypted_content: str - """ - - type: Literal[OutputItemType.COMPACTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``compaction``. Required. COMPACTION.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the compaction item. Required.""" - encrypted_content: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The encrypted content that was produced by compaction. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - encrypted_content: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.COMPACTION # type: ignore - - -class OutputItemComputerToolCall(OutputItem, discriminator="computer_call"): - """Computer tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL - :ivar id: The unique ID of the computer call. Required. - :vartype id: str - :ivar call_id: An identifier used when responding to the tool call with output. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.ComputerAction - :ivar pending_safety_checks: The pending safety checks for the computer call. Required. - :vartype pending_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[OutputItemType.COMPUTER_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the computer call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used when responding to the tool call with output. Required.""" - action: "_models.ComputerAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The pending safety checks for the computer call. Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.ComputerAction", - pending_safety_checks: list["_models.ComputerCallSafetyCheckParam"], - status: Literal["in_progress", "completed", "incomplete"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.COMPUTER_CALL # type: ignore - - -class OutputItemComputerToolCallOutputResource(OutputItem, discriminator="computer_call_output"): - """OutputItemComputerToolCallOutputResource. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the computer tool call output. Always ``computer_call_output``. - Required. COMPUTER_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_CALL_OUTPUT - :ivar id: The ID of the computer tool call output. - :vartype id: str - :ivar call_id: The ID of the computer tool call that produced the output. Required. - :vartype call_id: str - :ivar acknowledged_safety_checks: The safety checks reported by the API that have been - acknowledged by the developer. - :vartype acknowledged_safety_checks: - list[~azure.ai.agentserver.responses.models.models.ComputerCallSafetyCheckParam] - :ivar output: Required. - :vartype output: ~azure.ai.agentserver.responses.models.models.ComputerScreenshotImage - :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or - ``incomplete``. Populated when input items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[OutputItemType.COMPUTER_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the computer tool call output. Always ``computer_call_output``. Required. - COMPUTER_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the computer tool call output.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the computer tool call that produced the output. Required.""" - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The safety checks reported by the API that have been acknowledged by the developer.""" - output: "_models.ComputerScreenshotImage" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when input items are returned via API. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - output: "_models.ComputerScreenshotImage", - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - id: Optional[str] = None, # pylint: disable=redefined-builtin - acknowledged_safety_checks: Optional[list["_models.ComputerCallSafetyCheckParam"]] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.COMPUTER_CALL_OUTPUT # type: ignore - - -class OutputItemCustomToolCall(OutputItem, discriminator="custom_tool_call"): - """Custom tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. - CUSTOM_TOOL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL - :ivar id: The unique ID of the custom tool call in the OpenAI platform. - :vartype id: str - :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. - :vartype call_id: str - :ivar name: The name of the custom tool being called. Required. - :vartype name: str - :ivar input: The input for the custom tool call generated by the model. Required. - :vartype input: str - """ - - type: Literal[OutputItemType.CUSTOM_TOOL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An identifier used to map this custom tool call to a tool call output. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the custom tool being called. Required.""" - input: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The input for the custom tool call generated by the model. Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - input: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.CUSTOM_TOOL_CALL # type: ignore - - -class OutputItemCustomToolCallOutput(OutputItem, discriminator="custom_tool_call_output"): - """Custom tool call output. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. - Required. CUSTOM_TOOL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM_TOOL_CALL_OUTPUT - :ivar id: The unique ID of the custom tool call output in the OpenAI platform. - :vartype id: str - :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. - Required. - :vartype call_id: str - :ivar output: The output from the custom tool call generated by your code. Can be a string or - an list of output content. Required. Is either a str type or a - [FunctionAndCustomToolCallOutput] type. - :vartype output: str or - list[~azure.ai.agentserver.responses.models.models.FunctionAndCustomToolCallOutput] - """ - - type: Literal[OutputItemType.CUSTOM_TOOL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. - CUSTOM_TOOL_CALL_OUTPUT.""" - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the custom tool call output in the OpenAI platform.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The call ID, used to map this custom tool call output to a custom tool call. Required.""" - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the custom tool call generated by your code. Can be a string or an list of - output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" - - @overload - def __init__( - self, - *, - call_id: str, - output: Union[str, list["_models.FunctionAndCustomToolCallOutput"]], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - id: Optional[str] = None, # pylint: disable=redefined-builtin - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.CUSTOM_TOOL_CALL_OUTPUT # type: ignore - - -class OutputItemFileSearchToolCall(OutputItem, discriminator="file_search_call"): - """File search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: The unique ID of the file search tool call. Required. - :vartype id: str - :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. - FILE_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_SEARCH_CALL - :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, - ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], - Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] - :vartype status: str or str or str or str or str - :ivar queries: The queries used to search for files. Required. - :vartype queries: list[str] - :ivar results: - :vartype results: list[~azure.ai.agentserver.responses.models.models.FileSearchToolCallResults] - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the file search tool call. Required.""" - type: Literal[OutputItemType.FILE_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` - or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], - Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" - queries: list[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The queries used to search for files. Required.""" - results: Optional[list["_models.FileSearchToolCallResults"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "incomplete", "failed"], - queries: list[str], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - results: Optional[list["_models.FileSearchToolCallResults"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.FILE_SEARCH_CALL # type: ignore - - -class OutputItemFunctionShellCall(OutputItem, discriminator="shell_call"): - """Shell tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL - :ivar id: The unique ID of the shell tool call. Populated when this item is returned via API. - Required. - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar action: The shell commands and limits that describe how to run the tool call. Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.FunctionShellAction - :ivar status: The status of the shell call. One of ``in_progress``, ``completed``, or - ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.LocalShellCallStatus - :ivar environment: Required. - :vartype environment: - ~azure.ai.agentserver.responses.models.models.FunctionShellCallEnvironment - """ - - type: Literal[OutputItemType.SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call. Populated when this item is returned via API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - action: "_models.FunctionShellAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The shell commands and limits that describe how to run the tool call. Required.""" - status: Union[str, "_models.LocalShellCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the shell call. One of ``in_progress``, ``completed``, or ``incomplete``. - Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - environment: "_models.FunctionShellCallEnvironment" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.FunctionShellAction", - status: Union[str, "_models.LocalShellCallStatus"], - environment: "_models.FunctionShellCallEnvironment", - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.SHELL_CALL # type: ignore - - -class OutputItemFunctionShellCallOutput(OutputItem, discriminator="shell_call_output"): - """Shell call output. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the shell call output. Always ``shell_call_output``. Required. - SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL_CALL_OUTPUT - :ivar id: The unique ID of the shell call output. Populated when this item is returned via API. - Required. - :vartype id: str - :ivar call_id: The unique ID of the shell tool call generated by the model. Required. - :vartype call_id: str - :ivar status: The status of the shell call output. One of ``in_progress``, ``completed``, or - ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". - :vartype status: str or - ~azure.ai.agentserver.responses.models.models.LocalShellCallOutputStatusEnum - :ivar output: An array of shell call output contents. Required. - :vartype output: - list[~azure.ai.agentserver.responses.models.models.FunctionShellCallOutputContent] - :ivar max_output_length: Required. - :vartype max_output_length: int - """ - - type: Literal[OutputItemType.SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the shell call output. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell call output. Populated when this item is returned via API. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the shell tool call generated by the model. Required.""" - status: Union[str, "_models.LocalShellCallOutputStatusEnum"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the shell call output. One of ``in_progress``, ``completed``, or ``incomplete``. - Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" - output: list["_models.FunctionShellCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """An array of shell call output contents. Required.""" - max_output_length: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - status: Union[str, "_models.LocalShellCallOutputStatusEnum"], - output: list["_models.FunctionShellCallOutputContent"], - max_output_length: int, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.SHELL_CALL_OUTPUT # type: ignore - - -class OutputItemFunctionToolCall(OutputItem, discriminator="function_call"): - """Function tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: The unique ID of the function tool call. - :vartype id: str - :ivar type: The type of the function tool call. Always ``function_call``. Required. - FUNCTION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION_CALL - :ivar call_id: The unique ID of the function tool call generated by the model. Required. - :vartype call_id: str - :ivar name: The name of the function to run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments to pass to the function. Required. - :vartype arguments: str - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call.""" - type: Literal[OutputItemType.FUNCTION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the function tool call generated by the model. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the function. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - call_id: str, - name: str, - arguments: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - id: Optional[str] = None, # pylint: disable=redefined-builtin - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.FUNCTION_CALL # type: ignore - - -class OutputItemImageGenToolCall(OutputItem, discriminator="image_generation_call"): - """Image generation call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.IMAGE_GENERATION_CALL - :ivar id: The unique ID of the image generation call. Required. - :vartype id: str - :ivar status: The status of the image generation call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] - :vartype status: str or str or str or str - :ivar result: Required. - :vartype result: str - """ - - type: Literal[OutputItemType.IMAGE_GENERATION_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the image generation call. Always ``image_generation_call``. Required. - IMAGE_GENERATION_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the image generation call. Required.""" - status: Literal["in_progress", "completed", "generating", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the image generation call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" - result: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "completed", "generating", "failed"], - result: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.IMAGE_GENERATION_CALL # type: ignore - - -class OutputItemLocalShellToolCall(OutputItem, discriminator="local_shell_call"): - """Local shell call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. - LOCAL_SHELL_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL - :ivar id: The unique ID of the local shell call. Required. - :vartype id: str - :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. - :vartype call_id: str - :ivar action: Required. - :vartype action: ~azure.ai.agentserver.responses.models.models.LocalShellExecAction - :ivar status: The status of the local shell call. Required. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[OutputItemType.LOCAL_SHELL_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell call. Required.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - action: "_models.LocalShellExecAction" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the local shell call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - call_id: str, - action: "_models.LocalShellExecAction", - status: Literal["in_progress", "completed", "incomplete"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.LOCAL_SHELL_CALL # type: ignore - - -class OutputItemLocalShellToolCallOutput(OutputItem, discriminator="local_shell_call_output"): - """Local shell call output. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. - Required. LOCAL_SHELL_CALL_OUTPUT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.LOCAL_SHELL_CALL_OUTPUT - :ivar id: The unique ID of the local shell tool call generated by the model. Required. - :vartype id: str - :ivar output: A JSON string of the output of the local shell tool call. Required. - :vartype output: str - :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], - Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[OutputItemType.LOCAL_SHELL_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. - LOCAL_SHELL_CALL_OUTPUT.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the local shell tool call generated by the model. Required.""" - output: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the output of the local shell tool call. Required.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], - Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - output: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.LOCAL_SHELL_CALL_OUTPUT # type: ignore - - -class OutputItemMcpApprovalRequest(OutputItem, discriminator="mcp_approval_request"): - """MCP approval request. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``mcp_approval_request``. Required. - MCP_APPROVAL_REQUEST. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_REQUEST - :ivar id: The unique ID of the approval request. Required. - :vartype id: str - :ivar server_label: The label of the MCP server making the request. Required. - :vartype server_label: str - :ivar name: The name of the tool to run. Required. - :vartype name: str - :ivar arguments: A JSON string of arguments for the tool. Required. - :vartype arguments: str - """ - - type: Literal[OutputItemType.MCP_APPROVAL_REQUEST] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the approval request. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server making the request. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool to run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of arguments for the tool. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MCP_APPROVAL_REQUEST # type: ignore - - -class OutputItemMcpApprovalResponseResource(OutputItem, discriminator="mcp_approval_response"): - """MCP approval response. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``mcp_approval_response``. Required. - MCP_APPROVAL_RESPONSE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_APPROVAL_RESPONSE - :ivar id: The unique ID of the approval response. Required. - :vartype id: str - :ivar approval_request_id: The ID of the approval request being answered. Required. - :vartype approval_request_id: str - :ivar approve: Whether the request was approved. Required. - :vartype approve: bool - :ivar reason: - :vartype reason: str - """ - - type: Literal[OutputItemType.MCP_APPROVAL_RESPONSE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the approval response. Required.""" - approval_request_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the approval request being answered. Required.""" - approve: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether the request was approved. Required.""" - reason: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - approval_request_id: str, - approve: bool, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - reason: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MCP_APPROVAL_RESPONSE # type: ignore - - -class OutputItemMcpListTools(OutputItem, discriminator="mcp_list_tools"): - """MCP list tools. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_LIST_TOOLS - :ivar id: The unique ID of the list. Required. - :vartype id: str - :ivar server_label: The label of the MCP server. Required. - :vartype server_label: str - :ivar tools: The tools available on the server. Required. - :vartype tools: list[~azure.ai.agentserver.responses.models.models.MCPListToolsTool] - :ivar error: - :vartype error: str - """ - - type: Literal[OutputItemType.MCP_LIST_TOOLS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the list. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server. Required.""" - tools: list["_models.MCPListToolsTool"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The tools available on the server. Required.""" - error: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - tools: list["_models.MCPListToolsTool"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - error: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MCP_LIST_TOOLS # type: ignore - - -class OutputItemMcpToolCall(OutputItem, discriminator="mcp_call"): - """MCP tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP_CALL - :ivar id: The unique ID of the tool call. Required. - :vartype id: str - :ivar server_label: The label of the MCP server running the tool. Required. - :vartype server_label: str - :ivar name: The name of the tool that was run. Required. - :vartype name: str - :ivar arguments: A JSON string of the arguments passed to the tool. Required. - :vartype arguments: str - :ivar output: - :vartype output: str - :ivar error: - :vartype error: dict[str, any] - :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, - ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", - "incomplete", "calling", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.MCPToolCallStatus - :ivar approval_request_id: - :vartype approval_request_id: str - """ - - type: Literal[OutputItemType.MCP_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call. Required.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server running the tool. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the tool that was run. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments passed to the tool. Required.""" - output: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - error: Optional[dict[str, Any]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, - ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", - \"calling\", and \"failed\".""" - approval_request_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - server_label: str, - name: str, - arguments: str, - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional[str] = None, - error: Optional[dict[str, Any]] = None, - status: Optional[Union[str, "_models.MCPToolCallStatus"]] = None, - approval_request_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MCP_CALL # type: ignore - - -class OutputItemMessage(OutputItem, discriminator="message"): - """Message. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MESSAGE - :ivar id: The unique ID of the message. Required. - :vartype id: str - :ivar status: The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Required. Known values are: "in_progress", - "completed", and "incomplete". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.MessageStatus - :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, - ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: - "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". - :vartype role: str or ~azure.ai.agentserver.responses.models.models.MessageRole - :ivar content: The content of the message. Required. - :vartype content: list[~azure.ai.agentserver.responses.models.models.MessageContent] - """ - - type: Literal[OutputItemType.MESSAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the message. Always set to ``message``. Required. MESSAGE.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the message. Required.""" - status: Union[str, "_models.MessageStatus"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated when - items are returned via API. Required. Known values are: \"in_progress\", \"completed\", and - \"incomplete\".""" - role: Union[str, "_models.MessageRole"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, - ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", - \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and - \"tool\".""" - content: list["_models.MessageContent"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content of the message. Required.""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Union[str, "_models.MessageStatus"], - role: Union[str, "_models.MessageRole"], - content: list["_models.MessageContent"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.MESSAGE # type: ignore - - -class OutputItemOutputMessage(OutputItem, discriminator="output_message"): - """Output message. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: The unique ID of the output message. Required. - :vartype id: str - :ivar type: The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OUTPUT_MESSAGE - :ivar role: The role of the output message. Always ``assistant``. Required. Default value is - "assistant". - :vartype role: str - :ivar content: The content of the output message. Required. - :vartype content: list[~azure.ai.agentserver.responses.models.models.OutputMessageContent] - :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or - ``incomplete``. Populated when input items are returned via API. Required. Is one of the - following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the output message. Required.""" - type: Literal[OutputItemType.OUTPUT_MESSAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE.""" - role: Literal["assistant"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The role of the output message. Always ``assistant``. Required. Default value is \"assistant\".""" - content: list["_models.OutputMessageContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The content of the output message. Required.""" - status: Literal["in_progress", "completed", "incomplete"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when input items are returned via API. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - content: list["_models.OutputMessageContent"], - status: Literal["in_progress", "completed", "incomplete"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.OUTPUT_MESSAGE # type: ignore - self.role: Literal["assistant"] = "assistant" - - -class OutputItemReasoningItem(OutputItem, discriminator="reasoning"): - """Reasoning. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REASONING - :ivar id: The unique identifier of the reasoning content. Required. - :vartype id: str - :ivar encrypted_content: - :vartype encrypted_content: str - :ivar summary: Reasoning summary content. Required. - :vartype summary: list[~azure.ai.agentserver.responses.models.models.SummaryTextContent] - :ivar content: Reasoning text content. - :vartype content: list[~azure.ai.agentserver.responses.models.models.ReasoningTextContent] - :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. - Populated when items are returned via API. Is one of the following types: - Literal["in_progress"], Literal["completed"], Literal["incomplete"] - :vartype status: str or str or str - """ - - type: Literal[OutputItemType.REASONING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the object. Always ``reasoning``. Required. REASONING.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the reasoning content. Required.""" - encrypted_content: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - summary: list["_models.SummaryTextContent"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Reasoning summary content. Required.""" - content: Optional[list["_models.ReasoningTextContent"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Reasoning text content.""" - status: Optional[Literal["in_progress", "completed", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated - when items are returned via API. Is one of the following types: Literal[\"in_progress\"], - Literal[\"completed\"], Literal[\"incomplete\"]""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - summary: list["_models.SummaryTextContent"], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - encrypted_content: Optional[str] = None, - content: Optional[list["_models.ReasoningTextContent"]] = None, - status: Optional[Literal["in_progress", "completed", "incomplete"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.REASONING # type: ignore - - -class OutputItemWebSearchToolCall(OutputItem, discriminator="web_search_call"): - """Web search tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar id: The unique ID of the web search tool call. Required. - :vartype id: str - :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. - WEB_SEARCH_CALL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_CALL - :ivar status: The status of the web search tool call. Required. Is one of the following types: - Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"] - :vartype status: str or str or str or str - :ivar action: An object describing the specific action taken in this web search call. Includes - details on how the model used the web (search, open_page, find_in_page). Required. Is one of - the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind - :vartype action: ~azure.ai.agentserver.responses.models.models.WebSearchActionSearch or - ~azure.ai.agentserver.responses.models.models.WebSearchActionOpenPage or - ~azure.ai.agentserver.responses.models.models.WebSearchActionFind - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the web search tool call. Required.""" - type: Literal[OutputItemType.WEB_SEARCH_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" - status: Literal["in_progress", "searching", "completed", "failed"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the web search tool call. Required. Is one of the following types: - Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"]""" - action: Union["_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind"] = ( - rest_field(visibility=["read", "create", "update", "delete", "query"]) - ) - """An object describing the specific action taken in this web search call. Includes details on how - the model used the web (search, open_page, find_in_page). Required. Is one of the following - types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - status: Literal["in_progress", "searching", "completed", "failed"], - action: Union[ - "_models.WebSearchActionSearch", "_models.WebSearchActionOpenPage", "_models.WebSearchActionFind" - ], - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.WEB_SEARCH_CALL # type: ignore - - -class OutputMessageContent(_Model): - """OutputMessageContent. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - OutputMessageContentOutputTextContent, OutputMessageContentRefusalContent - - :ivar type: Required. Known values are: "output_text" and "refusal". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OutputMessageContentType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"output_text\" and \"refusal\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class OutputMessageContentOutputTextContent(OutputMessageContent, discriminator="output_text"): - """Output text. - - :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.OUTPUT_TEXT - :ivar text: The text output from the model. Required. - :vartype text: str - :ivar annotations: The annotations of the text output. Required. - :vartype annotations: list[~azure.ai.agentserver.responses.models.models.Annotation] - :ivar logprobs: Required. - :vartype logprobs: list[~azure.ai.agentserver.responses.models.models.LogProb] - """ - - type: Literal[OutputMessageContentType.OUTPUT_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text output from the model. Required.""" - annotations: list["_models.Annotation"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The annotations of the text output. Required.""" - logprobs: list["_models.LogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - annotations: list["_models.Annotation"], - logprobs: list["_models.LogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputMessageContentType.OUTPUT_TEXT # type: ignore - - -class OutputMessageContentRefusalContent(OutputMessageContent, discriminator="refusal"): - """Refusal. - - :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.REFUSAL - :ivar refusal: The refusal explanation from the model. Required. - :vartype refusal: str - """ - - type: Literal[OutputMessageContentType.REFUSAL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" - refusal: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The refusal explanation from the model. Required.""" - - @overload - def __init__( - self, - *, - refusal: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputMessageContentType.REFUSAL # type: ignore - - -class Prompt(_Model): - """Reference to a prompt template and its variables. `Learn more - `_. - - :ivar id: The unique identifier of the prompt template to use. Required. - :vartype id: str - :ivar version: - :vartype version: str - :ivar variables: - :vartype variables: ~azure.ai.agentserver.responses.models.models.ResponsePromptVariables - """ - - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the prompt template to use. Required.""" - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - variables: Optional["_models.ResponsePromptVariables"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - - @overload - def __init__( - self, - *, - id: str, # pylint: disable=redefined-builtin - version: Optional[str] = None, - variables: Optional["_models.ResponsePromptVariables"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class RankingOptions(_Model): - """RankingOptions. - - :ivar ranker: The ranker to use for the file search. Known values are: "auto" and - "default-2024-11-15". - :vartype ranker: str or ~azure.ai.agentserver.responses.models.models.RankerVersionType - :ivar score_threshold: The score threshold for the file search, a number between 0 and 1. - Numbers closer to 1 will attempt to return only the most relevant results, but may return fewer - results. - :vartype score_threshold: int - :ivar hybrid_search: Weights that control how reciprocal rank fusion balances semantic - embedding matches versus sparse keyword matches when hybrid search is enabled. - :vartype hybrid_search: ~azure.ai.agentserver.responses.models.models.HybridSearchOptions - """ - - ranker: Optional[Union[str, "_models.RankerVersionType"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The ranker to use for the file search. Known values are: \"auto\" and \"default-2024-11-15\".""" - score_threshold: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The score threshold for the file search, a number between 0 and 1. Numbers closer to 1 will - attempt to return only the most relevant results, but may return fewer results.""" - hybrid_search: Optional["_models.HybridSearchOptions"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Weights that control how reciprocal rank fusion balances semantic embedding matches versus - sparse keyword matches when hybrid search is enabled.""" - - @overload - def __init__( - self, - *, - ranker: Optional[Union[str, "_models.RankerVersionType"]] = None, - score_threshold: Optional[int] = None, - hybrid_search: Optional["_models.HybridSearchOptions"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class Reasoning(_Model): - """Reasoning. - - :ivar effort: Is one of the following types: Literal["none"], Literal["minimal"], - Literal["low"], Literal["medium"], Literal["high"], Literal["xhigh"] - :vartype effort: str or str or str or str or str or str - :ivar summary: Is one of the following types: Literal["auto"], Literal["concise"], - Literal["detailed"] - :vartype summary: str or str or str - :ivar generate_summary: Is one of the following types: Literal["auto"], Literal["concise"], - Literal["detailed"] - :vartype generate_summary: str or str or str - """ - - effort: Optional[Literal["none", "minimal", "low", "medium", "high", "xhigh"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"none\"], Literal[\"minimal\"], Literal[\"low\"], - Literal[\"medium\"], Literal[\"high\"], Literal[\"xhigh\"]""" - summary: Optional[Literal["auto", "concise", "detailed"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"auto\"], Literal[\"concise\"], Literal[\"detailed\"]""" - generate_summary: Optional[Literal["auto", "concise", "detailed"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"auto\"], Literal[\"concise\"], Literal[\"detailed\"]""" - - @overload - def __init__( - self, - *, - effort: Optional[Literal["none", "minimal", "low", "medium", "high", "xhigh"]] = None, - summary: Optional[Literal["auto", "concise", "detailed"]] = None, - generate_summary: Optional[Literal["auto", "concise", "detailed"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ReasoningTextContent(_Model): - """Reasoning text. - - :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. Default value - is "reasoning_text". - :vartype type: str - :ivar text: The reasoning text from the model. Required. - :vartype text: str - """ - - type: Literal["reasoning_text"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of the reasoning text. Always ``reasoning_text``. Required. Default value is - \"reasoning_text\".""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The reasoning text from the model. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["reasoning_text"] = "reasoning_text" - - -class ResponseStreamEvent(_Model): - """ResponseStreamEvent. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ResponseErrorEvent, ResponseAudioDeltaEvent, ResponseAudioDoneEvent, - ResponseAudioTranscriptDeltaEvent, ResponseAudioTranscriptDoneEvent, - ResponseCodeInterpreterCallCompletedEvent, ResponseCodeInterpreterCallInProgressEvent, - ResponseCodeInterpreterCallInterpretingEvent, ResponseCodeInterpreterCallCodeDeltaEvent, - ResponseCodeInterpreterCallCodeDoneEvent, ResponseCompletedEvent, - ResponseContentPartAddedEvent, ResponseContentPartDoneEvent, ResponseCreatedEvent, - ResponseCustomToolCallInputDeltaEvent, ResponseCustomToolCallInputDoneEvent, - ResponseFailedEvent, ResponseFileSearchCallCompletedEvent, - ResponseFileSearchCallInProgressEvent, ResponseFileSearchCallSearchingEvent, - ResponseFunctionCallArgumentsDeltaEvent, ResponseFunctionCallArgumentsDoneEvent, - ResponseImageGenCallCompletedEvent, ResponseImageGenCallGeneratingEvent, - ResponseImageGenCallInProgressEvent, ResponseImageGenCallPartialImageEvent, - ResponseInProgressEvent, ResponseIncompleteEvent, ResponseMCPCallCompletedEvent, - ResponseMCPCallFailedEvent, ResponseMCPCallInProgressEvent, ResponseMCPCallArgumentsDeltaEvent, - ResponseMCPCallArgumentsDoneEvent, ResponseMCPListToolsCompletedEvent, - ResponseMCPListToolsFailedEvent, ResponseMCPListToolsInProgressEvent, - ResponseOutputItemAddedEvent, ResponseOutputItemDoneEvent, - ResponseOutputTextAnnotationAddedEvent, ResponseTextDeltaEvent, ResponseTextDoneEvent, - ResponseQueuedEvent, ResponseReasoningSummaryPartAddedEvent, - ResponseReasoningSummaryPartDoneEvent, ResponseReasoningSummaryTextDeltaEvent, - ResponseReasoningSummaryTextDoneEvent, ResponseReasoningTextDeltaEvent, - ResponseReasoningTextDoneEvent, ResponseRefusalDeltaEvent, ResponseRefusalDoneEvent, - ResponseWebSearchCallCompletedEvent, ResponseWebSearchCallInProgressEvent, - ResponseWebSearchCallSearchingEvent - - :ivar type: Required. Known values are: "response.audio.delta", "response.audio.done", - "response.audio.transcript.delta", "response.audio.transcript.done", - "response.code_interpreter_call_code.delta", "response.code_interpreter_call_code.done", - "response.code_interpreter_call.completed", "response.code_interpreter_call.in_progress", - "response.code_interpreter_call.interpreting", "response.completed", - "response.content_part.added", "response.content_part.done", "response.created", "error", - "response.file_search_call.completed", "response.file_search_call.in_progress", - "response.file_search_call.searching", "response.function_call_arguments.delta", - "response.function_call_arguments.done", "response.in_progress", "response.failed", - "response.incomplete", "response.output_item.added", "response.output_item.done", - "response.reasoning_summary_part.added", "response.reasoning_summary_part.done", - "response.reasoning_summary_text.delta", "response.reasoning_summary_text.done", - "response.reasoning_text.delta", "response.reasoning_text.done", "response.refusal.delta", - "response.refusal.done", "response.output_text.delta", "response.output_text.done", - "response.web_search_call.completed", "response.web_search_call.in_progress", - "response.web_search_call.searching", "response.image_generation_call.completed", - "response.image_generation_call.generating", "response.image_generation_call.in_progress", - "response.image_generation_call.partial_image", "response.mcp_call_arguments.delta", - "response.mcp_call_arguments.done", "response.mcp_call.completed", "response.mcp_call.failed", - "response.mcp_call.in_progress", "response.mcp_list_tools.completed", - "response.mcp_list_tools.failed", "response.mcp_list_tools.in_progress", - "response.output_text.annotation.added", "response.queued", - "response.custom_tool_call_input.delta", and "response.custom_tool_call_input.done". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ResponseStreamEventType - :ivar sequence_number: Required. - :vartype sequence_number: int - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"response.audio.delta\", \"response.audio.done\", - \"response.audio.transcript.delta\", \"response.audio.transcript.done\", - \"response.code_interpreter_call_code.delta\", \"response.code_interpreter_call_code.done\", - \"response.code_interpreter_call.completed\", \"response.code_interpreter_call.in_progress\", - \"response.code_interpreter_call.interpreting\", \"response.completed\", - \"response.content_part.added\", \"response.content_part.done\", \"response.created\", - \"error\", \"response.file_search_call.completed\", \"response.file_search_call.in_progress\", - \"response.file_search_call.searching\", \"response.function_call_arguments.delta\", - \"response.function_call_arguments.done\", \"response.in_progress\", \"response.failed\", - \"response.incomplete\", \"response.output_item.added\", \"response.output_item.done\", - \"response.reasoning_summary_part.added\", \"response.reasoning_summary_part.done\", - \"response.reasoning_summary_text.delta\", \"response.reasoning_summary_text.done\", - \"response.reasoning_text.delta\", \"response.reasoning_text.done\", - \"response.refusal.delta\", \"response.refusal.done\", \"response.output_text.delta\", - \"response.output_text.done\", \"response.web_search_call.completed\", - \"response.web_search_call.in_progress\", \"response.web_search_call.searching\", - \"response.image_generation_call.completed\", \"response.image_generation_call.generating\", - \"response.image_generation_call.in_progress\", - \"response.image_generation_call.partial_image\", \"response.mcp_call_arguments.delta\", - \"response.mcp_call_arguments.done\", \"response.mcp_call.completed\", - \"response.mcp_call.failed\", \"response.mcp_call.in_progress\", - \"response.mcp_list_tools.completed\", \"response.mcp_list_tools.failed\", - \"response.mcp_list_tools.in_progress\", \"response.output_text.annotation.added\", - \"response.queued\", \"response.custom_tool_call_input.delta\", and - \"response.custom_tool_call_input.done\".""" - sequence_number: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - type: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseAudioDeltaEvent(ResponseStreamEvent, discriminator="response.audio.delta"): - """Emitted when there is a partial audio response. - - :ivar type: The type of the event. Always ``response.audio.delta``. Required. - RESPONSE_AUDIO_DELTA. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_AUDIO_DELTA - :ivar sequence_number: A sequence number for this chunk of the stream response. Required. - :vartype sequence_number: int - :ivar delta: A chunk of Base64 encoded response audio bytes. Required. - :vartype delta: bytes - """ - - type: Literal[ResponseStreamEventType.RESPONSE_AUDIO_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.audio.delta``. Required. RESPONSE_AUDIO_DELTA.""" - delta: bytes = rest_field(visibility=["read", "create", "update", "delete", "query"], format="base64") - """A chunk of Base64 encoded response audio bytes. Required.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - delta: bytes, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_AUDIO_DELTA # type: ignore - - -class ResponseAudioDoneEvent(ResponseStreamEvent, discriminator="response.audio.done"): - """Emitted when the audio response is complete. - - :ivar type: The type of the event. Always ``response.audio.done``. Required. - RESPONSE_AUDIO_DONE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_AUDIO_DONE - :ivar sequence_number: The sequence number of the delta. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_AUDIO_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.audio.done``. Required. RESPONSE_AUDIO_DONE.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_AUDIO_DONE # type: ignore - - -class ResponseAudioTranscriptDeltaEvent(ResponseStreamEvent, discriminator="response.audio.transcript.delta"): - """Emitted when there is a partial transcript of audio. - - :ivar type: The type of the event. Always ``response.audio.transcript.delta``. Required. - RESPONSE_AUDIO_TRANSCRIPT_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_AUDIO_TRANSCRIPT_DELTA - :ivar delta: The partial transcript of the audio response. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_AUDIO_TRANSCRIPT_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.audio.transcript.delta``. Required. - RESPONSE_AUDIO_TRANSCRIPT_DELTA.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The partial transcript of the audio response. Required.""" - - @overload - def __init__( - self, - *, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_AUDIO_TRANSCRIPT_DELTA # type: ignore - - -class ResponseAudioTranscriptDoneEvent(ResponseStreamEvent, discriminator="response.audio.transcript.done"): - """Emitted when the full audio transcript is completed. - - :ivar type: The type of the event. Always ``response.audio.transcript.done``. Required. - RESPONSE_AUDIO_TRANSCRIPT_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_AUDIO_TRANSCRIPT_DONE - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_AUDIO_TRANSCRIPT_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.audio.transcript.done``. Required. - RESPONSE_AUDIO_TRANSCRIPT_DONE.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_AUDIO_TRANSCRIPT_DONE # type: ignore - - -class ResponseCodeInterpreterCallCodeDeltaEvent( - ResponseStreamEvent, discriminator="response.code_interpreter_call_code.delta" -): # pylint: disable=name-too-long - """Emitted when a partial code snippet is streamed by the code interpreter. - - :ivar type: The type of the event. Always ``response.code_interpreter_call_code.delta``. - Required. RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA - :ivar output_index: The index of the output item in the response for which the code is being - streamed. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the code interpreter tool call item. Required. - :vartype item_id: str - :ivar delta: The partial code snippet being streamed by the code interpreter. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event, used to order streaming events. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.code_interpreter_call_code.delta``. Required. - RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response for which the code is being streamed. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the code interpreter tool call item. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The partial code snippet being streamed by the code interpreter. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA # type: ignore - - -class ResponseCodeInterpreterCallCodeDoneEvent( - ResponseStreamEvent, discriminator="response.code_interpreter_call_code.done" -): - """Emitted when the code snippet is finalized by the code interpreter. - - :ivar type: The type of the event. Always ``response.code_interpreter_call_code.done``. - Required. RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE - :ivar output_index: The index of the output item in the response for which the code is - finalized. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the code interpreter tool call item. Required. - :vartype item_id: str - :ivar code: The final code snippet output by the code interpreter. Required. - :vartype code: str - :ivar sequence_number: The sequence number of this event, used to order streaming events. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.code_interpreter_call_code.done``. Required. - RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response for which the code is finalized. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the code interpreter tool call item. Required.""" - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The final code snippet output by the code interpreter. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - code: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE # type: ignore - - -class ResponseCodeInterpreterCallCompletedEvent( - ResponseStreamEvent, discriminator="response.code_interpreter_call.completed" -): # pylint: disable=name-too-long - """Emitted when the code interpreter call is completed. - - :ivar type: The type of the event. Always ``response.code_interpreter_call.completed``. - Required. RESPONSE_CODE_INTERPRETER_CALL_COMPLETED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CODE_INTERPRETER_CALL_COMPLETED - :ivar output_index: The index of the output item in the response for which the code interpreter - call is completed. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the code interpreter tool call item. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event, used to order streaming events. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.code_interpreter_call.completed``. Required. - RESPONSE_CODE_INTERPRETER_CALL_COMPLETED.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response for which the code interpreter call is completed. - Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the code interpreter tool call item. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_COMPLETED # type: ignore - - -class ResponseCodeInterpreterCallInProgressEvent( - ResponseStreamEvent, discriminator="response.code_interpreter_call.in_progress" -): # pylint: disable=name-too-long - """Emitted when a code interpreter call is in progress. - - :ivar type: The type of the event. Always ``response.code_interpreter_call.in_progress``. - Required. RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS - :ivar output_index: The index of the output item in the response for which the code interpreter - call is in progress. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the code interpreter tool call item. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event, used to order streaming events. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.code_interpreter_call.in_progress``. Required. - RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response for which the code interpreter call is in - progress. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the code interpreter tool call item. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS # type: ignore - - -class ResponseCodeInterpreterCallInterpretingEvent( - ResponseStreamEvent, discriminator="response.code_interpreter_call.interpreting" -): # pylint: disable=name-too-long - """Emitted when the code interpreter is actively interpreting the code snippet. - - :ivar type: The type of the event. Always ``response.code_interpreter_call.interpreting``. - Required. RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING - :ivar output_index: The index of the output item in the response for which the code interpreter - is interpreting code. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the code interpreter tool call item. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event, used to order streaming events. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.code_interpreter_call.interpreting``. Required. - RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response for which the code interpreter is interpreting - code. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the code interpreter tool call item. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING # type: ignore - - -class ResponseCompletedEvent(ResponseStreamEvent, discriminator="response.completed"): - """Emitted when the model response is complete. - - :ivar type: The type of the event. Always ``response.completed``. Required. RESPONSE_COMPLETED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_COMPLETED - :ivar response: Properties of the completed response. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - :ivar sequence_number: The sequence number for this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.completed``. Required. RESPONSE_COMPLETED.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Properties of the completed response. Required.""" - - @overload - def __init__( - self, - *, - response: "_models.ResponseObject", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_COMPLETED # type: ignore - - -class ResponseContentPartAddedEvent(ResponseStreamEvent, discriminator="response.content_part.added"): - """Emitted when a new content part is added. - - :ivar type: The type of the event. Always ``response.content_part.added``. Required. - RESPONSE_CONTENT_PART_ADDED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_CONTENT_PART_ADDED - :ivar item_id: The ID of the output item that the content part was added to. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the content part was added to. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that was added. Required. - :vartype content_index: int - :ivar part: The content part that was added. Required. - :vartype part: ~azure.ai.agentserver.responses.models.models.OutputContent - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.content_part.added``. Required. - RESPONSE_CONTENT_PART_ADDED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the content part was added to. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the content part was added to. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that was added. Required.""" - part: "_models.OutputContent" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content part that was added. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - part: "_models.OutputContent", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED # type: ignore - - -class ResponseContentPartDoneEvent(ResponseStreamEvent, discriminator="response.content_part.done"): - """Emitted when a content part is done. - - :ivar type: The type of the event. Always ``response.content_part.done``. Required. - RESPONSE_CONTENT_PART_DONE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_CONTENT_PART_DONE - :ivar item_id: The ID of the output item that the content part was added to. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the content part was added to. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that is done. Required. - :vartype content_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar part: The content part that is done. Required. - :vartype part: ~azure.ai.agentserver.responses.models.models.OutputContent - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.content_part.done``. Required. - RESPONSE_CONTENT_PART_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the content part was added to. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the content part was added to. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that is done. Required.""" - part: "_models.OutputContent" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The content part that is done. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - sequence_number: int, - part: "_models.OutputContent", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE # type: ignore - - -class ResponseCreatedEvent(ResponseStreamEvent, discriminator="response.created"): - """An event that is emitted when a response is created. - - :ivar type: The type of the event. Always ``response.created``. Required. RESPONSE_CREATED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_CREATED - :ivar response: The response that was created. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - :ivar sequence_number: The sequence number for this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CREATED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.created``. Required. RESPONSE_CREATED.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The response that was created. Required.""" - - @overload - def __init__( - self, - *, - response: "_models.ResponseObject", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CREATED # type: ignore - - -class ResponseCustomToolCallInputDeltaEvent(ResponseStreamEvent, discriminator="response.custom_tool_call_input.delta"): - """ResponseCustomToolCallInputDelta. - - :ivar type: The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar output_index: The index of the output this delta applies to. Required. - :vartype output_index: int - :ivar item_id: Unique identifier for the API item associated with this event. Required. - :vartype item_id: str - :ivar delta: The incremental input data (delta) for the custom tool call. Required. - :vartype delta: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output this delta applies to. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique identifier for the API item associated with this event. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The incremental input data (delta) for the custom tool call. Required.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - output_index: int, - item_id: str, - delta: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA # type: ignore - - -class ResponseCustomToolCallInputDoneEvent(ResponseStreamEvent, discriminator="response.custom_tool_call_input.done"): - """ResponseCustomToolCallInputDone. - - :ivar type: The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar output_index: The index of the output this event applies to. Required. - :vartype output_index: int - :ivar item_id: Unique identifier for the API item associated with this event. Required. - :vartype item_id: str - :ivar input: The complete input data for the custom tool call. Required. - :vartype input: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output this event applies to. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique identifier for the API item associated with this event. Required.""" - input: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The complete input data for the custom tool call. Required.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - output_index: int, - item_id: str, - input: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE # type: ignore - - -class ResponseErrorEvent(ResponseStreamEvent, discriminator="error"): - """Emitted when an error occurs. - - :ivar type: The type of the event. Always ``error``. Required. ERROR. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ERROR - :ivar code: Required. - :vartype code: str - :ivar message: The error message. Required. - :vartype message: str - :ivar param: Required. - :vartype param: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.ERROR] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``error``. Required. ERROR.""" - code: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - message: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The error message. Required.""" - param: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - code: str, - message: str, - param: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.ERROR # type: ignore - - -class ResponseErrorInfo(_Model): - """An error object returned when the model fails to generate a Response. - - :ivar code: Required. Known values are: "server_error", "rate_limit_exceeded", - "invalid_prompt", "vector_store_timeout", "invalid_image", "invalid_image_format", - "invalid_base64_image", "invalid_image_url", "image_too_large", "image_too_small", - "image_parse_error", "image_content_policy_violation", "invalid_image_mode", - "image_file_too_large", "unsupported_image_media_type", "empty_image_file", - "failed_to_download_image", and "image_file_not_found". - :vartype code: str or ~azure.ai.agentserver.responses.models.models.ResponseErrorCode - :ivar message: A human-readable description of the error. Required. - :vartype message: str - """ - - code: Union[str, "_models.ResponseErrorCode"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required. Known values are: \"server_error\", \"rate_limit_exceeded\", \"invalid_prompt\", - \"vector_store_timeout\", \"invalid_image\", \"invalid_image_format\", - \"invalid_base64_image\", \"invalid_image_url\", \"image_too_large\", \"image_too_small\", - \"image_parse_error\", \"image_content_policy_violation\", \"invalid_image_mode\", - \"image_file_too_large\", \"unsupported_image_media_type\", \"empty_image_file\", - \"failed_to_download_image\", and \"image_file_not_found\".""" - message: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A human-readable description of the error. Required.""" - - @overload - def __init__( - self, - *, - code: Union[str, "_models.ResponseErrorCode"], - message: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseFailedEvent(ResponseStreamEvent, discriminator="response.failed"): - """An event that is emitted when a response fails. - - :ivar type: The type of the event. Always ``response.failed``. Required. RESPONSE_FAILED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_FAILED - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar response: The response that failed. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FAILED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.failed``. Required. RESPONSE_FAILED.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The response that failed. Required.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - response: "_models.ResponseObject", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FAILED # type: ignore - - -class ResponseFileSearchCallCompletedEvent(ResponseStreamEvent, discriminator="response.file_search_call.completed"): - """Emitted when a file search call is completed (results found). - - :ivar type: The type of the event. Always ``response.file_search_call.completed``. Required. - RESPONSE_FILE_SEARCH_CALL_COMPLETED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_FILE_SEARCH_CALL_COMPLETED - :ivar output_index: The index of the output item that the file search call is initiated. - Required. - :vartype output_index: int - :ivar item_id: The ID of the output item that the file search call is initiated. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.file_search_call.completed``. Required. - RESPONSE_FILE_SEARCH_CALL_COMPLETED.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the file search call is initiated. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the file search call is initiated. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_COMPLETED # type: ignore - - -class ResponseFileSearchCallInProgressEvent(ResponseStreamEvent, discriminator="response.file_search_call.in_progress"): - """Emitted when a file search call is initiated. - - :ivar type: The type of the event. Always ``response.file_search_call.in_progress``. Required. - RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS - :ivar output_index: The index of the output item that the file search call is initiated. - Required. - :vartype output_index: int - :ivar item_id: The ID of the output item that the file search call is initiated. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.file_search_call.in_progress``. Required. - RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the file search call is initiated. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the file search call is initiated. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS # type: ignore - - -class ResponseFileSearchCallSearchingEvent(ResponseStreamEvent, discriminator="response.file_search_call.searching"): - """Emitted when a file search is currently searching. - - :ivar type: The type of the event. Always ``response.file_search_call.searching``. Required. - RESPONSE_FILE_SEARCH_CALL_SEARCHING. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_FILE_SEARCH_CALL_SEARCHING - :ivar output_index: The index of the output item that the file search call is searching. - Required. - :vartype output_index: int - :ivar item_id: The ID of the output item that the file search call is initiated. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_SEARCHING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.file_search_call.searching``. Required. - RESPONSE_FILE_SEARCH_CALL_SEARCHING.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the file search call is searching. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the file search call is initiated. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_SEARCHING # type: ignore - - -class ResponseFormatJsonSchemaSchema(_Model): - """JSON schema.""" - - -class ResponseFunctionCallArgumentsDeltaEvent( - ResponseStreamEvent, discriminator="response.function_call_arguments.delta" -): - """Emitted when there is a partial function-call arguments delta. - - :ivar type: The type of the event. Always ``response.function_call_arguments.delta``. Required. - RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA - :ivar item_id: The ID of the output item that the function-call arguments delta is added to. - Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the function-call arguments delta is - added to. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar delta: The function-call arguments delta that is added. Required. - :vartype delta: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.function_call_arguments.delta``. Required. - RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the function-call arguments delta is added to. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the function-call arguments delta is added to. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The function-call arguments delta that is added. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - delta: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA # type: ignore - - -class ResponseFunctionCallArgumentsDoneEvent( - ResponseStreamEvent, discriminator="response.function_call_arguments.done" -): - """Emitted when function-call arguments are finalized. - - :ivar type: Required. RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE - :ivar item_id: The ID of the item. Required. - :vartype item_id: str - :ivar name: The name of the function that was called. Required. - :vartype name: str - :ivar output_index: The index of the output item. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar arguments: The function-call arguments. Required. - :vartype arguments: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item. Required.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function that was called. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The function-call arguments. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - name: str, - output_index: int, - sequence_number: int, - arguments: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE # type: ignore - - -class ResponseImageGenCallCompletedEvent(ResponseStreamEvent, discriminator="response.image_generation_call.completed"): - """ResponseImageGenCallCompletedEvent. - - :ivar type: The type of the event. Always 'response.image_generation_call.completed'. Required. - RESPONSE_IMAGE_GENERATION_CALL_COMPLETED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_IMAGE_GENERATION_CALL_COMPLETED - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar item_id: The unique identifier of the image generation item being processed. Required. - :vartype item_id: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.image_generation_call.completed'. Required. - RESPONSE_IMAGE_GENERATION_CALL_COMPLETED.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the image generation item being processed. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - sequence_number: int, - item_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_COMPLETED # type: ignore - - -class ResponseImageGenCallGeneratingEvent( - ResponseStreamEvent, discriminator="response.image_generation_call.generating" -): - """ResponseImageGenCallGeneratingEvent. - - :ivar type: The type of the event. Always 'response.image_generation_call.generating'. - Required. RESPONSE_IMAGE_GENERATION_CALL_GENERATING. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_IMAGE_GENERATION_CALL_GENERATING - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the image generation item being processed. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the image generation item being processed. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_GENERATING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.image_generation_call.generating'. Required. - RESPONSE_IMAGE_GENERATION_CALL_GENERATING.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the image generation item being processed. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_GENERATING # type: ignore - - -class ResponseImageGenCallInProgressEvent( - ResponseStreamEvent, discriminator="response.image_generation_call.in_progress" -): - """ResponseImageGenCallInProgressEvent. - - :ivar type: The type of the event. Always 'response.image_generation_call.in_progress'. - Required. RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the image generation item being processed. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the image generation item being processed. - Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.image_generation_call.in_progress'. Required. - RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the image generation item being processed. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS # type: ignore - - -class ResponseImageGenCallPartialImageEvent( - ResponseStreamEvent, discriminator="response.image_generation_call.partial_image" -): - """ResponseImageGenCallPartialImageEvent. - - :ivar type: The type of the event. Always 'response.image_generation_call.partial_image'. - Required. RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the image generation item being processed. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the image generation item being processed. - Required. - :vartype sequence_number: int - :ivar partial_image_index: 0-based index for the partial image (backend is 1-based, but this is - 0-based for the user). Required. - :vartype partial_image_index: int - :ivar partial_image_b64: Base64-encoded partial image data, suitable for rendering as an image. - Required. - :vartype partial_image_b64: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.image_generation_call.partial_image'. Required. - RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the image generation item being processed. Required.""" - partial_image_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """0-based index for the partial image (backend is 1-based, but this is 0-based for the user). - Required.""" - partial_image_b64: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Base64-encoded partial image data, suitable for rendering as an image. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - partial_image_index: int, - partial_image_b64: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE # type: ignore - - -class ResponseIncompleteDetails(_Model): - """ResponseIncompleteDetails. - - :ivar reason: Is either a Literal["max_output_tokens"] type or a Literal["content_filter"] - type. - :vartype reason: str or str - """ - - reason: Optional[Literal["max_output_tokens", "content_filter"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Literal[\"max_output_tokens\"] type or a Literal[\"content_filter\"] type.""" - - @overload - def __init__( - self, - *, - reason: Optional[Literal["max_output_tokens", "content_filter"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseIncompleteEvent(ResponseStreamEvent, discriminator="response.incomplete"): - """An event that is emitted when a response finishes as incomplete. - - :ivar type: The type of the event. Always ``response.incomplete``. Required. - RESPONSE_INCOMPLETE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_INCOMPLETE - :ivar response: The response that was incomplete. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_INCOMPLETE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.incomplete``. Required. RESPONSE_INCOMPLETE.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The response that was incomplete. Required.""" - - @overload - def __init__( - self, - *, - response: "_models.ResponseObject", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_INCOMPLETE # type: ignore - - -class ResponseInProgressEvent(ResponseStreamEvent, discriminator="response.in_progress"): - """Emitted when the response is in progress. - - :ivar type: The type of the event. Always ``response.in_progress``. Required. - RESPONSE_IN_PROGRESS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_IN_PROGRESS - :ivar response: The response that is in progress. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.in_progress``. Required. RESPONSE_IN_PROGRESS.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The response that is in progress. Required.""" - - @overload - def __init__( - self, - *, - response: "_models.ResponseObject", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_IN_PROGRESS # type: ignore - - -class ResponseLogProb(_Model): - """A logprob is the logarithmic probability that the model assigns to producing a particular token - at a given position in the sequence. Less-negative (higher) logprob values indicate greater - model confidence in that token choice. - - :ivar token: A possible text token. Required. - :vartype token: str - :ivar logprob: The log probability of this token. Required. - :vartype logprob: int - :ivar top_logprobs: The log probability of the top 20 most likely tokens. - :vartype top_logprobs: - list[~azure.ai.agentserver.responses.models.models.ResponseLogProbTopLogprobs] - """ - - token: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A possible text token. Required.""" - logprob: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The log probability of this token. Required.""" - top_logprobs: Optional[list["_models.ResponseLogProbTopLogprobs"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The log probability of the top 20 most likely tokens.""" - - @overload - def __init__( - self, - *, - token: str, - logprob: int, - top_logprobs: Optional[list["_models.ResponseLogProbTopLogprobs"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseLogProbTopLogprobs(_Model): - """ResponseLogProbTopLogprobs. - - :ivar token: - :vartype token: str - :ivar logprob: - :vartype logprob: int - """ - - token: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - logprob: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - token: Optional[str] = None, - logprob: Optional[int] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseMCPCallArgumentsDeltaEvent(ResponseStreamEvent, discriminator="response.mcp_call_arguments.delta"): - """ResponseMCPCallArgumentsDeltaEvent. - - :ivar type: The type of the event. Always 'response.mcp_call_arguments.delta'. Required. - RESPONSE_MCP_CALL_ARGUMENTS_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_CALL_ARGUMENTS_DELTA - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. - :vartype item_id: str - :ivar delta: A JSON string containing the partial update to the arguments for the MCP tool - call. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_call_arguments.delta'. Required. - RESPONSE_MCP_CALL_ARGUMENTS_DELTA.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the MCP tool call item being processed. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string containing the partial update to the arguments for the MCP tool call. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA # type: ignore - - -class ResponseMCPCallArgumentsDoneEvent(ResponseStreamEvent, discriminator="response.mcp_call_arguments.done"): - """ResponseMCPCallArgumentsDoneEvent. - - :ivar type: The type of the event. Always 'response.mcp_call_arguments.done'. Required. - RESPONSE_MCP_CALL_ARGUMENTS_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_CALL_ARGUMENTS_DONE - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. - :vartype item_id: str - :ivar arguments: A JSON string containing the finalized arguments for the MCP tool call. - Required. - :vartype arguments: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_call_arguments.done'. Required. - RESPONSE_MCP_CALL_ARGUMENTS_DONE.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the MCP tool call item being processed. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string containing the finalized arguments for the MCP tool call. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - arguments: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE # type: ignore - - -class ResponseMCPCallCompletedEvent(ResponseStreamEvent, discriminator="response.mcp_call.completed"): - """ResponseMCPCallCompletedEvent. - - :ivar type: The type of the event. Always 'response.mcp_call.completed'. Required. - RESPONSE_MCP_CALL_COMPLETED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_CALL_COMPLETED - :ivar item_id: The ID of the MCP tool call item that completed. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that completed. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_CALL_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_call.completed'. Required. - RESPONSE_MCP_CALL_COMPLETED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the MCP tool call item that completed. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that completed. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_CALL_COMPLETED # type: ignore - - -class ResponseMCPCallFailedEvent(ResponseStreamEvent, discriminator="response.mcp_call.failed"): - """ResponseMCPCallFailedEvent. - - :ivar type: The type of the event. Always 'response.mcp_call.failed'. Required. - RESPONSE_MCP_CALL_FAILED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_CALL_FAILED - :ivar item_id: The ID of the MCP tool call item that failed. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that failed. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_CALL_FAILED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_call.failed'. Required. RESPONSE_MCP_CALL_FAILED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the MCP tool call item that failed. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that failed. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_CALL_FAILED # type: ignore - - -class ResponseMCPCallInProgressEvent(ResponseStreamEvent, discriminator="response.mcp_call.in_progress"): - """ResponseMCPCallInProgressEvent. - - :ivar type: The type of the event. Always 'response.mcp_call.in_progress'. Required. - RESPONSE_MCP_CALL_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_CALL_IN_PROGRESS - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. - :vartype item_id: str - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_CALL_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_call.in_progress'. Required. - RESPONSE_MCP_CALL_IN_PROGRESS.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the MCP tool call item being processed. Required.""" - - @overload - def __init__( - self, - *, - sequence_number: int, - output_index: int, - item_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_CALL_IN_PROGRESS # type: ignore - - -class ResponseMCPListToolsCompletedEvent(ResponseStreamEvent, discriminator="response.mcp_list_tools.completed"): - """ResponseMCPListToolsCompletedEvent. - - :ivar type: The type of the event. Always 'response.mcp_list_tools.completed'. Required. - RESPONSE_MCP_LIST_TOOLS_COMPLETED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_LIST_TOOLS_COMPLETED - :ivar item_id: The ID of the MCP tool call item that produced this output. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that was processed. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_list_tools.completed'. Required. - RESPONSE_MCP_LIST_TOOLS_COMPLETED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the MCP tool call item that produced this output. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that was processed. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_COMPLETED # type: ignore - - -class ResponseMCPListToolsFailedEvent(ResponseStreamEvent, discriminator="response.mcp_list_tools.failed"): - """ResponseMCPListToolsFailedEvent. - - :ivar type: The type of the event. Always 'response.mcp_list_tools.failed'. Required. - RESPONSE_MCP_LIST_TOOLS_FAILED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_LIST_TOOLS_FAILED - :ivar item_id: The ID of the MCP tool call item that failed. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that failed. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_FAILED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_list_tools.failed'. Required. - RESPONSE_MCP_LIST_TOOLS_FAILED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the MCP tool call item that failed. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that failed. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_FAILED # type: ignore - - -class ResponseMCPListToolsInProgressEvent(ResponseStreamEvent, discriminator="response.mcp_list_tools.in_progress"): - """ResponseMCPListToolsInProgressEvent. - - :ivar type: The type of the event. Always 'response.mcp_list_tools.in_progress'. Required. - RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS - :ivar item_id: The ID of the MCP tool call item that is being processed. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that is being processed. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.mcp_list_tools.in_progress'. Required. - RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the MCP tool call item that is being processed. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that is being processed. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS # type: ignore - - -class ResponseObject(_Model): - """The response object. - - :ivar metadata: - :vartype metadata: ~azure.ai.agentserver.responses.models.models.Metadata - :ivar top_logprobs: - :vartype top_logprobs: int - :ivar temperature: - :vartype temperature: int - :ivar top_p: - :vartype top_p: int - :ivar user: This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use - ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your - end-users. Used to boost cache hit rates by better bucketing similar requests and to help - OpenAI detect and prevent abuse. `Learn more - `_. - :vartype user: str - :ivar safety_identifier: A stable identifier used to help detect users of your application that - may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies - each user. We recommend hashing their username or email address, in order to avoid sending us - any identifying information. `Learn more - `_. - :vartype safety_identifier: str - :ivar prompt_cache_key: Used by OpenAI to cache responses for similar requests to optimize your - cache hit rates. Replaces the ``user`` field. `Learn more `_. - :vartype prompt_cache_key: str - :ivar service_tier: Is one of the following types: Literal["auto"], Literal["default"], - Literal["flex"], Literal["scale"], Literal["priority"] - :vartype service_tier: str or str or str or str or str - :ivar prompt_cache_retention: Is either a Literal["in-memory"] type or a Literal["24h"] type. - :vartype prompt_cache_retention: str or str - :ivar previous_response_id: - :vartype previous_response_id: str - :ivar model: The model deployment to use for the creation of this response. - :vartype model: str - :ivar reasoning: - :vartype reasoning: ~azure.ai.agentserver.responses.models.models.Reasoning - :ivar background: - :vartype background: bool - :ivar max_output_tokens: - :vartype max_output_tokens: int - :ivar max_tool_calls: - :vartype max_tool_calls: int - :ivar text: - :vartype text: ~azure.ai.agentserver.responses.models.models.ResponseTextParam - :ivar tools: - :vartype tools: list[~azure.ai.agentserver.responses.models.models.Tool] - :ivar tool_choice: Is either a Union[str, "_models.ToolChoiceOptions"] type or a - ToolChoiceParam type. - :vartype tool_choice: str or ~azure.ai.agentserver.responses.models.models.ToolChoiceOptions or - ~azure.ai.agentserver.responses.models.models.ToolChoiceParam - :ivar prompt: - :vartype prompt: ~azure.ai.agentserver.responses.models.models.Prompt - :ivar truncation: Is either a Literal["auto"] type or a Literal["disabled"] type. - :vartype truncation: str or str - :ivar id: Unique identifier for this Response. Required. - :vartype id: str - :ivar object: The object type of this resource - always set to ``response``. Required. Default - value is "response". - :vartype object: str - :ivar status: The status of the response generation. One of ``completed``, ``failed``, - ``in_progress``, ``cancelled``, ``queued``, or ``incomplete``. Is one of the following types: - Literal["completed"], Literal["failed"], Literal["in_progress"], Literal["cancelled"], - Literal["queued"], Literal["incomplete"] - :vartype status: str or str or str or str or str or str - :ivar created_at: Unix timestamp (in seconds) of when this Response was created. Required. - :vartype created_at: ~datetime.datetime - :ivar completed_at: - :vartype completed_at: ~datetime.datetime - :ivar error: Required. - :vartype error: ~azure.ai.agentserver.responses.models.models.ResponseErrorInfo - :ivar incomplete_details: Required. - :vartype incomplete_details: - ~azure.ai.agentserver.responses.models.models.ResponseIncompleteDetails - :ivar output: An array of content items generated by the model. - - * The length and order of items in the `output` array is dependent - on the model's response. - * Rather than accessing the first item in the `output` array and - assuming it's an `assistant` message with the content generated by - the model, you might consider using the `output_text` property where - supported in SDKs. Required. - :vartype output: list[~azure.ai.agentserver.responses.models.models.OutputItem] - :ivar instructions: Required. Is either a str type or a [Item] type. - :vartype instructions: str or list[~azure.ai.agentserver.responses.models.models.Item] - :ivar output_text: - :vartype output_text: str - :ivar usage: - :vartype usage: ~azure.ai.agentserver.responses.models.models.ResponseUsage - :ivar parallel_tool_calls: Whether to allow the model to run tool calls in parallel. Required. - :vartype parallel_tool_calls: bool - :ivar conversation: - :vartype conversation: ~azure.ai.agentserver.responses.models.models.ConversationReference - :ivar agent_reference: The agent used for this response. Required. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - """ - - metadata: Optional["_models.Metadata"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - top_logprobs: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - temperature: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - top_p: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - user: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use - ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your - end-users. Used to boost cache hit rates by better bucketing similar requests and to help - OpenAI detect and prevent abuse. `Learn more - `_.""" - safety_identifier: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A stable identifier used to help detect users of your application that may be violating - OpenAI's usage policies. The IDs should be a string that uniquely identifies each user. We - recommend hashing their username or email address, in order to avoid sending us any identifying - information. `Learn more `_.""" - prompt_cache_key: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. - Replaces the ``user`` field. `Learn more `_.""" - service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"auto\"], Literal[\"default\"], Literal[\"flex\"], - Literal[\"scale\"], Literal[\"priority\"]""" - prompt_cache_retention: Optional[Literal["in-memory", "24h"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Literal[\"in-memory\"] type or a Literal[\"24h\"] type.""" - previous_response_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - model: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The model deployment to use for the creation of this response.""" - reasoning: Optional["_models.Reasoning"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - background: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - max_output_tokens: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - max_tool_calls: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - text: Optional["_models.ResponseTextParam"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - tools: Optional[list["_models.Tool"]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - tool_choice: Optional[Union[str, "_models.ToolChoiceOptions", "_models.ToolChoiceParam"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Union[str, \"_models.ToolChoiceOptions\"] type or a ToolChoiceParam type.""" - prompt: Optional["_models.Prompt"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - truncation: Optional[Literal["auto", "disabled"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is either a Literal[\"auto\"] type or a Literal[\"disabled\"] type.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique identifier for this Response. Required.""" - object: Literal["response"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The object type of this resource - always set to ``response``. Required. Default value is - \"response\".""" - status: Optional[Literal["completed", "failed", "in_progress", "cancelled", "queued", "incomplete"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the response generation. One of ``completed``, ``failed``, ``in_progress``, - ``cancelled``, ``queued``, or ``incomplete``. Is one of the following types: - Literal[\"completed\"], Literal[\"failed\"], Literal[\"in_progress\"], Literal[\"cancelled\"], - Literal[\"queued\"], Literal[\"incomplete\"]""" - created_at: datetime.datetime = rest_field( - visibility=["read", "create", "update", "delete", "query"], format="unix-timestamp" - ) - """Unix timestamp (in seconds) of when this Response was created. Required.""" - completed_at: Optional[datetime.datetime] = rest_field( - visibility=["read", "create", "update", "delete", "query"], format="unix-timestamp" - ) - error: "_models.ResponseErrorInfo" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - incomplete_details: "_models.ResponseIncompleteDetails" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - output: list["_models.OutputItem"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """An array of content items generated by the model. - - * The length and order of items in the `output` array is dependent - on the model's response. - * Rather than accessing the first item in the `output` array and - assuming it's an `assistant` message with the content generated by - the model, you might consider using the `output_text` property where - supported in SDKs. Required.""" - instructions: Union[str, list["_models.Item"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required. Is either a str type or a [Item] type.""" - output_text: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - usage: Optional["_models.ResponseUsage"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - parallel_tool_calls: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to allow the model to run tool calls in parallel. Required.""" - conversation: Optional["_models.ConversationReference"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - agent_reference: "_models.AgentReference" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The agent used for this response. Required.""" - - @overload - def __init__( # pylint: disable=too-many-locals - self, - *, - id: str, # pylint: disable=redefined-builtin - created_at: datetime.datetime, - error: "_models.ResponseErrorInfo", - incomplete_details: "_models.ResponseIncompleteDetails", - output: list["_models.OutputItem"], - instructions: Union[str, list["_models.Item"]], - parallel_tool_calls: bool, - agent_reference: "_models.AgentReference", - metadata: Optional["_models.Metadata"] = None, - top_logprobs: Optional[int] = None, - temperature: Optional[int] = None, - top_p: Optional[int] = None, - user: Optional[str] = None, - safety_identifier: Optional[str] = None, - prompt_cache_key: Optional[str] = None, - service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] = None, - prompt_cache_retention: Optional[Literal["in-memory", "24h"]] = None, - previous_response_id: Optional[str] = None, - model: Optional[str] = None, - reasoning: Optional["_models.Reasoning"] = None, - background: Optional[bool] = None, - max_output_tokens: Optional[int] = None, - max_tool_calls: Optional[int] = None, - text: Optional["_models.ResponseTextParam"] = None, - tools: Optional[list["_models.Tool"]] = None, - tool_choice: Optional[Union[str, "_models.ToolChoiceOptions", "_models.ToolChoiceParam"]] = None, - prompt: Optional["_models.Prompt"] = None, - truncation: Optional[Literal["auto", "disabled"]] = None, - status: Optional[Literal["completed", "failed", "in_progress", "cancelled", "queued", "incomplete"]] = None, - completed_at: Optional[datetime.datetime] = None, - output_text: Optional[str] = None, - usage: Optional["_models.ResponseUsage"] = None, - conversation: Optional["_models.ConversationReference"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.object: Literal["response"] = "response" - - -class ResponseOutputItemAddedEvent(ResponseStreamEvent, discriminator="response.output_item.added"): - """Emitted when a new output item is added. - - :ivar type: The type of the event. Always ``response.output_item.added``. Required. - RESPONSE_OUTPUT_ITEM_ADDED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_OUTPUT_ITEM_ADDED - :ivar output_index: The index of the output item that was added. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar item: The output item that was added. Required. - :vartype item: ~azure.ai.agentserver.responses.models.models.OutputItem - """ - - type: Literal[ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.output_item.added``. Required. - RESPONSE_OUTPUT_ITEM_ADDED.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that was added. Required.""" - item: "_models.OutputItem" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The output item that was added. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - sequence_number: int, - item: "_models.OutputItem", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED # type: ignore - - -class ResponseOutputItemDoneEvent(ResponseStreamEvent, discriminator="response.output_item.done"): - """Emitted when an output item is marked done. - - :ivar type: The type of the event. Always ``response.output_item.done``. Required. - RESPONSE_OUTPUT_ITEM_DONE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_OUTPUT_ITEM_DONE - :ivar output_index: The index of the output item that was marked done. Required. - :vartype output_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar item: The output item that was marked done. Required. - :vartype item: ~azure.ai.agentserver.responses.models.models.OutputItem - """ - - type: Literal[ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.output_item.done``. Required. - RESPONSE_OUTPUT_ITEM_DONE.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that was marked done. Required.""" - item: "_models.OutputItem" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The output item that was marked done. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - sequence_number: int, - item: "_models.OutputItem", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE # type: ignore - - -class ResponseOutputTextAnnotationAddedEvent( - ResponseStreamEvent, discriminator="response.output_text.annotation.added" -): - """ResponseOutputTextAnnotationAddedEvent. - - :ivar type: The type of the event. Always 'response.output_text.annotation.added'. Required. - RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED - :ivar item_id: The unique identifier of the item to which the annotation is being added. - Required. - :vartype item_id: str - :ivar output_index: The index of the output item in the response's output array. Required. - :vartype output_index: int - :ivar content_index: The index of the content part within the output item. Required. - :vartype content_index: int - :ivar annotation_index: The index of the annotation within the content part. Required. - :vartype annotation_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar annotation: The annotation object being added. (See annotation schema for details.). - Required. - :vartype annotation: ~azure.ai.agentserver.responses.models.models.Annotation - """ - - type: Literal[ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.output_text.annotation.added'. Required. - RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique identifier of the item to which the annotation is being added. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item in the response's output array. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part within the output item. Required.""" - annotation_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the annotation within the content part. Required.""" - annotation: "_models.Annotation" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The annotation object being added. (See annotation schema for details.). Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - annotation_index: int, - sequence_number: int, - annotation: "_models.Annotation", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED # type: ignore - - -class ResponsePromptVariables(_Model): - """Prompt Variables.""" - - -class ResponseQueuedEvent(ResponseStreamEvent, discriminator="response.queued"): - """ResponseQueuedEvent. - - :ivar type: The type of the event. Always 'response.queued'. Required. RESPONSE_QUEUED. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_QUEUED - :ivar response: The full response object that is queued. Required. - :vartype response: ~azure.ai.agentserver.responses.models.models.ResponseObject - :ivar sequence_number: The sequence number for this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_QUEUED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always 'response.queued'. Required. RESPONSE_QUEUED.""" - response: "_models.ResponseObject" = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The full response object that is queued. Required.""" - - @overload - def __init__( - self, - *, - response: "_models.ResponseObject", - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_QUEUED # type: ignore - - -class ResponseReasoningSummaryPartAddedEvent( - ResponseStreamEvent, discriminator="response.reasoning_summary_part.added" -): - """Emitted when a new reasoning summary part is added. - - :ivar type: The type of the event. Always ``response.reasoning_summary_part.added``. Required. - RESPONSE_REASONING_SUMMARY_PART_ADDED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_SUMMARY_PART_ADDED - :ivar item_id: The ID of the item this summary part is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this summary part is associated with. - Required. - :vartype output_index: int - :ivar summary_index: The index of the summary part within the reasoning summary. Required. - :vartype summary_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar part: The summary part that was added. Required. - :vartype part: - ~azure.ai.agentserver.responses.models.models.ResponseReasoningSummaryPartAddedEventPart - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_ADDED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_summary_part.added``. Required. - RESPONSE_REASONING_SUMMARY_PART_ADDED.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this summary part is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this summary part is associated with. Required.""" - summary_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the summary part within the reasoning summary. Required.""" - part: "_models.ResponseReasoningSummaryPartAddedEventPart" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The summary part that was added. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - summary_index: int, - sequence_number: int, - part: "_models.ResponseReasoningSummaryPartAddedEventPart", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_ADDED # type: ignore - - -class ResponseReasoningSummaryPartAddedEventPart(_Model): # pylint: disable=name-too-long - """ResponseReasoningSummaryPartAddedEventPart. - - :ivar type: Required. Default value is "summary_text". - :vartype type: str - :ivar text: Required. - :vartype text: str - """ - - type: Literal["summary_text"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required. Default value is \"summary_text\".""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["summary_text"] = "summary_text" - - -class ResponseReasoningSummaryPartDoneEvent(ResponseStreamEvent, discriminator="response.reasoning_summary_part.done"): - """Emitted when a reasoning summary part is completed. - - :ivar type: The type of the event. Always ``response.reasoning_summary_part.done``. Required. - RESPONSE_REASONING_SUMMARY_PART_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_SUMMARY_PART_DONE - :ivar item_id: The ID of the item this summary part is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this summary part is associated with. - Required. - :vartype output_index: int - :ivar summary_index: The index of the summary part within the reasoning summary. Required. - :vartype summary_index: int - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - :ivar part: The completed summary part. Required. - :vartype part: - ~azure.ai.agentserver.responses.models.models.ResponseReasoningSummaryPartDoneEventPart - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_summary_part.done``. Required. - RESPONSE_REASONING_SUMMARY_PART_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this summary part is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this summary part is associated with. Required.""" - summary_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the summary part within the reasoning summary. Required.""" - part: "_models.ResponseReasoningSummaryPartDoneEventPart" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The completed summary part. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - summary_index: int, - sequence_number: int, - part: "_models.ResponseReasoningSummaryPartDoneEventPart", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_DONE # type: ignore - - -class ResponseReasoningSummaryPartDoneEventPart(_Model): # pylint: disable=name-too-long - """ResponseReasoningSummaryPartDoneEventPart. - - :ivar type: Required. Default value is "summary_text". - :vartype type: str - :ivar text: Required. - :vartype text: str - """ - - type: Literal["summary_text"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required. Default value is \"summary_text\".""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["summary_text"] = "summary_text" - - -class ResponseReasoningSummaryTextDeltaEvent( - ResponseStreamEvent, discriminator="response.reasoning_summary_text.delta" -): - """Emitted when a delta is added to a reasoning summary text. - - :ivar type: The type of the event. Always ``response.reasoning_summary_text.delta``. Required. - RESPONSE_REASONING_SUMMARY_TEXT_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_SUMMARY_TEXT_DELTA - :ivar item_id: The ID of the item this summary text delta is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this summary text delta is associated with. - Required. - :vartype output_index: int - :ivar summary_index: The index of the summary part within the reasoning summary. Required. - :vartype summary_index: int - :ivar delta: The text delta that was added to the summary. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_summary_text.delta``. Required. - RESPONSE_REASONING_SUMMARY_TEXT_DELTA.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this summary text delta is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this summary text delta is associated with. Required.""" - summary_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the summary part within the reasoning summary. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text delta that was added to the summary. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - summary_index: int, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DELTA # type: ignore - - -class ResponseReasoningSummaryTextDoneEvent(ResponseStreamEvent, discriminator="response.reasoning_summary_text.done"): - """Emitted when a reasoning summary text is completed. - - :ivar type: The type of the event. Always ``response.reasoning_summary_text.done``. Required. - RESPONSE_REASONING_SUMMARY_TEXT_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_SUMMARY_TEXT_DONE - :ivar item_id: The ID of the item this summary text is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this summary text is associated with. - Required. - :vartype output_index: int - :ivar summary_index: The index of the summary part within the reasoning summary. Required. - :vartype summary_index: int - :ivar text: The full text of the completed reasoning summary. Required. - :vartype text: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_summary_text.done``. Required. - RESPONSE_REASONING_SUMMARY_TEXT_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this summary text is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this summary text is associated with. Required.""" - summary_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the summary part within the reasoning summary. Required.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The full text of the completed reasoning summary. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - summary_index: int, - text: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DONE # type: ignore - - -class ResponseReasoningTextDeltaEvent(ResponseStreamEvent, discriminator="response.reasoning_text.delta"): - """Emitted when a delta is added to a reasoning text. - - :ivar type: The type of the event. Always ``response.reasoning_text.delta``. Required. - RESPONSE_REASONING_TEXT_DELTA. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_TEXT_DELTA - :ivar item_id: The ID of the item this reasoning text delta is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this reasoning text delta is associated with. - Required. - :vartype output_index: int - :ivar content_index: The index of the reasoning content part this delta is associated with. - Required. - :vartype content_index: int - :ivar delta: The text delta that was added to the reasoning content. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_TEXT_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_text.delta``. Required. - RESPONSE_REASONING_TEXT_DELTA.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this reasoning text delta is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this reasoning text delta is associated with. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the reasoning content part this delta is associated with. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text delta that was added to the reasoning content. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_TEXT_DELTA # type: ignore - - -class ResponseReasoningTextDoneEvent(ResponseStreamEvent, discriminator="response.reasoning_text.done"): - """Emitted when a reasoning text is completed. - - :ivar type: The type of the event. Always ``response.reasoning_text.done``. Required. - RESPONSE_REASONING_TEXT_DONE. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_REASONING_TEXT_DONE - :ivar item_id: The ID of the item this reasoning text is associated with. Required. - :vartype item_id: str - :ivar output_index: The index of the output item this reasoning text is associated with. - Required. - :vartype output_index: int - :ivar content_index: The index of the reasoning content part. Required. - :vartype content_index: int - :ivar text: The full text of the completed reasoning content. Required. - :vartype text: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REASONING_TEXT_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.reasoning_text.done``. Required. - RESPONSE_REASONING_TEXT_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the item this reasoning text is associated with. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item this reasoning text is associated with. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the reasoning content part. Required.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The full text of the completed reasoning content. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - text: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REASONING_TEXT_DONE # type: ignore - - -class ResponseRefusalDeltaEvent(ResponseStreamEvent, discriminator="response.refusal.delta"): - """Emitted when there is a partial refusal text. - - :ivar type: The type of the event. Always ``response.refusal.delta``. Required. - RESPONSE_REFUSAL_DELTA. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_REFUSAL_DELTA - :ivar item_id: The ID of the output item that the refusal text is added to. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the refusal text is added to. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that the refusal text is added to. Required. - :vartype content_index: int - :ivar delta: The refusal text that is added. Required. - :vartype delta: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REFUSAL_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.refusal.delta``. Required. RESPONSE_REFUSAL_DELTA.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the refusal text is added to. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the refusal text is added to. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that the refusal text is added to. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The refusal text that is added. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - delta: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REFUSAL_DELTA # type: ignore - - -class ResponseRefusalDoneEvent(ResponseStreamEvent, discriminator="response.refusal.done"): - """Emitted when refusal text is finalized. - - :ivar type: The type of the event. Always ``response.refusal.done``. Required. - RESPONSE_REFUSAL_DONE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_REFUSAL_DONE - :ivar item_id: The ID of the output item that the refusal text is finalized. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the refusal text is finalized. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that the refusal text is finalized. - Required. - :vartype content_index: int - :ivar refusal: The refusal text that is finalized. Required. - :vartype refusal: str - :ivar sequence_number: The sequence number of this event. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_REFUSAL_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.refusal.done``. Required. RESPONSE_REFUSAL_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the refusal text is finalized. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the refusal text is finalized. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that the refusal text is finalized. Required.""" - refusal: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The refusal text that is finalized. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - refusal: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_REFUSAL_DONE # type: ignore - - -class ResponseStreamOptions(_Model): - """Options for streaming responses. Only set this when you set ``stream: true``. - - :ivar include_obfuscation: When true, stream obfuscation will be enabled. Stream obfuscation - adds random characters to an ``obfuscation`` field on streaming delta events to normalize - payload sizes as a mitigation to certain side-channel attacks. These obfuscation fields are - included by default, but add a small amount of overhead to the data stream. You can set - ``include_obfuscation`` to false to optimize for bandwidth if you trust the network links - between your application and the OpenAI API. - :vartype include_obfuscation: bool - """ - - include_obfuscation: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """When true, stream obfuscation will be enabled. Stream obfuscation adds random characters to an - ``obfuscation`` field on streaming delta events to normalize payload sizes as a mitigation to - certain side-channel attacks. These obfuscation fields are included by default, but add a small - amount of overhead to the data stream. You can set ``include_obfuscation`` to false to optimize - for bandwidth if you trust the network links between your application and the OpenAI API.""" - - @overload - def __init__( - self, - *, - include_obfuscation: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseTextDeltaEvent(ResponseStreamEvent, discriminator="response.output_text.delta"): - """Emitted when there is an additional text delta. - - :ivar type: The type of the event. Always ``response.output_text.delta``. Required. - RESPONSE_OUTPUT_TEXT_DELTA. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_OUTPUT_TEXT_DELTA - :ivar item_id: The ID of the output item that the text delta was added to. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the text delta was added to. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that the text delta was added to. Required. - :vartype content_index: int - :ivar delta: The text delta that was added. Required. - :vartype delta: str - :ivar sequence_number: The sequence number for this event. Required. - :vartype sequence_number: int - :ivar logprobs: The log probabilities of the tokens in the delta. Required. - :vartype logprobs: list[~azure.ai.agentserver.responses.models.models.ResponseLogProb] - """ - - type: Literal[ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DELTA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.output_text.delta``. Required. - RESPONSE_OUTPUT_TEXT_DELTA.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the text delta was added to. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the text delta was added to. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that the text delta was added to. Required.""" - delta: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text delta that was added. Required.""" - logprobs: list["_models.ResponseLogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The log probabilities of the tokens in the delta. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - delta: str, - sequence_number: int, - logprobs: list["_models.ResponseLogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DELTA # type: ignore - - -class ResponseTextDoneEvent(ResponseStreamEvent, discriminator="response.output_text.done"): - """Emitted when text content is finalized. - - :ivar type: The type of the event. Always ``response.output_text.done``. Required. - RESPONSE_OUTPUT_TEXT_DONE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.RESPONSE_OUTPUT_TEXT_DONE - :ivar item_id: The ID of the output item that the text content is finalized. Required. - :vartype item_id: str - :ivar output_index: The index of the output item that the text content is finalized. Required. - :vartype output_index: int - :ivar content_index: The index of the content part that the text content is finalized. - Required. - :vartype content_index: int - :ivar text: The text content that is finalized. Required. - :vartype text: str - :ivar sequence_number: The sequence number for this event. Required. - :vartype sequence_number: int - :ivar logprobs: The log probabilities of the tokens in the delta. Required. - :vartype logprobs: list[~azure.ai.agentserver.responses.models.models.ResponseLogProb] - """ - - type: Literal[ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DONE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.output_text.done``. Required. - RESPONSE_OUTPUT_TEXT_DONE.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the output item that the text content is finalized. Required.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the text content is finalized. Required.""" - content_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the content part that the text content is finalized. Required.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text content that is finalized. Required.""" - logprobs: list["_models.ResponseLogProb"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The log probabilities of the tokens in the delta. Required.""" - - @overload - def __init__( - self, - *, - item_id: str, - output_index: int, - content_index: int, - text: str, - sequence_number: int, - logprobs: list["_models.ResponseLogProb"], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DONE # type: ignore - - -class ResponseTextParam(_Model): - """Configuration options for a text response from the model. Can be plain - text or structured JSON data. Learn more: - - * [Text inputs and outputs](/docs/guides/text) - * [Structured Outputs](/docs/guides/structured-outputs). - - :ivar format: - :vartype format: ~azure.ai.agentserver.responses.models.models.TextResponseFormatConfiguration - :ivar verbosity: Is one of the following types: Literal["low"], Literal["medium"], - Literal["high"] - :vartype verbosity: str or str or str - """ - - format: Optional["_models.TextResponseFormatConfiguration"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - verbosity: Optional[Literal["low", "medium", "high"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Is one of the following types: Literal[\"low\"], Literal[\"medium\"], Literal[\"high\"]""" - - @overload - def __init__( - self, - *, - format: Optional["_models.TextResponseFormatConfiguration"] = None, - verbosity: Optional[Literal["low", "medium", "high"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseUsage(_Model): - """Represents token usage details including input tokens, output tokens, a breakdown of output - tokens, and the total tokens used. - - :ivar input_tokens: The number of input tokens. Required. - :vartype input_tokens: int - :ivar input_tokens_details: A detailed breakdown of the input tokens. Required. - :vartype input_tokens_details: - ~azure.ai.agentserver.responses.models.models.ResponseUsageInputTokensDetails - :ivar output_tokens: The number of output tokens. Required. - :vartype output_tokens: int - :ivar output_tokens_details: A detailed breakdown of the output tokens. Required. - :vartype output_tokens_details: - ~azure.ai.agentserver.responses.models.models.ResponseUsageOutputTokensDetails - :ivar total_tokens: The total number of tokens used. Required. - :vartype total_tokens: int - """ - - input_tokens: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The number of input tokens. Required.""" - input_tokens_details: "_models.ResponseUsageInputTokensDetails" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """A detailed breakdown of the input tokens. Required.""" - output_tokens: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The number of output tokens. Required.""" - output_tokens_details: "_models.ResponseUsageOutputTokensDetails" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """A detailed breakdown of the output tokens. Required.""" - total_tokens: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The total number of tokens used. Required.""" - - @overload - def __init__( - self, - *, - input_tokens: int, - input_tokens_details: "_models.ResponseUsageInputTokensDetails", - output_tokens: int, - output_tokens_details: "_models.ResponseUsageOutputTokensDetails", - total_tokens: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseUsageInputTokensDetails(_Model): - """ResponseUsageInputTokensDetails. - - :ivar cached_tokens: Required. - :vartype cached_tokens: int - """ - - cached_tokens: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - cached_tokens: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseUsageOutputTokensDetails(_Model): - """ResponseUsageOutputTokensDetails. - - :ivar reasoning_tokens: Required. - :vartype reasoning_tokens: int - """ - - reasoning_tokens: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - reasoning_tokens: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class ResponseWebSearchCallCompletedEvent(ResponseStreamEvent, discriminator="response.web_search_call.completed"): - """Emitted when a web search call is completed. - - :ivar type: The type of the event. Always ``response.web_search_call.completed``. Required. - RESPONSE_WEB_SEARCH_CALL_COMPLETED. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_WEB_SEARCH_CALL_COMPLETED - :ivar output_index: The index of the output item that the web search call is associated with. - Required. - :vartype output_index: int - :ivar item_id: Unique ID for the output item associated with the web search call. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the web search call being processed. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_COMPLETED] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.web_search_call.completed``. Required. - RESPONSE_WEB_SEARCH_CALL_COMPLETED.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the web search call is associated with. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique ID for the output item associated with the web search call. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_COMPLETED # type: ignore - - -class ResponseWebSearchCallInProgressEvent(ResponseStreamEvent, discriminator="response.web_search_call.in_progress"): - """Emitted when a web search call is initiated. - - :ivar type: The type of the event. Always ``response.web_search_call.in_progress``. Required. - RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS - :ivar output_index: The index of the output item that the web search call is associated with. - Required. - :vartype output_index: int - :ivar item_id: Unique ID for the output item associated with the web search call. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the web search call being processed. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.web_search_call.in_progress``. Required. - RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the web search call is associated with. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique ID for the output item associated with the web search call. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS # type: ignore - - -class ResponseWebSearchCallSearchingEvent(ResponseStreamEvent, discriminator="response.web_search_call.searching"): - """Emitted when a web search call is executing. - - :ivar type: The type of the event. Always ``response.web_search_call.searching``. Required. - RESPONSE_WEB_SEARCH_CALL_SEARCHING. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.RESPONSE_WEB_SEARCH_CALL_SEARCHING - :ivar output_index: The index of the output item that the web search call is associated with. - Required. - :vartype output_index: int - :ivar item_id: Unique ID for the output item associated with the web search call. Required. - :vartype item_id: str - :ivar sequence_number: The sequence number of the web search call being processed. Required. - :vartype sequence_number: int - """ - - type: Literal[ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_SEARCHING] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the event. Always ``response.web_search_call.searching``. Required. - RESPONSE_WEB_SEARCH_CALL_SEARCHING.""" - output_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the output item that the web search call is associated with. Required.""" - item_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique ID for the output item associated with the web search call. Required.""" - - @overload - def __init__( - self, - *, - output_index: int, - item_id: str, - sequence_number: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_SEARCHING # type: ignore - - -class ScreenshotParam(ComputerAction, discriminator="screenshot"): - """Screenshot. - - :ivar type: Specifies the event type. For a screenshot action, this property is always set to - ``screenshot``. Required. SCREENSHOT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SCREENSHOT - """ - - type: Literal[ComputerActionType.SCREENSHOT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a screenshot action, this property is always set to - ``screenshot``. Required. SCREENSHOT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.SCREENSHOT # type: ignore - - -class ScrollParam(ComputerAction, discriminator="scroll"): - """Scroll. - - :ivar type: Specifies the event type. For a scroll action, this property is always set to - ``scroll``. Required. SCROLL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SCROLL - :ivar x: The x-coordinate where the scroll occurred. Required. - :vartype x: int - :ivar y: The y-coordinate where the scroll occurred. Required. - :vartype y: int - :ivar scroll_x: The horizontal scroll distance. Required. - :vartype scroll_x: int - :ivar scroll_y: The vertical scroll distance. Required. - :vartype scroll_y: int - """ - - type: Literal[ComputerActionType.SCROLL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a scroll action, this property is always set to ``scroll``. - Required. SCROLL.""" - x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The x-coordinate where the scroll occurred. Required.""" - y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The y-coordinate where the scroll occurred. Required.""" - scroll_x: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The horizontal scroll distance. Required.""" - scroll_y: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The vertical scroll distance. Required.""" - - @overload - def __init__( - self, - *, - x: int, - y: int, - scroll_x: int, - scroll_y: int, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.SCROLL # type: ignore - - -class SharepointGroundingToolCall(OutputItem, discriminator="sharepoint_grounding_preview_call"): - """A SharePoint grounding tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. SHAREPOINT_GROUNDING_PREVIEW_CALL. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.SHAREPOINT_GROUNDING_PREVIEW_CALL - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar arguments: A JSON string of the arguments to pass to the tool. Required. - :vartype arguments: str - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.SHAREPOINT_GROUNDING_PREVIEW_CALL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. SHAREPOINT_GROUNDING_PREVIEW_CALL.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - arguments: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A JSON string of the arguments to pass to the tool. Required.""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - arguments: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.SHAREPOINT_GROUNDING_PREVIEW_CALL # type: ignore - - -class SharepointGroundingToolCallOutput(OutputItem, discriminator="sharepoint_grounding_preview_call_output"): - """The output of a SharePoint grounding tool call. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT - :ivar call_id: The unique ID of the tool call generated by the model. Required. - :vartype call_id: str - :ivar output: The output from the SharePoint grounding tool call. Is one of the following - types: {str: Any}, str, [Any] - :vartype output: dict[str, any] or str or list[any] - :ivar status: The status of the tool call. Required. Known values are: "in_progress", - "completed", "incomplete", and "failed". - :vartype status: str or ~azure.ai.agentserver.responses.models.models.ToolCallStatus - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT.""" - call_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The unique ID of the tool call generated by the model. Required.""" - output: Optional["_types.ToolCallOutputContent"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The output from the SharePoint grounding tool call. Is one of the following types: {str: Any}, - str, [Any]""" - status: Union[str, "_models.ToolCallStatus"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", - \"incomplete\", and \"failed\".""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - call_id: str, - status: Union[str, "_models.ToolCallStatus"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - output: Optional["_types.ToolCallOutputContent"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT # type: ignore - - -class SharepointGroundingToolParameters(_Model): - """The sharepoint grounding tool parameters. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connections: The project connections attached to this tool. There can be a - maximum of 1 connection resource attached to the tool. - :vartype project_connections: - list[~azure.ai.agentserver.responses.models.models.ToolProjectConnection] - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connections: Optional[list["_models.ToolProjectConnection"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The project connections attached to this tool. There can be a maximum of 1 connection resource - attached to the tool.""" - - @overload - def __init__( - self, - *, - name: Optional[str] = None, - description: Optional[str] = None, - project_connections: Optional[list["_models.ToolProjectConnection"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class SharepointPreviewTool(Tool, discriminator="sharepoint_grounding_preview"): - """The input definition information for a sharepoint tool as used to configure an agent. - - :ivar type: The object type, which is always 'sharepoint_grounding_preview'. Required. - SHAREPOINT_GROUNDING_PREVIEW. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.SHAREPOINT_GROUNDING_PREVIEW - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar sharepoint_grounding_preview: The sharepoint grounding tool parameters. Required. - :vartype sharepoint_grounding_preview: - ~azure.ai.agentserver.responses.models.models.SharepointGroundingToolParameters - """ - - type: Literal[ToolType.SHAREPOINT_GROUNDING_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'sharepoint_grounding_preview'. Required. - SHAREPOINT_GROUNDING_PREVIEW.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - sharepoint_grounding_preview: "_models.SharepointGroundingToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The sharepoint grounding tool parameters. Required.""" - - @overload - def __init__( - self, - *, - sharepoint_grounding_preview: "_models.SharepointGroundingToolParameters", - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.SHAREPOINT_GROUNDING_PREVIEW # type: ignore - - -class SkillReferenceParam(ContainerSkill, discriminator="skill_reference"): - """SkillReferenceParam. - - :ivar type: References a skill created with the /v1/skills endpoint. Required. SKILL_REFERENCE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SKILL_REFERENCE - :ivar skill_id: The ID of the referenced skill. Required. - :vartype skill_id: str - :ivar version: Optional skill version. Use a positive integer or 'latest'. Omit for default. - :vartype version: str - """ - - type: Literal[ContainerSkillType.SKILL_REFERENCE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """References a skill created with the /v1/skills endpoint. Required. SKILL_REFERENCE.""" - skill_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the referenced skill. Required.""" - version: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional skill version. Use a positive integer or 'latest'. Omit for default.""" - - @overload - def __init__( - self, - *, - skill_id: str, - version: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ContainerSkillType.SKILL_REFERENCE # type: ignore - - -class ToolChoiceParam(_Model): - """How the model should select which tool (or tools) to use when generating a response. See the - ``tools`` parameter to see how to specify which tools the model can call. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - ToolChoiceAllowed, SpecificApplyPatchParam, ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, ToolChoiceCustom, ToolChoiceFileSearch, ToolChoiceFunction, - ToolChoiceImageGeneration, ToolChoiceMCP, SpecificFunctionShellParam, - ToolChoiceWebSearchPreview, ToolChoiceWebSearchPreview20250311 - - :ivar type: Required. Known values are: "allowed_tools", "function", "mcp", "custom", - "apply_patch", "shell", "file_search", "web_search_preview", "computer_use_preview", - "web_search_preview_2025_03_11", "image_generation", and "code_interpreter". - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ToolChoiceParamType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"allowed_tools\", \"function\", \"mcp\", \"custom\", - \"apply_patch\", \"shell\", \"file_search\", \"web_search_preview\", \"computer_use_preview\", - \"web_search_preview_2025_03_11\", \"image_generation\", and \"code_interpreter\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class SpecificApplyPatchParam(ToolChoiceParam, discriminator="apply_patch"): - """Specific apply patch tool choice. - - :ivar type: The tool to call. Always ``apply_patch``. Required. APPLY_PATCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.APPLY_PATCH - """ - - type: Literal[ToolChoiceParamType.APPLY_PATCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The tool to call. Always ``apply_patch``. Required. APPLY_PATCH.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.APPLY_PATCH # type: ignore - - -class SpecificFunctionShellParam(ToolChoiceParam, discriminator="shell"): - """Specific shell tool choice. - - :ivar type: The tool to call. Always ``shell``. Required. SHELL. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SHELL - """ - - type: Literal[ToolChoiceParamType.SHELL] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The tool to call. Always ``shell``. Required. SHELL.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.SHELL # type: ignore - - -class StructuredOutputDefinition(_Model): - """A structured output that can be produced by the agent. - - :ivar name: The name of the structured output. Required. - :vartype name: str - :ivar description: A description of the output to emit. Used by the model to determine when to - emit the output. Required. - :vartype description: str - :ivar schema: The JSON schema for the structured output. Required. - :vartype schema: dict[str, any] - :ivar strict: Whether to enforce strict validation. Default ``true``. Required. - :vartype strict: bool - """ - - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the structured output. Required.""" - description: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A description of the output to emit. Used by the model to determine when to emit the output. - Required.""" - schema: dict[str, Any] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The JSON schema for the structured output. Required.""" - strict: bool = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Whether to enforce strict validation. Default ``true``. Required.""" - - @overload - def __init__( - self, - *, - name: str, - description: str, - schema: dict[str, Any], - strict: bool, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class StructuredOutputsOutputItem(OutputItem, discriminator="structured_outputs"): - """StructuredOutputsOutputItem. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. STRUCTURED_OUTPUTS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.STRUCTURED_OUTPUTS - :ivar output: The structured output captured during the response. Required. - :vartype output: any - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.STRUCTURED_OUTPUTS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. STRUCTURED_OUTPUTS.""" - output: Any = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The structured output captured during the response. Required.""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - output: Any, - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.STRUCTURED_OUTPUTS # type: ignore - - -class SummaryTextContent(MessageContent, discriminator="summary_text"): - """Summary text. - - :ivar type: The type of the object. Always ``summary_text``. Required. SUMMARY_TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.SUMMARY_TEXT - :ivar text: A summary of the reasoning output from the model so far. Required. - :vartype text: str - """ - - type: Literal[MessageContentType.SUMMARY_TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the object. Always ``summary_text``. Required. SUMMARY_TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A summary of the reasoning output from the model so far. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.SUMMARY_TEXT # type: ignore - - -class TextContent(MessageContent, discriminator="text"): - """Text Content. - - :ivar type: Required. TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TEXT - :ivar text: Required. - :vartype text: str - """ - - type: Literal[MessageContentType.TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. TEXT.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = MessageContentType.TEXT # type: ignore - - -class TextResponseFormatConfiguration(_Model): - """An object specifying the format that the model must output. Configuring ``{ "type": - "json_schema" }`` enables Structured Outputs, which ensures the model will match your supplied - JSON schema. Learn more in the `Structured Outputs guide `_. - The default format is ``{ "type": "text" }`` with no additional options. *Not recommended for - gpt-4o and newer models:** Setting to ``{ "type": "json_object" }`` enables the older JSON - mode, which ensures the message the model generates is valid JSON. Using ``json_schema`` is - preferred for models that support it. - - You probably want to use the sub-classes and not this class directly. Known sub-classes are: - TextResponseFormatConfigurationResponseFormatJsonObject, TextResponseFormatJsonSchema, - TextResponseFormatConfigurationResponseFormatText - - :ivar type: Required. Known values are: "text", "json_schema", and "json_object". - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.TextResponseFormatConfigurationType - """ - - __mapping__: dict[str, _Model] = {} - type: str = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) - """Required. Known values are: \"text\", \"json_schema\", and \"json_object\".""" - - @overload - def __init__( - self, - *, - type: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class TextResponseFormatConfigurationResponseFormatJsonObject( - TextResponseFormatConfiguration, discriminator="json_object" -): # pylint: disable=name-too-long - """JSON object. - - :ivar type: The type of response format being defined. Always ``json_object``. Required. - JSON_OBJECT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.JSON_OBJECT - """ - - type: Literal[TextResponseFormatConfigurationType.JSON_OBJECT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of response format being defined. Always ``json_object``. Required. JSON_OBJECT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = TextResponseFormatConfigurationType.JSON_OBJECT # type: ignore - - -class TextResponseFormatConfigurationResponseFormatText( - TextResponseFormatConfiguration, discriminator="text" -): # pylint: disable=name-too-long - """Text. - - :ivar type: The type of response format being defined. Always ``text``. Required. TEXT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TEXT - """ - - type: Literal[TextResponseFormatConfigurationType.TEXT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of response format being defined. Always ``text``. Required. TEXT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = TextResponseFormatConfigurationType.TEXT # type: ignore - - -class TextResponseFormatJsonSchema(TextResponseFormatConfiguration, discriminator="json_schema"): - """JSON schema. - - :ivar type: The type of response format being defined. Always ``json_schema``. Required. - JSON_SCHEMA. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.JSON_SCHEMA - :ivar description: A description of what the response format is for, used by the model to - determine how to respond in the format. - :vartype description: str - :ivar name: The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and - dashes, with a maximum length of 64. Required. - :vartype name: str - :ivar schema: Required. - :vartype schema: ~azure.ai.agentserver.responses.models.models.ResponseFormatJsonSchemaSchema - :ivar strict: - :vartype strict: bool - """ - - type: Literal[TextResponseFormatConfigurationType.JSON_SCHEMA] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of response format being defined. Always ``json_schema``. Required. JSON_SCHEMA.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A description of what the response format is for, used by the model to determine how to respond - in the format.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with - a maximum length of 64. Required.""" - schema: "_models.ResponseFormatJsonSchemaSchema" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Required.""" - strict: Optional[bool] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - name: str, - schema: "_models.ResponseFormatJsonSchemaSchema", - description: Optional[str] = None, - strict: Optional[bool] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = TextResponseFormatConfigurationType.JSON_SCHEMA # type: ignore - - -class ToolChoiceAllowed(ToolChoiceParam, discriminator="allowed_tools"): - """Allowed tools. - - :ivar type: Allowed tool configuration type. Always ``allowed_tools``. Required. ALLOWED_TOOLS. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.ALLOWED_TOOLS - :ivar mode: Constrains the tools available to the model to a pre-defined set. ``auto`` allows - the model to pick from among the allowed tools and generate a message. ``required`` requires - the model to call one or more of the allowed tools. Required. Is either a Literal["auto"] type - or a Literal["required"] type. - :vartype mode: str or str - :ivar tools: A list of tool definitions that the model should be allowed to call. For the - Responses API, the list of tool definitions might look like: - - .. code-block:: json - - [ - { "type": "function", "name": "get_weather" }, - { "type": "mcp", "server_label": "deepwiki" }, - { "type": "image_generation" } - ]. Required. - :vartype tools: list[dict[str, any]] - """ - - type: Literal[ToolChoiceParamType.ALLOWED_TOOLS] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Allowed tool configuration type. Always ``allowed_tools``. Required. ALLOWED_TOOLS.""" - mode: Literal["auto", "required"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Constrains the tools available to the model to a pre-defined set. ``auto`` allows the model to - pick from among the allowed tools and generate a message. ``required`` requires the model to - call one or more of the allowed tools. Required. Is either a Literal[\"auto\"] type or a - Literal[\"required\"] type.""" - tools: list[dict[str, Any]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A list of tool definitions that the model should be allowed to call. For the Responses API, the - list of tool definitions might look like: - - .. code-block:: json - - [ - { \"type\": \"function\", \"name\": \"get_weather\" }, - { \"type\": \"mcp\", \"server_label\": \"deepwiki\" }, - { \"type\": \"image_generation\" } - ]. Required.""" - - @overload - def __init__( - self, - *, - mode: Literal["auto", "required"], - tools: list[dict[str, Any]], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.ALLOWED_TOOLS # type: ignore - - -class ToolChoiceCodeInterpreter(ToolChoiceParam, discriminator="code_interpreter"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. CODE_INTERPRETER. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CODE_INTERPRETER - """ - - type: Literal[ToolChoiceParamType.CODE_INTERPRETER] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. CODE_INTERPRETER.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.CODE_INTERPRETER # type: ignore - - -class ToolChoiceComputerUsePreview(ToolChoiceParam, discriminator="computer_use_preview"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. COMPUTER_USE_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.COMPUTER_USE_PREVIEW - """ - - type: Literal[ToolChoiceParamType.COMPUTER_USE_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. COMPUTER_USE_PREVIEW.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.COMPUTER_USE_PREVIEW # type: ignore - - -class ToolChoiceCustom(ToolChoiceParam, discriminator="custom"): - """Custom tool. - - :ivar type: For custom tool calling, the type is always ``custom``. Required. CUSTOM. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.CUSTOM - :ivar name: The name of the custom tool to call. Required. - :vartype name: str - """ - - type: Literal[ToolChoiceParamType.CUSTOM] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """For custom tool calling, the type is always ``custom``. Required. CUSTOM.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the custom tool to call. Required.""" - - @overload - def __init__( - self, - *, - name: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.CUSTOM # type: ignore - - -class ToolChoiceFileSearch(ToolChoiceParam, discriminator="file_search"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. FILE_SEARCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FILE_SEARCH - """ - - type: Literal[ToolChoiceParamType.FILE_SEARCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. FILE_SEARCH.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.FILE_SEARCH # type: ignore - - -class ToolChoiceFunction(ToolChoiceParam, discriminator="function"): - """Function tool. - - :ivar type: For function calling, the type is always ``function``. Required. FUNCTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.FUNCTION - :ivar name: The name of the function to call. Required. - :vartype name: str - """ - - type: Literal[ToolChoiceParamType.FUNCTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """For function calling, the type is always ``function``. Required. FUNCTION.""" - name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The name of the function to call. Required.""" - - @overload - def __init__( - self, - *, - name: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.FUNCTION # type: ignore - - -class ToolChoiceImageGeneration(ToolChoiceParam, discriminator="image_generation"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. IMAGE_GENERATION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.IMAGE_GENERATION - """ - - type: Literal[ToolChoiceParamType.IMAGE_GENERATION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. IMAGE_GENERATION.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.IMAGE_GENERATION # type: ignore - - -class ToolChoiceMCP(ToolChoiceParam, discriminator="mcp"): - """MCP tool. - - :ivar type: For MCP tools, the type is always ``mcp``. Required. MCP. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.MCP - :ivar server_label: The label of the MCP server to use. Required. - :vartype server_label: str - :ivar name: - :vartype name: str - """ - - type: Literal[ToolChoiceParamType.MCP] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """For MCP tools, the type is always ``mcp``. Required. MCP.""" - server_label: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The label of the MCP server to use. Required.""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - server_label: str, - name: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.MCP # type: ignore - - -class ToolChoiceWebSearchPreview(ToolChoiceParam, discriminator="web_search_preview"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. WEB_SEARCH_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_PREVIEW - """ - - type: Literal[ToolChoiceParamType.WEB_SEARCH_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. WEB_SEARCH_PREVIEW.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.WEB_SEARCH_PREVIEW # type: ignore - - -class ToolChoiceWebSearchPreview20250311(ToolChoiceParam, discriminator="web_search_preview_2025_03_11"): - """Indicates that the model should use a built-in tool to generate a response. `Learn more about - built-in tools `_. - - :ivar type: Required. WEB_SEARCH_PREVIEW2025_03_11. - :vartype type: str or - ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_PREVIEW2025_03_11 - """ - - type: Literal[ToolChoiceParamType.WEB_SEARCH_PREVIEW2025_03_11] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. WEB_SEARCH_PREVIEW2025_03_11.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolChoiceParamType.WEB_SEARCH_PREVIEW2025_03_11 # type: ignore - - -class ToolProjectConnection(_Model): - """A project connection resource. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connection_id: A project connection in a ToolProjectConnectionList attached to - this tool. Required. - :vartype project_connection_id: str - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """A project connection in a ToolProjectConnectionList attached to this tool. Required.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class TopLogProb(_Model): - """Top log probability. - - :ivar token: Required. - :vartype token: str - :ivar logprob: Required. - :vartype logprob: int - :ivar bytes: Required. - :vartype bytes: list[int] - """ - - token: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - logprob: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - bytes: list[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - token: str, - logprob: int, - bytes: list[int], - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class TypeParam(ComputerAction, discriminator="type"): - """Type. - - :ivar type: Specifies the event type. For a type action, this property is always set to - ``type``. Required. TYPE. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.TYPE - :ivar text: The text to type. Required. - :vartype text: str - """ - - type: Literal[ComputerActionType.TYPE] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a type action, this property is always set to ``type``. Required. - TYPE.""" - text: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The text to type. Required.""" - - @overload - def __init__( - self, - *, - text: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.TYPE # type: ignore - - -class UrlCitationBody(Annotation, discriminator="url_citation"): - """URL citation. - - :ivar type: The type of the URL citation. Always ``url_citation``. Required. URL_CITATION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.URL_CITATION - :ivar url: The URL of the web resource. Required. - :vartype url: str - :ivar start_index: The index of the first character of the URL citation in the message. - Required. - :vartype start_index: int - :ivar end_index: The index of the last character of the URL citation in the message. Required. - :vartype end_index: int - :ivar title: The title of the web resource. Required. - :vartype title: str - """ - - type: Literal[AnnotationType.URL_CITATION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the URL citation. Always ``url_citation``. Required. URL_CITATION.""" - url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the web resource. Required.""" - start_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the first character of the URL citation in the message. Required.""" - end_index: int = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The index of the last character of the URL citation in the message. Required.""" - title: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The title of the web resource. Required.""" - - @overload - def __init__( - self, - *, - url: str, - start_index: int, - end_index: int, - title: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = AnnotationType.URL_CITATION # type: ignore - - -class UserProfileMemoryItem(MemoryItem, discriminator="user_profile"): - """A memory item specifically containing user profile information extracted from conversations, - such as preferences, interests, and personal details. - - :ivar memory_id: The unique ID of the memory item. Required. - :vartype memory_id: str - :ivar updated_at: The last update time of the memory item. Required. - :vartype updated_at: ~datetime.datetime - :ivar scope: The namespace that logically groups and isolates memories, such as a user ID. - Required. - :vartype scope: str - :ivar content: The content of the memory. Required. - :vartype content: str - :ivar kind: The kind of the memory item. Required. User profile information extracted from - conversations. - :vartype kind: str or ~azure.ai.agentserver.responses.models.models.USER_PROFILE - """ - - kind: Literal[MemoryItemKind.USER_PROFILE] = rest_discriminator(name="kind", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The kind of the memory item. Required. User profile information extracted from conversations.""" - - @overload - def __init__( - self, - *, - memory_id: str, - updated_at: datetime.datetime, - scope: str, - content: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.kind = MemoryItemKind.USER_PROFILE # type: ignore - - -class VectorStoreFileAttributes(_Model): - """Set of 16 key-value pairs that can be attached to an object. This can be useful for storing - additional information about the object in a structured format, and querying for objects via - API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are - strings with a maximum length of 512 characters, booleans, or numbers. - - """ - - -class WaitParam(ComputerAction, discriminator="wait"): - """Wait. - - :ivar type: Specifies the event type. For a wait action, this property is always set to - ``wait``. Required. WAIT. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WAIT - """ - - type: Literal[ComputerActionType.WAIT] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Specifies the event type. For a wait action, this property is always set to ``wait``. Required. - WAIT.""" - - @overload - def __init__( - self, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ComputerActionType.WAIT # type: ignore - - -class WebSearchActionFind(_Model): - """Find action. - - :ivar type: The action type. Required. Default value is "find_in_page". - :vartype type: str - :ivar url: The URL of the page searched for the pattern. Required. - :vartype url: str - :ivar pattern: The pattern or text to search for within the page. Required. - :vartype pattern: str - """ - - type: Literal["find_in_page"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The action type. Required. Default value is \"find_in_page\".""" - url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL of the page searched for the pattern. Required.""" - pattern: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The pattern or text to search for within the page. Required.""" - - @overload - def __init__( - self, - *, - url: str, - pattern: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["find_in_page"] = "find_in_page" - - -class WebSearchActionOpenPage(_Model): - """Open page action. - - :ivar type: The action type. Required. Default value is "open_page". - :vartype type: str - :ivar url: The URL opened by the model. - :vartype url: str - """ - - type: Literal["open_page"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The action type. Required. Default value is \"open_page\".""" - url: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The URL opened by the model.""" - - @overload - def __init__( - self, - *, - url: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["open_page"] = "open_page" - - -class WebSearchActionSearch(_Model): - """Search action. - - :ivar type: The action type. Required. Default value is "search". - :vartype type: str - :ivar query: [DEPRECATED] The search query. Required. - :vartype query: str - :ivar queries: Search queries. - :vartype queries: list[str] - :ivar sources: Web search sources. - :vartype sources: - list[~azure.ai.agentserver.responses.models.models.WebSearchActionSearchSources] - """ - - type: Literal["search"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The action type. Required. Default value is \"search\".""" - query: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """[DEPRECATED] The search query. Required.""" - queries: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Search queries.""" - sources: Optional[list["_models.WebSearchActionSearchSources"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Web search sources.""" - - @overload - def __init__( - self, - *, - query: str, - queries: Optional[list[str]] = None, - sources: Optional[list["_models.WebSearchActionSearchSources"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["search"] = "search" - - -class WebSearchActionSearchSources(_Model): - """WebSearchActionSearchSources. - - :ivar type: Required. Default value is "url". - :vartype type: str - :ivar url: Required. - :vartype url: str - """ - - type: Literal["url"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required. Default value is \"url\".""" - url: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - url: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["url"] = "url" - - -class WebSearchApproximateLocation(_Model): - """Web search approximate location. - - :ivar type: The type of location approximation. Always ``approximate``. Required. Default value - is "approximate". - :vartype type: str - :ivar country: - :vartype country: str - :ivar region: - :vartype region: str - :ivar city: - :vartype city: str - :ivar timezone: - :vartype timezone: str - """ - - type: Literal["approximate"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The type of location approximation. Always ``approximate``. Required. Default value is - \"approximate\".""" - country: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - region: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - city: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - timezone: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - country: Optional[str] = None, - region: Optional[str] = None, - city: Optional[str] = None, - timezone: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type: Literal["approximate"] = "approximate" - - -class WebSearchConfiguration(_Model): - """A web search configuration for bing custom search. - - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar project_connection_id: Project connection id for grounding with bing custom search. - Required. - :vartype project_connection_id: str - :ivar instance_name: Name of the custom configuration instance given to config. Required. - :vartype instance_name: str - """ - - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Project connection id for grounding with bing custom search. Required.""" - instance_name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Name of the custom configuration instance given to config. Required.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - instance_name: str, - name: Optional[str] = None, - description: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class WebSearchPreviewTool(Tool, discriminator="web_search_preview"): - """Web search preview. - - :ivar type: The type of the web search tool. One of ``web_search_preview`` or - ``web_search_preview_2025_03_11``. Required. WEB_SEARCH_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH_PREVIEW - :ivar user_location: - :vartype user_location: ~azure.ai.agentserver.responses.models.models.ApproximateLocation - :ivar search_context_size: High level guidance for the amount of context window space to use - for the search. One of ``low``, ``medium``, or ``high``. ``medium`` is the default. Known - values are: "low", "medium", and "high". - :vartype search_context_size: str or - ~azure.ai.agentserver.responses.models.models.SearchContextSize - """ - - type: Literal[ToolType.WEB_SEARCH_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the web search tool. One of ``web_search_preview`` or - ``web_search_preview_2025_03_11``. Required. WEB_SEARCH_PREVIEW.""" - user_location: Optional["_models.ApproximateLocation"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - search_context_size: Optional[Union[str, "_models.SearchContextSize"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """High level guidance for the amount of context window space to use for the search. One of - ``low``, ``medium``, or ``high``. ``medium`` is the default. Known values are: \"low\", - \"medium\", and \"high\".""" - - @overload - def __init__( - self, - *, - user_location: Optional["_models.ApproximateLocation"] = None, - search_context_size: Optional[Union[str, "_models.SearchContextSize"]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.WEB_SEARCH_PREVIEW # type: ignore - - -class WebSearchTool(Tool, discriminator="web_search"): - """Web search. - - :ivar type: The type of the web search tool. One of ``web_search`` or - ``web_search_2025_08_26``. Required. WEB_SEARCH. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WEB_SEARCH - :ivar filters: - :vartype filters: ~azure.ai.agentserver.responses.models.models.WebSearchToolFilters - :ivar user_location: - :vartype user_location: - ~azure.ai.agentserver.responses.models.models.WebSearchApproximateLocation - :ivar search_context_size: High level guidance for the amount of context window space to use - for the search. One of ``low``, ``medium``, or ``high``. ``medium`` is the default. Is one of - the following types: Literal["low"], Literal["medium"], Literal["high"] - :vartype search_context_size: str or str or str - :ivar name: Optional user-defined name for this tool or configuration. - :vartype name: str - :ivar description: Optional user-defined description for this tool or configuration. - :vartype description: str - :ivar custom_search_configuration: The project connections attached to this tool. There can be - a maximum of 1 connection resource attached to the tool. - :vartype custom_search_configuration: - ~azure.ai.agentserver.responses.models.models.WebSearchConfiguration - """ - - type: Literal[ToolType.WEB_SEARCH] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The type of the web search tool. One of ``web_search`` or ``web_search_2025_08_26``. Required. - WEB_SEARCH.""" - filters: Optional["_models.WebSearchToolFilters"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - user_location: Optional["_models.WebSearchApproximateLocation"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - search_context_size: Optional[Literal["low", "medium", "high"]] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """High level guidance for the amount of context window space to use for the search. One of - ``low``, ``medium``, or ``high``. ``medium`` is the default. Is one of the following types: - Literal[\"low\"], Literal[\"medium\"], Literal[\"high\"]""" - name: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined name for this tool or configuration.""" - description: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Optional user-defined description for this tool or configuration.""" - custom_search_configuration: Optional["_models.WebSearchConfiguration"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The project connections attached to this tool. There can be a maximum of 1 connection resource - attached to the tool.""" - - @overload - def __init__( - self, - *, - filters: Optional["_models.WebSearchToolFilters"] = None, - user_location: Optional["_models.WebSearchApproximateLocation"] = None, - search_context_size: Optional[Literal["low", "medium", "high"]] = None, - name: Optional[str] = None, - description: Optional[str] = None, - custom_search_configuration: Optional["_models.WebSearchConfiguration"] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.WEB_SEARCH # type: ignore - - -class WebSearchToolFilters(_Model): - """WebSearchToolFilters. - - :ivar allowed_domains: - :vartype allowed_domains: list[str] - """ - - allowed_domains: Optional[list[str]] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - - @overload - def __init__( - self, - *, - allowed_domains: Optional[list[str]] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - - -class WorkflowActionOutputItem(OutputItem, discriminator="workflow_action"): - """WorkflowActionOutputItem. - - :ivar agent_reference: The agent that created the item. - :vartype agent_reference: ~azure.ai.agentserver.responses.models.models.AgentReference - :ivar response_id: The response on which the item is created. - :vartype response_id: str - :ivar type: Required. WORKFLOW_ACTION. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WORKFLOW_ACTION - :ivar kind: The kind of CSDL action (e.g., 'SetVariable', 'InvokeAzureAgent'). Required. - :vartype kind: str - :ivar action_id: Unique identifier for the action. Required. - :vartype action_id: str - :ivar parent_action_id: ID of the parent action if this is a nested action. - :vartype parent_action_id: str - :ivar previous_action_id: ID of the previous action if this action follows another. - :vartype previous_action_id: str - :ivar status: Status of the action (e.g., 'in_progress', 'completed', 'failed', 'cancelled'). - Required. Is one of the following types: Literal["completed"], Literal["failed"], - Literal["in_progress"], Literal["cancelled"] - :vartype status: str or str or str or str - :ivar id: Required. - :vartype id: str - """ - - type: Literal[OutputItemType.WORKFLOW_ACTION] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """Required. WORKFLOW_ACTION.""" - kind: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The kind of CSDL action (e.g., 'SetVariable', 'InvokeAzureAgent'). Required.""" - action_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Unique identifier for the action. Required.""" - parent_action_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """ID of the parent action if this is a nested action.""" - previous_action_id: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """ID of the previous action if this action follows another.""" - status: Literal["completed", "failed", "in_progress", "cancelled"] = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """Status of the action (e.g., 'in_progress', 'completed', 'failed', 'cancelled'). Required. Is - one of the following types: Literal[\"completed\"], Literal[\"failed\"], - Literal[\"in_progress\"], Literal[\"cancelled\"]""" - id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """Required.""" - - @overload - def __init__( - self, - *, - kind: str, - action_id: str, - status: Literal["completed", "failed", "in_progress", "cancelled"], - id: str, # pylint: disable=redefined-builtin - agent_reference: Optional["_models.AgentReference"] = None, - response_id: Optional[str] = None, - parent_action_id: Optional[str] = None, - previous_action_id: Optional[str] = None, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = OutputItemType.WORKFLOW_ACTION # type: ignore - - -class WorkIQPreviewTool(Tool, discriminator="work_iq_preview"): - """A WorkIQ server-side tool. - - :ivar type: The object type, which is always 'work_iq_preview'. Required. WORK_IQ_PREVIEW. - :vartype type: str or ~azure.ai.agentserver.responses.models.models.WORK_IQ_PREVIEW - :ivar work_iq_preview: The WorkIQ tool parameters. Required. - :vartype work_iq_preview: - ~azure.ai.agentserver.responses.models.models.WorkIQPreviewToolParameters - """ - - type: Literal[ToolType.WORK_IQ_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'work_iq_preview'. Required. WORK_IQ_PREVIEW.""" - work_iq_preview: "_models.WorkIQPreviewToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The WorkIQ tool parameters. Required.""" - - @overload - def __init__( - self, - *, - work_iq_preview: "_models.WorkIQPreviewToolParameters", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) - self.type = ToolType.WORK_IQ_PREVIEW # type: ignore - - -class WorkIQPreviewToolParameters(_Model): - """The WorkIQ tool parameters. - - :ivar project_connection_id: The ID of the WorkIQ project connection. Required. - :vartype project_connection_id: str - """ - - project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) - """The ID of the WorkIQ project connection. Required.""" - - @overload - def __init__( - self, - *, - project_connection_id: str, - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw JSON to initialize the model. - :type mapping: Mapping[str, Any] - """ - - def __init__(self, *args: Any, **kwargs: Any) -> None: - super().__init__(*args, **kwargs) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_patch.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_patch.py deleted file mode 100644 index 9f85da657361..000000000000 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/sdk/models/models/_patch.py +++ /dev/null @@ -1,225 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- -"""Hand-written customizations injected into the generated models package. - -This file is copied over the generated ``_patch.py`` inside -``sdk/models/models/`` by ``make generate-models``. Anything listed in -``__all__`` is automatically re-exported by the generated ``__init__.py``, -shadowing the generated class of the same name. - -Approach follows the official customization guide: -https://aka.ms/azsdk/python/dpcodegen/python/customize -""" - -from enum import Enum -from typing import TYPE_CHECKING, Any, Optional - -from azure.core import CaseInsensitiveEnumMeta - -from .._utils.model_base import rest_field -from ._models import CreateResponse as CreateResponseGenerated -from ._models import ResponseObject as ResponseObjectGenerated -from ._models import ToolChoiceAllowed as ToolChoiceAllowedGenerated - -if TYPE_CHECKING: - from ._models import OutputItem - -_VISIBILITY = ["read", "create", "update", "delete", "query"] - - -class ResponseIncompleteReason(str, Enum, metaclass=CaseInsensitiveEnumMeta): - """Reason a response finished as incomplete. - - The upstream TypeSpec defines this as an inline literal union - (``"max_output_tokens" | "content_filter"``), so the code generator - emits ``Literal[...]`` instead of a named enum. This hand-written - enum provides a friendlier symbolic constant for SDK consumers. - """ - - MAX_OUTPUT_TOKENS = "max_output_tokens" - """The response was cut short because the maximum output token limit was reached.""" - CONTENT_FILTER = "content_filter" - """The response was cut short because of a content filter.""" - - -# --------------------------------------------------------------------------- -# Fix temperature / top_p types: numeric → float (emitter bug workaround) -# -# The upstream TypeSpec defines temperature and top_p as ``numeric | null`` -# (the abstract base scalar for all numbers). The TypeSpec emitter correctly -# maps this to ``double?`` but @azure-tools/typespec-python@0.61.2 maps -# ``numeric`` → ``int``. The OpenAPI 3 spec emits ``type: number`` -# (i.e. float), so ``int`` is wrong. -# -# Per the official customization guide we subclass the generated models and -# re-declare the affected fields with the correct type. The generated -# ``__init__.py`` picks up these subclasses via ``from ._patch import *`` -# which shadows the generated names. -# -# Additionally, we override fields whose generated docstrings contain -# duplicate RST link targets (``Learn more``) or malformed bullet lists -# that break ``sphinx-build -W``. -# --------------------------------------------------------------------------- - -# -- Docstrings for fields with "Learn more" links -------------------------- -# RST named hyperlinks (single trailing ``_``) must be unique per page. -# Because CreateResponse and ResponseObject both share these fields, and -# both appear on the same Sphinx page, the identical "Learn more" targets -# collide. Anonymous hyperlinks (double ``__``) avoid the conflict. - - -class CreateResponse(CreateResponseGenerated): - """Override generated ``CreateResponse`` to correct temperature/top_p types.""" - - temperature: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Sampling temperature. Float between 0 and 2.""" - top_p: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Nucleus sampling parameter. Float between 0 and 1.""" - user: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """This field is being replaced by ``safety_identifier`` and - ``prompt_cache_key``. Use ``prompt_cache_key`` instead to maintain - caching optimizations. A stable identifier for your end-users. - Used to boost cache hit rates by better bucketing similar requests - and to help OpenAI detect and prevent abuse. - `Learn more `__.""" - safety_identifier: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A stable identifier used to help detect users of your application - that may be violating OpenAI's usage policies. The IDs should be a - string that uniquely identifies each user. We recommend hashing - their username or email address, in order to avoid sending us any - identifying information. - `Learn more `__.""" - prompt_cache_key: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Used by OpenAI to cache responses for similar requests to optimize - your cache hit rates. Replaces the ``user`` field. - `Learn more `__.""" - - -class ResponseObject(ResponseObjectGenerated): - """Override generated ``ResponseObject`` to correct temperature/top_p types - and fix Sphinx docstring warnings.""" - - temperature: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Sampling temperature. Float between 0 and 2.""" - top_p: Optional[float] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Nucleus sampling parameter. Float between 0 and 1.""" - output: list["OutputItem"] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """An array of content items generated by the model. - - * The length and order of items in the ``output`` array is dependent - on the model's response. - * Rather than accessing the first item in the ``output`` array and - assuming it's an ``assistant`` message with the content generated by - the model, you might consider using the ``output_text`` property where - supported in SDKs. - - Required.""" - user: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """This field is being replaced by ``safety_identifier`` and - ``prompt_cache_key``. Use ``prompt_cache_key`` instead to maintain - caching optimizations. A stable identifier for your end-users. - Used to boost cache hit rates by better bucketing similar requests - and to help OpenAI detect and prevent abuse. - `Learn more `__.""" - safety_identifier: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A stable identifier used to help detect users of your application - that may be violating OpenAI's usage policies. The IDs should be a - string that uniquely identifies each user. We recommend hashing - their username or email address, in order to avoid sending us any - identifying information. - `Learn more `__.""" - prompt_cache_key: Optional[str] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """Used by OpenAI to cache responses for similar requests to optimize - your cache hit rates. Replaces the ``user`` field. - `Learn more `__.""" - - -class ToolChoiceAllowed(ToolChoiceAllowedGenerated): - """Override generated ``ToolChoiceAllowed`` to fix Sphinx code-block warning.""" - - tools: list[dict[str, Any]] = rest_field(visibility=_VISIBILITY) # pyright: ignore[reportIncompatibleVariableOverride] - """A list of tool definitions that the model should be allowed to call. - For the Responses API, the list of tool definitions might look like: - - .. code-block:: json - - [ - { "type": "function", "name": "get_weather" }, - { "type": "mcp", "server_label": "deepwiki" }, - { "type": "image_generation" } - ] - - Required.""" - - -__all__: list[str] = [ - "ResponseIncompleteReason", - "CreateResponse", - "ResponseObject", - "ToolChoiceAllowed", -] - - -def patch_sdk(): - """Do not remove from this file. - - `patch_sdk` is a last resort escape hatch that allows you to do customizations - you can't accomplish using the techniques described in - https://aka.ms/azsdk/python/dpcodegen/python/customize - """ - # Fix IncludeEnum docstring — bullet list continuation lines need proper - # indentation so that Sphinx doesn't emit "Bullet list ends without a - # blank line; unexpected unindent" warnings. - from ._enums import IncludeEnum - - IncludeEnum.__doc__ = ( - "Specify additional output data to include in the model response." - " Currently supported values are:\n" - "\n" - "* ``web_search_call.action.sources``: Include the sources of the" - " web search tool call.\n" - "* ``code_interpreter_call.outputs``: Includes the outputs of python" - " code execution in code interpreter tool call items.\n" - "* ``computer_call_output.output.image_url``: Include image urls" - " from the computer call output.\n" - "* ``file_search_call.results``: Include the search results of the" - " file search tool call.\n" - "* ``message.input_image.image_url``: Include image urls from the" - " input message.\n" - "* ``message.output_text.logprobs``: Include logprobs with assistant" - " messages.\n" - "* ``reasoning.encrypted_content``: Includes an encrypted version" - " of reasoning tokens in reasoning item outputs. This enables" - " reasoning items to be used in multi-turn conversations when using" - " the Responses API statelessly (like when the ``store`` parameter" - " is set to ``false``, or when an organization is enrolled in the" - " zero data retention program).\n" - ) - - # Fix duplicate "Learn more about built-in tools" RST targets. - # Multiple ToolChoice* classes share the same named hyperlink which causes - # "Duplicate explicit target name" warnings. Use anonymous hyperlinks. - from ._models import ( - ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, - ToolChoiceFileSearch, - ToolChoiceImageGeneration, - ToolChoiceWebSearchPreview, - ToolChoiceWebSearchPreview20250311, - ) - - for cls in ( - ToolChoiceCodeInterpreter, - ToolChoiceComputerUsePreview, - ToolChoiceFileSearch, - ToolChoiceImageGeneration, - ToolChoiceWebSearchPreview, - ToolChoiceWebSearchPreview20250311, - ): - # Only patch the first paragraph (class docstring), keep :ivar lines. - original = cls.__doc__ or "" - if "`Learn more about" in original: - cls.__doc__ = original.replace("`_.", "`__.") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/types.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/types.py new file mode 100644 index 000000000000..b96e5266e91e --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_generated/types.py @@ -0,0 +1,10622 @@ +# pylint: disable=too-many-lines +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) Python Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, Literal, Optional, TYPE_CHECKING, Union +from typing_extensions import Required, TypedDict + +from .models._enums import ( + AnnotationType, + ApplyPatchFileOperationType, + ApplyPatchOperationParamType, + ComputerActionType, + ContainerNetworkPolicyParamType, + ContainerSkillType, + CustomToolParamFormatType, + FunctionAndCustomToolCallOutputType, + FunctionShellCallEnvironmentType, + FunctionShellCallItemParamEnvironmentType, + FunctionShellCallOutputOutcomeParamType, + FunctionShellCallOutputOutcomeType, + FunctionShellToolParamEnvironmentType, + ItemFieldType, + ItemType, + MemoryItemKind, + MessageContentType, + ModerationEntryType, + OpenApiAuthType, + OutputContentType, + OutputItemType, + OutputMessageContentType, + RealtimeMcpErrorType, + ResponseStreamEventType, + TextResponseFormatConfigurationType, + ToolChoiceParamType, + ToolType, +) + +if TYPE_CHECKING: + from . import _unions + +AnnotationType = Literal["file_citation", "url_citation", "container_file_citation", "file_path"] +"""Type of AnnotationType.""" + +ApplyPatchCallOutputStatus = Literal["completed", "failed"] +"""Type of ApplyPatchCallOutputStatus.""" + +ApplyPatchCallOutputStatusParam = Literal["completed", "failed"] +"""Apply patch call output status.""" + +ApplyPatchCallStatus = Literal["in_progress", "completed"] +"""Type of ApplyPatchCallStatus.""" + +ApplyPatchCallStatusParam = Literal["in_progress", "completed"] +"""Apply patch call status.""" + +ApplyPatchFileOperationType = Literal["create_file", "delete_file", "update_file"] +"""Type of ApplyPatchFileOperationType.""" + +ApplyPatchOperationParamType = Literal["create_file", "delete_file", "update_file"] +"""Type of ApplyPatchOperationParamType.""" + +AzureAISearchQueryType = Literal["simple", "semantic", "vector", "vector_simple_hybrid", "vector_semantic_hybrid"] +"""Available query types for Azure AI Search tool.""" + +ClickButtonType = Literal["left", "right", "wheel", "back", "forward"] +"""Type of ClickButtonType.""" + +ComputerActionType = Literal[ + "click", "double_click", "drag", "keypress", "move", "screenshot", "scroll", "type", "wait" +] +"""Type of ComputerActionType.""" + +ComputerEnvironment = Literal["windows", "mac", "linux", "ubuntu", "browser"] +"""Type of ComputerEnvironment.""" + +ContainerMemoryLimit = Literal["1g", "4g", "16g", "64g"] +"""Type of ContainerMemoryLimit.""" + +ContainerNetworkPolicyParamType = Literal["disabled", "allowlist"] +"""Type of ContainerNetworkPolicyParamType.""" + +ContainerSkillType = Literal["skill_reference", "inline"] +"""Type of ContainerSkillType.""" + +CustomToolParamFormatType = Literal["text", "grammar"] +"""Type of CustomToolParamFormatType.""" + +DetailEnum = Literal["low", "high", "auto", "original"] +"""Type of DetailEnum.""" + +FileInputDetail = Literal["low", "high"] +"""Type of FileInputDetail.""" + +FunctionAndCustomToolCallOutputType = Literal["input_text", "input_image", "input_file"] +"""Type of FunctionAndCustomToolCallOutputType.""" + +FunctionCallItemStatus = Literal["in_progress", "completed", "incomplete"] +"""Type of FunctionCallItemStatus.""" + +FunctionCallOutputStatusEnum = Literal["in_progress", "completed", "incomplete"] +"""Type of FunctionCallOutputStatusEnum.""" + +FunctionCallStatus = Literal["in_progress", "completed", "incomplete"] +"""Type of FunctionCallStatus.""" + +FunctionShellCallEnvironmentType = Literal["local", "container_reference"] +"""Type of FunctionShellCallEnvironmentType.""" + +FunctionShellCallItemParamEnvironmentType = Literal["local", "container_reference"] +"""Type of FunctionShellCallItemParamEnvironmentType.""" + +FunctionShellCallItemStatus = Literal["in_progress", "completed", "incomplete"] +"""Shell call status.""" + +FunctionShellCallOutputOutcomeParamType = Literal["timeout", "exit"] +"""Type of FunctionShellCallOutputOutcomeParamType.""" + +FunctionShellCallOutputOutcomeType = Literal["timeout", "exit"] +"""Type of FunctionShellCallOutputOutcomeType.""" + +FunctionShellCallOutputStatusEnum = Literal["in_progress", "completed", "incomplete"] +"""Type of FunctionShellCallOutputStatusEnum.""" + +FunctionShellCallStatus = Literal["in_progress", "completed", "incomplete"] +"""Type of FunctionShellCallStatus.""" + +FunctionShellToolParamEnvironmentType = Literal["container_auto", "local", "container_reference"] +"""Type of FunctionShellToolParamEnvironmentType.""" + +GrammarSyntax1 = Literal["lark", "regex"] +"""Type of GrammarSyntax1.""" + +ImageDetail = Literal["low", "high", "auto", "original"] +"""Type of ImageDetail.""" + +ImageGenActionEnum = Literal["generate", "edit", "auto"] +"""Type of ImageGenActionEnum.""" + +IncludeEnum = Literal[ + "file_search_call.results", + "web_search_call.results", + "web_search_call.action.sources", + "message.input_image.image_url", + "computer_call_output.output.image_url", + "code_interpreter_call.outputs", + "reasoning.encrypted_content", + "message.output_text.logprobs", + "memory_search_call.results", +] +"""Specify additional output data to include in the model response. Currently supported values +are: + +* `web_search_call.results`: Include the search results of the web search tool call. +* `web_search_call.action.sources`: Include the sources of the web search tool call. +* `code_interpreter_call.outputs`: Includes the outputs of python code execution in code +interpreter tool call items. +* `computer_call_output.output.image_url`: Include image urls from the computer call output. +* `file_search_call.results`: Include the search results of the file search tool call. +* `message.input_image.image_url`: Include image urls from the input message. +* `message.output_text.logprobs`: Include logprobs with assistant messages. +* `reasoning.encrypted_content`: Includes an encrypted version of reasoning tokens in reasoning +item outputs. This enables reasoning items to be used in multi-turn conversations when using +the Responses API statelessly (like when the `store` parameter is set to `false`, or when an +organization is enrolled in the zero data retention program).""" + +InputFidelity = Literal["high", "low"] +"""Control how much effort the model will exert to match the style and features, especially facial +features, of input images. This parameter is only supported for ``gpt-image-1`` and +``gpt-image-1.5`` and later models, unsupported for ``gpt-image-1-mini``. Supports ``high`` and +``low``. Defaults to ``low``.""" + +ItemFieldType = Literal[ + "message", + "function_call", + "tool_search_call", + "tool_search_output", + "additional_tools", + "function_call_output", + "file_search_call", + "web_search_call", + "image_generation_call", + "computer_call", + "computer_call_output", + "reasoning", + "compaction", + "code_interpreter_call", + "local_shell_call", + "local_shell_call_output", + "shell_call", + "shell_call_output", + "apply_patch_call", + "apply_patch_call_output", + "mcp_list_tools", + "mcp_approval_request", + "mcp_approval_response", + "mcp_call", + "custom_tool_call", + "custom_tool_call_output", +] +"""Type of ItemFieldType.""" + +ItemType = Literal[ + "message", + "output_message", + "file_search_call", + "computer_call", + "computer_call_output", + "web_search_call", + "function_call", + "function_call_output", + "tool_search_call", + "tool_search_output", + "additional_tools", + "reasoning", + "compaction", + "image_generation_call", + "code_interpreter_call", + "local_shell_call", + "local_shell_call_output", + "shell_call", + "shell_call_output", + "apply_patch_call", + "apply_patch_call_output", + "mcp_list_tools", + "mcp_approval_request", + "mcp_approval_response", + "mcp_call", + "custom_tool_call_output", + "custom_tool_call", + "item_reference", + "structured_outputs", + "oauth_consent_request", + "memory_search_call", + "workflow_action", + "a2a_preview_call", + "a2a_preview_call_output", + "bing_grounding_call", + "bing_grounding_call_output", + "sharepoint_grounding_preview_call", + "sharepoint_grounding_preview_call_output", + "azure_ai_search_call", + "azure_ai_search_call_output", + "bing_custom_search_preview_call", + "bing_custom_search_preview_call_output", + "openapi_call", + "openapi_call_output", + "browser_automation_preview_call", + "browser_automation_preview_call_output", + "fabric_dataagent_preview_call", + "fabric_dataagent_preview_call_output", + "azure_function_call", + "azure_function_call_output", +] +"""Type of ItemType.""" + +MCPToolCallStatus = Literal["in_progress", "completed", "incomplete", "calling", "failed"] +"""Type of MCPToolCallStatus.""" + +MemoryItemKind = Literal["user_profile", "chat_summary"] +"""Memory item kind.""" + +MessageContentType = Literal[ + "input_text", + "output_text", + "text", + "summary_text", + "reasoning_text", + "refusal", + "input_image", + "computer_screenshot", + "input_file", +] +"""Type of MessageContentType.""" + +MessagePhase = Literal["commentary", "final_answer"] +"""Labels an ``assistant`` message as intermediate commentary (``commentary``) or the final answer +(``final_answer``). For models like ``gpt-5.3-codex`` and beyond, when sending follow-up +requests, preserve and resend phase on all assistant messages — dropping it can degrade +performance. Not used for user messages.""" + +MessageRole = Literal["unknown", "user", "assistant", "system", "critic", "discriminator", "developer", "tool"] +"""Type of MessageRole.""" + +MessageStatus = Literal["in_progress", "completed", "incomplete"] +"""Type of MessageStatus.""" + +ModelIdsCompaction = Literal[ + "gpt-5.4", + "gpt-5.4-mini", + "gpt-5.4-nano", + "gpt-5.4-mini-2026-03-17", + "gpt-5.4-nano-2026-03-17", + "gpt-5.3-chat-latest", + "gpt-5.2", + "gpt-5.2-2025-12-11", + "gpt-5.2-chat-latest", + "gpt-5.2-pro", + "gpt-5.2-pro-2025-12-11", + "gpt-5.1", + "gpt-5.1-2025-11-13", + "gpt-5.1-codex", + "gpt-5.1-mini", + "gpt-5.1-chat-latest", + "gpt-5", + "gpt-5-mini", + "gpt-5-nano", + "gpt-5-2025-08-07", + "gpt-5-mini-2025-08-07", + "gpt-5-nano-2025-08-07", + "gpt-5-chat-latest", + "gpt-4.1", + "gpt-4.1-mini", + "gpt-4.1-nano", + "gpt-4.1-2025-04-14", + "gpt-4.1-mini-2025-04-14", + "gpt-4.1-nano-2025-04-14", + "o4-mini", + "o4-mini-2025-04-16", + "o3", + "o3-2025-04-16", + "o3-mini", + "o3-mini-2025-01-31", + "o1", + "o1-2024-12-17", + "o1-preview", + "o1-preview-2024-09-12", + "o1-mini", + "o1-mini-2024-09-12", + "gpt-4o", + "gpt-4o-2024-11-20", + "gpt-4o-2024-08-06", + "gpt-4o-2024-05-13", + "gpt-4o-audio-preview", + "gpt-4o-audio-preview-2024-10-01", + "gpt-4o-audio-preview-2024-12-17", + "gpt-4o-audio-preview-2025-06-03", + "gpt-4o-mini-audio-preview", + "gpt-4o-mini-audio-preview-2024-12-17", + "gpt-4o-search-preview", + "gpt-4o-mini-search-preview", + "gpt-4o-search-preview-2025-03-11", + "gpt-4o-mini-search-preview-2025-03-11", + "chatgpt-4o-latest", + "codex-mini-latest", + "gpt-4o-mini", + "gpt-4o-mini-2024-07-18", + "gpt-4-turbo", + "gpt-4-turbo-2024-04-09", + "gpt-4-0125-preview", + "gpt-4-turbo-preview", + "gpt-4-1106-preview", + "gpt-4-vision-preview", + "gpt-4", + "gpt-4-0314", + "gpt-4-0613", + "gpt-4-32k", + "gpt-4-32k-0314", + "gpt-4-32k-0613", + "gpt-3.5-turbo", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-0301", + "gpt-3.5-turbo-0613", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-0125", + "gpt-3.5-turbo-16k-0613", + "o1-pro", + "o1-pro-2025-03-19", + "o3-pro", + "o3-pro-2025-06-10", + "o3-deep-research", + "o3-deep-research-2025-06-26", + "o4-mini-deep-research", + "o4-mini-deep-research-2025-06-26", + "computer-use-preview", + "computer-use-preview-2025-03-11", + "gpt-5-codex", + "gpt-5-pro", + "gpt-5-pro-2025-10-06", + "gpt-5.1-codex-max", +] +"""Model ID used to generate the response, like ``gpt-5`` or ``o3``. OpenAI offers a wide range of +models with different capabilities, performance characteristics, and price points. Refer to the +`model guide `_ to browse and compare available models.""" + +ModerationEntryType = Literal["moderation_result", "error"] +"""Type of ModerationEntryType.""" + +ModerationInputType = Literal["text", "image"] +"""Type of ModerationInputType.""" + +OpenApiAuthType = Literal["anonymous", "project_connection", "managed_identity"] +"""Authentication type for OpenApi endpoint. Allowed types are: + +* Anonymous (no authentication required) +* Project Connection (requires project_connection_id to endpoint, as setup in AI Foundry) +* Managed_Identity (requires audience for identity based auth).""" + +OutputContentType = Literal["output_text", "refusal", "reasoning_text"] +"""Type of OutputContentType.""" + +OutputItemType = Literal[ + "output_message", + "file_search_call", + "function_call", + "function_call_output", + "web_search_call", + "computer_call", + "computer_call_output", + "reasoning", + "tool_search_call", + "tool_search_output", + "additional_tools", + "compaction", + "image_generation_call", + "code_interpreter_call", + "local_shell_call", + "local_shell_call_output", + "shell_call", + "shell_call_output", + "apply_patch_call", + "apply_patch_call_output", + "mcp_call", + "mcp_list_tools", + "mcp_approval_request", + "mcp_approval_response", + "custom_tool_call", + "custom_tool_call_output", + "message", + "structured_outputs", + "oauth_consent_request", + "memory_search_call", + "workflow_action", + "a2a_preview_call", + "a2a_preview_call_output", + "bing_grounding_call", + "bing_grounding_call_output", + "sharepoint_grounding_preview_call", + "sharepoint_grounding_preview_call_output", + "azure_ai_search_call", + "azure_ai_search_call_output", + "bing_custom_search_preview_call", + "bing_custom_search_preview_call_output", + "openapi_call", + "openapi_call_output", + "browser_automation_preview_call", + "browser_automation_preview_call_output", + "fabric_dataagent_preview_call", + "fabric_dataagent_preview_call_output", + "azure_function_call", + "azure_function_call_output", +] +"""Type of OutputItemType.""" + +OutputMessageContentType = Literal["output_text", "refusal"] +"""Type of OutputMessageContentType.""" + +PageOrder = Literal["asc", "desc"] +"""Type of PageOrder.""" + +PromptCacheRetentionEnum = Literal["in_memory", "24h"] +"""Type of PromptCacheRetentionEnum.""" + +RankerVersionType = Literal["auto", "default-2024-11-15"] +"""Type of RankerVersionType.""" + +RealtimeMcpErrorType = Literal["protocol_error", "tool_execution_error", "http_error"] +"""Type of RealtimeMcpErrorType.""" + +ReasoningEffort = Literal["none", "minimal", "low", "medium", "high", "xhigh"] +"""Constrains effort on reasoning for +`reasoning models `_. +Currently supported values are ``none``, ``minimal``, ``low``, ``medium``, ``high``, and +``xhigh``. Reducing +reasoning effort can result in faster responses and fewer tokens used +on reasoning in a response. + +* `gpt-5.1` defaults to `none`, which does not perform reasoning. The supported reasoning +values for `gpt-5.1` are `none`, `low`, `medium`, and `high`. Tool calls are supported for all +reasoning values in gpt-5.1. +* All models before `gpt-5.1` default to `medium` reasoning effort, and do not support `none`. +* The `gpt-5-pro` model defaults to (and only supports) `high` reasoning effort. +* `xhigh` is supported for all models after `gpt-5.1-codex-max`.""" + +ResponseErrorCode = Literal[ + "server_error", + "rate_limit_exceeded", + "invalid_prompt", + "vector_store_timeout", + "invalid_image", + "invalid_image_format", + "invalid_base64_image", + "invalid_image_url", + "image_too_large", + "image_too_small", + "image_parse_error", + "image_content_policy_violation", + "invalid_image_mode", + "image_file_too_large", + "unsupported_image_media_type", + "empty_image_file", + "failed_to_download_image", + "image_file_not_found", +] +"""The error code for the response.""" + +ResponseStreamEventType = Literal[ + "response.audio.delta", + "response.audio.done", + "response.audio.transcript.delta", + "response.audio.transcript.done", + "response.code_interpreter_call_code.delta", + "response.code_interpreter_call_code.done", + "response.code_interpreter_call.completed", + "response.code_interpreter_call.in_progress", + "response.code_interpreter_call.interpreting", + "response.completed", + "response.content_part.added", + "response.content_part.done", + "response.created", + "error", + "response.file_search_call.completed", + "response.file_search_call.in_progress", + "response.file_search_call.searching", + "response.function_call_arguments.delta", + "response.function_call_arguments.done", + "response.in_progress", + "response.failed", + "response.incomplete", + "response.output_item.added", + "response.output_item.done", + "response.reasoning_summary_part.added", + "response.reasoning_summary_part.done", + "response.reasoning_summary_text.delta", + "response.reasoning_summary_text.done", + "response.reasoning_text.delta", + "response.reasoning_text.done", + "response.refusal.delta", + "response.refusal.done", + "response.output_text.delta", + "response.output_text.done", + "response.web_search_call.completed", + "response.web_search_call.in_progress", + "response.web_search_call.searching", + "response.image_generation_call.completed", + "response.image_generation_call.generating", + "response.image_generation_call.in_progress", + "response.image_generation_call.partial_image", + "response.mcp_call_arguments.delta", + "response.mcp_call_arguments.done", + "response.mcp_call.completed", + "response.mcp_call.failed", + "response.mcp_call.in_progress", + "response.mcp_list_tools.completed", + "response.mcp_list_tools.failed", + "response.mcp_list_tools.in_progress", + "response.output_text.annotation.added", + "response.queued", + "response.custom_tool_call_input.delta", + "response.custom_tool_call_input.done", +] +"""Type of ResponseStreamEventType.""" + +SearchContentType = Literal["text", "image"] +"""Type of SearchContentType.""" + +SearchContextSize = Literal["low", "medium", "high"] +"""Type of SearchContextSize.""" + +ServiceTierEnum = Literal["auto", "default", "flex", "priority"] +"""Type of ServiceTierEnum.""" + +TextResponseFormatConfigurationType = Literal["text", "json_schema", "json_object"] +"""Type of TextResponseFormatConfigurationType.""" + +ToolCallStatus = Literal["in_progress", "completed", "incomplete", "failed"] +"""The status of a tool call.""" + +ToolChoiceOptions = Literal["none", "auto", "required"] +"""Tool choice mode.""" + +ToolChoiceParamType = Literal[ + "allowed_tools", + "function", + "mcp", + "custom", + "apply_patch", + "shell", + "file_search", + "web_search_preview", + "computer_use_preview", + "web_search_preview_2025_03_11", + "image_generation", + "code_interpreter", + "computer", + "computer_use", +] +"""Type of ToolChoiceParamType.""" + +ToolSearchExecutionType = Literal["server", "client"] +"""Type of ToolSearchExecutionType.""" + +ToolType = Literal[ + "function", + "file_search", + "computer", + "computer_use_preview", + "web_search", + "mcp", + "code_interpreter", + "image_generation", + "local_shell", + "shell", + "custom", + "namespace", + "tool_search", + "web_search_preview", + "apply_patch", + "a2a_preview", + "bing_custom_search_preview", + "browser_automation_preview", + "fabric_dataagent_preview", + "sharepoint_grounding_preview", + "memory_search_preview", + "work_iq_preview", + "azure_ai_search", + "azure_function", + "bing_grounding", + "capture_structured_outputs", + "openapi", +] +"""Type of ToolType.""" + + +class A2APreviewTool(TypedDict, total=False): + """An agent implementing the A2A protocol. + + :ivar type: The type of the tool. Always ``"a2a_preview``. Required. A2_A_PREVIEW. + :vartype type: Literal["a2a_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar base_url: Base URL of the agent. + :vartype base_url: str + :ivar agent_card_path: The path to the agent card relative to the ``base_url``. If not + provided, defaults to ``/.well-known/agent-card.json``. + :vartype agent_card_path: str + :ivar project_connection_id: The connection ID in the project for the A2A server. The + connection stores authentication and other connection details needed to connect to the A2A + server. + :vartype project_connection_id: str + """ + + type: Required[Literal["a2a_preview"]] + """The type of the tool. Always ``\"a2a_preview``. Required. A2_A_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + base_url: str + """Base URL of the agent.""" + agent_card_path: str + """The path to the agent card relative to the ``base_url``. If not provided, defaults to + ``/.well-known/agent-card.json``.""" + project_connection_id: str + """The connection ID in the project for the A2A server. The connection stores authentication and + other connection details needed to connect to the A2A server.""" + + +class A2AToolCall(TypedDict, total=False): + """An A2A (Agent-to-Agent) tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. A2_A_PREVIEW_CALL. + :vartype type: Literal["a2a_preview_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the A2A agent card being called. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["a2a_preview_call"]] + """Required. A2_A_PREVIEW_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the A2A agent card being called. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class A2AToolCallOutput(TypedDict, total=False): + """The output of an A2A (Agent-to-Agent) tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. A2_A_PREVIEW_CALL_OUTPUT. + :vartype type: Literal["a2a_preview_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the A2A agent card that was called. Required. + :vartype name: str + :ivar output: The output from the A2A tool call. Is one of the following types: {str: Any}, + str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["a2a_preview_call_output"]] + """Required. A2_A_PREVIEW_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the A2A agent card that was called. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the A2A tool call. Is one of the following types: {str: Any}, str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class AdditionalToolsItemParam(TypedDict, total=False): + """AdditionalToolsItemParam. + + :ivar id: + :vartype id: str + :ivar type: The item type. Always ``additional_tools``. Required. ADDITIONAL_TOOLS. + :vartype type: Literal["additional_tools"] + :ivar role: The role that provided the additional tools. Only ``developer`` is supported. + Required. Default value is "developer". + :vartype role: Literal["developer"] + :ivar tools: A list of additional tools made available at this item. Required. + :vartype tools: list["Tool"] + """ + + id: Optional[str] + type: Required[Literal["additional_tools"]] + """The item type. Always ``additional_tools``. Required. ADDITIONAL_TOOLS.""" + role: Required[Literal["developer"]] + """The role that provided the additional tools. Only ``developer`` is supported. Required. Default + value is \"developer\".""" + tools: Required[list["Tool"]] + """A list of additional tools made available at this item. Required.""" + + +class AgentReference(TypedDict, total=False): + """AgentReference. + + :ivar type: Required. Default value is "agent_reference". + :vartype type: Literal["agent_reference"] + :ivar name: The name of the agent. Required. + :vartype name: str + :ivar version: The version identifier of the agent. + :vartype version: str + """ + + type: Required[Literal["agent_reference"]] + """Required. Default value is \"agent_reference\".""" + name: Required[str] + """The name of the agent. Required.""" + version: str + """The version identifier of the agent.""" + + +class AISearchIndexResource(TypedDict, total=False): + """A AI Search Index resource. + + :ivar project_connection_id: An index connection ID in an IndexResource attached to this agent. + :vartype project_connection_id: str + :ivar index_name: The name of an index in an IndexResource attached to this agent. + :vartype index_name: str + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar query_type: Type of query in an AIIndexResource attached to this agent. Known values are: + "simple", "semantic", "vector", "vector_simple_hybrid", and "vector_semantic_hybrid". + :vartype query_type: AzureAISearchQueryType + :ivar top_k: Number of documents to retrieve from search and present to the model. + :vartype top_k: int + :ivar filter: filter string for search resource. `Learn more here + `_. + :vartype filter: str + :ivar index_asset_id: Index asset id for search resource. + :vartype index_asset_id: str + """ + + project_connection_id: str + """An index connection ID in an IndexResource attached to this agent.""" + index_name: str + """The name of an index in an IndexResource attached to this agent.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + query_type: AzureAISearchQueryType + """Type of query in an AIIndexResource attached to this agent. Known values are: \"simple\", + \"semantic\", \"vector\", \"vector_simple_hybrid\", and \"vector_semantic_hybrid\".""" + top_k: int + """Number of documents to retrieve from search and present to the model.""" + filter: str + """filter string for search resource. `Learn more here + `_.""" + index_asset_id: str + """Index asset id for search resource.""" + + +class ApiErrorResponse(TypedDict, total=False): + """Error response for API failures. + + :ivar error: Required. + :vartype error: "Error" + """ + + error: Required["Error"] + """Required.""" + + +class ApplyPatchCreateFileOperation(TypedDict, total=False): + """Apply patch create file operation. + + :ivar type: Create a new file with the provided diff. Required. CREATE_FILE. + :vartype type: Literal["create_file"] + :ivar path: Path of the file to create. Required. + :vartype path: str + :ivar diff: Diff to apply. Required. + :vartype diff: str + """ + + type: Required[Literal["create_file"]] + """Create a new file with the provided diff. Required. CREATE_FILE.""" + path: Required[str] + """Path of the file to create. Required.""" + diff: Required[str] + """Diff to apply. Required.""" + + +class ApplyPatchCreateFileOperationParam(TypedDict, total=False): + """Apply patch create file operation. + + :ivar type: The operation type. Always ``create_file``. Required. CREATE_FILE. + :vartype type: Literal["create_file"] + :ivar path: Path of the file to create relative to the workspace root. Required. + :vartype path: str + :ivar diff: Unified diff content to apply when creating the file. Required. + :vartype diff: str + """ + + type: Required[Literal["create_file"]] + """The operation type. Always ``create_file``. Required. CREATE_FILE.""" + path: Required[str] + """Path of the file to create relative to the workspace root. Required.""" + diff: Required[str] + """Unified diff content to apply when creating the file. Required.""" + + +class ApplyPatchDeleteFileOperation(TypedDict, total=False): + """Apply patch delete file operation. + + :ivar type: Delete the specified file. Required. DELETE_FILE. + :vartype type: Literal["delete_file"] + :ivar path: Path of the file to delete. Required. + :vartype path: str + """ + + type: Required[Literal["delete_file"]] + """Delete the specified file. Required. DELETE_FILE.""" + path: Required[str] + """Path of the file to delete. Required.""" + + +class ApplyPatchDeleteFileOperationParam(TypedDict, total=False): + """Apply patch delete file operation. + + :ivar type: The operation type. Always ``delete_file``. Required. DELETE_FILE. + :vartype type: Literal["delete_file"] + :ivar path: Path of the file to delete relative to the workspace root. Required. + :vartype path: str + """ + + type: Required[Literal["delete_file"]] + """The operation type. Always ``delete_file``. Required. DELETE_FILE.""" + path: Required[str] + """Path of the file to delete relative to the workspace root. Required.""" + + +class ApplyPatchToolCallItemParam(TypedDict, total=False): + """Apply patch tool call. + + :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. + :vartype type: Literal["apply_patch_call"] + :ivar id: + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. + Required. Known values are: "in_progress" and "completed". + :vartype status: ApplyPatchCallStatusParam + :ivar operation: The specific create, delete, or update instruction for the apply_patch tool + call. Required. + :vartype operation: "ApplyPatchOperationParam" + """ + + type: Required[Literal["apply_patch_call"]] + """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" + id: Optional[str] + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallStatusParam] + """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. + Known values are: \"in_progress\" and \"completed\".""" + operation: Required["ApplyPatchOperationParam"] + """The specific create, delete, or update instruction for the apply_patch tool call. Required.""" + + +class ApplyPatchToolCallOutputItemParam(TypedDict, total=False): + """Apply patch tool call output. + + :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. + APPLY_PATCH_CALL_OUTPUT. + :vartype type: Literal["apply_patch_call_output"] + :ivar id: + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call output. One of ``completed`` or + ``failed``. Required. Known values are: "completed" and "failed". + :vartype status: ApplyPatchCallOutputStatusParam + :ivar output: + :vartype output: str + """ + + type: Required[Literal["apply_patch_call_output"]] + """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" + id: Optional[str] + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallOutputStatusParam] + """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. + Known values are: \"completed\" and \"failed\".""" + output: Optional[str] + + +class ApplyPatchToolParam(TypedDict, total=False): + """Apply patch tool. + + :ivar type: The type of the tool. Always ``apply_patch``. Required. APPLY_PATCH. + :vartype type: Literal["apply_patch"] + """ + + type: Required[Literal["apply_patch"]] + """The type of the tool. Always ``apply_patch``. Required. APPLY_PATCH.""" + + +class ApplyPatchUpdateFileOperation(TypedDict, total=False): + """Apply patch update file operation. + + :ivar type: Update an existing file with the provided diff. Required. UPDATE_FILE. + :vartype type: Literal["update_file"] + :ivar path: Path of the file to update. Required. + :vartype path: str + :ivar diff: Diff to apply. Required. + :vartype diff: str + """ + + type: Required[Literal["update_file"]] + """Update an existing file with the provided diff. Required. UPDATE_FILE.""" + path: Required[str] + """Path of the file to update. Required.""" + diff: Required[str] + """Diff to apply. Required.""" + + +class ApplyPatchUpdateFileOperationParam(TypedDict, total=False): + """Apply patch update file operation. + + :ivar type: The operation type. Always ``update_file``. Required. UPDATE_FILE. + :vartype type: Literal["update_file"] + :ivar path: Path of the file to update relative to the workspace root. Required. + :vartype path: str + :ivar diff: Unified diff content to apply to the existing file. Required. + :vartype diff: str + """ + + type: Required[Literal["update_file"]] + """The operation type. Always ``update_file``. Required. UPDATE_FILE.""" + path: Required[str] + """Path of the file to update relative to the workspace root. Required.""" + diff: Required[str] + """Unified diff content to apply to the existing file. Required.""" + + +class ApproximateLocation(TypedDict, total=False): + """ApproximateLocation. + + :ivar type: The type of location approximation. Always ``approximate``. Required. Default value + is "approximate". + :vartype type: Literal["approximate"] + :ivar country: + :vartype country: str + :ivar region: + :vartype region: str + :ivar city: + :vartype city: str + :ivar timezone: + :vartype timezone: str + """ + + type: Required[Literal["approximate"]] + """The type of location approximation. Always ``approximate``. Required. Default value is + \"approximate\".""" + country: Optional[str] + region: Optional[str] + city: Optional[str] + timezone: Optional[str] + + +class AutoCodeInterpreterToolParam(TypedDict, total=False): + """Automatic Code Interpreter Tool Parameters. + + :ivar type: Always ``auto``. Required. Default value is "auto". + :vartype type: Literal["auto"] + :ivar file_ids: An optional list of uploaded files to make available to your code. + :vartype file_ids: list[str] + :ivar memory_limit: Known values are: "1g", "4g", "16g", and "64g". + :vartype memory_limit: ContainerMemoryLimit + :ivar network_policy: + :vartype network_policy: "ContainerNetworkPolicyParam" + """ + + type: Required[Literal["auto"]] + """Always ``auto``. Required. Default value is \"auto\".""" + file_ids: list[str] + """An optional list of uploaded files to make available to your code.""" + memory_limit: Optional[ContainerMemoryLimit] + """Known values are: \"1g\", \"4g\", \"16g\", and \"64g\".""" + network_policy: "ContainerNetworkPolicyParam" + + +class AzureAISearchTool(TypedDict, total=False): + """The input definition information for an Azure AI search tool as used to configure an agent. + + :ivar type: The object type, which is always 'azure_ai_search'. Required. AZURE_AI_SEARCH. + :vartype type: Literal["azure_ai_search"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar azure_ai_search: The azure ai search index resource. Required. + :vartype azure_ai_search: "AzureAISearchToolResource" + """ + + type: Required[Literal["azure_ai_search"]] + """The object type, which is always 'azure_ai_search'. Required. AZURE_AI_SEARCH.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + azure_ai_search: Required["AzureAISearchToolResource"] + """The azure ai search index resource. Required.""" + + +class AzureAISearchToolCall(TypedDict, total=False): + """An Azure AI Search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. AZURE_AI_SEARCH_CALL. + :vartype type: Literal["azure_ai_search_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["azure_ai_search_call"]] + """Required. AZURE_AI_SEARCH_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class AzureAISearchToolCallOutput(TypedDict, total=False): + """The output of an Azure AI Search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. AZURE_AI_SEARCH_CALL_OUTPUT. + :vartype type: Literal["azure_ai_search_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the Azure AI Search tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["azure_ai_search_call_output"]] + """Required. AZURE_AI_SEARCH_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the Azure AI Search tool call. Is one of the following types: {str: Any}, str, + [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class AzureAISearchToolResource(TypedDict, total=False): + """A set of index resources used by the ``azure_ai_search`` tool. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar indexes: The indices attached to this agent. There can be a maximum of 1 index resource + attached to the agent. Required. + :vartype indexes: list["AISearchIndexResource"] + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + indexes: Required[list["AISearchIndexResource"]] + """The indices attached to this agent. There can be a maximum of 1 index resource attached to the + agent. Required.""" + + +class AzureFunctionBinding(TypedDict, total=False): + """The structure for keeping storage queue name and URI. + + :ivar type: The type of binding, which is always 'storage_queue'. Required. Default value is + "storage_queue". + :vartype type: Literal["storage_queue"] + :ivar storage_queue: Storage queue. Required. + :vartype storage_queue: "AzureFunctionStorageQueue" + """ + + type: Required[Literal["storage_queue"]] + """The type of binding, which is always 'storage_queue'. Required. Default value is + \"storage_queue\".""" + storage_queue: Required["AzureFunctionStorageQueue"] + """Storage queue. Required.""" + + +class AzureFunctionDefinition(TypedDict, total=False): + """The definition of Azure function. + + :ivar function: The definition of azure function and its parameters. Required. + :vartype function: "AzureFunctionDefinitionFunction" + :ivar input_binding: Input storage queue. The queue storage trigger runs a function as messages + are added to it. Required. + :vartype input_binding: "AzureFunctionBinding" + :ivar output_binding: Output storage queue. The function writes output to this queue when the + input items are processed. Required. + :vartype output_binding: "AzureFunctionBinding" + """ + + function: Required["AzureFunctionDefinitionFunction"] + """The definition of azure function and its parameters. Required.""" + input_binding: Required["AzureFunctionBinding"] + """Input storage queue. The queue storage trigger runs a function as messages are added to it. + Required.""" + output_binding: Required["AzureFunctionBinding"] + """Output storage queue. The function writes output to this queue when the input items are + processed. Required.""" + + +class AzureFunctionDefinitionFunction(TypedDict, total=False): + """AzureFunctionDefinitionFunction. + + :ivar name: The name of the function to be called. Required. + :vartype name: str + :ivar description: A description of what the function does, used by the model to choose when + and how to call the function. + :vartype description: str + :ivar parameters: The parameters the functions accepts, described as a JSON Schema object. + Required. + :vartype parameters: dict[str, Any] + """ + + name: Required[str] + """The name of the function to be called. Required.""" + description: str + """A description of what the function does, used by the model to choose when and how to call the + function.""" + parameters: Required[dict[str, Any]] + """The parameters the functions accepts, described as a JSON Schema object. Required.""" + + +class AzureFunctionStorageQueue(TypedDict, total=False): + """The structure for keeping storage queue name and URI. + + :ivar queue_service_endpoint: URI to the Azure Storage Queue service allowing you to manipulate + a queue. Required. + :vartype queue_service_endpoint: str + :ivar queue_name: The name of an Azure function storage queue. Required. + :vartype queue_name: str + """ + + queue_service_endpoint: Required[str] + """URI to the Azure Storage Queue service allowing you to manipulate a queue. Required.""" + queue_name: Required[str] + """The name of an Azure function storage queue. Required.""" + + +class AzureFunctionTool(TypedDict, total=False): + """The input definition information for an Azure Function Tool, as used to configure an Agent. + + :ivar type: The object type, which is always 'browser_automation'. Required. AZURE_FUNCTION. + :vartype type: Literal["azure_function"] + :ivar azure_function: The Azure Function Tool definition. Required. + :vartype azure_function: "AzureFunctionDefinition" + """ + + type: Required[Literal["azure_function"]] + """The object type, which is always 'browser_automation'. Required. AZURE_FUNCTION.""" + azure_function: Required["AzureFunctionDefinition"] + """The Azure Function Tool definition. Required.""" + + +class AzureFunctionToolCall(TypedDict, total=False): + """An Azure Function tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. AZURE_FUNCTION_CALL. + :vartype type: Literal["azure_function_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the Azure Function being called. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["azure_function_call"]] + """Required. AZURE_FUNCTION_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the Azure Function being called. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class AzureFunctionToolCallOutput(TypedDict, total=False): + """The output of an Azure Function tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. AZURE_FUNCTION_CALL_OUTPUT. + :vartype type: Literal["azure_function_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the Azure Function that was called. Required. + :vartype name: str + :ivar output: The output from the Azure Function tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["azure_function_call_output"]] + """Required. AZURE_FUNCTION_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the Azure Function that was called. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the Azure Function tool call. Is one of the following types: {str: Any}, str, + [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BingCustomSearchConfiguration(TypedDict, total=False): + """A bing custom search configuration. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connection_id: Project connection id for grounding with bing search. Required. + :vartype project_connection_id: str + :ivar instance_name: Name of the custom configuration instance given to config. Required. + :vartype instance_name: str + :ivar market: The market where the results come from. + :vartype market: str + :ivar set_lang: The language to use for user interface strings when calling Bing API. + :vartype set_lang: str + :ivar count: The number of search results to return in the bing api response. + :vartype count: int + :ivar freshness: Filter search results by a specific time range. See `accepted values here + `_. + :vartype freshness: str + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connection_id: Required[str] + """Project connection id for grounding with bing search. Required.""" + instance_name: Required[str] + """Name of the custom configuration instance given to config. Required.""" + market: str + """The market where the results come from.""" + set_lang: str + """The language to use for user interface strings when calling Bing API.""" + count: int + """The number of search results to return in the bing api response.""" + freshness: str + """Filter search results by a specific time range. See `accepted values here + `_.""" + + +class BingCustomSearchPreviewTool(TypedDict, total=False): + """The input definition information for a Bing custom search tool as used to configure an agent. + + :ivar type: The object type, which is always 'bing_custom_search_preview'. Required. + BING_CUSTOM_SEARCH_PREVIEW. + :vartype type: Literal["bing_custom_search_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar bing_custom_search_preview: The bing custom search tool parameters. Required. + :vartype bing_custom_search_preview: "BingCustomSearchToolParameters" + """ + + type: Required[Literal["bing_custom_search_preview"]] + """The object type, which is always 'bing_custom_search_preview'. Required. + BING_CUSTOM_SEARCH_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + bing_custom_search_preview: Required["BingCustomSearchToolParameters"] + """The bing custom search tool parameters. Required.""" + + +class BingCustomSearchToolCall(TypedDict, total=False): + """A Bing custom search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BING_CUSTOM_SEARCH_PREVIEW_CALL. + :vartype type: Literal["bing_custom_search_preview_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["bing_custom_search_preview_call"]] + """Required. BING_CUSTOM_SEARCH_PREVIEW_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BingCustomSearchToolCallOutput(TypedDict, total=False): + """The output of a Bing custom search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT. + :vartype type: Literal["bing_custom_search_preview_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the Bing custom search tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["bing_custom_search_preview_call_output"]] + """Required. BING_CUSTOM_SEARCH_PREVIEW_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the Bing custom search tool call. Is one of the following types: {str: Any}, + str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BingCustomSearchToolParameters(TypedDict, total=False): + """The bing custom search tool parameters. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar search_configurations: The project connections attached to this tool. There can be a + maximum of 1 connection resource attached to the tool. Required. + :vartype search_configurations: list["BingCustomSearchConfiguration"] + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + search_configurations: Required[list["BingCustomSearchConfiguration"]] + """The project connections attached to this tool. There can be a maximum of 1 connection resource + attached to the tool. Required.""" + + +class BingGroundingSearchConfiguration(TypedDict, total=False): + """Search configuration for Bing Grounding. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connection_id: Project connection id for grounding with bing search. Required. + :vartype project_connection_id: str + :ivar market: The market where the results come from. + :vartype market: str + :ivar set_lang: The language to use for user interface strings when calling Bing API. + :vartype set_lang: str + :ivar count: The number of search results to return in the bing api response. + :vartype count: int + :ivar freshness: Filter search results by a specific time range. See `accepted values here + `_. + :vartype freshness: str + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connection_id: Required[str] + """Project connection id for grounding with bing search. Required.""" + market: str + """The market where the results come from.""" + set_lang: str + """The language to use for user interface strings when calling Bing API.""" + count: int + """The number of search results to return in the bing api response.""" + freshness: str + """Filter search results by a specific time range. See `accepted values here + `_.""" + + +class BingGroundingSearchToolParameters(TypedDict, total=False): + """The bing grounding search tool parameters. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar search_configurations: The search configurations attached to this tool. There can be a + maximum of 1 search configuration resource attached to the tool. Required. + :vartype search_configurations: list["BingGroundingSearchConfiguration"] + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + search_configurations: Required[list["BingGroundingSearchConfiguration"]] + """The search configurations attached to this tool. There can be a maximum of 1 search + configuration resource attached to the tool. Required.""" + + +class BingGroundingTool(TypedDict, total=False): + """The input definition information for a bing grounding search tool as used to configure an + agent. + + :ivar type: The object type, which is always 'bing_grounding'. Required. BING_GROUNDING. + :vartype type: Literal["bing_grounding"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar bing_grounding: The bing grounding search tool parameters. Required. + :vartype bing_grounding: "BingGroundingSearchToolParameters" + """ + + type: Required[Literal["bing_grounding"]] + """The object type, which is always 'bing_grounding'. Required. BING_GROUNDING.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + bing_grounding: Required["BingGroundingSearchToolParameters"] + """The bing grounding search tool parameters. Required.""" + + +class BingGroundingToolCall(TypedDict, total=False): + """A Bing grounding tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BING_GROUNDING_CALL. + :vartype type: Literal["bing_grounding_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["bing_grounding_call"]] + """Required. BING_GROUNDING_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BingGroundingToolCallOutput(TypedDict, total=False): + """The output of a Bing grounding tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BING_GROUNDING_CALL_OUTPUT. + :vartype type: Literal["bing_grounding_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the Bing grounding tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["bing_grounding_call_output"]] + """Required. BING_GROUNDING_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the Bing grounding tool call. Is one of the following types: {str: Any}, str, + [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BrowserAutomationPreviewTool(TypedDict, total=False): + """The input definition information for a Browser Automation Tool, as used to configure an Agent. + + :ivar type: The object type, which is always 'browser_automation_preview'. Required. + BROWSER_AUTOMATION_PREVIEW. + :vartype type: Literal["browser_automation_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar browser_automation_preview: The Browser Automation Tool parameters. Required. + :vartype browser_automation_preview: "BrowserAutomationToolParameters" + """ + + type: Required[Literal["browser_automation_preview"]] + """The object type, which is always 'browser_automation_preview'. Required. + BROWSER_AUTOMATION_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + browser_automation_preview: Required["BrowserAutomationToolParameters"] + """The Browser Automation Tool parameters. Required.""" + + +class BrowserAutomationToolCall(TypedDict, total=False): + """A browser automation tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BROWSER_AUTOMATION_PREVIEW_CALL. + :vartype type: Literal["browser_automation_preview_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["browser_automation_preview_call"]] + """Required. BROWSER_AUTOMATION_PREVIEW_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BrowserAutomationToolCallOutput(TypedDict, total=False): + """The output of a browser automation tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT. + :vartype type: Literal["browser_automation_preview_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the browser automation tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["browser_automation_preview_call_output"]] + """Required. BROWSER_AUTOMATION_PREVIEW_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the browser automation tool call. Is one of the following types: {str: Any}, + str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class BrowserAutomationToolConnectionParameters(TypedDict, total=False): # pylint: disable=name-too-long + """Definition of input parameters for the connection used by the Browser Automation Tool. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connection_id: The ID of the project connection to your Azure Playwright + resource. Required. + :vartype project_connection_id: str + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connection_id: Required[str] + """The ID of the project connection to your Azure Playwright resource. Required.""" + + +class BrowserAutomationToolParameters(TypedDict, total=False): + """Definition of input parameters for the Browser Automation Tool. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar connection: The project connection parameters associated with the Browser Automation + Tool. Required. + :vartype connection: "BrowserAutomationToolConnectionParameters" + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + connection: Required["BrowserAutomationToolConnectionParameters"] + """The project connection parameters associated with the Browser Automation Tool. Required.""" + + +class CaptureStructuredOutputsTool(TypedDict, total=False): + """A tool for capturing structured outputs. + + :ivar type: The type of the tool. Always ``capture_structured_outputs``. Required. + CAPTURE_STRUCTURED_OUTPUTS. + :vartype type: Literal["capture_structured_outputs"] + :ivar outputs: The structured outputs to capture from the model. Required. + :vartype outputs: "StructuredOutputDefinition" + """ + + type: Required[Literal["capture_structured_outputs"]] + """The type of the tool. Always ``capture_structured_outputs``. Required. + CAPTURE_STRUCTURED_OUTPUTS.""" + outputs: Required["StructuredOutputDefinition"] + """The structured outputs to capture from the model. Required.""" + + +class ChatSummaryMemoryItem(TypedDict, total=False): + """A memory item containing a summary extracted from conversations. + + :ivar memory_id: The unique ID of the memory item. Required. + :vartype memory_id: str + :ivar updated_at: The last update time of the memory item. Required. + :vartype updated_at: int + :ivar scope: The namespace that logically groups and isolates memories, such as a user ID. + Required. + :vartype scope: str + :ivar content: The content of the memory. Required. + :vartype content: str + :ivar kind: The kind of the memory item. Required. Summary of chat conversations. + :vartype kind: Literal["chat_summary"] + """ + + memory_id: Required[str] + """The unique ID of the memory item. Required.""" + updated_at: Required[int] + """The last update time of the memory item. Required.""" + scope: Required[str] + """The namespace that logically groups and isolates memories, such as a user ID. Required.""" + content: Required[str] + """The content of the memory. Required.""" + kind: Required[Literal["chat_summary"]] + """The kind of the memory item. Required. Summary of chat conversations.""" + + +class ClickParam(TypedDict, total=False): + """Click. + + :ivar type: Specifies the event type. For a click action, this property is always ``click``. + Required. CLICK. + :vartype type: Literal["click"] + :ivar button: Indicates which mouse button was pressed during the click. One of ``left``, + ``right``, ``wheel``, ``back``, or ``forward``. Required. Known values are: "left", "right", + "wheel", "back", and "forward". + :vartype button: ClickButtonType + :ivar x: The x-coordinate where the click occurred. Required. + :vartype x: int + :ivar y: The y-coordinate where the click occurred. Required. + :vartype y: int + :ivar keys_property: + :vartype keys_property: list[str] + """ + + type: Required[Literal["click"]] + """Specifies the event type. For a click action, this property is always ``click``. Required. + CLICK.""" + button: Required[ClickButtonType] + """Indicates which mouse button was pressed during the click. One of ``left``, ``right``, + ``wheel``, ``back``, or ``forward``. Required. Known values are: \"left\", \"right\", + \"wheel\", \"back\", and \"forward\".""" + x: Required[int] + """The x-coordinate where the click occurred. Required.""" + y: Required[int] + """The y-coordinate where the click occurred. Required.""" + keys: Optional[list[str]] + + +class CodeInterpreterOutputImage(TypedDict, total=False): + """Code interpreter output image. + + :ivar type: The type of the output. Always ``image``. Required. Default value is "image". + :vartype type: Literal["image"] + :ivar url: The URL of the image output from the code interpreter. Required. + :vartype url: str + """ + + type: Required[Literal["image"]] + """The type of the output. Always ``image``. Required. Default value is \"image\".""" + url: Required[str] + """The URL of the image output from the code interpreter. Required.""" + + +class CodeInterpreterOutputLogs(TypedDict, total=False): + """Code interpreter output logs. + + :ivar type: The type of the output. Always ``logs``. Required. Default value is "logs". + :vartype type: Literal["logs"] + :ivar logs: The logs output from the code interpreter. Required. + :vartype logs: str + """ + + type: Required[Literal["logs"]] + """The type of the output. Always ``logs``. Required. Default value is \"logs\".""" + logs: Required[str] + """The logs output from the code interpreter. Required.""" + + +class CodeInterpreterTool(TypedDict, total=False): + """Code interpreter. + + :ivar type: The type of the code interpreter tool. Always ``code_interpreter``. Required. + CODE_INTERPRETER. + :vartype type: Literal["code_interpreter"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar container: The code interpreter container. Can be a container ID or an object that + specifies uploaded file IDs to make available to your code, along with an optional + ``memory_limit`` setting. If not provided, the service assumes auto. Is either a str type or a + AutoCodeInterpreterToolParam type. + :vartype container: Union[str, "AutoCodeInterpreterToolParam"] + """ + + type: Required[Literal["code_interpreter"]] + """The type of the code interpreter tool. Always ``code_interpreter``. Required. CODE_INTERPRETER.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + container: Union[str, "AutoCodeInterpreterToolParam"] + """The code interpreter container. Can be a container ID or an object that specifies uploaded file + IDs to make available to your code, along with an optional ``memory_limit`` setting. If not + provided, the service assumes auto. Is either a str type or a AutoCodeInterpreterToolParam + type.""" + + +class CompactionSummaryItemParam(TypedDict, total=False): + """Compaction item. + + :ivar id: + :vartype id: str + :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. + :vartype type: Literal["compaction"] + :ivar encrypted_content: The encrypted content of the compaction summary. Required. + :vartype encrypted_content: str + """ + + id: Optional[str] + type: Required[Literal["compaction"]] + """The type of the item. Always ``compaction``. Required. COMPACTION.""" + encrypted_content: Required[str] + """The encrypted content of the compaction summary. Required.""" + + +class CompactResource(TypedDict, total=False): + """The compacted response object. + + :ivar id: The unique identifier for the compacted response. Required. + :vartype id: str + :ivar object: The object type. Always ``response.compaction``. Required. Default value is + "response.compaction". + :vartype object: Literal["response.compaction"] + :ivar output: The compacted list of output items. Required. + :vartype output: list["ItemField"] + :ivar created_at: Unix timestamp (in seconds) when the compacted conversation was created. + Required. + :vartype created_at: int + :ivar usage: Token accounting for the compaction pass, including cached, reasoning, and total + tokens. Required. + :vartype usage: "ResponseUsage" + """ + + id: Required[str] + """The unique identifier for the compacted response. Required.""" + object: Required[Literal["response.compaction"]] + """The object type. Always ``response.compaction``. Required. Default value is + \"response.compaction\".""" + output: Required[list["ItemField"]] + """The compacted list of output items. Required.""" + created_at: Required[int] + """Unix timestamp (in seconds) when the compacted conversation was created. Required.""" + usage: Required["ResponseUsage"] + """Token accounting for the compaction pass, including cached, reasoning, and total tokens. + Required.""" + + +class ComparisonFilter(TypedDict, total=False): + """Comparison Filter. + + :ivar type: Specifies the comparison operator: ``eq``, ``ne``, ``gt``, ``gte``, ``lt``, + ``lte``, ``in``, ``nin``. + + * `eq`: equals + * `ne`: not equal + * `gt`: greater than + * `gte`: greater than or equal + * `lt`: less than + * `lte`: less than or equal + * `in`: in + * `nin`: not in. Required. Is one of the following types: Literal["eq"], Literal["ne"], + Literal["gt"], Literal["gte"], Literal["lt"], Literal["lte"], Literal["in"], Literal["nin"] + :vartype type: Literal["eq", "ne", "gt", "gte", "lt", "lte", "in", "nin"] + :ivar key: The key to compare against the value. Required. + :vartype key: str + :ivar value: The value to compare against the attribute key; supports string, number, or + boolean types. Required. Is one of the following types: str, float, bool, [Union[str, float]] + :vartype value: Union[str, float, bool, list[Union[str, float]]] + """ + + type: Required[Literal["eq", "ne", "gt", "gte", "lt", "lte", "in", "nin"]] + """Specifies the comparison operator: ``eq``, ``ne``, ``gt``, ``gte``, ``lt``, ``lte``, ``in``, + ``nin``. + + * `eq`: equals + * `ne`: not equal + * `gt`: greater than + * `gte`: greater than or equal + * `lt`: less than + * `lte`: less than or equal + * `in`: in + * `nin`: not in. Required. Is one of the following types: Literal[\"eq\"], + Literal[\"ne\"], Literal[\"gt\"], Literal[\"gte\"], Literal[\"lt\"], Literal[\"lte\"], + Literal[\"in\"], Literal[\"nin\"]""" + key: Required[str] + """The key to compare against the value. Required.""" + value: Required[Union[str, float, bool, list[Union[str, float]]]] + """The value to compare against the attribute key; supports string, number, or boolean types. + Required. Is one of the following types: str, float, bool, [Union[str, float]]""" + + +class CompoundFilter(TypedDict, total=False): + """Compound Filter. + + :ivar type: Type of operation: ``and`` or ``or``. Required. Is either a Literal["and"] type or + a Literal["or"] type. + :vartype type: Literal["and", "or"] + :ivar filters: Array of filters to combine. Items can be ``ComparisonFilter`` or + ``CompoundFilter``. Required. + :vartype filters: list[Union["ComparisonFilter", Any]] + """ + + type: Required[Literal["and", "or"]] + """Type of operation: ``and`` or ``or``. Required. Is either a Literal[\"and\"] type or a + Literal[\"or\"] type.""" + filters: Required[list[Union["ComparisonFilter", Any]]] + """Array of filters to combine. Items can be ``ComparisonFilter`` or ``CompoundFilter``. Required.""" + + +class ComputerCallOutputItemParam(TypedDict, total=False): + """Computer tool call output. + + :ivar id: + :vartype id: str + :ivar call_id: The ID of the computer tool call that produced the output. Required. + :vartype call_id: str + :ivar type: The type of the computer tool call output. Always ``computer_call_output``. + Required. COMPUTER_CALL_OUTPUT. + :vartype type: Literal["computer_call_output"] + :ivar output: Required. + :vartype output: "ComputerScreenshotImage" + :ivar acknowledged_safety_checks: + :vartype acknowledged_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallItemStatus + """ + + id: Optional[str] + call_id: Required[str] + """The ID of the computer tool call that produced the output. Required.""" + type: Required[Literal["computer_call_output"]] + """The type of the computer tool call output. Always ``computer_call_output``. Required. + COMPUTER_CALL_OUTPUT.""" + output: Required["ComputerScreenshotImage"] + """Required.""" + acknowledged_safety_checks: Optional[list["ComputerCallSafetyCheckParam"]] + status: Optional[FunctionCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + + +class ComputerCallSafetyCheckParam(TypedDict, total=False): + """A pending safety check for the computer call. + + :ivar id: The ID of the pending safety check. Required. + :vartype id: str + :ivar code: + :vartype code: str + :ivar message: + :vartype message: str + """ + + id: Required[str] + """The ID of the pending safety check. Required.""" + code: Optional[str] + message: Optional[str] + + +class ComputerScreenshotContent(TypedDict, total=False): + """Computer screenshot. + + :ivar type: Specifies the event type. For a computer screenshot, this property is always set to + ``computer_screenshot``. Required. COMPUTER_SCREENSHOT. + :vartype type: Literal["computer_screenshot"] + :ivar image_url: Required. + :vartype image_url: str + :ivar file_id: Required. + :vartype file_id: str + :ivar detail: The detail level of the screenshot image to be sent to the model. One of + ``high``, ``low``, ``auto``, or ``original``. Defaults to ``auto``. Required. Known values are: + "low", "high", "auto", and "original". + :vartype detail: ImageDetail + """ + + type: Required[Literal["computer_screenshot"]] + """Specifies the event type. For a computer screenshot, this property is always set to + ``computer_screenshot``. Required. COMPUTER_SCREENSHOT.""" + image_url: Required[Optional[str]] + """Required.""" + file_id: Required[Optional[str]] + """Required.""" + detail: Required[ImageDetail] + """The detail level of the screenshot image to be sent to the model. One of ``high``, ``low``, + ``auto``, or ``original``. Defaults to ``auto``. Required. Known values are: \"low\", \"high\", + \"auto\", and \"original\".""" + + +class ComputerScreenshotImage(TypedDict, total=False): + """A computer screenshot image used with the computer use tool. + + :ivar type: Specifies the event type. For a computer screenshot, this property is always set to + ``computer_screenshot``. Required. Default value is "computer_screenshot". + :vartype type: Literal["computer_screenshot"] + :ivar image_url: The URL of the screenshot image. + :vartype image_url: str + :ivar file_id: The identifier of an uploaded file that contains the screenshot. + :vartype file_id: str + """ + + type: Required[Literal["computer_screenshot"]] + """Specifies the event type. For a computer screenshot, this property is always set to + ``computer_screenshot``. Required. Default value is \"computer_screenshot\".""" + image_url: str + """The URL of the screenshot image.""" + file_id: str + """The identifier of an uploaded file that contains the screenshot.""" + + +class ComputerTool(TypedDict, total=False): + """Computer. + + :ivar type: The type of the computer tool. Always ``computer``. Required. COMPUTER. + :vartype type: Literal["computer"] + """ + + type: Required[Literal["computer"]] + """The type of the computer tool. Always ``computer``. Required. COMPUTER.""" + + +class ComputerUsePreviewTool(TypedDict, total=False): + """Computer use preview. + + :ivar type: The type of the computer use tool. Always ``computer_use_preview``. Required. + COMPUTER_USE_PREVIEW. + :vartype type: Literal["computer_use_preview"] + :ivar environment: The type of computer environment to control. Required. Known values are: + "windows", "mac", "linux", "ubuntu", and "browser". + :vartype environment: ComputerEnvironment + :ivar display_width: The width of the computer display. Required. + :vartype display_width: int + :ivar display_height: The height of the computer display. Required. + :vartype display_height: int + """ + + type: Required[Literal["computer_use_preview"]] + """The type of the computer use tool. Always ``computer_use_preview``. Required. + COMPUTER_USE_PREVIEW.""" + environment: Required[ComputerEnvironment] + """The type of computer environment to control. Required. Known values are: \"windows\", \"mac\", + \"linux\", \"ubuntu\", and \"browser\".""" + display_width: Required[int] + """The width of the computer display. Required.""" + display_height: Required[int] + """The height of the computer display. Required.""" + + +class ContainerAutoParam(TypedDict, total=False): + """ContainerAutoParam. + + :ivar type: Automatically creates a container for this request. Required. CONTAINER_AUTO. + :vartype type: Literal["container_auto"] + :ivar file_ids: An optional list of uploaded files to make available to your code. + :vartype file_ids: list[str] + :ivar memory_limit: Known values are: "1g", "4g", "16g", and "64g". + :vartype memory_limit: ContainerMemoryLimit + :ivar skills: An optional list of skills referenced by id or inline data. + :vartype skills: list["ContainerSkill"] + :ivar network_policy: + :vartype network_policy: "ContainerNetworkPolicyParam" + """ + + type: Required[Literal["container_auto"]] + """Automatically creates a container for this request. Required. CONTAINER_AUTO.""" + file_ids: list[str] + """An optional list of uploaded files to make available to your code.""" + memory_limit: Optional[ContainerMemoryLimit] + """Known values are: \"1g\", \"4g\", \"16g\", and \"64g\".""" + skills: list["ContainerSkill"] + """An optional list of skills referenced by id or inline data.""" + network_policy: "ContainerNetworkPolicyParam" + + +class ContainerFileCitationBody(TypedDict, total=False): + """Container file citation. + + :ivar type: The type of the container file citation. Always ``container_file_citation``. + Required. CONTAINER_FILE_CITATION. + :vartype type: Literal["container_file_citation"] + :ivar container_id: The ID of the container file. Required. + :vartype container_id: str + :ivar file_id: The ID of the file. Required. + :vartype file_id: str + :ivar start_index: The index of the first character of the container file citation in the + message. Required. + :vartype start_index: int + :ivar end_index: The index of the last character of the container file citation in the message. + Required. + :vartype end_index: int + :ivar filename: The filename of the container file cited. Required. + :vartype filename: str + """ + + type: Required[Literal["container_file_citation"]] + """The type of the container file citation. Always ``container_file_citation``. Required. + CONTAINER_FILE_CITATION.""" + container_id: Required[str] + """The ID of the container file. Required.""" + file_id: Required[str] + """The ID of the file. Required.""" + start_index: Required[int] + """The index of the first character of the container file citation in the message. Required.""" + end_index: Required[int] + """The index of the last character of the container file citation in the message. Required.""" + filename: Required[str] + """The filename of the container file cited. Required.""" + + +class ContainerNetworkPolicyAllowlistParam(TypedDict, total=False): + """ContainerNetworkPolicyAllowlistParam. + + :ivar type: Allow outbound network access only to specified domains. Always ``allowlist``. + Required. ALLOWLIST. + :vartype type: Literal["allowlist"] + :ivar allowed_domains: A list of allowed domains when type is ``allowlist``. Required. + :vartype allowed_domains: list[str] + :ivar domain_secrets: Optional domain-scoped secrets for allowlisted domains. + :vartype domain_secrets: list["ContainerNetworkPolicyDomainSecretParam"] + """ + + type: Required[Literal["allowlist"]] + """Allow outbound network access only to specified domains. Always ``allowlist``. Required. + ALLOWLIST.""" + allowed_domains: Required[list[str]] + """A list of allowed domains when type is ``allowlist``. Required.""" + domain_secrets: list["ContainerNetworkPolicyDomainSecretParam"] + """Optional domain-scoped secrets for allowlisted domains.""" + + +class ContainerNetworkPolicyDisabledParam(TypedDict, total=False): + """ContainerNetworkPolicyDisabledParam. + + :ivar type: Disable outbound network access. Always ``disabled``. Required. DISABLED. + :vartype type: Literal["disabled"] + """ + + type: Required[Literal["disabled"]] + """Disable outbound network access. Always ``disabled``. Required. DISABLED.""" + + +class ContainerNetworkPolicyDomainSecretParam(TypedDict, total=False): + """ContainerNetworkPolicyDomainSecretParam. + + :ivar domain: The domain associated with the secret. Required. + :vartype domain: str + :ivar name: The name of the secret to inject for the domain. Required. + :vartype name: str + :ivar value: The secret value to inject for the domain. Required. + :vartype value: str + """ + + domain: Required[str] + """The domain associated with the secret. Required.""" + name: Required[str] + """The name of the secret to inject for the domain. Required.""" + value: Required[str] + """The secret value to inject for the domain. Required.""" + + +class ContainerReferenceResource(TypedDict, total=False): + """Container Reference. + + :ivar type: The environment type. Always ``container_reference``. Required. + CONTAINER_REFERENCE. + :vartype type: Literal["container_reference"] + :ivar container_id: Required. + :vartype container_id: str + """ + + type: Required[Literal["container_reference"]] + """The environment type. Always ``container_reference``. Required. CONTAINER_REFERENCE.""" + container_id: Required[str] + """Required.""" + + +class ContextManagementParam(TypedDict, total=False): + """ContextManagementParam. + + :ivar type: The context management entry type. Currently only 'compaction' is supported. + Required. + :vartype type: str + :ivar compact_threshold: + :vartype compact_threshold: int + """ + + type: Required[str] + """The context management entry type. Currently only 'compaction' is supported. Required.""" + compact_threshold: Optional[int] + + +class ConversationParam_2(TypedDict, total=False): + """Conversation object. + + :ivar id: The unique ID of the conversation. Required. + :vartype id: str + """ + + id: Required[str] + """The unique ID of the conversation. Required.""" + + +class ConversationReference(TypedDict, total=False): + """Conversation. + + :ivar id: The unique ID of the conversation that this response was associated with. Required. + :vartype id: str + """ + + id: Required[str] + """The unique ID of the conversation that this response was associated with. Required.""" + + +class CoordParam(TypedDict, total=False): + """Coordinate. + + :ivar x: The x-coordinate. Required. + :vartype x: int + :ivar y: The y-coordinate. Required. + :vartype y: int + """ + + x: Required[int] + """The x-coordinate. Required.""" + y: Required[int] + """The y-coordinate. Required.""" + + +class CreateResponse(TypedDict, total=False): + """CreateResponse. + + :ivar metadata: + :vartype metadata: "Metadata" + :ivar top_logprobs: + :vartype top_logprobs: int + :ivar temperature: + :vartype temperature: float + :ivar top_p: + :vartype top_p: float + :ivar user: This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use + ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your + end-users. Used to boost cache hit rates by better bucketing similar requests and to help + OpenAI detect and prevent abuse. `Learn more + `_. + :vartype user: str + :ivar safety_identifier: A stable identifier used to help detect users of your application that + may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies + each user, with a maximum length of 64 characters. We recommend hashing their username or email + address, in order to avoid sending us any identifying information. `Learn more + `_. + :vartype safety_identifier: str + :ivar prompt_cache_key: Used by OpenAI to cache responses for similar requests to optimize your + cache hit rates. Replaces the ``user`` field. `Learn more `_. + :vartype prompt_cache_key: str + :ivar service_tier: Is one of the following types: Literal["auto"], Literal["default"], + Literal["flex"], Literal["scale"], Literal["priority"] + :vartype service_tier: Literal["auto", "default", "flex", "scale", "priority"] + :ivar prompt_cache_retention: Is either a Literal["in_memory"] type or a Literal["24h"] type. + :vartype prompt_cache_retention: Literal["in_memory", "24h"] + :ivar previous_response_id: + :vartype previous_response_id: str + :ivar model: The model deployment to use for the creation of this response. + :vartype model: str + :ivar background: + :vartype background: bool + :ivar max_tool_calls: + :vartype max_tool_calls: int + :ivar text: + :vartype text: "ResponseTextParam" + :ivar tools: + :vartype tools: list["Tool"] + :ivar tool_choice: Is either a types.ToolChoiceOptions type or a ToolChoiceParam type. + :vartype tool_choice: Union[ToolChoiceOptions, "ToolChoiceParam"] + :ivar prompt: + :vartype prompt: "Prompt" + :ivar truncation: Is either a Literal["auto"] type or a Literal["disabled"] type. + :vartype truncation: Literal["auto", "disabled"] + :ivar reasoning: + :vartype reasoning: "Reasoning" + :ivar input: Is either a str type or a [Item] type. + :vartype input: "_unions.InputParam" + :ivar include: + :vartype include: list[IncludeEnum] + :ivar parallel_tool_calls: + :vartype parallel_tool_calls: bool + :ivar store: + :vartype store: bool + :ivar instructions: + :vartype instructions: str + :ivar moderation: + :vartype moderation: "ModerationParam" + :ivar stream: + :vartype stream: bool + :ivar stream_options: + :vartype stream_options: "ResponseStreamOptions" + :ivar conversation: Is either a str type or a ConversationParam_2 type. + :vartype conversation: "_unions.ConversationParam" + :ivar context_management: Context management configuration for this request. + :vartype context_management: list["ContextManagementParam"] + :ivar max_output_tokens: + :vartype max_output_tokens: int + :ivar agent_reference: The agent to use for generating the response. + :vartype agent_reference: "AgentReference" + :ivar structured_inputs: The structured inputs to the response that can participate in prompt + template substitution or tool argument bindings. + :vartype structured_inputs: dict[str, Any] + """ + + metadata: Optional["Metadata"] + top_logprobs: Optional[int] + temperature: Optional[float] + top_p: Optional[float] + user: str + """This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use + ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your + end-users. Used to boost cache hit rates by better bucketing similar requests and to help + OpenAI detect and prevent abuse. `Learn more + `_.""" + safety_identifier: str + """A stable identifier used to help detect users of your application that may be violating + OpenAI's usage policies. The IDs should be a string that uniquely identifies each user, with a + maximum length of 64 characters. We recommend hashing their username or email address, in order + to avoid sending us any identifying information. `Learn more + `_.""" + prompt_cache_key: str + """Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. + Replaces the ``user`` field. `Learn more `_.""" + service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] + """Is one of the following types: Literal[\"auto\"], Literal[\"default\"], Literal[\"flex\"], + Literal[\"scale\"], Literal[\"priority\"]""" + prompt_cache_retention: Optional[Literal["in_memory", "24h"]] + """Is either a Literal[\"in_memory\"] type or a Literal[\"24h\"] type.""" + previous_response_id: Optional[str] + model: str + """The model deployment to use for the creation of this response.""" + background: Optional[bool] + max_tool_calls: Optional[int] + text: "ResponseTextParam" + tools: list["Tool"] + tool_choice: Union[ToolChoiceOptions, "ToolChoiceParam"] + """Is either a types.ToolChoiceOptions type or a ToolChoiceParam type.""" + prompt: "Prompt" + truncation: Optional[Literal["auto", "disabled"]] + """Is either a Literal[\"auto\"] type or a Literal[\"disabled\"] type.""" + reasoning: Optional["Reasoning"] + input: "_unions.InputParam" + """Is either a str type or a [Item] type.""" + include: Optional[list[IncludeEnum]] + parallel_tool_calls: Optional[bool] + store: Optional[bool] + instructions: Optional[str] + moderation: Optional["ModerationParam"] + stream: Optional[bool] + stream_options: Optional["ResponseStreamOptions"] + conversation: Optional["_unions.ConversationParam"] + """Is either a str type or a ConversationParam_2 type.""" + context_management: Optional[list["ContextManagementParam"]] + """Context management configuration for this request.""" + max_output_tokens: Optional[int] + agent_reference: "AgentReference" + """The agent to use for generating the response.""" + structured_inputs: dict[str, Any] + """The structured inputs to the response that can participate in prompt template substitution or + tool argument bindings.""" + + +class CustomGrammarFormatParam(TypedDict, total=False): + """Grammar format. + + :ivar type: Grammar format. Always ``grammar``. Required. GRAMMAR. + :vartype type: Literal["grammar"] + :ivar syntax: The syntax of the grammar definition. One of ``lark`` or ``regex``. Required. + Known values are: "lark" and "regex". + :vartype syntax: GrammarSyntax1 + :ivar definition: The grammar definition. Required. + :vartype definition: str + """ + + type: Required[Literal["grammar"]] + """Grammar format. Always ``grammar``. Required. GRAMMAR.""" + syntax: Required[GrammarSyntax1] + """The syntax of the grammar definition. One of ``lark`` or ``regex``. Required. Known values are: + \"lark\" and \"regex\".""" + definition: Required[str] + """The grammar definition. Required.""" + + +class CustomTextFormatParam(TypedDict, total=False): + """Text format. + + :ivar type: Unconstrained text format. Always ``text``. Required. TEXT. + :vartype type: Literal["text"] + """ + + type: Required[Literal["text"]] + """Unconstrained text format. Always ``text``. Required. TEXT.""" + + +class CustomToolCallOutputResource(TypedDict, total=False): + """ResponseCustomToolCallOutputItem. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. + Required. CUSTOM_TOOL_CALL_OUTPUT. + :vartype type: Literal["custom_tool_call_output"] + :ivar id: The unique ID of the custom tool call output in the OpenAI platform. + :vartype id: str + :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. + Required. + :vartype call_id: str + :ivar output: The output from the custom tool call generated by your code. Can be a string or + an list of output content. Required. Is either a str type or a + [FunctionAndCustomToolCallOutput] type. + :vartype output: Union[str, list["FunctionAndCustomToolCallOutput"]] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Known values are: "in_progress", + "completed", and "incomplete". + :vartype status: FunctionCallOutputStatusEnum + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["custom_tool_call_output"]] + """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. + CUSTOM_TOOL_CALL_OUTPUT.""" + id: str + """The unique ID of the custom tool call output in the OpenAI platform.""" + call_id: Required[str] + """The call ID, used to map this custom tool call output to a custom tool call. Required.""" + output: Required[Union[str, list["FunctionAndCustomToolCallOutput"]]] + """The output from the custom tool call generated by your code. Can be a string or an list of + output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" + status: Required[FunctionCallOutputStatusEnum] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Required. Known values are: \"in_progress\", \"completed\", + and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class CustomToolCallResource(TypedDict, total=False): + """ResponseCustomToolCallItem. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. + CUSTOM_TOOL_CALL. + :vartype type: Literal["custom_tool_call"] + :ivar id: The unique ID of the custom tool call in the OpenAI platform. + :vartype id: str + :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. + :vartype call_id: str + :ivar namespace: The namespace of the custom tool being called. + :vartype namespace: str + :ivar name: The name of the custom tool being called. Required. + :vartype name: str + :ivar input: The input for the custom tool call generated by the model. Required. + :vartype input: str + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Known values are: "in_progress", + "completed", and "incomplete". + :vartype status: FunctionCallStatus + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["custom_tool_call"]] + """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" + id: str + """The unique ID of the custom tool call in the OpenAI platform.""" + call_id: Required[str] + """An identifier used to map this custom tool call to a tool call output. Required.""" + namespace: str + """The namespace of the custom tool being called.""" + name: Required[str] + """The name of the custom tool being called. Required.""" + input: Required[str] + """The input for the custom tool call generated by the model. Required.""" + status: Required[FunctionCallStatus] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Required. Known values are: \"in_progress\", \"completed\", + and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class CustomToolParam(TypedDict, total=False): + """Custom tool. + + :ivar type: The type of the custom tool. Always ``custom``. Required. CUSTOM. + :vartype type: Literal["custom"] + :ivar name: The name of the custom tool, used to identify it in tool calls. Required. + :vartype name: str + :ivar description: Optional description of the custom tool, used to provide more context. + :vartype description: str + :ivar format: The input format for the custom tool. Default is unconstrained text. + :vartype format: "CustomToolParamFormat" + :ivar defer_loading: Whether this tool should be deferred and discovered via tool search. + :vartype defer_loading: bool + """ + + type: Required[Literal["custom"]] + """The type of the custom tool. Always ``custom``. Required. CUSTOM.""" + name: Required[str] + """The name of the custom tool, used to identify it in tool calls. Required.""" + description: str + """Optional description of the custom tool, used to provide more context.""" + format: "CustomToolParamFormat" + """The input format for the custom tool. Default is unconstrained text.""" + defer_loading: bool + """Whether this tool should be deferred and discovered via tool search.""" + + +class DeleteResponseResult(TypedDict, total=False): + """The result of a delete response operation. + + :ivar id: The operation ID. Required. + :vartype id: str + :ivar deleted: Always return true. Required. Default value is True. + :vartype deleted: Literal[True] + :ivar object: Required. Default value is "response". + :vartype object: Literal["response"] + """ + + id: Required[str] + """The operation ID. Required.""" + deleted: Required[Literal[True]] + """Always return true. Required. Default value is True.""" + object: Required[Literal["response"]] + """Required. Default value is \"response\".""" + + +class DoubleClickAction(TypedDict, total=False): + """DoubleClick. + + :ivar type: Specifies the event type. For a double click action, this property is always set to + ``double_click``. Required. DOUBLE_CLICK. + :vartype type: Literal["double_click"] + :ivar x: The x-coordinate where the double click occurred. Required. + :vartype x: int + :ivar y: The y-coordinate where the double click occurred. Required. + :vartype y: int + :ivar keys_property: Required. + :vartype keys_property: list[str] + """ + + type: Required[Literal["double_click"]] + """Specifies the event type. For a double click action, this property is always set to + ``double_click``. Required. DOUBLE_CLICK.""" + x: Required[int] + """The x-coordinate where the double click occurred. Required.""" + y: Required[int] + """The y-coordinate where the double click occurred. Required.""" + keys: Required[Optional[list[str]]] + """Required.""" + + +class DragParam(TypedDict, total=False): + """Drag. + + :ivar type: Specifies the event type. For a drag action, this property is always set to + ``drag``. Required. DRAG. + :vartype type: Literal["drag"] + :ivar path: Required. An array of coordinates representing the path of the drag action. + Coordinates will appear as an array of objects, eg + + .. code-block:: + + [ + { x: 100, y: 200 }, + { x: 200, y: 300 } + ] + :vartype path: list["CoordParam"] + :ivar keys_property: + :vartype keys_property: list[str] + """ + + type: Required[Literal["drag"]] + """Specifies the event type. For a drag action, this property is always set to ``drag``. Required. + DRAG.""" + path: Required[list["CoordParam"]] + """Required. An array of coordinates representing the path of the drag action. Coordinates will + appear as an array of objects, eg + + .. code-block:: + + [ + { x: 100, y: 200 }, + { x: 200, y: 300 } + ]""" + keys: Optional[list[str]] + + +class EmptyModelParam(TypedDict, total=False): + """EmptyModelParam.""" + + +class Error(TypedDict, total=False): + """Error. + + :ivar code: Required. + :vartype code: str + :ivar message: Required. + :vartype message: str + :ivar param: + :vartype param: str + :ivar type: + :vartype type: str + :ivar details: + :vartype details: list["Error"] + :ivar additional_info: + :vartype additional_info: dict[str, Any] + :ivar debug_info: + :vartype debug_info: dict[str, Any] + """ + + code: Required[Optional[str]] + """Required.""" + message: Required[str] + """Required.""" + param: Optional[str] + type: str + details: list["Error"] + additionalInfo: dict[str, Any] + debugInfo: dict[str, Any] + + +class FabricDataAgentToolCall(TypedDict, total=False): + """A Fabric data agent tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. FABRIC_DATAAGENT_PREVIEW_CALL. + :vartype type: Literal["fabric_dataagent_preview_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["fabric_dataagent_preview_call"]] + """Required. FABRIC_DATAAGENT_PREVIEW_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class FabricDataAgentToolCallOutput(TypedDict, total=False): + """The output of a Fabric data agent tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT. + :vartype type: Literal["fabric_dataagent_preview_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the Fabric data agent tool call. Is one of the following types: + {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["fabric_dataagent_preview_call_output"]] + """Required. FABRIC_DATAAGENT_PREVIEW_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the Fabric data agent tool call. Is one of the following types: {str: Any}, + str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class FabricDataAgentToolParameters(TypedDict, total=False): + """The fabric data agent tool parameters. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connections: The project connections attached to this tool. There can be a + maximum of 1 connection resource attached to the tool. + :vartype project_connections: list["ToolProjectConnection"] + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connections: list["ToolProjectConnection"] + """The project connections attached to this tool. There can be a maximum of 1 connection resource + attached to the tool.""" + + +class FileCitationBody(TypedDict, total=False): + """File citation. + + :ivar type: The type of the file citation. Always ``file_citation``. Required. FILE_CITATION. + :vartype type: Literal["file_citation"] + :ivar file_id: The ID of the file. Required. + :vartype file_id: str + :ivar index: The index of the file in the list of files. Required. + :vartype index: int + :ivar filename: The filename of the file cited. Required. + :vartype filename: str + """ + + type: Required[Literal["file_citation"]] + """The type of the file citation. Always ``file_citation``. Required. FILE_CITATION.""" + file_id: Required[str] + """The ID of the file. Required.""" + index: Required[int] + """The index of the file in the list of files. Required.""" + filename: Required[str] + """The filename of the file cited. Required.""" + + +class FilePath(TypedDict, total=False): + """File path. + + :ivar type: The type of the file path. Always ``file_path``. Required. FILE_PATH. + :vartype type: Literal["file_path"] + :ivar file_id: The ID of the file. Required. + :vartype file_id: str + :ivar index: The index of the file in the list of files. Required. + :vartype index: int + """ + + type: Required[Literal["file_path"]] + """The type of the file path. Always ``file_path``. Required. FILE_PATH.""" + file_id: Required[str] + """The ID of the file. Required.""" + index: Required[int] + """The index of the file in the list of files. Required.""" + + +class FileSearchTool(TypedDict, total=False): + """File search. + + :ivar type: The type of the file search tool. Always ``file_search``. Required. FILE_SEARCH. + :vartype type: Literal["file_search"] + :ivar vector_store_ids: The IDs of the vector stores to search. Required. + :vartype vector_store_ids: list[str] + :ivar max_num_results: The maximum number of results to return. This number should be between 1 + and 50 inclusive. + :vartype max_num_results: int + :ivar ranking_options: Ranking options for search. + :vartype ranking_options: "RankingOptions" + :ivar filters: Is either a ComparisonFilter type or a CompoundFilter type. + :vartype filters: "_unions.Filters" + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + """ + + type: Required[Literal["file_search"]] + """The type of the file search tool. Always ``file_search``. Required. FILE_SEARCH.""" + vector_store_ids: Required[list[str]] + """The IDs of the vector stores to search. Required.""" + max_num_results: int + """The maximum number of results to return. This number should be between 1 and 50 inclusive.""" + ranking_options: "RankingOptions" + """Ranking options for search.""" + filters: Optional["_unions.Filters"] + """Is either a ComparisonFilter type or a CompoundFilter type.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + + +class FileSearchToolCallResults(TypedDict, total=False): + """FileSearchToolCallResults. + + :ivar file_id: + :vartype file_id: str + :ivar text: + :vartype text: str + :ivar filename: + :vartype filename: str + :ivar attributes: + :vartype attributes: "VectorStoreFileAttributes" + :ivar score: + :vartype score: float + """ + + file_id: str + text: str + filename: str + attributes: Optional["VectorStoreFileAttributes"] + score: float + + +class FunctionAndCustomToolCallOutputInputFileContent(TypedDict, total=False): # pylint: disable=name-too-long + """Input file. + + :ivar type: The type of the input item. Always ``input_file``. Required. INPUT_FILE. + :vartype type: Literal["input_file"] + :ivar file_id: + :vartype file_id: str + :ivar filename: The name of the file to be sent to the model. + :vartype filename: str + :ivar file_data: The content of the file to be sent to the model. + :vartype file_data: str + :ivar file_url: The URL of the file to be sent to the model. + :vartype file_url: str + :ivar detail: The detail level of the file to be sent to the model. Use ``low`` for the default + rendering behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. + Known values are: "low" and "high". + :vartype detail: FileInputDetail + """ + + type: Required[Literal["input_file"]] + """The type of the input item. Always ``input_file``. Required. INPUT_FILE.""" + file_id: Optional[str] + filename: str + """The name of the file to be sent to the model.""" + file_data: str + """The content of the file to be sent to the model.""" + file_url: str + """The URL of the file to be sent to the model.""" + detail: FileInputDetail + """The detail level of the file to be sent to the model. Use ``low`` for the default rendering + behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. Known values + are: \"low\" and \"high\".""" + + +class FunctionAndCustomToolCallOutputInputImageContent(TypedDict, total=False): # pylint: disable=name-too-long + """Input image. + + :ivar type: The type of the input item. Always ``input_image``. Required. INPUT_IMAGE. + :vartype type: Literal["input_image"] + :ivar image_url: + :vartype image_url: str + :ivar file_id: + :vartype file_id: str + :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, + ``auto``, or ``original``. Defaults to ``auto``. Required. Known values are: "low", "high", + "auto", and "original". + :vartype detail: ImageDetail + """ + + type: Required[Literal["input_image"]] + """The type of the input item. Always ``input_image``. Required. INPUT_IMAGE.""" + image_url: Optional[str] + file_id: Optional[str] + detail: Required[ImageDetail] + """The detail level of the image to be sent to the model. One of ``high``, ``low``, ``auto``, or + ``original``. Defaults to ``auto``. Required. Known values are: \"low\", \"high\", \"auto\", + and \"original\".""" + + +class FunctionAndCustomToolCallOutputInputTextContent(TypedDict, total=False): # pylint: disable=name-too-long + """Input text. + + :ivar type: The type of the input item. Always ``input_text``. Required. INPUT_TEXT. + :vartype type: Literal["input_text"] + :ivar text: The text input to the model. Required. + :vartype text: str + """ + + type: Required[Literal["input_text"]] + """The type of the input item. Always ``input_text``. Required. INPUT_TEXT.""" + text: Required[str] + """The text input to the model. Required.""" + + +class FunctionCallOutputItemParam(TypedDict, total=False): + """Function tool call output. + + :ivar id: + :vartype id: str + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar type: The type of the function tool call output. Always ``function_call_output``. + Required. FUNCTION_CALL_OUTPUT. + :vartype type: Literal["function_call_output"] + :ivar output: Text, image, or file output of the function tool call. Required. Is either a str + type or a [Union["_types.InputTextContentParam", "_types.InputImageContentParamAutoParam", + "_types.InputFileContentParam"]] type. + :vartype output: Union[str, list[Union["InputTextContentParam", + "InputImageContentParamAutoParam", "InputFileContentParam"]]] + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallItemStatus + """ + + id: Optional[str] + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + type: Required[Literal["function_call_output"]] + """The type of the function tool call output. Always ``function_call_output``. Required. + FUNCTION_CALL_OUTPUT.""" + output: Required[ + Union[str, list[Union["InputTextContentParam", "InputImageContentParamAutoParam", "InputFileContentParam"]]] + ] + """Text, image, or file output of the function tool call. Required. Is either a str type or a + [Union[\"_types.InputTextContentParam\", \"_types.InputImageContentParamAutoParam\", + \"_types.InputFileContentParam\"]] type.""" + status: Optional[FunctionCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + + +class FunctionShellAction(TypedDict, total=False): + """Shell exec action. + + :ivar commands: Required. + :vartype commands: list[str] + :ivar timeout_ms: Required. + :vartype timeout_ms: int + :ivar max_output_length: Required. + :vartype max_output_length: int + """ + + commands: Required[list[str]] + """Required.""" + timeout_ms: Required[Optional[int]] + """Required.""" + max_output_length: Required[Optional[int]] + """Required.""" + + +class FunctionShellActionParam(TypedDict, total=False): + """Shell action. + + :ivar commands: Ordered shell commands for the execution environment to run. Required. + :vartype commands: list[str] + :ivar timeout_ms: + :vartype timeout_ms: int + :ivar max_output_length: + :vartype max_output_length: int + """ + + commands: Required[list[str]] + """Ordered shell commands for the execution environment to run. Required.""" + timeout_ms: Optional[int] + max_output_length: Optional[int] + + +class FunctionShellCallItemParam(TypedDict, total=False): + """Shell tool call. + + :ivar id: + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. + :vartype type: Literal["shell_call"] + :ivar action: The shell commands and limits that describe how to run the tool call. Required. + :vartype action: "FunctionShellActionParam" + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallItemStatus + :ivar environment: + :vartype environment: "FunctionShellCallItemParamEnvironment" + """ + + id: Optional[str] + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + type: Required[Literal["shell_call"]] + """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" + action: Required["FunctionShellActionParam"] + """The shell commands and limits that describe how to run the tool call. Required.""" + status: Optional[FunctionShellCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + environment: Optional["FunctionShellCallItemParamEnvironment"] + + +class FunctionShellCallItemParamEnvironmentContainerReferenceParam( + TypedDict, total=False +): # pylint: disable=name-too-long + """FunctionShellCallItemParamEnvironmentContainerReferenceParam. + + :ivar type: References a container created with the /v1/containers endpoint. Required. + CONTAINER_REFERENCE. + :vartype type: Literal["container_reference"] + :ivar container_id: The ID of the referenced container. Required. + :vartype container_id: str + """ + + type: Required[Literal["container_reference"]] + """References a container created with the /v1/containers endpoint. Required. CONTAINER_REFERENCE.""" + container_id: Required[str] + """The ID of the referenced container. Required.""" + + +class FunctionShellCallItemParamEnvironmentLocalEnvironmentParam( + TypedDict, total=False +): # pylint: disable=name-too-long + """FunctionShellCallItemParamEnvironmentLocalEnvironmentParam. + + :ivar type: Use a local computer environment. Required. LOCAL. + :vartype type: Literal["local"] + :ivar skills: An optional list of skills. + :vartype skills: list["LocalSkillParam"] + """ + + type: Required[Literal["local"]] + """Use a local computer environment. Required. LOCAL.""" + skills: list["LocalSkillParam"] + """An optional list of skills.""" + + +class FunctionShellCallOutputContent(TypedDict, total=False): + """Shell call output content. + + :ivar stdout: The standard output that was captured. Required. + :vartype stdout: str + :ivar stderr: The standard error output that was captured. Required. + :vartype stderr: str + :ivar outcome: Shell call outcome. Required. + :vartype outcome: "FunctionShellCallOutputOutcome" + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + stdout: Required[str] + """The standard output that was captured. Required.""" + stderr: Required[str] + """The standard error output that was captured. Required.""" + outcome: Required["FunctionShellCallOutputOutcome"] + """Shell call outcome. Required.""" + created_by: str + """The identifier of the actor that created the item.""" + + +class FunctionShellCallOutputContentParam(TypedDict, total=False): + """Shell output content. + + :ivar stdout: Captured stdout output for the shell call. Required. + :vartype stdout: str + :ivar stderr: Captured stderr output for the shell call. Required. + :vartype stderr: str + :ivar outcome: The exit or timeout outcome associated with this shell call. Required. + :vartype outcome: "FunctionShellCallOutputOutcomeParam" + """ + + stdout: Required[str] + """Captured stdout output for the shell call. Required.""" + stderr: Required[str] + """Captured stderr output for the shell call. Required.""" + outcome: Required["FunctionShellCallOutputOutcomeParam"] + """The exit or timeout outcome associated with this shell call. Required.""" + + +class FunctionShellCallOutputExitOutcome(TypedDict, total=False): + """Shell call exit outcome. + + :ivar type: The outcome type. Always ``exit``. Required. EXIT. + :vartype type: Literal["exit"] + :ivar exit_code: Exit code from the shell process. Required. + :vartype exit_code: int + """ + + type: Required[Literal["exit"]] + """The outcome type. Always ``exit``. Required. EXIT.""" + exit_code: Required[int] + """Exit code from the shell process. Required.""" + + +class FunctionShellCallOutputExitOutcomeParam(TypedDict, total=False): + """Shell call exit outcome. + + :ivar type: The outcome type. Always ``exit``. Required. EXIT. + :vartype type: Literal["exit"] + :ivar exit_code: The exit code returned by the shell process. Required. + :vartype exit_code: int + """ + + type: Required[Literal["exit"]] + """The outcome type. Always ``exit``. Required. EXIT.""" + exit_code: Required[int] + """The exit code returned by the shell process. Required.""" + + +class FunctionShellCallOutputItemParam(TypedDict, total=False): + """Shell tool call output. + + :ivar id: + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar type: The type of the item. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT. + :vartype type: Literal["shell_call_output"] + :ivar output: Captured chunks of stdout and stderr output, along with their associated + outcomes. Required. + :vartype output: list["FunctionShellCallOutputContentParam"] + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallItemStatus + :ivar max_output_length: + :vartype max_output_length: int + """ + + id: Optional[str] + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + type: Required[Literal["shell_call_output"]] + """The type of the item. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" + output: Required[list["FunctionShellCallOutputContentParam"]] + """Captured chunks of stdout and stderr output, along with their associated outcomes. Required.""" + status: Optional[FunctionShellCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + max_output_length: Optional[int] + + +class FunctionShellCallOutputTimeoutOutcome(TypedDict, total=False): + """Shell call timeout outcome. + + :ivar type: The outcome type. Always ``timeout``. Required. TIMEOUT. + :vartype type: Literal["timeout"] + """ + + type: Required[Literal["timeout"]] + """The outcome type. Always ``timeout``. Required. TIMEOUT.""" + + +class FunctionShellCallOutputTimeoutOutcomeParam(TypedDict, total=False): # pylint: disable=name-too-long + """Shell call timeout outcome. + + :ivar type: The outcome type. Always ``timeout``. Required. TIMEOUT. + :vartype type: Literal["timeout"] + """ + + type: Required[Literal["timeout"]] + """The outcome type. Always ``timeout``. Required. TIMEOUT.""" + + +class FunctionShellToolParam(TypedDict, total=False): + """Shell tool. + + :ivar type: The type of the shell tool. Always ``shell``. Required. SHELL. + :vartype type: Literal["shell"] + :ivar environment: + :vartype environment: "FunctionShellToolParamEnvironment" + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + """ + + type: Required[Literal["shell"]] + """The type of the shell tool. Always ``shell``. Required. SHELL.""" + environment: Optional["FunctionShellToolParamEnvironment"] + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + + +class FunctionShellToolParamEnvironmentContainerReferenceParam(TypedDict, total=False): # pylint: disable=name-too-long + """FunctionShellToolParamEnvironmentContainerReferenceParam. + + :ivar type: References a container created with the /v1/containers endpoint. Required. + CONTAINER_REFERENCE. + :vartype type: Literal["container_reference"] + :ivar container_id: The ID of the referenced container. Required. + :vartype container_id: str + """ + + type: Required[Literal["container_reference"]] + """References a container created with the /v1/containers endpoint. Required. CONTAINER_REFERENCE.""" + container_id: Required[str] + """The ID of the referenced container. Required.""" + + +class FunctionShellToolParamEnvironmentLocalEnvironmentParam(TypedDict, total=False): # pylint: disable=name-too-long + """FunctionShellToolParamEnvironmentLocalEnvironmentParam. + + :ivar type: Use a local computer environment. Required. LOCAL. + :vartype type: Literal["local"] + :ivar skills: An optional list of skills. + :vartype skills: list["LocalSkillParam"] + """ + + type: Required[Literal["local"]] + """Use a local computer environment. Required. LOCAL.""" + skills: list["LocalSkillParam"] + """An optional list of skills.""" + + +class FunctionTool(TypedDict, total=False): + """Function. + + :ivar type: The type of the function tool. Always ``function``. Required. FUNCTION. + :vartype type: Literal["function"] + :ivar name: The name of the function to call. Required. + :vartype name: str + :ivar description: + :vartype description: str + :ivar parameters: Required. + :vartype parameters: dict[str, Any] + :ivar strict: Required. + :vartype strict: bool + :ivar defer_loading: Whether this function is deferred and loaded via tool search. + :vartype defer_loading: bool + """ + + type: Required[Literal["function"]] + """The type of the function tool. Always ``function``. Required. FUNCTION.""" + name: Required[str] + """The name of the function to call. Required.""" + description: Optional[str] + parameters: Required[Optional[dict[str, Any]]] + """Required.""" + strict: Required[Optional[bool]] + """Required.""" + defer_loading: bool + """Whether this function is deferred and loaded via tool search.""" + + +class FunctionToolParam(TypedDict, total=False): + """FunctionToolParam. + + :ivar name: Required. + :vartype name: str + :ivar description: + :vartype description: str + :ivar parameters: + :vartype parameters: "EmptyModelParam" + :ivar strict: + :vartype strict: bool + :ivar type: Required. Default value is "function". + :vartype type: Literal["function"] + :ivar defer_loading: Whether this function should be deferred and discovered via tool search. + :vartype defer_loading: bool + """ + + name: Required[str] + """Required.""" + description: Optional[str] + parameters: Optional["EmptyModelParam"] + strict: Optional[bool] + type: Required[Literal["function"]] + """Required. Default value is \"function\".""" + defer_loading: bool + """Whether this function should be deferred and discovered via tool search.""" + + +class HybridSearchOptions(TypedDict, total=False): + """HybridSearchOptions. + + :ivar embedding_weight: The weight of the embedding in the reciprocal ranking fusion. Required. + :vartype embedding_weight: float + :ivar text_weight: The weight of the text in the reciprocal ranking fusion. Required. + :vartype text_weight: float + """ + + embedding_weight: Required[float] + """The weight of the embedding in the reciprocal ranking fusion. Required.""" + text_weight: Required[float] + """The weight of the text in the reciprocal ranking fusion. Required.""" + + +class ImageGenTool(TypedDict, total=False): + """Image generation tool. + + :ivar type: The type of the image generation tool. Always ``image_generation``. Required. + IMAGE_GENERATION. + :vartype type: Literal["image_generation"] + :ivar model: Is one of the following types: Literal["gpt-image-1"], + Literal["gpt-image-1-mini"], Literal["gpt-image-1.5"], str + :vartype model: Union[Literal["gpt-image-1"], Literal["gpt-image-1-mini"], + Literal["gpt-image-1.5"], str] + :ivar quality: The quality of the generated image. One of ``low``, ``medium``, ``high``, or + ``auto``. Default: ``auto``. Is one of the following types: Literal["low"], Literal["medium"], + Literal["high"], Literal["auto"] + :vartype quality: Literal["low", "medium", "high", "auto"] + :ivar size: The size of the generated images. For ``gpt-image-2`` and + ``gpt-image-2-2026-04-21``, arbitrary resolutions are supported as ``WIDTHxHEIGHT`` strings, + for example ``1536x864``. Width and height must both be divisible by 16 and the requested + aspect ratio must be between 1:3 and 3:1. Resolutions above ``2560x1440`` are experimental, and + the maximum supported resolution is ``3840x2160``. The requested size must also satisfy the + model's current pixel and edge limits. The standard sizes ``1024x1024``, ``1536x1024``, and + ``1024x1536`` are supported by the GPT image models; ``auto`` is supported for models that + allow automatic sizing. For ``dall-e-2``, use one of ``256x256``, ``512x512``, or + ``1024x1024``. For ``dall-e-3``, use one of ``1024x1024``, ``1792x1024``, or ``1024x1792``. Is + one of the following types: Literal["1024x1024"], Literal["1024x1536"], Literal["1536x1024"], + Literal["auto"], str + :vartype size: Union[Literal["1024x1024"], Literal["1024x1536"], Literal["1536x1024"], + Literal["auto"], str] + :ivar output_format: The output format of the generated image. One of ``png``, ``webp``, or + ``jpeg``. Default: ``png``. Is one of the following types: Literal["png"], Literal["webp"], + Literal["jpeg"] + :vartype output_format: Literal["png", "webp", "jpeg"] + :ivar output_compression: Compression level for the output image. Default: 100. + :vartype output_compression: int + :ivar moderation: Moderation level for the generated image. Default: ``auto``. Is either a + Literal["auto"] type or a Literal["low"] type. + :vartype moderation: Literal["auto", "low"] + :ivar background: Background type for the generated image. One of ``transparent``, ``opaque``, + or ``auto``. Default: ``auto``. Is one of the following types: Literal["transparent"], + Literal["opaque"], Literal["auto"] + :vartype background: Literal["transparent", "opaque", "auto"] + :ivar input_fidelity: Known values are: "high" and "low". + :vartype input_fidelity: InputFidelity + :ivar input_image_mask: Optional mask for inpainting. Contains ``image_url`` (string, optional) + and ``file_id`` (string, optional). + :vartype input_image_mask: "ImageGenToolInputImageMask" + :ivar partial_images: Number of partial images to generate in streaming mode, from 0 (default + value) to 3. + :vartype partial_images: int + :ivar action: Whether to generate a new image or edit an existing image. Default: ``auto``. + Known values are: "generate", "edit", and "auto". + :vartype action: ImageGenActionEnum + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + """ + + type: Required[Literal["image_generation"]] + """The type of the image generation tool. Always ``image_generation``. Required. IMAGE_GENERATION.""" + model: Union[Literal["gpt-image-1"], Literal["gpt-image-1-mini"], Literal["gpt-image-1.5"], str] + """Is one of the following types: Literal[\"gpt-image-1\"], Literal[\"gpt-image-1-mini\"], + Literal[\"gpt-image-1.5\"], str""" + quality: Literal["low", "medium", "high", "auto"] + """The quality of the generated image. One of ``low``, ``medium``, ``high``, or ``auto``. Default: + ``auto``. Is one of the following types: Literal[\"low\"], Literal[\"medium\"], + Literal[\"high\"], Literal[\"auto\"]""" + size: Union[Literal["1024x1024"], Literal["1024x1536"], Literal["1536x1024"], Literal["auto"], str] + """The size of the generated images. For ``gpt-image-2`` and ``gpt-image-2-2026-04-21``, arbitrary + resolutions are supported as ``WIDTHxHEIGHT`` strings, for example ``1536x864``. Width and + height must both be divisible by 16 and the requested aspect ratio must be between 1:3 and 3:1. + Resolutions above ``2560x1440`` are experimental, and the maximum supported resolution is + ``3840x2160``. The requested size must also satisfy the model's current pixel and edge limits. + The standard sizes ``1024x1024``, ``1536x1024``, and ``1024x1536`` are supported by the GPT + image models; ``auto`` is supported for models that allow automatic sizing. For ``dall-e-2``, + use one of ``256x256``, ``512x512``, or ``1024x1024``. For ``dall-e-3``, use one of + ``1024x1024``, ``1792x1024``, or ``1024x1792``. Is one of the following types: + Literal[\"1024x1024\"], Literal[\"1024x1536\"], Literal[\"1536x1024\"], Literal[\"auto\"], str""" + output_format: Literal["png", "webp", "jpeg"] + """The output format of the generated image. One of ``png``, ``webp``, or ``jpeg``. Default: + ``png``. Is one of the following types: Literal[\"png\"], Literal[\"webp\"], Literal[\"jpeg\"]""" + output_compression: int + """Compression level for the output image. Default: 100.""" + moderation: Literal["auto", "low"] + """Moderation level for the generated image. Default: ``auto``. Is either a Literal[\"auto\"] type + or a Literal[\"low\"] type.""" + background: Literal["transparent", "opaque", "auto"] + """Background type for the generated image. One of ``transparent``, ``opaque``, or ``auto``. + Default: ``auto``. Is one of the following types: Literal[\"transparent\"], + Literal[\"opaque\"], Literal[\"auto\"]""" + input_fidelity: Optional[InputFidelity] + """Known values are: \"high\" and \"low\".""" + input_image_mask: "ImageGenToolInputImageMask" + """Optional mask for inpainting. Contains ``image_url`` (string, optional) and ``file_id`` + (string, optional).""" + partial_images: int + """Number of partial images to generate in streaming mode, from 0 (default value) to 3.""" + action: ImageGenActionEnum + """Whether to generate a new image or edit an existing image. Default: ``auto``. Known values are: + \"generate\", \"edit\", and \"auto\".""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + + +class ImageGenToolInputImageMask(TypedDict, total=False): + """ImageGenToolInputImageMask. + + :ivar image_url: + :vartype image_url: str + :ivar file_id: + :vartype file_id: str + """ + + image_url: str + file_id: str + + +class InlineSkillParam(TypedDict, total=False): + """InlineSkillParam. + + :ivar type: Defines an inline skill for this request. Required. INLINE. + :vartype type: Literal["inline"] + :ivar name: The name of the skill. Required. + :vartype name: str + :ivar description: The description of the skill. Required. + :vartype description: str + :ivar source: Inline skill payload. Required. + :vartype source: "InlineSkillSourceParam" + """ + + type: Required[Literal["inline"]] + """Defines an inline skill for this request. Required. INLINE.""" + name: Required[str] + """The name of the skill. Required.""" + description: Required[str] + """The description of the skill. Required.""" + source: Required["InlineSkillSourceParam"] + """Inline skill payload. Required.""" + + +class InlineSkillSourceParam(TypedDict, total=False): + """Inline skill payload. + + :ivar type: The type of the inline skill source. Must be ``base64``. Required. Default value is + "base64". + :vartype type: Literal["base64"] + :ivar media_type: The media type of the inline skill payload. Must be ``application/zip``. + Required. Default value is "application/zip". + :vartype media_type: Literal["application/zip"] + :ivar data: Base64-encoded skill zip bundle. Required. + :vartype data: str + """ + + type: Required[Literal["base64"]] + """The type of the inline skill source. Must be ``base64``. Required. Default value is \"base64\".""" + media_type: Required[Literal["application/zip"]] + """The media type of the inline skill payload. Must be ``application/zip``. Required. Default + value is \"application/zip\".""" + data: Required[str] + """Base64-encoded skill zip bundle. Required.""" + + +class InputFileContent(TypedDict, total=False): + """Input file. + + :ivar type: The type of the input item. Always ``input_file``. Required. Default value is + "input_file". + :vartype type: Literal["input_file"] + :ivar file_id: + :vartype file_id: str + :ivar filename: The name of the file to be sent to the model. + :vartype filename: str + :ivar file_data: The content of the file to be sent to the model. + :vartype file_data: str + :ivar file_url: The URL of the file to be sent to the model. + :vartype file_url: str + :ivar detail: The detail level of the file to be sent to the model. Use ``low`` for the default + rendering behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. + Known values are: "low" and "high". + :vartype detail: FileInputDetail + """ + + type: Required[Literal["input_file"]] + """The type of the input item. Always ``input_file``. Required. Default value is \"input_file\".""" + file_id: Optional[str] + filename: str + """The name of the file to be sent to the model.""" + file_data: str + """The content of the file to be sent to the model.""" + file_url: str + """The URL of the file to be sent to the model.""" + detail: FileInputDetail + """The detail level of the file to be sent to the model. Use ``low`` for the default rendering + behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. Known values + are: \"low\" and \"high\".""" + + +class InputFileContentParam(TypedDict, total=False): + """Input file. + + :ivar type: The type of the input item. Always ``input_file``. Required. Default value is + "input_file". + :vartype type: Literal["input_file"] + :ivar file_id: + :vartype file_id: str + :ivar filename: + :vartype filename: str + :ivar file_data: + :vartype file_data: str + :ivar file_url: + :vartype file_url: str + :ivar detail: The detail level of the file to be sent to the model. Use ``low`` for the default + rendering behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. + Known values are: "low" and "high". + :vartype detail: FileInputDetail + """ + + type: Required[Literal["input_file"]] + """The type of the input item. Always ``input_file``. Required. Default value is \"input_file\".""" + file_id: Optional[str] + filename: Optional[str] + file_data: Optional[str] + file_url: Optional[str] + detail: FileInputDetail + """The detail level of the file to be sent to the model. Use ``low`` for the default rendering + behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. Known values + are: \"low\" and \"high\".""" + + +class InputImageContent(TypedDict, total=False): + """Input image. + + :ivar type: The type of the input item. Always ``input_image``. Required. Default value is + "input_image". + :vartype type: Literal["input_image"] + :ivar image_url: + :vartype image_url: str + :ivar file_id: + :vartype file_id: str + :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, + ``auto``, or ``original``. Defaults to ``auto``. Required. Known values are: "low", "high", + "auto", and "original". + :vartype detail: ImageDetail + """ + + type: Required[Literal["input_image"]] + """The type of the input item. Always ``input_image``. Required. Default value is \"input_image\".""" + image_url: Optional[str] + file_id: Optional[str] + detail: Required[ImageDetail] + """The detail level of the image to be sent to the model. One of ``high``, ``low``, ``auto``, or + ``original``. Defaults to ``auto``. Required. Known values are: \"low\", \"high\", \"auto\", + and \"original\".""" + + +class InputImageContentParamAutoParam(TypedDict, total=False): + """Input image. + + :ivar type: The type of the input item. Always ``input_image``. Required. Default value is + "input_image". + :vartype type: Literal["input_image"] + :ivar image_url: + :vartype image_url: str + :ivar file_id: + :vartype file_id: str + :ivar detail: Known values are: "low", "high", "auto", and "original". + :vartype detail: DetailEnum + """ + + type: Required[Literal["input_image"]] + """The type of the input item. Always ``input_image``. Required. Default value is \"input_image\".""" + image_url: Optional[str] + file_id: Optional[str] + detail: Optional[DetailEnum] + """Known values are: \"low\", \"high\", \"auto\", and \"original\".""" + + +class InputTextContent(TypedDict, total=False): + """Input text. + + :ivar type: The type of the input item. Always ``input_text``. Required. Default value is + "input_text". + :vartype type: Literal["input_text"] + :ivar text: The text input to the model. Required. + :vartype text: str + """ + + type: Required[Literal["input_text"]] + """The type of the input item. Always ``input_text``. Required. Default value is \"input_text\".""" + text: Required[str] + """The text input to the model. Required.""" + + +class InputTextContentParam(TypedDict, total=False): + """Input text. + + :ivar type: The type of the input item. Always ``input_text``. Required. Default value is + "input_text". + :vartype type: Literal["input_text"] + :ivar text: The text input to the model. Required. + :vartype text: str + """ + + type: Required[Literal["input_text"]] + """The type of the input item. Always ``input_text``. Required. Default value is \"input_text\".""" + text: Required[str] + """The text input to the model. Required.""" + + +class ItemCodeInterpreterToolCall(TypedDict, total=False): + """Code interpreter tool call. + + :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. + Required. CODE_INTERPRETER_CALL. + :vartype type: Literal["code_interpreter_call"] + :ivar id: The unique ID of the code interpreter tool call. Required. + :vartype id: str + :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, + ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the + following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], + Literal["interpreting"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] + :ivar container_id: The ID of the container used to run the code. Required. + :vartype container_id: str + :ivar code: Required. + :vartype code: str + :ivar outputs: Required. + :vartype outputs: list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]] + """ + + type: Required[Literal["code_interpreter_call"]] + """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. + CODE_INTERPRETER_CALL.""" + id: Required[str] + """The unique ID of the code interpreter tool call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete", "interpreting", "failed"]] + """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, + ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], + Literal[\"interpreting\"], Literal[\"failed\"]""" + container_id: Required[str] + """The ID of the container used to run the code. Required.""" + code: Required[Optional[str]] + """Required.""" + outputs: Required[Optional[list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]]]] + """Required.""" + + +class ItemComputerToolCall(TypedDict, total=False): + """Computer tool call. + + :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. + :vartype type: Literal["computer_call"] + :ivar id: The unique ID of the computer call. Required. + :vartype id: str + :ivar call_id: An identifier used when responding to the tool call with output. Required. + :vartype call_id: str + :ivar action: + :vartype action: "ComputerAction" + :ivar actions: + :vartype actions: list["ComputerAction"] + :ivar pending_safety_checks: The pending safety checks for the computer call. Required. + :vartype pending_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["computer_call"]] + """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" + id: Required[str] + """The unique ID of the computer call. Required.""" + call_id: Required[str] + """An identifier used when responding to the tool call with output. Required.""" + action: "ComputerAction" + actions: list["ComputerAction"] + pending_safety_checks: Required[list["ComputerCallSafetyCheckParam"]] + """The pending safety checks for the computer call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemCustomToolCall(TypedDict, total=False): + """Custom tool call. + + :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. + CUSTOM_TOOL_CALL. + :vartype type: Literal["custom_tool_call"] + :ivar id: The unique ID of the custom tool call in the OpenAI platform. + :vartype id: str + :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. + :vartype call_id: str + :ivar namespace: The namespace of the custom tool being called. + :vartype namespace: str + :ivar name: The name of the custom tool being called. Required. + :vartype name: str + :ivar input: The input for the custom tool call generated by the model. Required. + :vartype input: str + """ + + type: Required[Literal["custom_tool_call"]] + """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" + id: str + """The unique ID of the custom tool call in the OpenAI platform.""" + call_id: Required[str] + """An identifier used to map this custom tool call to a tool call output. Required.""" + namespace: str + """The namespace of the custom tool being called.""" + name: Required[str] + """The name of the custom tool being called. Required.""" + input: Required[str] + """The input for the custom tool call generated by the model. Required.""" + + +class ItemCustomToolCallOutput(TypedDict, total=False): + """Custom tool call output. + + :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. + Required. CUSTOM_TOOL_CALL_OUTPUT. + :vartype type: Literal["custom_tool_call_output"] + :ivar id: The unique ID of the custom tool call output in the OpenAI platform. + :vartype id: str + :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. + Required. + :vartype call_id: str + :ivar output: The output from the custom tool call generated by your code. Can be a string or + an list of output content. Required. Is either a str type or a + [FunctionAndCustomToolCallOutput] type. + :vartype output: Union[str, list["FunctionAndCustomToolCallOutput"]] + """ + + type: Required[Literal["custom_tool_call_output"]] + """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. + CUSTOM_TOOL_CALL_OUTPUT.""" + id: str + """The unique ID of the custom tool call output in the OpenAI platform.""" + call_id: Required[str] + """The call ID, used to map this custom tool call output to a custom tool call. Required.""" + output: Required[Union[str, list["FunctionAndCustomToolCallOutput"]]] + """The output from the custom tool call generated by your code. Can be a string or an list of + output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" + + +class ItemFieldAdditionalTools(TypedDict, total=False): + """ItemFieldAdditionalTools. + + :ivar type: The type of the item. Always ``additional_tools``. Required. ADDITIONAL_TOOLS. + :vartype type: Literal["additional_tools"] + :ivar id: The unique ID of the additional tools item. Required. + :vartype id: str + :ivar role: The role that provided the additional tools. Required. Known values are: "unknown", + "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". + :vartype role: MessageRole + :ivar tools: The additional tool definitions made available at this item. Required. + :vartype tools: list["Tool"] + """ + + type: Required[Literal["additional_tools"]] + """The type of the item. Always ``additional_tools``. Required. ADDITIONAL_TOOLS.""" + id: Required[str] + """The unique ID of the additional tools item. Required.""" + role: Required[MessageRole] + """The role that provided the additional tools. Required. Known values are: \"unknown\", \"user\", + \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and \"tool\".""" + tools: Required[list["Tool"]] + """The additional tool definitions made available at this item. Required.""" + + +class ItemFieldApplyPatchToolCall(TypedDict, total=False): + """Apply patch tool call. + + :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. + :vartype type: Literal["apply_patch_call"] + :ivar id: The unique ID of the apply patch tool call. Populated when this item is returned via + API. Required. + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. + Required. Known values are: "in_progress" and "completed". + :vartype status: ApplyPatchCallStatus + :ivar operation: Apply patch operation. Required. + :vartype operation: "ApplyPatchFileOperation" + :ivar created_by: The ID of the entity that created this tool call. + :vartype created_by: str + """ + + type: Required[Literal["apply_patch_call"]] + """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" + id: Required[str] + """The unique ID of the apply patch tool call. Populated when this item is returned via API. + Required.""" + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallStatus] + """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. + Known values are: \"in_progress\" and \"completed\".""" + operation: Required["ApplyPatchFileOperation"] + """Apply patch operation. Required.""" + created_by: str + """The ID of the entity that created this tool call.""" + + +class ItemFieldApplyPatchToolCallOutput(TypedDict, total=False): + """Apply patch tool call output. + + :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. + APPLY_PATCH_CALL_OUTPUT. + :vartype type: Literal["apply_patch_call_output"] + :ivar id: The unique ID of the apply patch tool call output. Populated when this item is + returned via API. Required. + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call output. One of ``completed`` or + ``failed``. Required. Known values are: "completed" and "failed". + :vartype status: ApplyPatchCallOutputStatus + :ivar output: + :vartype output: str + :ivar created_by: The ID of the entity that created this tool call output. + :vartype created_by: str + """ + + type: Required[Literal["apply_patch_call_output"]] + """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the apply patch tool call output. Populated when this item is returned via + API. Required.""" + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallOutputStatus] + """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. + Known values are: \"completed\" and \"failed\".""" + output: Optional[str] + created_by: str + """The ID of the entity that created this tool call output.""" + + +class ItemFieldCodeInterpreterToolCall(TypedDict, total=False): + """Code interpreter tool call. + + :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. + Required. CODE_INTERPRETER_CALL. + :vartype type: Literal["code_interpreter_call"] + :ivar id: The unique ID of the code interpreter tool call. Required. + :vartype id: str + :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, + ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the + following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], + Literal["interpreting"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] + :ivar container_id: The ID of the container used to run the code. Required. + :vartype container_id: str + :ivar code: Required. + :vartype code: str + :ivar outputs: Required. + :vartype outputs: list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]] + """ + + type: Required[Literal["code_interpreter_call"]] + """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. + CODE_INTERPRETER_CALL.""" + id: Required[str] + """The unique ID of the code interpreter tool call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete", "interpreting", "failed"]] + """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, + ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], + Literal[\"interpreting\"], Literal[\"failed\"]""" + container_id: Required[str] + """The ID of the container used to run the code. Required.""" + code: Required[Optional[str]] + """Required.""" + outputs: Required[Optional[list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]]]] + """Required.""" + + +class ItemFieldCompactionBody(TypedDict, total=False): + """Compaction item. + + :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. + :vartype type: Literal["compaction"] + :ivar id: The unique ID of the compaction item. Required. + :vartype id: str + :ivar encrypted_content: The encrypted content that was produced by compaction. Required. + :vartype encrypted_content: str + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + type: Required[Literal["compaction"]] + """The type of the item. Always ``compaction``. Required. COMPACTION.""" + id: Required[str] + """The unique ID of the compaction item. Required.""" + encrypted_content: Required[str] + """The encrypted content that was produced by compaction. Required.""" + created_by: str + """The identifier of the actor that created the item.""" + + +class ItemFieldComputerToolCall(TypedDict, total=False): + """Computer tool call. + + :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. + :vartype type: Literal["computer_call"] + :ivar id: The unique ID of the computer call. Required. + :vartype id: str + :ivar call_id: An identifier used when responding to the tool call with output. Required. + :vartype call_id: str + :ivar action: + :vartype action: "ComputerAction" + :ivar actions: + :vartype actions: list["ComputerAction"] + :ivar pending_safety_checks: The pending safety checks for the computer call. Required. + :vartype pending_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["computer_call"]] + """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" + id: Required[str] + """The unique ID of the computer call. Required.""" + call_id: Required[str] + """An identifier used when responding to the tool call with output. Required.""" + action: "ComputerAction" + actions: list["ComputerAction"] + pending_safety_checks: Required[list["ComputerCallSafetyCheckParam"]] + """The pending safety checks for the computer call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldComputerToolCallOutput(TypedDict, total=False): + """Computer tool call output. + + :ivar type: The type of the computer tool call output. Always ``computer_call_output``. + Required. COMPUTER_CALL_OUTPUT. + :vartype type: Literal["computer_call_output"] + :ivar id: The ID of the computer tool call output. Required. + :vartype id: str + :ivar call_id: The ID of the computer tool call that produced the output. Required. + :vartype call_id: str + :ivar acknowledged_safety_checks: The safety checks reported by the API that have been + acknowledged by the developer. + :vartype acknowledged_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar output: Required. + :vartype output: "ComputerScreenshotImage" + :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or + ``incomplete``. Populated when input items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["computer_call_output"]] + """The type of the computer tool call output. Always ``computer_call_output``. Required. + COMPUTER_CALL_OUTPUT.""" + id: Required[str] + """The ID of the computer tool call output. Required.""" + call_id: Required[str] + """The ID of the computer tool call that produced the output. Required.""" + acknowledged_safety_checks: list["ComputerCallSafetyCheckParam"] + """The safety checks reported by the API that have been acknowledged by the developer.""" + output: Required["ComputerScreenshotImage"] + """Required.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when input items are returned via API. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldCustomToolCall(TypedDict, total=False): + """Custom tool call. + + :ivar type: The type of the custom tool call. Always ``custom_tool_call``. Required. + CUSTOM_TOOL_CALL. + :vartype type: Literal["custom_tool_call"] + :ivar id: The unique ID of the custom tool call in the OpenAI platform. + :vartype id: str + :ivar call_id: An identifier used to map this custom tool call to a tool call output. Required. + :vartype call_id: str + :ivar namespace: The namespace of the custom tool being called. + :vartype namespace: str + :ivar name: The name of the custom tool being called. Required. + :vartype name: str + :ivar input: The input for the custom tool call generated by the model. Required. + :vartype input: str + """ + + type: Required[Literal["custom_tool_call"]] + """The type of the custom tool call. Always ``custom_tool_call``. Required. CUSTOM_TOOL_CALL.""" + id: str + """The unique ID of the custom tool call in the OpenAI platform.""" + call_id: Required[str] + """An identifier used to map this custom tool call to a tool call output. Required.""" + namespace: str + """The namespace of the custom tool being called.""" + name: Required[str] + """The name of the custom tool being called. Required.""" + input: Required[str] + """The input for the custom tool call generated by the model. Required.""" + + +class ItemFieldCustomToolCallOutput(TypedDict, total=False): + """Custom tool call output. + + :ivar type: The type of the custom tool call output. Always ``custom_tool_call_output``. + Required. CUSTOM_TOOL_CALL_OUTPUT. + :vartype type: Literal["custom_tool_call_output"] + :ivar id: The unique ID of the custom tool call output in the OpenAI platform. + :vartype id: str + :ivar call_id: The call ID, used to map this custom tool call output to a custom tool call. + Required. + :vartype call_id: str + :ivar output: The output from the custom tool call generated by your code. Can be a string or + an list of output content. Required. Is either a str type or a + [FunctionAndCustomToolCallOutput] type. + :vartype output: Union[str, list["FunctionAndCustomToolCallOutput"]] + """ + + type: Required[Literal["custom_tool_call_output"]] + """The type of the custom tool call output. Always ``custom_tool_call_output``. Required. + CUSTOM_TOOL_CALL_OUTPUT.""" + id: str + """The unique ID of the custom tool call output in the OpenAI platform.""" + call_id: Required[str] + """The call ID, used to map this custom tool call output to a custom tool call. Required.""" + output: Required[Union[str, list["FunctionAndCustomToolCallOutput"]]] + """The output from the custom tool call generated by your code. Can be a string or an list of + output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" + + +class ItemFieldFileSearchToolCall(TypedDict, total=False): + """File search tool call. + + :ivar id: The unique ID of the file search tool call. Required. + :vartype id: str + :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. + FILE_SEARCH_CALL. + :vartype type: Literal["file_search_call"] + :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, + ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], + Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] + :vartype status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] + :ivar queries: The queries used to search for files. Required. + :vartype queries: list[str] + :ivar results: + :vartype results: list["FileSearchToolCallResults"] + """ + + id: Required[str] + """The unique ID of the file search tool call. Required.""" + type: Required[Literal["file_search_call"]] + """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "incomplete", "failed"]] + """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` + or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], + Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" + queries: Required[list[str]] + """The queries used to search for files. Required.""" + results: Optional[list["FileSearchToolCallResults"]] + + +class ItemFieldFunctionShellCall(TypedDict, total=False): + """Shell tool call. + + :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. + :vartype type: Literal["shell_call"] + :ivar id: The unique ID of the shell tool call. Populated when this item is returned via API. + Required. + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar action: The shell commands and limits that describe how to run the tool call. Required. + :vartype action: "FunctionShellAction" + :ivar status: The status of the shell call. One of ``in_progress``, ``completed``, or + ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallStatus + :ivar environment: Required. + :vartype environment: "FunctionShellCallEnvironment" + :ivar created_by: The ID of the entity that created this tool call. + :vartype created_by: str + """ + + type: Required[Literal["shell_call"]] + """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" + id: Required[str] + """The unique ID of the shell tool call. Populated when this item is returned via API. Required.""" + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + action: Required["FunctionShellAction"] + """The shell commands and limits that describe how to run the tool call. Required.""" + status: Required[FunctionShellCallStatus] + """The status of the shell call. One of ``in_progress``, ``completed``, or ``incomplete``. + Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + environment: Required[Optional["FunctionShellCallEnvironment"]] + """Required.""" + created_by: str + """The ID of the entity that created this tool call.""" + + +class ItemFieldFunctionShellCallOutput(TypedDict, total=False): + """Shell call output. + + :ivar type: The type of the shell call output. Always ``shell_call_output``. Required. + SHELL_CALL_OUTPUT. + :vartype type: Literal["shell_call_output"] + :ivar id: The unique ID of the shell call output. Populated when this item is returned via API. + Required. + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the shell call output. One of ``in_progress``, ``completed``, or + ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallOutputStatusEnum + :ivar output: An array of shell call output contents. Required. + :vartype output: list["FunctionShellCallOutputContent"] + :ivar max_output_length: Required. + :vartype max_output_length: int + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + type: Required[Literal["shell_call_output"]] + """The type of the shell call output. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the shell call output. Populated when this item is returned via API. Required.""" + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + status: Required[FunctionShellCallOutputStatusEnum] + """The status of the shell call output. One of ``in_progress``, ``completed``, or ``incomplete``. + Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + output: Required[list["FunctionShellCallOutputContent"]] + """An array of shell call output contents. Required.""" + max_output_length: Required[Optional[int]] + """Required.""" + created_by: str + """The identifier of the actor that created the item.""" + + +class ItemFieldFunctionToolCall(TypedDict, total=False): + """Function tool call. + + :ivar id: The unique ID of the function tool call. Required. + :vartype id: str + :ivar type: The type of the function tool call. Always ``function_call``. Required. + FUNCTION_CALL. + :vartype type: Literal["function_call"] + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar namespace: The namespace of the function to run. + :vartype namespace: str + :ivar name: The name of the function to run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the function. Required. + :vartype arguments: str + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + id: Required[str] + """The unique ID of the function tool call. Required.""" + type: Required[Literal["function_call"]] + """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + namespace: str + """The namespace of the function to run.""" + name: Required[str] + """The name of the function to run. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the function. Required.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldFunctionToolCallOutput(TypedDict, total=False): + """Function tool call output. + + :ivar id: The unique ID of the function tool call output. Populated when this item is returned + via API. Required. + :vartype id: str + :ivar type: The type of the function tool call output. Always ``function_call_output``. + Required. FUNCTION_CALL_OUTPUT. + :vartype type: Literal["function_call_output"] + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the function call generated by your code. Can be a string or an + list of output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] + type. + :vartype output: Union[str, list["FunctionAndCustomToolCallOutput"]] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + id: Required[str] + """The unique ID of the function tool call output. Populated when this item is returned via API. + Required.""" + type: Required[Literal["function_call_output"]] + """The type of the function tool call output. Always ``function_call_output``. Required. + FUNCTION_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + output: Required[Union[str, list["FunctionAndCustomToolCallOutput"]]] + """The output from the function call generated by your code. Can be a string or an list of output + content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldImageGenToolCall(TypedDict, total=False): + """Image generation call. + + :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL. + :vartype type: Literal["image_generation_call"] + :ivar id: The unique ID of the image generation call. Required. + :vartype id: str + :ivar status: The status of the image generation call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "generating", "failed"] + :ivar result: Required. + :vartype result: str + """ + + type: Required[Literal["image_generation_call"]] + """The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL.""" + id: Required[str] + """The unique ID of the image generation call. Required.""" + status: Required[Literal["in_progress", "completed", "generating", "failed"]] + """The status of the image generation call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" + result: Required[Optional[str]] + """Required.""" + + +class ItemFieldLocalShellToolCall(TypedDict, total=False): + """Local shell call. + + :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. + LOCAL_SHELL_CALL. + :vartype type: Literal["local_shell_call"] + :ivar id: The unique ID of the local shell call. Required. + :vartype id: str + :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. + :vartype call_id: str + :ivar action: Required. + :vartype action: "LocalShellExecAction" + :ivar status: The status of the local shell call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["local_shell_call"]] + """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" + id: Required[str] + """The unique ID of the local shell call. Required.""" + call_id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + action: Required["LocalShellExecAction"] + """Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the local shell call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldLocalShellToolCallOutput(TypedDict, total=False): + """Local shell call output. + + :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. + Required. LOCAL_SHELL_CALL_OUTPUT. + :vartype type: Literal["local_shell_call_output"] + :ivar id: The unique ID of the local shell tool call generated by the model. Required. + :vartype id: str + :ivar output: A JSON string of the output of the local shell tool call. Required. + :vartype output: str + :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["local_shell_call_output"]] + """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. + LOCAL_SHELL_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + output: Required[str] + """A JSON string of the output of the local shell tool call. Required.""" + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], + Literal[\"incomplete\"]""" + + +class ItemFieldMcpApprovalRequest(TypedDict, total=False): + """MCP approval request. + + :ivar type: The type of the item. Always ``mcp_approval_request``. Required. + MCP_APPROVAL_REQUEST. + :vartype type: Literal["mcp_approval_request"] + :ivar id: The unique ID of the approval request. Required. + :vartype id: str + :ivar server_label: The label of the MCP server making the request. Required. + :vartype server_label: str + :ivar name: The name of the tool to run. Required. + :vartype name: str + :ivar arguments: A JSON string of arguments for the tool. Required. + :vartype arguments: str + """ + + type: Required[Literal["mcp_approval_request"]] + """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" + id: Required[str] + """The unique ID of the approval request. Required.""" + server_label: Required[str] + """The label of the MCP server making the request. Required.""" + name: Required[str] + """The name of the tool to run. Required.""" + arguments: Required[str] + """A JSON string of arguments for the tool. Required.""" + + +class ItemFieldMcpApprovalResponseResource(TypedDict, total=False): + """MCP approval response. + + :ivar type: The type of the item. Always ``mcp_approval_response``. Required. + MCP_APPROVAL_RESPONSE. + :vartype type: Literal["mcp_approval_response"] + :ivar id: The unique ID of the approval response. Required. + :vartype id: str + :ivar approval_request_id: The ID of the approval request being answered. Required. + :vartype approval_request_id: str + :ivar approve: Whether the request was approved. Required. + :vartype approve: bool + :ivar reason: + :vartype reason: str + """ + + type: Required[Literal["mcp_approval_response"]] + """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" + id: Required[str] + """The unique ID of the approval response. Required.""" + approval_request_id: Required[str] + """The ID of the approval request being answered. Required.""" + approve: Required[bool] + """Whether the request was approved. Required.""" + reason: Optional[str] + + +class ItemFieldMcpListTools(TypedDict, total=False): + """MCP list tools. + + :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. + :vartype type: Literal["mcp_list_tools"] + :ivar id: The unique ID of the list. Required. + :vartype id: str + :ivar server_label: The label of the MCP server. Required. + :vartype server_label: str + :ivar tools: The tools available on the server. Required. + :vartype tools: list["MCPListToolsTool"] + :ivar error: + :vartype error: "RealtimeMCPError" + """ + + type: Required[Literal["mcp_list_tools"]] + """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" + id: Required[str] + """The unique ID of the list. Required.""" + server_label: Required[str] + """The label of the MCP server. Required.""" + tools: Required[list["MCPListToolsTool"]] + """The tools available on the server. Required.""" + error: "RealtimeMCPError" + + +class ItemFieldMcpToolCall(TypedDict, total=False): + """MCP tool call. + + :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. + :vartype type: Literal["mcp_call"] + :ivar id: The unique ID of the tool call. Required. + :vartype id: str + :ivar server_label: The label of the MCP server running the tool. Required. + :vartype server_label: str + :ivar name: The name of the tool that was run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments passed to the tool. Required. + :vartype arguments: str + :ivar output: + :vartype output: str + :ivar error: + :vartype error: dict[str, Any] + :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, + ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", + "incomplete", "calling", and "failed". + :vartype status: MCPToolCallStatus + :ivar approval_request_id: + :vartype approval_request_id: str + """ + + type: Required[Literal["mcp_call"]] + """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" + id: Required[str] + """The unique ID of the tool call. Required.""" + server_label: Required[str] + """The label of the MCP server running the tool. Required.""" + name: Required[str] + """The name of the tool that was run. Required.""" + arguments: Required[str] + """A JSON string of the arguments passed to the tool. Required.""" + output: Optional[str] + error: dict[str, Any] + status: MCPToolCallStatus + """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, + ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", + \"calling\", and \"failed\".""" + approval_request_id: Optional[str] + + +class ItemFieldMessage(TypedDict, total=False): + """Message. + + :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. + :vartype type: Literal["message"] + :ivar id: The unique ID of the message. Required. + :vartype id: str + :ivar status: The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Known values are: "in_progress", + "completed", and "incomplete". + :vartype status: MessageStatus + :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, + ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: + "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". + :vartype role: MessageRole + :ivar content: The content of the message. Required. + :vartype content: list["MessageContent"] + :ivar phase: Known values are: "commentary" and "final_answer". + :vartype phase: MessagePhase + """ + + type: Required[Literal["message"]] + """The type of the message. Always set to ``message``. Required. MESSAGE.""" + id: Required[str] + """The unique ID of the message. Required.""" + status: Required[MessageStatus] + """The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated when + items are returned via API. Required. Known values are: \"in_progress\", \"completed\", and + \"incomplete\".""" + role: Required[MessageRole] + """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, + ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", + \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and + \"tool\".""" + content: Required[list["MessageContent"]] + """The content of the message. Required.""" + phase: Optional[MessagePhase] + """Known values are: \"commentary\" and \"final_answer\".""" + + +class ItemFieldReasoningItem(TypedDict, total=False): + """Reasoning. + + :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. + :vartype type: Literal["reasoning"] + :ivar id: The unique identifier of the reasoning content. Required. + :vartype id: str + :ivar encrypted_content: + :vartype encrypted_content: str + :ivar summary: Reasoning summary content. Required. + :vartype summary: list["SummaryTextContent"] + :ivar content: Reasoning text content. + :vartype content: list["ReasoningTextContent"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["reasoning"]] + """The type of the object. Always ``reasoning``. Required. REASONING.""" + id: Required[str] + """The unique identifier of the reasoning content. Required.""" + encrypted_content: Optional[str] + summary: Required[list["SummaryTextContent"]] + """Reasoning summary content. Required.""" + content: list["ReasoningTextContent"] + """Reasoning text content.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemFieldToolSearchCall(TypedDict, total=False): + """ItemFieldToolSearchCall. + + :ivar type: The type of the item. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL. + :vartype type: Literal["tool_search_call"] + :ivar id: The unique ID of the tool search call item. Required. + :vartype id: str + :ivar call_id: Required. + :vartype call_id: str + :ivar execution: Whether tool search was executed by the server or by the client. Required. + Known values are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar arguments: Arguments used for the tool search call. Required. + :vartype arguments: Any + :ivar status: The status of the tool search call item that was recorded. Required. Known values + are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallStatus + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + type: Required[Literal["tool_search_call"]] + """The type of the item. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL.""" + id: Required[str] + """The unique ID of the tool search call item. Required.""" + call_id: Required[Optional[str]] + """Required.""" + execution: Required[ToolSearchExecutionType] + """Whether tool search was executed by the server or by the client. Required. Known values are: + \"server\" and \"client\".""" + arguments: Required[Any] + """Arguments used for the tool search call. Required.""" + status: Required[FunctionCallStatus] + """The status of the tool search call item that was recorded. Required. Known values are: + \"in_progress\", \"completed\", and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class ItemFieldToolSearchOutput(TypedDict, total=False): + """ItemFieldToolSearchOutput. + + :ivar type: The type of the item. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT. + :vartype type: Literal["tool_search_output"] + :ivar id: The unique ID of the tool search output item. Required. + :vartype id: str + :ivar call_id: Required. + :vartype call_id: str + :ivar execution: Whether tool search was executed by the server or by the client. Required. + Known values are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar tools: The loaded tool definitions returned by tool search. Required. + :vartype tools: list["Tool"] + :ivar status: The status of the tool search output item that was recorded. Required. Known + values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallOutputStatusEnum + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + type: Required[Literal["tool_search_output"]] + """The type of the item. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT.""" + id: Required[str] + """The unique ID of the tool search output item. Required.""" + call_id: Required[Optional[str]] + """Required.""" + execution: Required[ToolSearchExecutionType] + """Whether tool search was executed by the server or by the client. Required. Known values are: + \"server\" and \"client\".""" + tools: Required[list["Tool"]] + """The loaded tool definitions returned by tool search. Required.""" + status: Required[FunctionCallOutputStatusEnum] + """The status of the tool search output item that was recorded. Required. Known values are: + \"in_progress\", \"completed\", and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class ItemFieldWebSearchToolCall(TypedDict, total=False): + """Web search tool call. + + :ivar id: The unique ID of the web search tool call. Required. + :vartype id: str + :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. + WEB_SEARCH_CALL. + :vartype type: Literal["web_search_call"] + :ivar status: The status of the web search tool call. Required. Is one of the following types: + Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "searching", "completed", "failed", "incomplete"] + :ivar action: An object describing the specific action taken in this web search call. Includes + details on how the model used the web (search, open_page, find_in_page). Required. Is one of + the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind + :vartype action: Union["WebSearchActionSearch", "WebSearchActionOpenPage", + "WebSearchActionFind"] + """ + + id: Required[str] + """The unique ID of the web search tool call. Required.""" + type: Required[Literal["web_search_call"]] + """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "failed", "incomplete"]] + """The status of the web search tool call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"], + Literal[\"incomplete\"]""" + action: Required[Union["WebSearchActionSearch", "WebSearchActionOpenPage", "WebSearchActionFind"]] + """An object describing the specific action taken in this web search call. Includes details on how + the model used the web (search, open_page, find_in_page). Required. Is one of the following + types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" + + +class ItemFileSearchToolCall(TypedDict, total=False): + """File search tool call. + + :ivar id: The unique ID of the file search tool call. Required. + :vartype id: str + :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. + FILE_SEARCH_CALL. + :vartype type: Literal["file_search_call"] + :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, + ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], + Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] + :vartype status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] + :ivar queries: The queries used to search for files. Required. + :vartype queries: list[str] + :ivar results: + :vartype results: list["FileSearchToolCallResults"] + """ + + id: Required[str] + """The unique ID of the file search tool call. Required.""" + type: Required[Literal["file_search_call"]] + """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "incomplete", "failed"]] + """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` + or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], + Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" + queries: Required[list[str]] + """The queries used to search for files. Required.""" + results: Optional[list["FileSearchToolCallResults"]] + + +class ItemFunctionToolCall(TypedDict, total=False): + """Function tool call. + + :ivar id: The unique ID of the function tool call. Required. + :vartype id: str + :ivar type: The type of the function tool call. Always ``function_call``. Required. + FUNCTION_CALL. + :vartype type: Literal["function_call"] + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar namespace: The namespace of the function to run. + :vartype namespace: str + :ivar name: The name of the function to run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the function. Required. + :vartype arguments: str + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + id: Required[str] + """The unique ID of the function tool call. Required.""" + type: Required[Literal["function_call"]] + """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + namespace: str + """The namespace of the function to run.""" + name: Required[str] + """The name of the function to run. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the function. Required.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemImageGenToolCall(TypedDict, total=False): + """Image generation call. + + :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL. + :vartype type: Literal["image_generation_call"] + :ivar id: The unique ID of the image generation call. Required. + :vartype id: str + :ivar status: The status of the image generation call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "generating", "failed"] + :ivar result: Required. + :vartype result: str + """ + + type: Required[Literal["image_generation_call"]] + """The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL.""" + id: Required[str] + """The unique ID of the image generation call. Required.""" + status: Required[Literal["in_progress", "completed", "generating", "failed"]] + """The status of the image generation call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" + result: Required[Optional[str]] + """Required.""" + + +class ItemLocalShellToolCall(TypedDict, total=False): + """Local shell call. + + :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. + LOCAL_SHELL_CALL. + :vartype type: Literal["local_shell_call"] + :ivar id: The unique ID of the local shell call. Required. + :vartype id: str + :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. + :vartype call_id: str + :ivar action: Required. + :vartype action: "LocalShellExecAction" + :ivar status: The status of the local shell call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["local_shell_call"]] + """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" + id: Required[str] + """The unique ID of the local shell call. Required.""" + call_id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + action: Required["LocalShellExecAction"] + """Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the local shell call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemLocalShellToolCallOutput(TypedDict, total=False): + """Local shell call output. + + :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. + Required. LOCAL_SHELL_CALL_OUTPUT. + :vartype type: Literal["local_shell_call_output"] + :ivar id: The unique ID of the local shell tool call generated by the model. Required. + :vartype id: str + :ivar output: A JSON string of the output of the local shell tool call. Required. + :vartype output: str + :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["local_shell_call_output"]] + """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. + LOCAL_SHELL_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + output: Required[str] + """A JSON string of the output of the local shell tool call. Required.""" + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], + Literal[\"incomplete\"]""" + + +class ItemMcpApprovalRequest(TypedDict, total=False): + """MCP approval request. + + :ivar type: The type of the item. Always ``mcp_approval_request``. Required. + MCP_APPROVAL_REQUEST. + :vartype type: Literal["mcp_approval_request"] + :ivar id: The unique ID of the approval request. Required. + :vartype id: str + :ivar server_label: The label of the MCP server making the request. Required. + :vartype server_label: str + :ivar name: The name of the tool to run. Required. + :vartype name: str + :ivar arguments: A JSON string of arguments for the tool. Required. + :vartype arguments: str + """ + + type: Required[Literal["mcp_approval_request"]] + """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" + id: Required[str] + """The unique ID of the approval request. Required.""" + server_label: Required[str] + """The label of the MCP server making the request. Required.""" + name: Required[str] + """The name of the tool to run. Required.""" + arguments: Required[str] + """A JSON string of arguments for the tool. Required.""" + + +class ItemMcpListTools(TypedDict, total=False): + """MCP list tools. + + :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. + :vartype type: Literal["mcp_list_tools"] + :ivar id: The unique ID of the list. Required. + :vartype id: str + :ivar server_label: The label of the MCP server. Required. + :vartype server_label: str + :ivar tools: The tools available on the server. Required. + :vartype tools: list["MCPListToolsTool"] + :ivar error: + :vartype error: "RealtimeMCPError" + """ + + type: Required[Literal["mcp_list_tools"]] + """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" + id: Required[str] + """The unique ID of the list. Required.""" + server_label: Required[str] + """The label of the MCP server. Required.""" + tools: Required[list["MCPListToolsTool"]] + """The tools available on the server. Required.""" + error: "RealtimeMCPError" + + +class ItemMcpToolCall(TypedDict, total=False): + """MCP tool call. + + :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. + :vartype type: Literal["mcp_call"] + :ivar id: The unique ID of the tool call. Required. + :vartype id: str + :ivar server_label: The label of the MCP server running the tool. Required. + :vartype server_label: str + :ivar name: The name of the tool that was run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments passed to the tool. Required. + :vartype arguments: str + :ivar output: + :vartype output: str + :ivar error: + :vartype error: dict[str, Any] + :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, + ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", + "incomplete", "calling", and "failed". + :vartype status: MCPToolCallStatus + :ivar approval_request_id: + :vartype approval_request_id: str + """ + + type: Required[Literal["mcp_call"]] + """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" + id: Required[str] + """The unique ID of the tool call. Required.""" + server_label: Required[str] + """The label of the MCP server running the tool. Required.""" + name: Required[str] + """The name of the tool that was run. Required.""" + arguments: Required[str] + """A JSON string of the arguments passed to the tool. Required.""" + output: Optional[str] + error: dict[str, Any] + status: MCPToolCallStatus + """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, + ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", + \"calling\", and \"failed\".""" + approval_request_id: Optional[str] + + +class ItemMessage(TypedDict, total=False): + """Message. + + :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. + :vartype type: Literal["message"] + :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, + ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: + "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". + :vartype role: MessageRole + :ivar phase: Known values are: "commentary" and "final_answer". + :vartype phase: MessagePhase + :ivar content: Required. Is either a str type or a [MessageContent] type. + :vartype content: Union[str, list["MessageContent"]] + """ + + type: Required[Literal["message"]] + """The type of the message. Always set to ``message``. Required. MESSAGE.""" + role: Required[MessageRole] + """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, + ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", + \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and + \"tool\".""" + phase: Optional[MessagePhase] + """Known values are: \"commentary\" and \"final_answer\".""" + content: Required[Union[str, list["MessageContent"]]] + """Required. Is either a str type or a [MessageContent] type.""" + + +class ItemOutputMessage(TypedDict, total=False): + """Output message. + + :ivar id: The unique ID of the output message. Required. + :vartype id: str + :ivar type: The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE. + :vartype type: Literal["output_message"] + :ivar role: The role of the output message. Always ``assistant``. Required. Default value is + "assistant". + :vartype role: Literal["assistant"] + :ivar content: The content of the output message. Required. + :vartype content: list["OutputMessageContent"] + :ivar phase: Known values are: "commentary" and "final_answer". + :vartype phase: MessagePhase + :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or + ``incomplete``. Populated when input items are returned via API. Required. Is one of the + following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + id: Required[str] + """The unique ID of the output message. Required.""" + type: Required[Literal["output_message"]] + """The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE.""" + role: Required[Literal["assistant"]] + """The role of the output message. Always ``assistant``. Required. Default value is \"assistant\".""" + content: Required[list["OutputMessageContent"]] + """The content of the output message. Required.""" + phase: Optional[MessagePhase] + """Known values are: \"commentary\" and \"final_answer\".""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when input items are returned via API. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemReasoningItem(TypedDict, total=False): + """Reasoning. + + :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. + :vartype type: Literal["reasoning"] + :ivar id: The unique identifier of the reasoning content. Required. + :vartype id: str + :ivar encrypted_content: + :vartype encrypted_content: str + :ivar summary: Reasoning summary content. Required. + :vartype summary: list["SummaryTextContent"] + :ivar content: Reasoning text content. + :vartype content: list["ReasoningTextContent"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + type: Required[Literal["reasoning"]] + """The type of the object. Always ``reasoning``. Required. REASONING.""" + id: Required[str] + """The unique identifier of the reasoning content. Required.""" + encrypted_content: Optional[str] + summary: Required[list["SummaryTextContent"]] + """Reasoning summary content. Required.""" + content: list["ReasoningTextContent"] + """Reasoning text content.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class ItemReferenceParam(TypedDict, total=False): + """Item reference. + + :ivar type: The type of item to reference. Always ``item_reference``. Required. ITEM_REFERENCE. + :vartype type: Literal["item_reference"] + :ivar id: The ID of the item to reference. Required. + :vartype id: str + """ + + type: Required[Literal["item_reference"]] + """The type of item to reference. Always ``item_reference``. Required. ITEM_REFERENCE.""" + id: Required[str] + """The ID of the item to reference. Required.""" + + +class ItemWebSearchToolCall(TypedDict, total=False): + """Web search tool call. + + :ivar id: The unique ID of the web search tool call. Required. + :vartype id: str + :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. + WEB_SEARCH_CALL. + :vartype type: Literal["web_search_call"] + :ivar status: The status of the web search tool call. Required. Is one of the following types: + Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "searching", "completed", "failed", "incomplete"] + :ivar action: An object describing the specific action taken in this web search call. Includes + details on how the model used the web (search, open_page, find_in_page). Required. Is one of + the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind + :vartype action: Union["WebSearchActionSearch", "WebSearchActionOpenPage", + "WebSearchActionFind"] + """ + + id: Required[str] + """The unique ID of the web search tool call. Required.""" + type: Required[Literal["web_search_call"]] + """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "failed", "incomplete"]] + """The status of the web search tool call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"], + Literal[\"incomplete\"]""" + action: Required[Union["WebSearchActionSearch", "WebSearchActionOpenPage", "WebSearchActionFind"]] + """An object describing the specific action taken in this web search call. Includes details on how + the model used the web (search, open_page, find_in_page). Required. Is one of the following + types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" + + +class KeyPressAction(TypedDict, total=False): + """KeyPress. + + :ivar type: Specifies the event type. For a keypress action, this property is always set to + ``keypress``. Required. KEYPRESS. + :vartype type: Literal["keypress"] + :ivar keys_property: The combination of keys the model is requesting to be pressed. This is an + array of strings, each representing a key. Required. + :vartype keys_property: list[str] + """ + + type: Required[Literal["keypress"]] + """Specifies the event type. For a keypress action, this property is always set to ``keypress``. + Required. KEYPRESS.""" + keys: Required[list[str]] + """The combination of keys the model is requesting to be pressed. This is an array of strings, + each representing a key. Required.""" + + +class LocalEnvironmentResource(TypedDict, total=False): + """Local Environment. + + :ivar type: The environment type. Always ``local``. Required. LOCAL. + :vartype type: Literal["local"] + """ + + type: Required[Literal["local"]] + """The environment type. Always ``local``. Required. LOCAL.""" + + +class LocalShellExecAction(TypedDict, total=False): + """Local shell exec action. + + :ivar type: The type of the local shell action. Always ``exec``. Required. Default value is + "exec". + :vartype type: Literal["exec"] + :ivar command: The command to run. Required. + :vartype command: list[str] + :ivar timeout_ms: + :vartype timeout_ms: int + :ivar working_directory: + :vartype working_directory: str + :ivar env: Environment variables to set for the command. Required. + :vartype env: dict[str, str] + :ivar user: + :vartype user: str + """ + + type: Required[Literal["exec"]] + """The type of the local shell action. Always ``exec``. Required. Default value is \"exec\".""" + command: Required[list[str]] + """The command to run. Required.""" + timeout_ms: Optional[int] + working_directory: Optional[str] + env: Required[dict[str, str]] + """Environment variables to set for the command. Required.""" + user: Optional[str] + + +class LocalShellToolParam(TypedDict, total=False): + """Local shell tool. + + :ivar type: The type of the local shell tool. Always ``local_shell``. Required. LOCAL_SHELL. + :vartype type: Literal["local_shell"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + """ + + type: Required[Literal["local_shell"]] + """The type of the local shell tool. Always ``local_shell``. Required. LOCAL_SHELL.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + + +class LocalSkillParam(TypedDict, total=False): + """LocalSkillParam. + + :ivar name: The name of the skill. Required. + :vartype name: str + :ivar description: The description of the skill. Required. + :vartype description: str + :ivar path: The path to the directory containing the skill. Required. + :vartype path: str + """ + + name: Required[str] + """The name of the skill. Required.""" + description: Required[str] + """The description of the skill. Required.""" + path: Required[str] + """The path to the directory containing the skill. Required.""" + + +class LogProb(TypedDict, total=False): + """Log probability. + + :ivar token: Required. + :vartype token: str + :ivar logprob: Required. + :vartype logprob: float + :ivar bytes: Required. + :vartype bytes: list[int] + :ivar top_logprobs: Required. + :vartype top_logprobs: list["TopLogProb"] + """ + + token: Required[str] + """Required.""" + logprob: Required[float] + """Required.""" + bytes: Required[list[int]] + """Required.""" + top_logprobs: Required[list["TopLogProb"]] + """Required.""" + + +class MCPApprovalResponse(TypedDict, total=False): + """MCP approval response. + + :ivar type: The type of the item. Always ``mcp_approval_response``. Required. + MCP_APPROVAL_RESPONSE. + :vartype type: Literal["mcp_approval_response"] + :ivar id: + :vartype id: str + :ivar approval_request_id: The ID of the approval request being answered. Required. + :vartype approval_request_id: str + :ivar approve: Whether the request was approved. Required. + :vartype approve: bool + :ivar reason: + :vartype reason: str + """ + + type: Required[Literal["mcp_approval_response"]] + """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" + id: Optional[str] + approval_request_id: Required[str] + """The ID of the approval request being answered. Required.""" + approve: Required[bool] + """Whether the request was approved. Required.""" + reason: Optional[str] + + +class MCPListToolsTool(TypedDict, total=False): + """MCP list tools tool. + + :ivar name: The name of the tool. Required. + :vartype name: str + :ivar description: + :vartype description: str + :ivar input_schema: The JSON schema describing the tool's input. Required. + :vartype input_schema: "MCPListToolsToolInputSchema" + :ivar annotations: + :vartype annotations: "MCPListToolsToolAnnotations" + """ + + name: Required[str] + """The name of the tool. Required.""" + description: Optional[str] + input_schema: Required["MCPListToolsToolInputSchema"] + """The JSON schema describing the tool's input. Required.""" + annotations: Optional["MCPListToolsToolAnnotations"] + + +class MCPListToolsToolAnnotations(TypedDict, total=False): + """MCPListToolsToolAnnotations.""" + + +class MCPListToolsToolInputSchema(TypedDict, total=False): + """MCPListToolsToolInputSchema.""" + + +class MCPTool(TypedDict, total=False): + """MCP tool. + + :ivar type: The type of the MCP tool. Always ``mcp``. Required. MCP. + :vartype type: Literal["mcp"] + :ivar server_label: A label for this MCP server, used to identify it in tool calls. Required. + :vartype server_label: str + :ivar server_url: The URL for the MCP server. One of ``server_url``, ``connector_id``, or + ``tunnel_id`` must be provided. + :vartype server_url: str + :ivar connector_id: Identifier for service connectors, like those available in ChatGPT. One of + ``server_url``, ``connector_id``, or ``tunnel_id`` must be provided. Learn more about service + connectors `here `_. Currently supported + ``connector_id`` values are: + + * Dropbox: `connector_dropbox` + * Gmail: `connector_gmail` + * Google Calendar: `connector_googlecalendar` + * Google Drive: `connector_googledrive` + * Microsoft Teams: `connector_microsoftteams` + * Outlook Calendar: `connector_outlookcalendar` + * Outlook Email: `connector_outlookemail` + * SharePoint: `connector_sharepoint`. Is one of the following types: + Literal["connector_dropbox"], Literal["connector_gmail"], Literal["connector_googlecalendar"], + Literal["connector_googledrive"], Literal["connector_microsoftteams"], + Literal["connector_outlookcalendar"], Literal["connector_outlookemail"], + Literal["connector_sharepoint"] + :vartype connector_id: Literal["connector_dropbox", "connector_gmail", + "connector_googlecalendar", "connector_googledrive", "connector_microsoftteams", + "connector_outlookcalendar", "connector_outlookemail", "connector_sharepoint"] + :ivar tunnel_id: The Secure MCP Tunnel ID to use instead of a direct server URL. One of + ``server_url``, ``connector_id``, or ``tunnel_id`` must be provided. + :vartype tunnel_id: str + :ivar authorization: An OAuth access token that can be used with a remote MCP server, either + with a custom MCP server URL or a service connector. Your application must handle the OAuth + authorization flow and provide the token here. + :vartype authorization: str + :ivar server_description: Optional description of the MCP server, used to provide more context. + :vartype server_description: str + :ivar headers: + :vartype headers: dict[str, str] + :ivar allowed_tools: Is either a [str] type or a MCPToolFilter type. + :vartype allowed_tools: Union[list[str], "MCPToolFilter"] + :ivar require_approval: Is one of the following types: MCPToolRequireApproval, + Literal["always"], Literal["never"] + :vartype require_approval: Union["MCPToolRequireApproval", Literal["always"], Literal["never"]] + :ivar defer_loading: Whether this MCP tool is deferred and discovered via tool search. + :vartype defer_loading: bool + :ivar project_connection_id: The connection ID in the project for the MCP server. The + connection stores authentication and other connection details needed to connect to the MCP + server. + :vartype project_connection_id: str + """ + + type: Required[Literal["mcp"]] + """The type of the MCP tool. Always ``mcp``. Required. MCP.""" + server_label: Required[str] + """A label for this MCP server, used to identify it in tool calls. Required.""" + server_url: str + """The URL for the MCP server. One of ``server_url``, ``connector_id``, or ``tunnel_id`` must be + provided.""" + connector_id: Literal[ + "connector_dropbox", + "connector_gmail", + "connector_googlecalendar", + "connector_googledrive", + "connector_microsoftteams", + "connector_outlookcalendar", + "connector_outlookemail", + "connector_sharepoint", + ] + """Identifier for service connectors, like those available in ChatGPT. One of ``server_url``, + ``connector_id``, or ``tunnel_id`` must be provided. Learn more about service connectors `here + `_. Currently supported ``connector_id`` values are: + + * Dropbox: `connector_dropbox` + * Gmail: `connector_gmail` + * Google Calendar: `connector_googlecalendar` + * Google Drive: `connector_googledrive` + * Microsoft Teams: `connector_microsoftteams` + * Outlook Calendar: `connector_outlookcalendar` + * Outlook Email: `connector_outlookemail` + * SharePoint: `connector_sharepoint`. Is one of the following types: + Literal[\"connector_dropbox\"], Literal[\"connector_gmail\"], + Literal[\"connector_googlecalendar\"], Literal[\"connector_googledrive\"], + Literal[\"connector_microsoftteams\"], Literal[\"connector_outlookcalendar\"], + Literal[\"connector_outlookemail\"], Literal[\"connector_sharepoint\"]""" + tunnel_id: str + """The Secure MCP Tunnel ID to use instead of a direct server URL. One of ``server_url``, + ``connector_id``, or ``tunnel_id`` must be provided.""" + authorization: str + """An OAuth access token that can be used with a remote MCP server, either with a custom MCP + server URL or a service connector. Your application must handle the OAuth authorization flow + and provide the token here.""" + server_description: str + """Optional description of the MCP server, used to provide more context.""" + headers: Optional[dict[str, str]] + allowed_tools: Optional[Union[list[str], "MCPToolFilter"]] + """Is either a [str] type or a MCPToolFilter type.""" + require_approval: Optional[Union["MCPToolRequireApproval", Literal["always"], Literal["never"]]] + """Is one of the following types: MCPToolRequireApproval, Literal[\"always\"], Literal[\"never\"]""" + defer_loading: bool + """Whether this MCP tool is deferred and discovered via tool search.""" + project_connection_id: str + """The connection ID in the project for the MCP server. The connection stores authentication and + other connection details needed to connect to the MCP server.""" + + +class MCPToolFilter(TypedDict, total=False): + """MCP tool filter. + + :ivar tool_names: MCP allowed tools. + :vartype tool_names: list[str] + :ivar read_only: Indicates whether or not a tool modifies data or is read-only. If an MCP + server is `annotated with `readOnlyHint` + `_, + it will match this filter. + :vartype read_only: bool + """ + + tool_names: list[str] + """MCP allowed tools.""" + read_only: bool + """Indicates whether or not a tool modifies data or is read-only. If an MCP server is `annotated + with `readOnlyHint` + `_, + it will match this filter.""" + + +class MCPToolRequireApproval(TypedDict, total=False): + """MCPToolRequireApproval. + + :ivar always: + :vartype always: "MCPToolFilter" + :ivar never: + :vartype never: "MCPToolFilter" + """ + + always: "MCPToolFilter" + never: "MCPToolFilter" + + +class MemorySearchItem(TypedDict, total=False): + """A retrieved memory item from memory search. + + :ivar memory_item: Retrieved memory item. Required. + :vartype memory_item: "MemoryItem" + """ + + memory_item: Required["MemoryItem"] + """Retrieved memory item. Required.""" + + +class MemorySearchOptions(TypedDict, total=False): + """Memory search options. + + :ivar max_memories: Maximum number of memory items to return. + :vartype max_memories: int + """ + + max_memories: int + """Maximum number of memory items to return.""" + + +class MemorySearchPreviewTool(TypedDict, total=False): + """A tool for integrating memories into the agent. + + :ivar type: The type of the tool. Always ``memory_search_preview``. Required. + MEMORY_SEARCH_PREVIEW. + :vartype type: Literal["memory_search_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar memory_store_name: The name of the memory store to use. Required. + :vartype memory_store_name: str + :ivar scope: The namespace used to group and isolate memories, such as a user ID. Limits which + memories can be retrieved or updated. Use special variable ``{{$userId}}`` to scope memories to + the current signed-in user. Required. + :vartype scope: str + :ivar search_options: Options for searching the memory store. + :vartype search_options: "MemorySearchOptions" + :ivar update_delay: Time to wait before updating memories after inactivity (seconds). Default + 300. + :vartype update_delay: int + """ + + type: Required[Literal["memory_search_preview"]] + """The type of the tool. Always ``memory_search_preview``. Required. MEMORY_SEARCH_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + memory_store_name: Required[str] + """The name of the memory store to use. Required.""" + scope: Required[str] + """The namespace used to group and isolate memories, such as a user ID. Limits which memories can + be retrieved or updated. Use special variable ``{{$userId}}`` to scope memories to the current + signed-in user. Required.""" + search_options: "MemorySearchOptions" + """Options for searching the memory store.""" + update_delay: int + """Time to wait before updating memories after inactivity (seconds). Default 300.""" + + +class MemorySearchToolCallItemParam(TypedDict, total=False): + """MemorySearchToolCallItemParam. + + :ivar type: Required. MEMORY_SEARCH_CALL. + :vartype type: Literal["memory_search_call"] + :ivar results: The results returned from the memory search. + :vartype results: list["MemorySearchItem"] + """ + + type: Required[Literal["memory_search_call"]] + """Required. MEMORY_SEARCH_CALL.""" + results: Optional[list["MemorySearchItem"]] + """The results returned from the memory search.""" + + +class MemorySearchToolCallItemResource(TypedDict, total=False): + """MemorySearchToolCallItemResource. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. MEMORY_SEARCH_CALL. + :vartype type: Literal["memory_search_call"] + :ivar status: The status of the memory search tool call. One of ``in_progress``, ``searching``, + ``completed``, ``incomplete`` or ``failed``,. Required. Is one of the following types: + Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["incomplete"], + Literal["failed"] + :vartype status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] + :ivar results: The results returned from the memory search. + :vartype results: list["MemorySearchItem"] + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["memory_search_call"]] + """Required. MEMORY_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "incomplete", "failed"]] + """The status of the memory search tool call. One of ``in_progress``, ``searching``, + ``completed``, ``incomplete`` or ``failed``,. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], + Literal[\"incomplete\"], Literal[\"failed\"]""" + results: Optional[list["MemorySearchItem"]] + """The results returned from the memory search.""" + id: Required[str] + """Required.""" + + +class MessageContentInputFileContent(TypedDict, total=False): + """Input file. + + :ivar type: The type of the input item. Always ``input_file``. Required. INPUT_FILE. + :vartype type: Literal["input_file"] + :ivar file_id: + :vartype file_id: str + :ivar filename: The name of the file to be sent to the model. + :vartype filename: str + :ivar file_data: The content of the file to be sent to the model. + :vartype file_data: str + :ivar file_url: The URL of the file to be sent to the model. + :vartype file_url: str + :ivar detail: The detail level of the file to be sent to the model. Use ``low`` for the default + rendering behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. + Known values are: "low" and "high". + :vartype detail: FileInputDetail + """ + + type: Required[Literal["input_file"]] + """The type of the input item. Always ``input_file``. Required. INPUT_FILE.""" + file_id: Optional[str] + filename: str + """The name of the file to be sent to the model.""" + file_data: str + """The content of the file to be sent to the model.""" + file_url: str + """The URL of the file to be sent to the model.""" + detail: FileInputDetail + """The detail level of the file to be sent to the model. Use ``low`` for the default rendering + behavior, or ``high`` to render the file at higher quality. Defaults to ``low``. Known values + are: \"low\" and \"high\".""" + + +class MessageContentInputImageContent(TypedDict, total=False): + """Input image. + + :ivar type: The type of the input item. Always ``input_image``. Required. INPUT_IMAGE. + :vartype type: Literal["input_image"] + :ivar image_url: + :vartype image_url: str + :ivar file_id: + :vartype file_id: str + :ivar detail: The detail level of the image to be sent to the model. One of ``high``, ``low``, + ``auto``, or ``original``. Defaults to ``auto``. Required. Known values are: "low", "high", + "auto", and "original". + :vartype detail: ImageDetail + """ + + type: Required[Literal["input_image"]] + """The type of the input item. Always ``input_image``. Required. INPUT_IMAGE.""" + image_url: Optional[str] + file_id: Optional[str] + detail: Required[ImageDetail] + """The detail level of the image to be sent to the model. One of ``high``, ``low``, ``auto``, or + ``original``. Defaults to ``auto``. Required. Known values are: \"low\", \"high\", \"auto\", + and \"original\".""" + + +class MessageContentInputTextContent(TypedDict, total=False): + """Input text. + + :ivar type: The type of the input item. Always ``input_text``. Required. INPUT_TEXT. + :vartype type: Literal["input_text"] + :ivar text: The text input to the model. Required. + :vartype text: str + """ + + type: Required[Literal["input_text"]] + """The type of the input item. Always ``input_text``. Required. INPUT_TEXT.""" + text: Required[str] + """The text input to the model. Required.""" + + +class MessageContentOutputTextContent(TypedDict, total=False): + """Output text. + + :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. + :vartype type: Literal["output_text"] + :ivar text: The text output from the model. Required. + :vartype text: str + :ivar annotations: The annotations of the text output. Required. + :vartype annotations: list["Annotation"] + :ivar logprobs: Required. + :vartype logprobs: list["LogProb"] + """ + + type: Required[Literal["output_text"]] + """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" + text: Required[str] + """The text output from the model. Required.""" + annotations: Required[list["Annotation"]] + """The annotations of the text output. Required.""" + logprobs: Required[list["LogProb"]] + """Required.""" + + +class MessageContentReasoningTextContent(TypedDict, total=False): + """Reasoning text. + + :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. + REASONING_TEXT. + :vartype type: Literal["reasoning_text"] + :ivar text: The reasoning text from the model. Required. + :vartype text: str + """ + + type: Required[Literal["reasoning_text"]] + """The type of the reasoning text. Always ``reasoning_text``. Required. REASONING_TEXT.""" + text: Required[str] + """The reasoning text from the model. Required.""" + + +class MessageContentRefusalContent(TypedDict, total=False): + """Refusal. + + :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. + :vartype type: Literal["refusal"] + :ivar refusal: The refusal explanation from the model. Required. + :vartype refusal: str + """ + + type: Required[Literal["refusal"]] + """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" + refusal: Required[str] + """The refusal explanation from the model. Required.""" + + +class Metadata(TypedDict, total=False): + """Set of 16 key-value pairs that can be attached to an object. This can be useful for storing + additional information about the object in a structured format, and querying for objects via + API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are + strings with a maximum length of 512 characters. + + """ + + +class MicrosoftFabricPreviewTool(TypedDict, total=False): + """The input definition information for a Microsoft Fabric tool as used to configure an agent. + + :ivar type: The object type, which is always 'fabric_dataagent_preview'. Required. + FABRIC_DATAAGENT_PREVIEW. + :vartype type: Literal["fabric_dataagent_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar fabric_dataagent_preview: The fabric data agent tool parameters. Required. + :vartype fabric_dataagent_preview: "FabricDataAgentToolParameters" + """ + + type: Required[Literal["fabric_dataagent_preview"]] + """The object type, which is always 'fabric_dataagent_preview'. Required. + FABRIC_DATAAGENT_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + fabric_dataagent_preview: Required["FabricDataAgentToolParameters"] + """The fabric data agent tool parameters. Required.""" + + +class Moderation(TypedDict, total=False): + """Moderation. + + :ivar input: Moderation for the response input. Required. + :vartype input: "ModerationEntry" + :ivar output: Moderation for the response output. Required. + :vartype output: "ModerationEntry" + """ + + input: Required["ModerationEntry"] + """Moderation for the response input. Required.""" + output: Required["ModerationEntry"] + """Moderation for the response output. Required.""" + + +class ModerationErrorBody(TypedDict, total=False): + """Moderation error. + + :ivar type: The object type, which was always ``error`` for moderation failures. Required. + ERROR. + :vartype type: Literal["error"] + :ivar code: The error code. Required. + :vartype code: str + :ivar message: The error message. Required. + :vartype message: str + """ + + type: Required[Literal["error"]] + """The object type, which was always ``error`` for moderation failures. Required. ERROR.""" + code: Required[str] + """The error code. Required.""" + message: Required[str] + """The error message. Required.""" + + +class ModerationParam(TypedDict, total=False): + """Configuration for running moderation on the input and output of this response. + + :ivar model: The moderation model to use for moderated completions, e.g. + 'omni-moderation-latest'. Required. + :vartype model: str + """ + + model: Required[str] + """The moderation model to use for moderated completions, e.g. 'omni-moderation-latest'. Required.""" + + +class ModerationResultBody(TypedDict, total=False): + """Moderation result. + + :ivar type: The object type, which was always ``moderation_result`` for successful moderation + results. Required. MODERATION_RESULT. + :vartype type: Literal["moderation_result"] + :ivar model: The moderation model that produced this result. Required. + :vartype model: str + :ivar flagged: A boolean indicating whether the content was flagged by any category. Required. + :vartype flagged: bool + :ivar categories: A dictionary of moderation categories to booleans, True if the input is + flagged under this category. Required. + :vartype categories: dict[str, bool] + :ivar category_scores: A dictionary of moderation categories to scores. Required. + :vartype category_scores: dict[str, float] + :ivar category_applied_input_types: Which modalities of input are reflected by the score for + each category. Required. + :vartype category_applied_input_types: dict[str, list[ModerationInputType]] + """ + + type: Required[Literal["moderation_result"]] + """The object type, which was always ``moderation_result`` for successful moderation results. + Required. MODERATION_RESULT.""" + model: Required[str] + """The moderation model that produced this result. Required.""" + flagged: Required[bool] + """A boolean indicating whether the content was flagged by any category. Required.""" + categories: Required[dict[str, bool]] + """A dictionary of moderation categories to booleans, True if the input is flagged under this + category. Required.""" + category_scores: Required[dict[str, float]] + """A dictionary of moderation categories to scores. Required.""" + category_applied_input_types: Required[dict[str, list[ModerationInputType]]] + """Which modalities of input are reflected by the score for each category. Required.""" + + +class MoveParam(TypedDict, total=False): + """Move. + + :ivar type: Specifies the event type. For a move action, this property is always set to + ``move``. Required. MOVE. + :vartype type: Literal["move"] + :ivar x: The x-coordinate to move to. Required. + :vartype x: int + :ivar y: The y-coordinate to move to. Required. + :vartype y: int + :ivar keys_property: + :vartype keys_property: list[str] + """ + + type: Required[Literal["move"]] + """Specifies the event type. For a move action, this property is always set to ``move``. Required. + MOVE.""" + x: Required[int] + """The x-coordinate to move to. Required.""" + y: Required[int] + """The y-coordinate to move to. Required.""" + keys: Optional[list[str]] + + +class NamespaceToolParam(TypedDict, total=False): + """Namespace. + + :ivar type: The type of the tool. Always ``namespace``. Required. NAMESPACE. + :vartype type: Literal["namespace"] + :ivar name: The namespace name used in tool calls (for example, ``crm``). Required. + :vartype name: str + :ivar description: A description of the namespace shown to the model. Required. + :vartype description: str + :ivar tools: The function/custom tools available inside this namespace. Required. + :vartype tools: list[Union["FunctionToolParam", "CustomToolParam"]] + """ + + type: Required[Literal["namespace"]] + """The type of the tool. Always ``namespace``. Required. NAMESPACE.""" + name: Required[str] + """The namespace name used in tool calls (for example, ``crm``). Required.""" + description: Required[str] + """A description of the namespace shown to the model. Required.""" + tools: Required[list[Union["FunctionToolParam", "CustomToolParam"]]] + """The function/custom tools available inside this namespace. Required.""" + + +class OAuthConsentRequestOutputItem(TypedDict, total=False): + """Request from the service for the user to perform OAuth consent. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: Required. + :vartype id: str + :ivar type: Required. OAUTH_CONSENT_REQUEST. + :vartype type: Literal["oauth_consent_request"] + :ivar consent_link: The link the user can use to perform OAuth consent. Required. + :vartype consent_link: str + :ivar server_label: The server label for the OAuth consent request. Required. + :vartype server_label: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """Required.""" + type: Required[Literal["oauth_consent_request"]] + """Required. OAUTH_CONSENT_REQUEST.""" + consent_link: Required[str] + """The link the user can use to perform OAuth consent. Required.""" + server_label: Required[str] + """The server label for the OAuth consent request. Required.""" + + +class OpenApiAnonymousAuthDetails(TypedDict, total=False): + """Security details for OpenApi anonymous authentication. + + :ivar type: The object type, which is always 'anonymous'. Required. ANONYMOUS. + :vartype type: Literal["anonymous"] + """ + + type: Required[Literal["anonymous"]] + """The object type, which is always 'anonymous'. Required. ANONYMOUS.""" + + +class OpenApiFunctionDefinition(TypedDict, total=False): + """The input definition information for an openapi function. + + :ivar name: The name of the function to be called. Required. + :vartype name: str + :ivar description: A description of what the function does, used by the model to choose when + and how to call the function. + :vartype description: str + :ivar spec: The openapi function shape, described as a JSON Schema object. Required. + :vartype spec: dict[str, Any] + :ivar auth: Open API authentication details. Required. + :vartype auth: "OpenApiAuthDetails" + :ivar default_params: List of OpenAPI spec parameters that will use user-provided defaults. + :vartype default_params: list[str] + :ivar functions: List of function definitions used by OpenApi tool. + :vartype functions: list["OpenApiFunctionDefinitionFunction"] + """ + + name: Required[str] + """The name of the function to be called. Required.""" + description: str + """A description of what the function does, used by the model to choose when and how to call the + function.""" + spec: Required[dict[str, Any]] + """The openapi function shape, described as a JSON Schema object. Required.""" + auth: Required["OpenApiAuthDetails"] + """Open API authentication details. Required.""" + default_params: list[str] + """List of OpenAPI spec parameters that will use user-provided defaults.""" + functions: list["OpenApiFunctionDefinitionFunction"] + """List of function definitions used by OpenApi tool.""" + + +class OpenApiFunctionDefinitionFunction(TypedDict, total=False): + """OpenApiFunctionDefinitionFunction. + + :ivar name: The name of the function to be called. Required. + :vartype name: str + :ivar description: A description of what the function does, used by the model to choose when + and how to call the function. + :vartype description: str + :ivar parameters: The parameters the functions accepts, described as a JSON Schema object. + Required. + :vartype parameters: dict[str, Any] + """ + + name: Required[str] + """The name of the function to be called. Required.""" + description: str + """A description of what the function does, used by the model to choose when and how to call the + function.""" + parameters: Required[dict[str, Any]] + """The parameters the functions accepts, described as a JSON Schema object. Required.""" + + +class OpenApiManagedAuthDetails(TypedDict, total=False): + """Security details for OpenApi managed_identity authentication. + + :ivar type: The object type, which is always 'managed_identity'. Required. MANAGED_IDENTITY. + :vartype type: Literal["managed_identity"] + :ivar security_scheme: Connection auth security details. Required. + :vartype security_scheme: "OpenApiManagedSecurityScheme" + """ + + type: Required[Literal["managed_identity"]] + """The object type, which is always 'managed_identity'. Required. MANAGED_IDENTITY.""" + security_scheme: Required["OpenApiManagedSecurityScheme"] + """Connection auth security details. Required.""" + + +class OpenApiManagedSecurityScheme(TypedDict, total=False): + """Security scheme for OpenApi managed_identity authentication. + + :ivar audience: Authentication scope for managed_identity auth type. Required. + :vartype audience: str + """ + + audience: Required[str] + """Authentication scope for managed_identity auth type. Required.""" + + +class OpenApiProjectConnectionAuthDetails(TypedDict, total=False): + """Security details for OpenApi project connection authentication. + + :ivar type: The object type, which is always 'project_connection'. Required. + PROJECT_CONNECTION. + :vartype type: Literal["project_connection"] + :ivar security_scheme: Project connection auth security details. Required. + :vartype security_scheme: "OpenApiProjectConnectionSecurityScheme" + """ + + type: Required[Literal["project_connection"]] + """The object type, which is always 'project_connection'. Required. PROJECT_CONNECTION.""" + security_scheme: Required["OpenApiProjectConnectionSecurityScheme"] + """Project connection auth security details. Required.""" + + +class OpenApiProjectConnectionSecurityScheme(TypedDict, total=False): + """Security scheme for OpenApi managed_identity authentication. + + :ivar project_connection_id: Project connection id for Project Connection auth type. Required. + :vartype project_connection_id: str + """ + + project_connection_id: Required[str] + """Project connection id for Project Connection auth type. Required.""" + + +class OpenApiTool(TypedDict, total=False): + """The input definition information for an OpenAPI tool as used to configure an agent. + + :ivar type: The object type, which is always 'openapi'. Required. OPENAPI. + :vartype type: Literal["openapi"] + :ivar openapi: The openapi function definition. Required. + :vartype openapi: "OpenApiFunctionDefinition" + """ + + type: Required[Literal["openapi"]] + """The object type, which is always 'openapi'. Required. OPENAPI.""" + openapi: Required["OpenApiFunctionDefinition"] + """The openapi function definition. Required.""" + + +class OpenApiToolCall(TypedDict, total=False): + """An OpenAPI tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. OPENAPI_CALL. + :vartype type: Literal["openapi_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the OpenAPI operation being called. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["openapi_call"]] + """Required. OPENAPI_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the OpenAPI operation being called. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class OpenApiToolCallOutput(TypedDict, total=False): + """The output of an OpenAPI tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. OPENAPI_CALL_OUTPUT. + :vartype type: Literal["openapi_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar name: The name of the OpenAPI operation that was called. Required. + :vartype name: str + :ivar output: The output from the OpenAPI tool call. Is one of the following types: {str: Any}, + str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["openapi_call_output"]] + """Required. OPENAPI_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + name: Required[str] + """The name of the OpenAPI operation that was called. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the OpenAPI tool call. Is one of the following types: {str: Any}, str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class OutputContentOutputTextContent(TypedDict, total=False): + """Output text. + + :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. + :vartype type: Literal["output_text"] + :ivar text: The text output from the model. Required. + :vartype text: str + :ivar annotations: The annotations of the text output. Required. + :vartype annotations: list["Annotation"] + :ivar logprobs: Required. + :vartype logprobs: list["LogProb"] + """ + + type: Required[Literal["output_text"]] + """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" + text: Required[str] + """The text output from the model. Required.""" + annotations: Required[list["Annotation"]] + """The annotations of the text output. Required.""" + logprobs: Required[list["LogProb"]] + """Required.""" + + +class OutputContentReasoningTextContent(TypedDict, total=False): + """Reasoning text. + + :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. + REASONING_TEXT. + :vartype type: Literal["reasoning_text"] + :ivar text: The reasoning text from the model. Required. + :vartype text: str + """ + + type: Required[Literal["reasoning_text"]] + """The type of the reasoning text. Always ``reasoning_text``. Required. REASONING_TEXT.""" + text: Required[str] + """The reasoning text from the model. Required.""" + + +class OutputContentRefusalContent(TypedDict, total=False): + """Refusal. + + :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. + :vartype type: Literal["refusal"] + :ivar refusal: The refusal explanation from the model. Required. + :vartype refusal: str + """ + + type: Required[Literal["refusal"]] + """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" + refusal: Required[str] + """The refusal explanation from the model. Required.""" + + +class OutputItemAdditionalTools(TypedDict, total=False): + """OutputItemAdditionalTools. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``additional_tools``. Required. ADDITIONAL_TOOLS. + :vartype type: Literal["additional_tools"] + :ivar id: The unique ID of the additional tools item. Required. + :vartype id: str + :ivar role: The role that provided the additional tools. Required. Known values are: "unknown", + "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". + :vartype role: MessageRole + :ivar tools: The additional tool definitions made available at this item. Required. + :vartype tools: list["Tool"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["additional_tools"]] + """The type of the item. Always ``additional_tools``. Required. ADDITIONAL_TOOLS.""" + id: Required[str] + """The unique ID of the additional tools item. Required.""" + role: Required[MessageRole] + """The role that provided the additional tools. Required. Known values are: \"unknown\", \"user\", + \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and \"tool\".""" + tools: Required[list["Tool"]] + """The additional tool definitions made available at this item. Required.""" + + +class OutputItemApplyPatchToolCall(TypedDict, total=False): + """Apply patch tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL. + :vartype type: Literal["apply_patch_call"] + :ivar id: The unique ID of the apply patch tool call. Populated when this item is returned via + API. Required. + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call. One of ``in_progress`` or ``completed``. + Required. Known values are: "in_progress" and "completed". + :vartype status: ApplyPatchCallStatus + :ivar operation: Apply patch operation. Required. + :vartype operation: "ApplyPatchFileOperation" + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["apply_patch_call"]] + """The type of the item. Always ``apply_patch_call``. Required. APPLY_PATCH_CALL.""" + id: Required[str] + """The unique ID of the apply patch tool call. Populated when this item is returned via API. + Required.""" + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallStatus] + """The status of the apply patch tool call. One of ``in_progress`` or ``completed``. Required. + Known values are: \"in_progress\" and \"completed\".""" + operation: Required["ApplyPatchFileOperation"] + """Apply patch operation. Required.""" + + +class OutputItemApplyPatchToolCallOutput(TypedDict, total=False): + """Apply patch tool call output. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``apply_patch_call_output``. Required. + APPLY_PATCH_CALL_OUTPUT. + :vartype type: Literal["apply_patch_call_output"] + :ivar id: The unique ID of the apply patch tool call output. Populated when this item is + returned via API. Required. + :vartype id: str + :ivar call_id: The unique ID of the apply patch tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the apply patch tool call output. One of ``completed`` or + ``failed``. Required. Known values are: "completed" and "failed". + :vartype status: ApplyPatchCallOutputStatus + :ivar output: + :vartype output: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["apply_patch_call_output"]] + """The type of the item. Always ``apply_patch_call_output``. Required. APPLY_PATCH_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the apply patch tool call output. Populated when this item is returned via + API. Required.""" + call_id: Required[str] + """The unique ID of the apply patch tool call generated by the model. Required.""" + status: Required[ApplyPatchCallOutputStatus] + """The status of the apply patch tool call output. One of ``completed`` or ``failed``. Required. + Known values are: \"completed\" and \"failed\".""" + output: Optional[str] + + +class OutputItemCodeInterpreterToolCall(TypedDict, total=False): + """Code interpreter tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the code interpreter tool call. Always ``code_interpreter_call``. + Required. CODE_INTERPRETER_CALL. + :vartype type: Literal["code_interpreter_call"] + :ivar id: The unique ID of the code interpreter tool call. Required. + :vartype id: str + :ivar status: The status of the code interpreter tool call. Valid values are ``in_progress``, + ``completed``, ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the + following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"], + Literal["interpreting"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "incomplete", "interpreting", "failed"] + :ivar container_id: The ID of the container used to run the code. Required. + :vartype container_id: str + :ivar code: Required. + :vartype code: str + :ivar outputs: Required. + :vartype outputs: list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["code_interpreter_call"]] + """The type of the code interpreter tool call. Always ``code_interpreter_call``. Required. + CODE_INTERPRETER_CALL.""" + id: Required[str] + """The unique ID of the code interpreter tool call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete", "interpreting", "failed"]] + """The status of the code interpreter tool call. Valid values are ``in_progress``, ``completed``, + ``incomplete``, ``interpreting``, and ``failed``. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"], + Literal[\"interpreting\"], Literal[\"failed\"]""" + container_id: Required[str] + """The ID of the container used to run the code. Required.""" + code: Required[Optional[str]] + """Required.""" + outputs: Required[Optional[list[Union["CodeInterpreterOutputLogs", "CodeInterpreterOutputImage"]]]] + """Required.""" + + +class OutputItemCompactionBody(TypedDict, total=False): + """Compaction item. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``compaction``. Required. COMPACTION. + :vartype type: Literal["compaction"] + :ivar id: The unique ID of the compaction item. Required. + :vartype id: str + :ivar encrypted_content: The encrypted content that was produced by compaction. Required. + :vartype encrypted_content: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["compaction"]] + """The type of the item. Always ``compaction``. Required. COMPACTION.""" + id: Required[str] + """The unique ID of the compaction item. Required.""" + encrypted_content: Required[str] + """The encrypted content that was produced by compaction. Required.""" + + +class OutputItemComputerToolCall(TypedDict, total=False): + """Computer tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL. + :vartype type: Literal["computer_call"] + :ivar id: The unique ID of the computer call. Required. + :vartype id: str + :ivar call_id: An identifier used when responding to the tool call with output. Required. + :vartype call_id: str + :ivar action: + :vartype action: "ComputerAction" + :ivar actions: + :vartype actions: list["ComputerAction"] + :ivar pending_safety_checks: The pending safety checks for the computer call. Required. + :vartype pending_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["computer_call"]] + """The type of the computer call. Always ``computer_call``. Required. COMPUTER_CALL.""" + id: Required[str] + """The unique ID of the computer call. Required.""" + call_id: Required[str] + """An identifier used when responding to the tool call with output. Required.""" + action: "ComputerAction" + actions: list["ComputerAction"] + pending_safety_checks: Required[list["ComputerCallSafetyCheckParam"]] + """The pending safety checks for the computer call. Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemComputerToolCallOutput(TypedDict, total=False): + """Computer tool call output. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the computer tool call output. Always ``computer_call_output``. + Required. COMPUTER_CALL_OUTPUT. + :vartype type: Literal["computer_call_output"] + :ivar id: The ID of the computer tool call output. Required. + :vartype id: str + :ivar call_id: The ID of the computer tool call that produced the output. Required. + :vartype call_id: str + :ivar acknowledged_safety_checks: The safety checks reported by the API that have been + acknowledged by the developer. + :vartype acknowledged_safety_checks: list["ComputerCallSafetyCheckParam"] + :ivar output: Required. + :vartype output: "ComputerScreenshotImage" + :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or + ``incomplete``. Populated when input items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["computer_call_output"]] + """The type of the computer tool call output. Always ``computer_call_output``. Required. + COMPUTER_CALL_OUTPUT.""" + id: Required[str] + """The ID of the computer tool call output. Required.""" + call_id: Required[str] + """The ID of the computer tool call that produced the output. Required.""" + acknowledged_safety_checks: list["ComputerCallSafetyCheckParam"] + """The safety checks reported by the API that have been acknowledged by the developer.""" + output: Required["ComputerScreenshotImage"] + """Required.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when input items are returned via API. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemFileSearchToolCall(TypedDict, total=False): + """File search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: The unique ID of the file search tool call. Required. + :vartype id: str + :ivar type: The type of the file search tool call. Always ``file_search_call``. Required. + FILE_SEARCH_CALL. + :vartype type: Literal["file_search_call"] + :ivar status: The status of the file search tool call. One of ``in_progress``, ``searching``, + ``incomplete`` or ``failed``,. Required. Is one of the following types: Literal["in_progress"], + Literal["searching"], Literal["completed"], Literal["incomplete"], Literal["failed"] + :vartype status: Literal["in_progress", "searching", "completed", "incomplete", "failed"] + :ivar queries: The queries used to search for files. Required. + :vartype queries: list[str] + :ivar results: + :vartype results: list["FileSearchToolCallResults"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """The unique ID of the file search tool call. Required.""" + type: Required[Literal["file_search_call"]] + """The type of the file search tool call. Always ``file_search_call``. Required. FILE_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "incomplete", "failed"]] + """The status of the file search tool call. One of ``in_progress``, ``searching``, ``incomplete`` + or ``failed``,. Required. Is one of the following types: Literal[\"in_progress\"], + Literal[\"searching\"], Literal[\"completed\"], Literal[\"incomplete\"], Literal[\"failed\"]""" + queries: Required[list[str]] + """The queries used to search for files. Required.""" + results: Optional[list["FileSearchToolCallResults"]] + + +class OutputItemFunctionShellCall(TypedDict, total=False): + """Shell tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``shell_call``. Required. SHELL_CALL. + :vartype type: Literal["shell_call"] + :ivar id: The unique ID of the shell tool call. Populated when this item is returned via API. + Required. + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar action: The shell commands and limits that describe how to run the tool call. Required. + :vartype action: "FunctionShellAction" + :ivar status: The status of the shell call. One of ``in_progress``, ``completed``, or + ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallStatus + :ivar environment: Required. + :vartype environment: "FunctionShellCallEnvironment" + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["shell_call"]] + """The type of the item. Always ``shell_call``. Required. SHELL_CALL.""" + id: Required[str] + """The unique ID of the shell tool call. Populated when this item is returned via API. Required.""" + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + action: Required["FunctionShellAction"] + """The shell commands and limits that describe how to run the tool call. Required.""" + status: Required[FunctionShellCallStatus] + """The status of the shell call. One of ``in_progress``, ``completed``, or ``incomplete``. + Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + environment: Required[Optional["FunctionShellCallEnvironment"]] + """Required.""" + + +class OutputItemFunctionShellCallOutput(TypedDict, total=False): + """Shell call output. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the shell call output. Always ``shell_call_output``. Required. + SHELL_CALL_OUTPUT. + :vartype type: Literal["shell_call_output"] + :ivar id: The unique ID of the shell call output. Populated when this item is returned via API. + Required. + :vartype id: str + :ivar call_id: The unique ID of the shell tool call generated by the model. Required. + :vartype call_id: str + :ivar status: The status of the shell call output. One of ``in_progress``, ``completed``, or + ``incomplete``. Required. Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionShellCallOutputStatusEnum + :ivar output: An array of shell call output contents. Required. + :vartype output: list["FunctionShellCallOutputContent"] + :ivar max_output_length: Required. + :vartype max_output_length: int + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["shell_call_output"]] + """The type of the shell call output. Always ``shell_call_output``. Required. SHELL_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the shell call output. Populated when this item is returned via API. Required.""" + call_id: Required[str] + """The unique ID of the shell tool call generated by the model. Required.""" + status: Required[FunctionShellCallOutputStatusEnum] + """The status of the shell call output. One of ``in_progress``, ``completed``, or ``incomplete``. + Required. Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + output: Required[list["FunctionShellCallOutputContent"]] + """An array of shell call output contents. Required.""" + max_output_length: Required[Optional[int]] + """Required.""" + + +class OutputItemFunctionToolCall(TypedDict, total=False): + """Function tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: The unique ID of the function tool call. Required. + :vartype id: str + :ivar type: The type of the function tool call. Always ``function_call``. Required. + FUNCTION_CALL. + :vartype type: Literal["function_call"] + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar namespace: The namespace of the function to run. + :vartype namespace: str + :ivar name: The name of the function to run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments to pass to the function. Required. + :vartype arguments: str + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """The unique ID of the function tool call. Required.""" + type: Required[Literal["function_call"]] + """The type of the function tool call. Always ``function_call``. Required. FUNCTION_CALL.""" + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + namespace: str + """The namespace of the function to run.""" + name: Required[str] + """The name of the function to run. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the function. Required.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemFunctionToolCallOutput(TypedDict, total=False): + """Function tool call output. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: The unique ID of the function tool call output. Populated when this item is returned + via API. Required. + :vartype id: str + :ivar type: The type of the function tool call output. Always ``function_call_output``. + Required. FUNCTION_CALL_OUTPUT. + :vartype type: Literal["function_call_output"] + :ivar call_id: The unique ID of the function tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the function call generated by your code. Can be a string or an + list of output content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] + type. + :vartype output: Union[str, list["FunctionAndCustomToolCallOutput"]] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """The unique ID of the function tool call output. Populated when this item is returned via API. + Required.""" + type: Required[Literal["function_call_output"]] + """The type of the function tool call output. Always ``function_call_output``. Required. + FUNCTION_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the function tool call generated by the model. Required.""" + output: Required[Union[str, list["FunctionAndCustomToolCallOutput"]]] + """The output from the function call generated by your code. Can be a string or an list of output + content. Required. Is either a str type or a [FunctionAndCustomToolCallOutput] type.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemImageGenToolCall(TypedDict, total=False): + """Image generation call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL. + :vartype type: Literal["image_generation_call"] + :ivar id: The unique ID of the image generation call. Required. + :vartype id: str + :ivar status: The status of the image generation call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["generating"], Literal["failed"] + :vartype status: Literal["in_progress", "completed", "generating", "failed"] + :ivar result: Required. + :vartype result: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["image_generation_call"]] + """The type of the image generation call. Always ``image_generation_call``. Required. + IMAGE_GENERATION_CALL.""" + id: Required[str] + """The unique ID of the image generation call. Required.""" + status: Required[Literal["in_progress", "completed", "generating", "failed"]] + """The status of the image generation call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"generating\"], Literal[\"failed\"]""" + result: Required[Optional[str]] + """Required.""" + + +class OutputItemLocalShellToolCall(TypedDict, total=False): + """Local shell call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the local shell call. Always ``local_shell_call``. Required. + LOCAL_SHELL_CALL. + :vartype type: Literal["local_shell_call"] + :ivar id: The unique ID of the local shell call. Required. + :vartype id: str + :ivar call_id: The unique ID of the local shell tool call generated by the model. Required. + :vartype call_id: str + :ivar action: Required. + :vartype action: "LocalShellExecAction" + :ivar status: The status of the local shell call. Required. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["local_shell_call"]] + """The type of the local shell call. Always ``local_shell_call``. Required. LOCAL_SHELL_CALL.""" + id: Required[str] + """The unique ID of the local shell call. Required.""" + call_id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + action: Required["LocalShellExecAction"] + """Required.""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the local shell call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemLocalShellToolCallOutput(TypedDict, total=False): + """Local shell call output. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the local shell tool call output. Always ``local_shell_call_output``. + Required. LOCAL_SHELL_CALL_OUTPUT. + :vartype type: Literal["local_shell_call_output"] + :ivar id: The unique ID of the local shell tool call generated by the model. Required. + :vartype id: str + :ivar output: A JSON string of the output of the local shell tool call. Required. + :vartype output: str + :ivar status: Is one of the following types: Literal["in_progress"], Literal["completed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["local_shell_call_output"]] + """The type of the local shell tool call output. Always ``local_shell_call_output``. Required. + LOCAL_SHELL_CALL_OUTPUT.""" + id: Required[str] + """The unique ID of the local shell tool call generated by the model. Required.""" + output: Required[str] + """A JSON string of the output of the local shell tool call. Required.""" + status: Optional[Literal["in_progress", "completed", "incomplete"]] + """Is one of the following types: Literal[\"in_progress\"], Literal[\"completed\"], + Literal[\"incomplete\"]""" + + +class OutputItemMcpApprovalRequest(TypedDict, total=False): + """MCP approval request. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``mcp_approval_request``. Required. + MCP_APPROVAL_REQUEST. + :vartype type: Literal["mcp_approval_request"] + :ivar id: The unique ID of the approval request. Required. + :vartype id: str + :ivar server_label: The label of the MCP server making the request. Required. + :vartype server_label: str + :ivar name: The name of the tool to run. Required. + :vartype name: str + :ivar arguments: A JSON string of arguments for the tool. Required. + :vartype arguments: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["mcp_approval_request"]] + """The type of the item. Always ``mcp_approval_request``. Required. MCP_APPROVAL_REQUEST.""" + id: Required[str] + """The unique ID of the approval request. Required.""" + server_label: Required[str] + """The label of the MCP server making the request. Required.""" + name: Required[str] + """The name of the tool to run. Required.""" + arguments: Required[str] + """A JSON string of arguments for the tool. Required.""" + + +class OutputItemMcpApprovalResponseResource(TypedDict, total=False): + """MCP approval response. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``mcp_approval_response``. Required. + MCP_APPROVAL_RESPONSE. + :vartype type: Literal["mcp_approval_response"] + :ivar id: The unique ID of the approval response. Required. + :vartype id: str + :ivar approval_request_id: The ID of the approval request being answered. Required. + :vartype approval_request_id: str + :ivar approve: Whether the request was approved. Required. + :vartype approve: bool + :ivar reason: + :vartype reason: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["mcp_approval_response"]] + """The type of the item. Always ``mcp_approval_response``. Required. MCP_APPROVAL_RESPONSE.""" + id: Required[str] + """The unique ID of the approval response. Required.""" + approval_request_id: Required[str] + """The ID of the approval request being answered. Required.""" + approve: Required[bool] + """Whether the request was approved. Required.""" + reason: Optional[str] + + +class OutputItemMcpListTools(TypedDict, total=False): + """MCP list tools. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS. + :vartype type: Literal["mcp_list_tools"] + :ivar id: The unique ID of the list. Required. + :vartype id: str + :ivar server_label: The label of the MCP server. Required. + :vartype server_label: str + :ivar tools: The tools available on the server. Required. + :vartype tools: list["MCPListToolsTool"] + :ivar error: + :vartype error: "RealtimeMCPError" + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["mcp_list_tools"]] + """The type of the item. Always ``mcp_list_tools``. Required. MCP_LIST_TOOLS.""" + id: Required[str] + """The unique ID of the list. Required.""" + server_label: Required[str] + """The label of the MCP server. Required.""" + tools: Required[list["MCPListToolsTool"]] + """The tools available on the server. Required.""" + error: "RealtimeMCPError" + + +class OutputItemMcpToolCall(TypedDict, total=False): + """MCP tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``mcp_call``. Required. MCP_CALL. + :vartype type: Literal["mcp_call"] + :ivar id: The unique ID of the tool call. Required. + :vartype id: str + :ivar server_label: The label of the MCP server running the tool. Required. + :vartype server_label: str + :ivar name: The name of the tool that was run. Required. + :vartype name: str + :ivar arguments: A JSON string of the arguments passed to the tool. Required. + :vartype arguments: str + :ivar output: + :vartype output: str + :ivar error: + :vartype error: dict[str, Any] + :ivar status: The status of the tool call. One of ``in_progress``, ``completed``, + ``incomplete``, ``calling``, or ``failed``. Known values are: "in_progress", "completed", + "incomplete", "calling", and "failed". + :vartype status: MCPToolCallStatus + :ivar approval_request_id: + :vartype approval_request_id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["mcp_call"]] + """The type of the item. Always ``mcp_call``. Required. MCP_CALL.""" + id: Required[str] + """The unique ID of the tool call. Required.""" + server_label: Required[str] + """The label of the MCP server running the tool. Required.""" + name: Required[str] + """The name of the tool that was run. Required.""" + arguments: Required[str] + """A JSON string of the arguments passed to the tool. Required.""" + output: Optional[str] + error: dict[str, Any] + status: MCPToolCallStatus + """The status of the tool call. One of ``in_progress``, ``completed``, ``incomplete``, + ``calling``, or ``failed``. Known values are: \"in_progress\", \"completed\", \"incomplete\", + \"calling\", and \"failed\".""" + approval_request_id: Optional[str] + + +class OutputItemMessage(TypedDict, total=False): + """Message. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the message. Always set to ``message``. Required. MESSAGE. + :vartype type: Literal["message"] + :ivar id: The unique ID of the message. Required. + :vartype id: str + :ivar status: The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Required. Known values are: "in_progress", + "completed", and "incomplete". + :vartype status: MessageStatus + :ivar role: The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, + ``critic``, ``discriminator``, ``developer``, or ``tool``. Required. Known values are: + "unknown", "user", "assistant", "system", "critic", "discriminator", "developer", and "tool". + :vartype role: MessageRole + :ivar content: The content of the message. Required. + :vartype content: list["MessageContent"] + :ivar phase: Known values are: "commentary" and "final_answer". + :vartype phase: MessagePhase + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["message"]] + """The type of the message. Always set to ``message``. Required. MESSAGE.""" + id: Required[str] + """The unique ID of the message. Required.""" + status: Required[MessageStatus] + """The status of item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated when + items are returned via API. Required. Known values are: \"in_progress\", \"completed\", and + \"incomplete\".""" + role: Required[MessageRole] + """The role of the message. One of ``unknown``, ``user``, ``assistant``, ``system``, ``critic``, + ``discriminator``, ``developer``, or ``tool``. Required. Known values are: \"unknown\", + \"user\", \"assistant\", \"system\", \"critic\", \"discriminator\", \"developer\", and + \"tool\".""" + content: Required[list["MessageContent"]] + """The content of the message. Required.""" + phase: Optional[MessagePhase] + """Known values are: \"commentary\" and \"final_answer\".""" + + +class OutputItemOutputMessage(TypedDict, total=False): + """Output message. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: The unique ID of the output message. Required. + :vartype id: str + :ivar type: The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE. + :vartype type: Literal["output_message"] + :ivar role: The role of the output message. Always ``assistant``. Required. Default value is + "assistant". + :vartype role: Literal["assistant"] + :ivar content: The content of the output message. Required. + :vartype content: list["OutputMessageContent"] + :ivar phase: Known values are: "commentary" and "final_answer". + :vartype phase: MessagePhase + :ivar status: The status of the message input. One of ``in_progress``, ``completed``, or + ``incomplete``. Populated when input items are returned via API. Required. Is one of the + following types: Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """The unique ID of the output message. Required.""" + type: Required[Literal["output_message"]] + """The type of the output message. Always ``message``. Required. OUTPUT_MESSAGE.""" + role: Required[Literal["assistant"]] + """The role of the output message. Always ``assistant``. Required. Default value is \"assistant\".""" + content: Required[list["OutputMessageContent"]] + """The content of the output message. Required.""" + phase: Optional[MessagePhase] + """Known values are: \"commentary\" and \"final_answer\".""" + status: Required[Literal["in_progress", "completed", "incomplete"]] + """The status of the message input. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when input items are returned via API. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemReasoningItem(TypedDict, total=False): + """Reasoning. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the object. Always ``reasoning``. Required. REASONING. + :vartype type: Literal["reasoning"] + :ivar id: The unique identifier of the reasoning content. Required. + :vartype id: str + :ivar encrypted_content: + :vartype encrypted_content: str + :ivar summary: Reasoning summary content. Required. + :vartype summary: list["SummaryTextContent"] + :ivar content: Reasoning text content. + :vartype content: list["ReasoningTextContent"] + :ivar status: The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. + Populated when items are returned via API. Is one of the following types: + Literal["in_progress"], Literal["completed"], Literal["incomplete"] + :vartype status: Literal["in_progress", "completed", "incomplete"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["reasoning"]] + """The type of the object. Always ``reasoning``. Required. REASONING.""" + id: Required[str] + """The unique identifier of the reasoning content. Required.""" + encrypted_content: Optional[str] + summary: Required[list["SummaryTextContent"]] + """Reasoning summary content. Required.""" + content: list["ReasoningTextContent"] + """Reasoning text content.""" + status: Literal["in_progress", "completed", "incomplete"] + """The status of the item. One of ``in_progress``, ``completed``, or ``incomplete``. Populated + when items are returned via API. Is one of the following types: Literal[\"in_progress\"], + Literal[\"completed\"], Literal[\"incomplete\"]""" + + +class OutputItemToolSearchCall(TypedDict, total=False): + """OutputItemToolSearchCall. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL. + :vartype type: Literal["tool_search_call"] + :ivar id: The unique ID of the tool search call item. Required. + :vartype id: str + :ivar call_id: Required. + :vartype call_id: str + :ivar execution: Whether tool search was executed by the server or by the client. Required. + Known values are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar arguments: Arguments used for the tool search call. Required. + :vartype arguments: Any + :ivar status: The status of the tool search call item that was recorded. Required. Known values + are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallStatus + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["tool_search_call"]] + """The type of the item. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL.""" + id: Required[str] + """The unique ID of the tool search call item. Required.""" + call_id: Required[Optional[str]] + """Required.""" + execution: Required[ToolSearchExecutionType] + """Whether tool search was executed by the server or by the client. Required. Known values are: + \"server\" and \"client\".""" + arguments: Required[Any] + """Arguments used for the tool search call. Required.""" + status: Required[FunctionCallStatus] + """The status of the tool search call item that was recorded. Required. Known values are: + \"in_progress\", \"completed\", and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class OutputItemToolSearchOutput(TypedDict, total=False): + """OutputItemToolSearchOutput. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: The type of the item. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT. + :vartype type: Literal["tool_search_output"] + :ivar id: The unique ID of the tool search output item. Required. + :vartype id: str + :ivar call_id: Required. + :vartype call_id: str + :ivar execution: Whether tool search was executed by the server or by the client. Required. + Known values are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar tools: The loaded tool definitions returned by tool search. Required. + :vartype tools: list["Tool"] + :ivar status: The status of the tool search output item that was recorded. Required. Known + values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallOutputStatusEnum + :ivar created_by: The identifier of the actor that created the item. + :vartype created_by: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["tool_search_output"]] + """The type of the item. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT.""" + id: Required[str] + """The unique ID of the tool search output item. Required.""" + call_id: Required[Optional[str]] + """Required.""" + execution: Required[ToolSearchExecutionType] + """Whether tool search was executed by the server or by the client. Required. Known values are: + \"server\" and \"client\".""" + tools: Required[list["Tool"]] + """The loaded tool definitions returned by tool search. Required.""" + status: Required[FunctionCallOutputStatusEnum] + """The status of the tool search output item that was recorded. Required. Known values are: + \"in_progress\", \"completed\", and \"incomplete\".""" + created_by: str + """The identifier of the actor that created the item.""" + + +class OutputItemWebSearchToolCall(TypedDict, total=False): + """Web search tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar id: The unique ID of the web search tool call. Required. + :vartype id: str + :ivar type: The type of the web search tool call. Always ``web_search_call``. Required. + WEB_SEARCH_CALL. + :vartype type: Literal["web_search_call"] + :ivar status: The status of the web search tool call. Required. Is one of the following types: + Literal["in_progress"], Literal["searching"], Literal["completed"], Literal["failed"], + Literal["incomplete"] + :vartype status: Literal["in_progress", "searching", "completed", "failed", "incomplete"] + :ivar action: An object describing the specific action taken in this web search call. Includes + details on how the model used the web (search, open_page, find_in_page). Required. Is one of + the following types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind + :vartype action: Union["WebSearchActionSearch", "WebSearchActionOpenPage", + "WebSearchActionFind"] + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + id: Required[str] + """The unique ID of the web search tool call. Required.""" + type: Required[Literal["web_search_call"]] + """The type of the web search tool call. Always ``web_search_call``. Required. WEB_SEARCH_CALL.""" + status: Required[Literal["in_progress", "searching", "completed", "failed", "incomplete"]] + """The status of the web search tool call. Required. Is one of the following types: + Literal[\"in_progress\"], Literal[\"searching\"], Literal[\"completed\"], Literal[\"failed\"], + Literal[\"incomplete\"]""" + action: Required[Union["WebSearchActionSearch", "WebSearchActionOpenPage", "WebSearchActionFind"]] + """An object describing the specific action taken in this web search call. Includes details on how + the model used the web (search, open_page, find_in_page). Required. Is one of the following + types: WebSearchActionSearch, WebSearchActionOpenPage, WebSearchActionFind""" + + +class OutputMessageContentOutputTextContent(TypedDict, total=False): + """Output text. + + :ivar type: The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT. + :vartype type: Literal["output_text"] + :ivar text: The text output from the model. Required. + :vartype text: str + :ivar annotations: The annotations of the text output. Required. + :vartype annotations: list["Annotation"] + :ivar logprobs: Required. + :vartype logprobs: list["LogProb"] + """ + + type: Required[Literal["output_text"]] + """The type of the output text. Always ``output_text``. Required. OUTPUT_TEXT.""" + text: Required[str] + """The text output from the model. Required.""" + annotations: Required[list["Annotation"]] + """The annotations of the text output. Required.""" + logprobs: Required[list["LogProb"]] + """Required.""" + + +class OutputMessageContentRefusalContent(TypedDict, total=False): + """Refusal. + + :ivar type: The type of the refusal. Always ``refusal``. Required. REFUSAL. + :vartype type: Literal["refusal"] + :ivar refusal: The refusal explanation from the model. Required. + :vartype refusal: str + """ + + type: Required[Literal["refusal"]] + """The type of the refusal. Always ``refusal``. Required. REFUSAL.""" + refusal: Required[str] + """The refusal explanation from the model. Required.""" + + +class Prompt(TypedDict, total=False): + """Reference to a prompt template and its variables. `Learn more + `_. + + :ivar id: The unique identifier of the prompt template to use. Required. + :vartype id: str + :ivar version: + :vartype version: str + :ivar variables: + :vartype variables: "ResponsePromptVariables" + """ + + id: Required[str] + """The unique identifier of the prompt template to use. Required.""" + version: Optional[str] + variables: Optional["ResponsePromptVariables"] + + +class RankingOptions(TypedDict, total=False): + """RankingOptions. + + :ivar ranker: The ranker to use for the file search. Known values are: "auto" and + "default-2024-11-15". + :vartype ranker: RankerVersionType + :ivar score_threshold: The score threshold for the file search, a number between 0 and 1. + Numbers closer to 1 will attempt to return only the most relevant results, but may return fewer + results. + :vartype score_threshold: float + :ivar hybrid_search: Weights that control how reciprocal rank fusion balances semantic + embedding matches versus sparse keyword matches when hybrid search is enabled. + :vartype hybrid_search: "HybridSearchOptions" + """ + + ranker: RankerVersionType + """The ranker to use for the file search. Known values are: \"auto\" and \"default-2024-11-15\".""" + score_threshold: float + """The score threshold for the file search, a number between 0 and 1. Numbers closer to 1 will + attempt to return only the most relevant results, but may return fewer results.""" + hybrid_search: "HybridSearchOptions" + """Weights that control how reciprocal rank fusion balances semantic embedding matches versus + sparse keyword matches when hybrid search is enabled.""" + + +class RealtimeMCPHTTPError(TypedDict, total=False): + """Realtime MCP HTTP error. + + :ivar type: Required. HTTP_ERROR. + :vartype type: Literal["http_error"] + :ivar code: Required. + :vartype code: int + :ivar message: Required. + :vartype message: str + """ + + type: Required[Literal["http_error"]] + """Required. HTTP_ERROR.""" + code: Required[int] + """Required.""" + message: Required[str] + """Required.""" + + +class RealtimeMCPProtocolError(TypedDict, total=False): + """Realtime MCP protocol error. + + :ivar type: Required. PROTOCOL_ERROR. + :vartype type: Literal["protocol_error"] + :ivar code: Required. + :vartype code: int + :ivar message: Required. + :vartype message: str + """ + + type: Required[Literal["protocol_error"]] + """Required. PROTOCOL_ERROR.""" + code: Required[int] + """Required.""" + message: Required[str] + """Required.""" + + +class RealtimeMCPToolExecutionError(TypedDict, total=False): + """Realtime MCP tool execution error. + + :ivar type: Required. TOOL_EXECUTION_ERROR. + :vartype type: Literal["tool_execution_error"] + :ivar message: Required. + :vartype message: str + """ + + type: Required[Literal["tool_execution_error"]] + """Required. TOOL_EXECUTION_ERROR.""" + message: Required[str] + """Required.""" + + +class Reasoning(TypedDict, total=False): + """Reasoning. + + :ivar effort: Known values are: "none", "minimal", "low", "medium", "high", and "xhigh". + :vartype effort: ReasoningEffort + :ivar summary: Is one of the following types: Literal["auto"], Literal["concise"], + Literal["detailed"] + :vartype summary: Literal["auto", "concise", "detailed"] + :ivar context: Is one of the following types: Literal["auto"], Literal["current_turn"], + Literal["all_turns"] + :vartype context: Literal["auto", "current_turn", "all_turns"] + :ivar generate_summary: Is one of the following types: Literal["auto"], Literal["concise"], + Literal["detailed"] + :vartype generate_summary: Literal["auto", "concise", "detailed"] + """ + + effort: Optional[ReasoningEffort] + """Known values are: \"none\", \"minimal\", \"low\", \"medium\", \"high\", and \"xhigh\".""" + summary: Optional[Literal["auto", "concise", "detailed"]] + """Is one of the following types: Literal[\"auto\"], Literal[\"concise\"], Literal[\"detailed\"]""" + context: Optional[Literal["auto", "current_turn", "all_turns"]] + """Is one of the following types: Literal[\"auto\"], Literal[\"current_turn\"], + Literal[\"all_turns\"]""" + generate_summary: Optional[Literal["auto", "concise", "detailed"]] + """Is one of the following types: Literal[\"auto\"], Literal[\"concise\"], Literal[\"detailed\"]""" + + +class ReasoningTextContent(TypedDict, total=False): + """Reasoning text. + + :ivar type: The type of the reasoning text. Always ``reasoning_text``. Required. Default value + is "reasoning_text". + :vartype type: Literal["reasoning_text"] + :ivar text: The reasoning text from the model. Required. + :vartype text: str + """ + + type: Required[Literal["reasoning_text"]] + """The type of the reasoning text. Always ``reasoning_text``. Required. Default value is + \"reasoning_text\".""" + text: Required[str] + """The reasoning text from the model. Required.""" + + +class ResponseAudioDeltaEvent(TypedDict, total=False): + """Emitted when there is a partial audio response. + + :ivar type: The type of the event. Always ``response.audio.delta``. Required. + RESPONSE_AUDIO_DELTA. + :vartype type: Literal["response.audio.delta"] + :ivar sequence_number: A sequence number for this chunk of the stream response. Required. + :vartype sequence_number: int + :ivar delta: A chunk of Base64 encoded response audio bytes. Required. + :vartype delta: str + """ + + type: Required[Literal["response.audio.delta"]] + """The type of the event. Always ``response.audio.delta``. Required. RESPONSE_AUDIO_DELTA.""" + sequence_number: Required[int] + """A sequence number for this chunk of the stream response. Required.""" + delta: Required[str] + """A chunk of Base64 encoded response audio bytes. Required.""" + + +class ResponseAudioDoneEvent(TypedDict, total=False): + """Emitted when the audio response is complete. + + :ivar type: The type of the event. Always ``response.audio.done``. Required. + RESPONSE_AUDIO_DONE. + :vartype type: Literal["response.audio.done"] + :ivar sequence_number: The sequence number of the delta. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.audio.done"]] + """The type of the event. Always ``response.audio.done``. Required. RESPONSE_AUDIO_DONE.""" + sequence_number: Required[int] + """The sequence number of the delta. Required.""" + + +class ResponseAudioTranscriptDeltaEvent(TypedDict, total=False): + """Emitted when there is a partial transcript of audio. + + :ivar type: The type of the event. Always ``response.audio.transcript.delta``. Required. + RESPONSE_AUDIO_TRANSCRIPT_DELTA. + :vartype type: Literal["response.audio.transcript.delta"] + :ivar delta: The partial transcript of the audio response. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.audio.transcript.delta"]] + """The type of the event. Always ``response.audio.transcript.delta``. Required. + RESPONSE_AUDIO_TRANSCRIPT_DELTA.""" + delta: Required[str] + """The partial transcript of the audio response. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseAudioTranscriptDoneEvent(TypedDict, total=False): + """Emitted when the full audio transcript is completed. + + :ivar type: The type of the event. Always ``response.audio.transcript.done``. Required. + RESPONSE_AUDIO_TRANSCRIPT_DONE. + :vartype type: Literal["response.audio.transcript.done"] + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.audio.transcript.done"]] + """The type of the event. Always ``response.audio.transcript.done``. Required. + RESPONSE_AUDIO_TRANSCRIPT_DONE.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseCodeInterpreterCallCodeDeltaEvent(TypedDict, total=False): # pylint: disable=name-too-long + """Emitted when a partial code snippet is streamed by the code interpreter. + + :ivar type: The type of the event. Always ``response.code_interpreter_call_code.delta``. + Required. RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA. + :vartype type: Literal["response.code_interpreter_call_code.delta"] + :ivar output_index: The index of the output item in the response for which the code is being + streamed. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the code interpreter tool call item. Required. + :vartype item_id: str + :ivar delta: The partial code snippet being streamed by the code interpreter. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event, used to order streaming events. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.code_interpreter_call_code.delta"]] + """The type of the event. Always ``response.code_interpreter_call_code.delta``. Required. + RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA.""" + output_index: Required[int] + """The index of the output item in the response for which the code is being streamed. Required.""" + item_id: Required[str] + """The unique identifier of the code interpreter tool call item. Required.""" + delta: Required[str] + """The partial code snippet being streamed by the code interpreter. Required.""" + sequence_number: Required[int] + """The sequence number of this event, used to order streaming events. Required.""" + + +class ResponseCodeInterpreterCallCodeDoneEvent(TypedDict, total=False): + """Emitted when the code snippet is finalized by the code interpreter. + + :ivar type: The type of the event. Always ``response.code_interpreter_call_code.done``. + Required. RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE. + :vartype type: Literal["response.code_interpreter_call_code.done"] + :ivar output_index: The index of the output item in the response for which the code is + finalized. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the code interpreter tool call item. Required. + :vartype item_id: str + :ivar code: The final code snippet output by the code interpreter. Required. + :vartype code: str + :ivar sequence_number: The sequence number of this event, used to order streaming events. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.code_interpreter_call_code.done"]] + """The type of the event. Always ``response.code_interpreter_call_code.done``. Required. + RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE.""" + output_index: Required[int] + """The index of the output item in the response for which the code is finalized. Required.""" + item_id: Required[str] + """The unique identifier of the code interpreter tool call item. Required.""" + code: Required[str] + """The final code snippet output by the code interpreter. Required.""" + sequence_number: Required[int] + """The sequence number of this event, used to order streaming events. Required.""" + + +class ResponseCodeInterpreterCallCompletedEvent(TypedDict, total=False): # pylint: disable=name-too-long + """Emitted when the code interpreter call is completed. + + :ivar type: The type of the event. Always ``response.code_interpreter_call.completed``. + Required. RESPONSE_CODE_INTERPRETER_CALL_COMPLETED. + :vartype type: Literal["response.code_interpreter_call.completed"] + :ivar output_index: The index of the output item in the response for which the code interpreter + call is completed. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the code interpreter tool call item. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event, used to order streaming events. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.code_interpreter_call.completed"]] + """The type of the event. Always ``response.code_interpreter_call.completed``. Required. + RESPONSE_CODE_INTERPRETER_CALL_COMPLETED.""" + output_index: Required[int] + """The index of the output item in the response for which the code interpreter call is completed. + Required.""" + item_id: Required[str] + """The unique identifier of the code interpreter tool call item. Required.""" + sequence_number: Required[int] + """The sequence number of this event, used to order streaming events. Required.""" + + +class ResponseCodeInterpreterCallInProgressEvent(TypedDict, total=False): # pylint: disable=name-too-long + """Emitted when a code interpreter call is in progress. + + :ivar type: The type of the event. Always ``response.code_interpreter_call.in_progress``. + Required. RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS. + :vartype type: Literal["response.code_interpreter_call.in_progress"] + :ivar output_index: The index of the output item in the response for which the code interpreter + call is in progress. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the code interpreter tool call item. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event, used to order streaming events. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.code_interpreter_call.in_progress"]] + """The type of the event. Always ``response.code_interpreter_call.in_progress``. Required. + RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS.""" + output_index: Required[int] + """The index of the output item in the response for which the code interpreter call is in + progress. Required.""" + item_id: Required[str] + """The unique identifier of the code interpreter tool call item. Required.""" + sequence_number: Required[int] + """The sequence number of this event, used to order streaming events. Required.""" + + +class ResponseCodeInterpreterCallInterpretingEvent(TypedDict, total=False): # pylint: disable=name-too-long + """Emitted when the code interpreter is actively interpreting the code snippet. + + :ivar type: The type of the event. Always ``response.code_interpreter_call.interpreting``. + Required. RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING. + :vartype type: Literal["response.code_interpreter_call.interpreting"] + :ivar output_index: The index of the output item in the response for which the code interpreter + is interpreting code. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the code interpreter tool call item. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event, used to order streaming events. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.code_interpreter_call.interpreting"]] + """The type of the event. Always ``response.code_interpreter_call.interpreting``. Required. + RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING.""" + output_index: Required[int] + """The index of the output item in the response for which the code interpreter is interpreting + code. Required.""" + item_id: Required[str] + """The unique identifier of the code interpreter tool call item. Required.""" + sequence_number: Required[int] + """The sequence number of this event, used to order streaming events. Required.""" + + +class ResponseCompletedEvent(TypedDict, total=False): + """Emitted when the model response is complete. + + :ivar type: The type of the event. Always ``response.completed``. Required. RESPONSE_COMPLETED. + :vartype type: Literal["response.completed"] + :ivar response: Properties of the completed response. Required. + :vartype response: "ResponseObject" + :ivar sequence_number: The sequence number for this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.completed"]] + """The type of the event. Always ``response.completed``. Required. RESPONSE_COMPLETED.""" + response: Required["ResponseObject"] + """Properties of the completed response. Required.""" + sequence_number: Required[int] + """The sequence number for this event. Required.""" + + +class ResponseContentPartAddedEvent(TypedDict, total=False): + """Emitted when a new content part is added. + + :ivar type: The type of the event. Always ``response.content_part.added``. Required. + RESPONSE_CONTENT_PART_ADDED. + :vartype type: Literal["response.content_part.added"] + :ivar item_id: The ID of the output item that the content part was added to. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the content part was added to. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that was added. Required. + :vartype content_index: int + :ivar part: The content part that was added. Required. + :vartype part: "OutputContent" + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.content_part.added"]] + """The type of the event. Always ``response.content_part.added``. Required. + RESPONSE_CONTENT_PART_ADDED.""" + item_id: Required[str] + """The ID of the output item that the content part was added to. Required.""" + output_index: Required[int] + """The index of the output item that the content part was added to. Required.""" + content_index: Required[int] + """The index of the content part that was added. Required.""" + part: Required["OutputContent"] + """The content part that was added. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseContentPartDoneEvent(TypedDict, total=False): + """Emitted when a content part is done. + + :ivar type: The type of the event. Always ``response.content_part.done``. Required. + RESPONSE_CONTENT_PART_DONE. + :vartype type: Literal["response.content_part.done"] + :ivar item_id: The ID of the output item that the content part was added to. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the content part was added to. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that is done. Required. + :vartype content_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar part: The content part that is done. Required. + :vartype part: "OutputContent" + """ + + type: Required[Literal["response.content_part.done"]] + """The type of the event. Always ``response.content_part.done``. Required. + RESPONSE_CONTENT_PART_DONE.""" + item_id: Required[str] + """The ID of the output item that the content part was added to. Required.""" + output_index: Required[int] + """The index of the output item that the content part was added to. Required.""" + content_index: Required[int] + """The index of the content part that is done. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + part: Required["OutputContent"] + """The content part that is done. Required.""" + + +class ResponseCreatedEvent(TypedDict, total=False): + """An event that is emitted when a response is created. + + :ivar type: The type of the event. Always ``response.created``. Required. RESPONSE_CREATED. + :vartype type: Literal["response.created"] + :ivar response: The response that was created. Required. + :vartype response: "ResponseObject" + :ivar sequence_number: The sequence number for this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.created"]] + """The type of the event. Always ``response.created``. Required. RESPONSE_CREATED.""" + response: Required["ResponseObject"] + """The response that was created. Required.""" + sequence_number: Required[int] + """The sequence number for this event. Required.""" + + +class ResponseCustomToolCallInputDeltaEvent(TypedDict, total=False): + """ResponseCustomToolCallInputDelta. + + :ivar type: The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA. + :vartype type: Literal["response.custom_tool_call_input.delta"] + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar output_index: The index of the output this delta applies to. Required. + :vartype output_index: int + :ivar item_id: Unique identifier for the API item associated with this event. Required. + :vartype item_id: str + :ivar delta: The incremental input data (delta) for the custom tool call. Required. + :vartype delta: str + """ + + type: Required[Literal["response.custom_tool_call_input.delta"]] + """The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + output_index: Required[int] + """The index of the output this delta applies to. Required.""" + item_id: Required[str] + """Unique identifier for the API item associated with this event. Required.""" + delta: Required[str] + """The incremental input data (delta) for the custom tool call. Required.""" + + +class ResponseCustomToolCallInputDoneEvent(TypedDict, total=False): + """ResponseCustomToolCallInputDone. + + :ivar type: The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE. + :vartype type: Literal["response.custom_tool_call_input.done"] + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar output_index: The index of the output this event applies to. Required. + :vartype output_index: int + :ivar item_id: Unique identifier for the API item associated with this event. Required. + :vartype item_id: str + :ivar input: The complete input data for the custom tool call. Required. + :vartype input: str + """ + + type: Required[Literal["response.custom_tool_call_input.done"]] + """The event type identifier. Required. RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + output_index: Required[int] + """The index of the output this event applies to. Required.""" + item_id: Required[str] + """Unique identifier for the API item associated with this event. Required.""" + input: Required[str] + """The complete input data for the custom tool call. Required.""" + + +class ResponseErrorEvent(TypedDict, total=False): + """Emitted when an error occurs. + + :ivar type: The type of the event. Always ``error``. Required. ERROR. + :vartype type: Literal["error"] + :ivar code: Required. + :vartype code: str + :ivar message: The error message. Required. + :vartype message: str + :ivar param: Required. + :vartype param: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["error"]] + """The type of the event. Always ``error``. Required. ERROR.""" + code: Required[Optional[str]] + """Required.""" + message: Required[str] + """The error message. Required.""" + param: Required[Optional[str]] + """Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseErrorInfo(TypedDict, total=False): + """An error object returned when the model fails to generate a Response. + + :ivar code: Required. Known values are: "server_error", "rate_limit_exceeded", + "invalid_prompt", "vector_store_timeout", "invalid_image", "invalid_image_format", + "invalid_base64_image", "invalid_image_url", "image_too_large", "image_too_small", + "image_parse_error", "image_content_policy_violation", "invalid_image_mode", + "image_file_too_large", "unsupported_image_media_type", "empty_image_file", + "failed_to_download_image", and "image_file_not_found". + :vartype code: ResponseErrorCode + :ivar message: A human-readable description of the error. Required. + :vartype message: str + """ + + code: Required[ResponseErrorCode] + """Required. Known values are: \"server_error\", \"rate_limit_exceeded\", \"invalid_prompt\", + \"vector_store_timeout\", \"invalid_image\", \"invalid_image_format\", + \"invalid_base64_image\", \"invalid_image_url\", \"image_too_large\", \"image_too_small\", + \"image_parse_error\", \"image_content_policy_violation\", \"invalid_image_mode\", + \"image_file_too_large\", \"unsupported_image_media_type\", \"empty_image_file\", + \"failed_to_download_image\", and \"image_file_not_found\".""" + message: Required[str] + """A human-readable description of the error. Required.""" + + +class ResponseFailedEvent(TypedDict, total=False): + """An event that is emitted when a response fails. + + :ivar type: The type of the event. Always ``response.failed``. Required. RESPONSE_FAILED. + :vartype type: Literal["response.failed"] + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar response: The response that failed. Required. + :vartype response: "ResponseObject" + """ + + type: Required[Literal["response.failed"]] + """The type of the event. Always ``response.failed``. Required. RESPONSE_FAILED.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + response: Required["ResponseObject"] + """The response that failed. Required.""" + + +class ResponseFileSearchCallCompletedEvent(TypedDict, total=False): + """Emitted when a file search call is completed (results found). + + :ivar type: The type of the event. Always ``response.file_search_call.completed``. Required. + RESPONSE_FILE_SEARCH_CALL_COMPLETED. + :vartype type: Literal["response.file_search_call.completed"] + :ivar output_index: The index of the output item that the file search call is initiated. + Required. + :vartype output_index: int + :ivar item_id: The ID of the output item that the file search call is initiated. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.file_search_call.completed"]] + """The type of the event. Always ``response.file_search_call.completed``. Required. + RESPONSE_FILE_SEARCH_CALL_COMPLETED.""" + output_index: Required[int] + """The index of the output item that the file search call is initiated. Required.""" + item_id: Required[str] + """The ID of the output item that the file search call is initiated. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseFileSearchCallInProgressEvent(TypedDict, total=False): + """Emitted when a file search call is initiated. + + :ivar type: The type of the event. Always ``response.file_search_call.in_progress``. Required. + RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS. + :vartype type: Literal["response.file_search_call.in_progress"] + :ivar output_index: The index of the output item that the file search call is initiated. + Required. + :vartype output_index: int + :ivar item_id: The ID of the output item that the file search call is initiated. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.file_search_call.in_progress"]] + """The type of the event. Always ``response.file_search_call.in_progress``. Required. + RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS.""" + output_index: Required[int] + """The index of the output item that the file search call is initiated. Required.""" + item_id: Required[str] + """The ID of the output item that the file search call is initiated. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseFileSearchCallSearchingEvent(TypedDict, total=False): + """Emitted when a file search is currently searching. + + :ivar type: The type of the event. Always ``response.file_search_call.searching``. Required. + RESPONSE_FILE_SEARCH_CALL_SEARCHING. + :vartype type: Literal["response.file_search_call.searching"] + :ivar output_index: The index of the output item that the file search call is searching. + Required. + :vartype output_index: int + :ivar item_id: The ID of the output item that the file search call is initiated. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.file_search_call.searching"]] + """The type of the event. Always ``response.file_search_call.searching``. Required. + RESPONSE_FILE_SEARCH_CALL_SEARCHING.""" + output_index: Required[int] + """The index of the output item that the file search call is searching. Required.""" + item_id: Required[str] + """The ID of the output item that the file search call is initiated. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseFormatJsonSchemaSchema(TypedDict, total=False): + """JSON schema.""" + + +class ResponseFunctionCallArgumentsDeltaEvent(TypedDict, total=False): + """Emitted when there is a partial function-call arguments delta. + + :ivar type: The type of the event. Always ``response.function_call_arguments.delta``. Required. + RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA. + :vartype type: Literal["response.function_call_arguments.delta"] + :ivar item_id: The ID of the output item that the function-call arguments delta is added to. + Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the function-call arguments delta is + added to. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar delta: The function-call arguments delta that is added. Required. + :vartype delta: str + """ + + type: Required[Literal["response.function_call_arguments.delta"]] + """The type of the event. Always ``response.function_call_arguments.delta``. Required. + RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA.""" + item_id: Required[str] + """The ID of the output item that the function-call arguments delta is added to. Required.""" + output_index: Required[int] + """The index of the output item that the function-call arguments delta is added to. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + delta: Required[str] + """The function-call arguments delta that is added. Required.""" + + +class ResponseFunctionCallArgumentsDoneEvent(TypedDict, total=False): + """Emitted when function-call arguments are finalized. + + :ivar type: Required. RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE. + :vartype type: Literal["response.function_call_arguments.done"] + :ivar item_id: The ID of the item. Required. + :vartype item_id: str + :ivar name: The name of the function that was called. Required. + :vartype name: str + :ivar output_index: The index of the output item. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar arguments: The function-call arguments. Required. + :vartype arguments: str + """ + + type: Required[Literal["response.function_call_arguments.done"]] + """Required. RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE.""" + item_id: Required[str] + """The ID of the item. Required.""" + name: Required[str] + """The name of the function that was called. Required.""" + output_index: Required[int] + """The index of the output item. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + arguments: Required[str] + """The function-call arguments. Required.""" + + +class ResponseImageGenCallCompletedEvent(TypedDict, total=False): + """ResponseImageGenCallCompletedEvent. + + :ivar type: The type of the event. Always 'response.image_generation_call.completed'. Required. + RESPONSE_IMAGE_GENERATION_CALL_COMPLETED. + :vartype type: Literal["response.image_generation_call.completed"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar item_id: The unique identifier of the image generation item being processed. Required. + :vartype item_id: str + """ + + type: Required[Literal["response.image_generation_call.completed"]] + """The type of the event. Always 'response.image_generation_call.completed'. Required. + RESPONSE_IMAGE_GENERATION_CALL_COMPLETED.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + item_id: Required[str] + """The unique identifier of the image generation item being processed. Required.""" + + +class ResponseImageGenCallGeneratingEvent(TypedDict, total=False): + """ResponseImageGenCallGeneratingEvent. + + :ivar type: The type of the event. Always 'response.image_generation_call.generating'. + Required. RESPONSE_IMAGE_GENERATION_CALL_GENERATING. + :vartype type: Literal["response.image_generation_call.generating"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the image generation item being processed. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the image generation item being processed. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.image_generation_call.generating"]] + """The type of the event. Always 'response.image_generation_call.generating'. Required. + RESPONSE_IMAGE_GENERATION_CALL_GENERATING.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the image generation item being processed. Required.""" + sequence_number: Required[int] + """The sequence number of the image generation item being processed. Required.""" + + +class ResponseImageGenCallInProgressEvent(TypedDict, total=False): + """ResponseImageGenCallInProgressEvent. + + :ivar type: The type of the event. Always 'response.image_generation_call.in_progress'. + Required. RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS. + :vartype type: Literal["response.image_generation_call.in_progress"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the image generation item being processed. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the image generation item being processed. + Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.image_generation_call.in_progress"]] + """The type of the event. Always 'response.image_generation_call.in_progress'. Required. + RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the image generation item being processed. Required.""" + sequence_number: Required[int] + """The sequence number of the image generation item being processed. Required.""" + + +class ResponseImageGenCallPartialImageEvent(TypedDict, total=False): + """ResponseImageGenCallPartialImageEvent. + + :ivar type: The type of the event. Always 'response.image_generation_call.partial_image'. + Required. RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE. + :vartype type: Literal["response.image_generation_call.partial_image"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the image generation item being processed. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the image generation item being processed. + Required. + :vartype sequence_number: int + :ivar partial_image_index: 0-based index for the partial image (backend is 1-based, but this is + 0-based for the user). Required. + :vartype partial_image_index: int + :ivar partial_image_b64: Base64-encoded partial image data, suitable for rendering as an image. + Required. + :vartype partial_image_b64: str + """ + + type: Required[Literal["response.image_generation_call.partial_image"]] + """The type of the event. Always 'response.image_generation_call.partial_image'. Required. + RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the image generation item being processed. Required.""" + sequence_number: Required[int] + """The sequence number of the image generation item being processed. Required.""" + partial_image_index: Required[int] + """0-based index for the partial image (backend is 1-based, but this is 0-based for the user). + Required.""" + partial_image_b64: Required[str] + """Base64-encoded partial image data, suitable for rendering as an image. Required.""" + + +class ResponseIncompleteDetails(TypedDict, total=False): + """ResponseIncompleteDetails. + + :ivar reason: Is either a Literal["max_output_tokens"] type or a Literal["content_filter"] + type. + :vartype reason: Literal["max_output_tokens", "content_filter"] + """ + + reason: Literal["max_output_tokens", "content_filter"] + """Is either a Literal[\"max_output_tokens\"] type or a Literal[\"content_filter\"] type.""" + + +class ResponseIncompleteEvent(TypedDict, total=False): + """An event that is emitted when a response finishes as incomplete. + + :ivar type: The type of the event. Always ``response.incomplete``. Required. + RESPONSE_INCOMPLETE. + :vartype type: Literal["response.incomplete"] + :ivar response: The response that was incomplete. Required. + :vartype response: "ResponseObject" + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.incomplete"]] + """The type of the event. Always ``response.incomplete``. Required. RESPONSE_INCOMPLETE.""" + response: Required["ResponseObject"] + """The response that was incomplete. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseInProgressEvent(TypedDict, total=False): + """Emitted when the response is in progress. + + :ivar type: The type of the event. Always ``response.in_progress``. Required. + RESPONSE_IN_PROGRESS. + :vartype type: Literal["response.in_progress"] + :ivar response: The response that is in progress. Required. + :vartype response: "ResponseObject" + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.in_progress"]] + """The type of the event. Always ``response.in_progress``. Required. RESPONSE_IN_PROGRESS.""" + response: Required["ResponseObject"] + """The response that is in progress. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseLogProb(TypedDict, total=False): + """A logprob is the logarithmic probability that the model assigns to producing a particular token + at a given position in the sequence. Less-negative (higher) logprob values indicate greater + model confidence in that token choice. + + :ivar token: A possible text token. Required. + :vartype token: str + :ivar logprob: The log probability of this token. Required. + :vartype logprob: float + :ivar top_logprobs: The log probabilities of up to 20 of the most likely tokens. + :vartype top_logprobs: list["ResponseLogProbTopLogprobs"] + """ + + token: Required[str] + """A possible text token. Required.""" + logprob: Required[float] + """The log probability of this token. Required.""" + top_logprobs: list["ResponseLogProbTopLogprobs"] + """The log probabilities of up to 20 of the most likely tokens.""" + + +class ResponseLogProbTopLogprobs(TypedDict, total=False): + """ResponseLogProbTopLogprobs. + + :ivar token: + :vartype token: str + :ivar logprob: + :vartype logprob: float + """ + + token: str + logprob: float + + +class ResponseMCPCallArgumentsDeltaEvent(TypedDict, total=False): + """ResponseMCPCallArgumentsDeltaEvent. + + :ivar type: The type of the event. Always 'response.mcp_call_arguments.delta'. Required. + RESPONSE_MCP_CALL_ARGUMENTS_DELTA. + :vartype type: Literal["response.mcp_call_arguments.delta"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. + :vartype item_id: str + :ivar delta: A JSON string containing the partial update to the arguments for the MCP tool + call. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_call_arguments.delta"]] + """The type of the event. Always 'response.mcp_call_arguments.delta'. Required. + RESPONSE_MCP_CALL_ARGUMENTS_DELTA.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the MCP tool call item being processed. Required.""" + delta: Required[str] + """A JSON string containing the partial update to the arguments for the MCP tool call. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPCallArgumentsDoneEvent(TypedDict, total=False): + """ResponseMCPCallArgumentsDoneEvent. + + :ivar type: The type of the event. Always 'response.mcp_call_arguments.done'. Required. + RESPONSE_MCP_CALL_ARGUMENTS_DONE. + :vartype type: Literal["response.mcp_call_arguments.done"] + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. + :vartype item_id: str + :ivar arguments: A JSON string containing the finalized arguments for the MCP tool call. + Required. + :vartype arguments: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_call_arguments.done"]] + """The type of the event. Always 'response.mcp_call_arguments.done'. Required. + RESPONSE_MCP_CALL_ARGUMENTS_DONE.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the MCP tool call item being processed. Required.""" + arguments: Required[str] + """A JSON string containing the finalized arguments for the MCP tool call. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPCallCompletedEvent(TypedDict, total=False): + """ResponseMCPCallCompletedEvent. + + :ivar type: The type of the event. Always 'response.mcp_call.completed'. Required. + RESPONSE_MCP_CALL_COMPLETED. + :vartype type: Literal["response.mcp_call.completed"] + :ivar item_id: The ID of the MCP tool call item that completed. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that completed. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_call.completed"]] + """The type of the event. Always 'response.mcp_call.completed'. Required. + RESPONSE_MCP_CALL_COMPLETED.""" + item_id: Required[str] + """The ID of the MCP tool call item that completed. Required.""" + output_index: Required[int] + """The index of the output item that completed. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPCallFailedEvent(TypedDict, total=False): + """ResponseMCPCallFailedEvent. + + :ivar type: The type of the event. Always 'response.mcp_call.failed'. Required. + RESPONSE_MCP_CALL_FAILED. + :vartype type: Literal["response.mcp_call.failed"] + :ivar item_id: The ID of the MCP tool call item that failed. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that failed. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_call.failed"]] + """The type of the event. Always 'response.mcp_call.failed'. Required. RESPONSE_MCP_CALL_FAILED.""" + item_id: Required[str] + """The ID of the MCP tool call item that failed. Required.""" + output_index: Required[int] + """The index of the output item that failed. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPCallInProgressEvent(TypedDict, total=False): + """ResponseMCPCallInProgressEvent. + + :ivar type: The type of the event. Always 'response.mcp_call.in_progress'. Required. + RESPONSE_MCP_CALL_IN_PROGRESS. + :vartype type: Literal["response.mcp_call.in_progress"] + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar item_id: The unique identifier of the MCP tool call item being processed. Required. + :vartype item_id: str + """ + + type: Required[Literal["response.mcp_call.in_progress"]] + """The type of the event. Always 'response.mcp_call.in_progress'. Required. + RESPONSE_MCP_CALL_IN_PROGRESS.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + item_id: Required[str] + """The unique identifier of the MCP tool call item being processed. Required.""" + + +class ResponseMCPListToolsCompletedEvent(TypedDict, total=False): + """ResponseMCPListToolsCompletedEvent. + + :ivar type: The type of the event. Always 'response.mcp_list_tools.completed'. Required. + RESPONSE_MCP_LIST_TOOLS_COMPLETED. + :vartype type: Literal["response.mcp_list_tools.completed"] + :ivar item_id: The ID of the MCP tool call item that produced this output. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that was processed. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_list_tools.completed"]] + """The type of the event. Always 'response.mcp_list_tools.completed'. Required. + RESPONSE_MCP_LIST_TOOLS_COMPLETED.""" + item_id: Required[str] + """The ID of the MCP tool call item that produced this output. Required.""" + output_index: Required[int] + """The index of the output item that was processed. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPListToolsFailedEvent(TypedDict, total=False): + """ResponseMCPListToolsFailedEvent. + + :ivar type: The type of the event. Always 'response.mcp_list_tools.failed'. Required. + RESPONSE_MCP_LIST_TOOLS_FAILED. + :vartype type: Literal["response.mcp_list_tools.failed"] + :ivar item_id: The ID of the MCP tool call item that failed. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that failed. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_list_tools.failed"]] + """The type of the event. Always 'response.mcp_list_tools.failed'. Required. + RESPONSE_MCP_LIST_TOOLS_FAILED.""" + item_id: Required[str] + """The ID of the MCP tool call item that failed. Required.""" + output_index: Required[int] + """The index of the output item that failed. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseMCPListToolsInProgressEvent(TypedDict, total=False): + """ResponseMCPListToolsInProgressEvent. + + :ivar type: The type of the event. Always 'response.mcp_list_tools.in_progress'. Required. + RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS. + :vartype type: Literal["response.mcp_list_tools.in_progress"] + :ivar item_id: The ID of the MCP tool call item that is being processed. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that is being processed. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.mcp_list_tools.in_progress"]] + """The type of the event. Always 'response.mcp_list_tools.in_progress'. Required. + RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS.""" + item_id: Required[str] + """The ID of the MCP tool call item that is being processed. Required.""" + output_index: Required[int] + """The index of the output item that is being processed. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseObject(TypedDict, total=False): + """The response object. + + :ivar metadata: + :vartype metadata: "Metadata" + :ivar top_logprobs: + :vartype top_logprobs: int + :ivar temperature: + :vartype temperature: float + :ivar top_p: + :vartype top_p: float + :ivar user: This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use + ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your + end-users. Used to boost cache hit rates by better bucketing similar requests and to help + OpenAI detect and prevent abuse. `Learn more + `_. + :vartype user: str + :ivar safety_identifier: A stable identifier used to help detect users of your application that + may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies + each user, with a maximum length of 64 characters. We recommend hashing their username or email + address, in order to avoid sending us any identifying information. `Learn more + `_. + :vartype safety_identifier: str + :ivar prompt_cache_key: Used by OpenAI to cache responses for similar requests to optimize your + cache hit rates. Replaces the ``user`` field. `Learn more `_. + :vartype prompt_cache_key: str + :ivar service_tier: Is one of the following types: Literal["auto"], Literal["default"], + Literal["flex"], Literal["scale"], Literal["priority"] + :vartype service_tier: Literal["auto", "default", "flex", "scale", "priority"] + :ivar prompt_cache_retention: Is either a Literal["in_memory"] type or a Literal["24h"] type. + :vartype prompt_cache_retention: Literal["in_memory", "24h"] + :ivar previous_response_id: + :vartype previous_response_id: str + :ivar model: The model deployment to use for the creation of this response. + :vartype model: str + :ivar background: + :vartype background: bool + :ivar max_tool_calls: + :vartype max_tool_calls: int + :ivar text: + :vartype text: "ResponseTextParam" + :ivar tools: + :vartype tools: list["Tool"] + :ivar tool_choice: Is either a types.ToolChoiceOptions type or a ToolChoiceParam type. + :vartype tool_choice: Union[ToolChoiceOptions, "ToolChoiceParam"] + :ivar prompt: + :vartype prompt: "Prompt" + :ivar truncation: Is either a Literal["auto"] type or a Literal["disabled"] type. + :vartype truncation: Literal["auto", "disabled"] + :ivar id: Unique identifier for this Response. Required. + :vartype id: str + :ivar object: The object type of this resource - always set to ``response``. Required. Default + value is "response". + :vartype object: Literal["response"] + :ivar status: The status of the response generation. One of ``completed``, ``failed``, + ``in_progress``, ``cancelled``, ``queued``, or ``incomplete``. Is one of the following types: + Literal["completed"], Literal["failed"], Literal["in_progress"], Literal["cancelled"], + Literal["queued"], Literal["incomplete"] + :vartype status: Literal["completed", "failed", "in_progress", "cancelled", "queued", + "incomplete"] + :ivar created_at: Unix timestamp (in seconds) of when this Response was created. Required. + :vartype created_at: int + :ivar completed_at: + :vartype completed_at: int + :ivar error: Required. + :vartype error: "ResponseErrorInfo" + :ivar incomplete_details: Required. + :vartype incomplete_details: "ResponseIncompleteDetails" + :ivar output: An array of content items generated by the model. + + * The length and order of items in the `output` array is dependent + on the model's response. + * Rather than accessing the first item in the `output` array and + assuming it's an `assistant` message with the content generated by + the model, you might consider using the `output_text` property where + supported in SDKs. Required. + :vartype output: list["OutputItem"] + :ivar reasoning: + :vartype reasoning: "Reasoning" + :ivar instructions: Required. Is either a str type or a [Item] type. + :vartype instructions: Union[str, list["Item"]] + :ivar output_text: + :vartype output_text: str + :ivar usage: + :vartype usage: "ResponseUsage" + :ivar moderation: + :vartype moderation: "Moderation" + :ivar parallel_tool_calls: Whether to allow the model to run tool calls in parallel. Required. + :vartype parallel_tool_calls: bool + :ivar conversation: + :vartype conversation: "ConversationReference" + :ivar max_output_tokens: + :vartype max_output_tokens: int + :ivar agent_reference: The agent used for this response. Required. + :vartype agent_reference: "AgentReference" + """ + + metadata: Optional["Metadata"] + top_logprobs: Optional[int] + temperature: Optional[float] + top_p: Optional[float] + user: str + """This field is being replaced by ``safety_identifier`` and ``prompt_cache_key``. Use + ``prompt_cache_key`` instead to maintain caching optimizations. A stable identifier for your + end-users. Used to boost cache hit rates by better bucketing similar requests and to help + OpenAI detect and prevent abuse. `Learn more + `_.""" + safety_identifier: str + """A stable identifier used to help detect users of your application that may be violating + OpenAI's usage policies. The IDs should be a string that uniquely identifies each user, with a + maximum length of 64 characters. We recommend hashing their username or email address, in order + to avoid sending us any identifying information. `Learn more + `_.""" + prompt_cache_key: str + """Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. + Replaces the ``user`` field. `Learn more `_.""" + service_tier: Optional[Literal["auto", "default", "flex", "scale", "priority"]] + """Is one of the following types: Literal[\"auto\"], Literal[\"default\"], Literal[\"flex\"], + Literal[\"scale\"], Literal[\"priority\"]""" + prompt_cache_retention: Optional[Literal["in_memory", "24h"]] + """Is either a Literal[\"in_memory\"] type or a Literal[\"24h\"] type.""" + previous_response_id: Optional[str] + model: str + """The model deployment to use for the creation of this response.""" + background: Optional[bool] + max_tool_calls: Optional[int] + text: "ResponseTextParam" + tools: list["Tool"] + tool_choice: Union[ToolChoiceOptions, "ToolChoiceParam"] + """Is either a types.ToolChoiceOptions type or a ToolChoiceParam type.""" + prompt: "Prompt" + truncation: Optional[Literal["auto", "disabled"]] + """Is either a Literal[\"auto\"] type or a Literal[\"disabled\"] type.""" + id: Required[str] + """Unique identifier for this Response. Required.""" + object: Required[Literal["response"]] + """The object type of this resource - always set to ``response``. Required. Default value is + \"response\".""" + status: Literal["completed", "failed", "in_progress", "cancelled", "queued", "incomplete"] + """The status of the response generation. One of ``completed``, ``failed``, ``in_progress``, + ``cancelled``, ``queued``, or ``incomplete``. Is one of the following types: + Literal[\"completed\"], Literal[\"failed\"], Literal[\"in_progress\"], Literal[\"cancelled\"], + Literal[\"queued\"], Literal[\"incomplete\"]""" + created_at: Required[int] + """Unix timestamp (in seconds) of when this Response was created. Required.""" + completed_at: Optional[int] + error: Required[Optional["ResponseErrorInfo"]] + """Required.""" + incomplete_details: Required[Optional["ResponseIncompleteDetails"]] + """Required.""" + output: Required[list["OutputItem"]] + """An array of content items generated by the model. + + * The length and order of items in the `output` array is dependent + on the model's response. + * Rather than accessing the first item in the `output` array and + assuming it's an `assistant` message with the content generated by + the model, you might consider using the `output_text` property where + supported in SDKs. Required.""" + reasoning: Optional["Reasoning"] + instructions: Required[Optional[Union[str, list["Item"]]]] + """Required. Is either a str type or a [Item] type.""" + output_text: Optional[str] + usage: "ResponseUsage" + moderation: Optional["Moderation"] + parallel_tool_calls: Required[bool] + """Whether to allow the model to run tool calls in parallel. Required.""" + conversation: Optional["ConversationReference"] + max_output_tokens: Optional[int] + agent_reference: Required[Optional["AgentReference"]] + """The agent used for this response. Required.""" + + +class ResponseOutputItemAddedEvent(TypedDict, total=False): + """Emitted when a new output item is added. + + :ivar type: The type of the event. Always ``response.output_item.added``. Required. + RESPONSE_OUTPUT_ITEM_ADDED. + :vartype type: Literal["response.output_item.added"] + :ivar output_index: The index of the output item that was added. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar item: The output item that was added. Required. + :vartype item: "OutputItem" + """ + + type: Required[Literal["response.output_item.added"]] + """The type of the event. Always ``response.output_item.added``. Required. + RESPONSE_OUTPUT_ITEM_ADDED.""" + output_index: Required[int] + """The index of the output item that was added. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + item: Required["OutputItem"] + """The output item that was added. Required.""" + + +class ResponseOutputItemDoneEvent(TypedDict, total=False): + """Emitted when an output item is marked done. + + :ivar type: The type of the event. Always ``response.output_item.done``. Required. + RESPONSE_OUTPUT_ITEM_DONE. + :vartype type: Literal["response.output_item.done"] + :ivar output_index: The index of the output item that was marked done. Required. + :vartype output_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar item: The output item that was marked done. Required. + :vartype item: "OutputItem" + """ + + type: Required[Literal["response.output_item.done"]] + """The type of the event. Always ``response.output_item.done``. Required. + RESPONSE_OUTPUT_ITEM_DONE.""" + output_index: Required[int] + """The index of the output item that was marked done. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + item: Required["OutputItem"] + """The output item that was marked done. Required.""" + + +class ResponseOutputTextAnnotationAddedEvent(TypedDict, total=False): + """ResponseOutputTextAnnotationAddedEvent. + + :ivar type: The type of the event. Always 'response.output_text.annotation.added'. Required. + RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED. + :vartype type: Literal["response.output_text.annotation.added"] + :ivar item_id: The unique identifier of the item to which the annotation is being added. + Required. + :vartype item_id: str + :ivar output_index: The index of the output item in the response's output array. Required. + :vartype output_index: int + :ivar content_index: The index of the content part within the output item. Required. + :vartype content_index: int + :ivar annotation_index: The index of the annotation within the content part. Required. + :vartype annotation_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar annotation: The annotation object being added. (See annotation schema for details.). + Required. + :vartype annotation: "Annotation" + """ + + type: Required[Literal["response.output_text.annotation.added"]] + """The type of the event. Always 'response.output_text.annotation.added'. Required. + RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED.""" + item_id: Required[str] + """The unique identifier of the item to which the annotation is being added. Required.""" + output_index: Required[int] + """The index of the output item in the response's output array. Required.""" + content_index: Required[int] + """The index of the content part within the output item. Required.""" + annotation_index: Required[int] + """The index of the annotation within the content part. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + annotation: Required["Annotation"] + """The annotation object being added. (See annotation schema for details.). Required.""" + + +class ResponsePromptVariables(TypedDict, total=False): + """Prompt Variables.""" + + +class ResponseQueuedEvent(TypedDict, total=False): + """ResponseQueuedEvent. + + :ivar type: The type of the event. Always 'response.queued'. Required. RESPONSE_QUEUED. + :vartype type: Literal["response.queued"] + :ivar response: The full response object that is queued. Required. + :vartype response: "ResponseObject" + :ivar sequence_number: The sequence number for this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.queued"]] + """The type of the event. Always 'response.queued'. Required. RESPONSE_QUEUED.""" + response: Required["ResponseObject"] + """The full response object that is queued. Required.""" + sequence_number: Required[int] + """The sequence number for this event. Required.""" + + +class ResponseReasoningSummaryPartAddedEvent(TypedDict, total=False): + """Emitted when a new reasoning summary part is added. + + :ivar type: The type of the event. Always ``response.reasoning_summary_part.added``. Required. + RESPONSE_REASONING_SUMMARY_PART_ADDED. + :vartype type: Literal["response.reasoning_summary_part.added"] + :ivar item_id: The ID of the item this summary part is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this summary part is associated with. + Required. + :vartype output_index: int + :ivar summary_index: The index of the summary part within the reasoning summary. Required. + :vartype summary_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar part: The summary part that was added. Required. + :vartype part: "ResponseReasoningSummaryPartAddedEventPart" + """ + + type: Required[Literal["response.reasoning_summary_part.added"]] + """The type of the event. Always ``response.reasoning_summary_part.added``. Required. + RESPONSE_REASONING_SUMMARY_PART_ADDED.""" + item_id: Required[str] + """The ID of the item this summary part is associated with. Required.""" + output_index: Required[int] + """The index of the output item this summary part is associated with. Required.""" + summary_index: Required[int] + """The index of the summary part within the reasoning summary. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + part: Required["ResponseReasoningSummaryPartAddedEventPart"] + """The summary part that was added. Required.""" + + +class ResponseReasoningSummaryPartAddedEventPart(TypedDict, total=False): # pylint: disable=name-too-long + """ResponseReasoningSummaryPartAddedEventPart. + + :ivar type: Required. Default value is "summary_text". + :vartype type: Literal["summary_text"] + :ivar text: Required. + :vartype text: str + """ + + type: Required[Literal["summary_text"]] + """Required. Default value is \"summary_text\".""" + text: Required[str] + """Required.""" + + +class ResponseReasoningSummaryPartDoneEvent(TypedDict, total=False): + """Emitted when a reasoning summary part is completed. + + :ivar type: The type of the event. Always ``response.reasoning_summary_part.done``. Required. + RESPONSE_REASONING_SUMMARY_PART_DONE. + :vartype type: Literal["response.reasoning_summary_part.done"] + :ivar item_id: The ID of the item this summary part is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this summary part is associated with. + Required. + :vartype output_index: int + :ivar summary_index: The index of the summary part within the reasoning summary. Required. + :vartype summary_index: int + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + :ivar part: The completed summary part. Required. + :vartype part: "ResponseReasoningSummaryPartDoneEventPart" + """ + + type: Required[Literal["response.reasoning_summary_part.done"]] + """The type of the event. Always ``response.reasoning_summary_part.done``. Required. + RESPONSE_REASONING_SUMMARY_PART_DONE.""" + item_id: Required[str] + """The ID of the item this summary part is associated with. Required.""" + output_index: Required[int] + """The index of the output item this summary part is associated with. Required.""" + summary_index: Required[int] + """The index of the summary part within the reasoning summary. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + part: Required["ResponseReasoningSummaryPartDoneEventPart"] + """The completed summary part. Required.""" + + +class ResponseReasoningSummaryPartDoneEventPart(TypedDict, total=False): # pylint: disable=name-too-long + """ResponseReasoningSummaryPartDoneEventPart. + + :ivar type: Required. Default value is "summary_text". + :vartype type: Literal["summary_text"] + :ivar text: Required. + :vartype text: str + """ + + type: Required[Literal["summary_text"]] + """Required. Default value is \"summary_text\".""" + text: Required[str] + """Required.""" + + +class ResponseReasoningSummaryTextDeltaEvent(TypedDict, total=False): + """Emitted when a delta is added to a reasoning summary text. + + :ivar type: The type of the event. Always ``response.reasoning_summary_text.delta``. Required. + RESPONSE_REASONING_SUMMARY_TEXT_DELTA. + :vartype type: Literal["response.reasoning_summary_text.delta"] + :ivar item_id: The ID of the item this summary text delta is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this summary text delta is associated with. + Required. + :vartype output_index: int + :ivar summary_index: The index of the summary part within the reasoning summary. Required. + :vartype summary_index: int + :ivar delta: The text delta that was added to the summary. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.reasoning_summary_text.delta"]] + """The type of the event. Always ``response.reasoning_summary_text.delta``. Required. + RESPONSE_REASONING_SUMMARY_TEXT_DELTA.""" + item_id: Required[str] + """The ID of the item this summary text delta is associated with. Required.""" + output_index: Required[int] + """The index of the output item this summary text delta is associated with. Required.""" + summary_index: Required[int] + """The index of the summary part within the reasoning summary. Required.""" + delta: Required[str] + """The text delta that was added to the summary. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseReasoningSummaryTextDoneEvent(TypedDict, total=False): + """Emitted when a reasoning summary text is completed. + + :ivar type: The type of the event. Always ``response.reasoning_summary_text.done``. Required. + RESPONSE_REASONING_SUMMARY_TEXT_DONE. + :vartype type: Literal["response.reasoning_summary_text.done"] + :ivar item_id: The ID of the item this summary text is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this summary text is associated with. + Required. + :vartype output_index: int + :ivar summary_index: The index of the summary part within the reasoning summary. Required. + :vartype summary_index: int + :ivar text: The full text of the completed reasoning summary. Required. + :vartype text: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.reasoning_summary_text.done"]] + """The type of the event. Always ``response.reasoning_summary_text.done``. Required. + RESPONSE_REASONING_SUMMARY_TEXT_DONE.""" + item_id: Required[str] + """The ID of the item this summary text is associated with. Required.""" + output_index: Required[int] + """The index of the output item this summary text is associated with. Required.""" + summary_index: Required[int] + """The index of the summary part within the reasoning summary. Required.""" + text: Required[str] + """The full text of the completed reasoning summary. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseReasoningTextDeltaEvent(TypedDict, total=False): + """Emitted when a delta is added to a reasoning text. + + :ivar type: The type of the event. Always ``response.reasoning_text.delta``. Required. + RESPONSE_REASONING_TEXT_DELTA. + :vartype type: Literal["response.reasoning_text.delta"] + :ivar item_id: The ID of the item this reasoning text delta is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this reasoning text delta is associated with. + Required. + :vartype output_index: int + :ivar content_index: The index of the reasoning content part this delta is associated with. + Required. + :vartype content_index: int + :ivar delta: The text delta that was added to the reasoning content. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.reasoning_text.delta"]] + """The type of the event. Always ``response.reasoning_text.delta``. Required. + RESPONSE_REASONING_TEXT_DELTA.""" + item_id: Required[str] + """The ID of the item this reasoning text delta is associated with. Required.""" + output_index: Required[int] + """The index of the output item this reasoning text delta is associated with. Required.""" + content_index: Required[int] + """The index of the reasoning content part this delta is associated with. Required.""" + delta: Required[str] + """The text delta that was added to the reasoning content. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseReasoningTextDoneEvent(TypedDict, total=False): + """Emitted when a reasoning text is completed. + + :ivar type: The type of the event. Always ``response.reasoning_text.done``. Required. + RESPONSE_REASONING_TEXT_DONE. + :vartype type: Literal["response.reasoning_text.done"] + :ivar item_id: The ID of the item this reasoning text is associated with. Required. + :vartype item_id: str + :ivar output_index: The index of the output item this reasoning text is associated with. + Required. + :vartype output_index: int + :ivar content_index: The index of the reasoning content part. Required. + :vartype content_index: int + :ivar text: The full text of the completed reasoning content. Required. + :vartype text: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.reasoning_text.done"]] + """The type of the event. Always ``response.reasoning_text.done``. Required. + RESPONSE_REASONING_TEXT_DONE.""" + item_id: Required[str] + """The ID of the item this reasoning text is associated with. Required.""" + output_index: Required[int] + """The index of the output item this reasoning text is associated with. Required.""" + content_index: Required[int] + """The index of the reasoning content part. Required.""" + text: Required[str] + """The full text of the completed reasoning content. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseRefusalDeltaEvent(TypedDict, total=False): + """Emitted when there is a partial refusal text. + + :ivar type: The type of the event. Always ``response.refusal.delta``. Required. + RESPONSE_REFUSAL_DELTA. + :vartype type: Literal["response.refusal.delta"] + :ivar item_id: The ID of the output item that the refusal text is added to. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the refusal text is added to. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that the refusal text is added to. Required. + :vartype content_index: int + :ivar delta: The refusal text that is added. Required. + :vartype delta: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.refusal.delta"]] + """The type of the event. Always ``response.refusal.delta``. Required. RESPONSE_REFUSAL_DELTA.""" + item_id: Required[str] + """The ID of the output item that the refusal text is added to. Required.""" + output_index: Required[int] + """The index of the output item that the refusal text is added to. Required.""" + content_index: Required[int] + """The index of the content part that the refusal text is added to. Required.""" + delta: Required[str] + """The refusal text that is added. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseRefusalDoneEvent(TypedDict, total=False): + """Emitted when refusal text is finalized. + + :ivar type: The type of the event. Always ``response.refusal.done``. Required. + RESPONSE_REFUSAL_DONE. + :vartype type: Literal["response.refusal.done"] + :ivar item_id: The ID of the output item that the refusal text is finalized. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the refusal text is finalized. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that the refusal text is finalized. + Required. + :vartype content_index: int + :ivar refusal: The refusal text that is finalized. Required. + :vartype refusal: str + :ivar sequence_number: The sequence number of this event. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.refusal.done"]] + """The type of the event. Always ``response.refusal.done``. Required. RESPONSE_REFUSAL_DONE.""" + item_id: Required[str] + """The ID of the output item that the refusal text is finalized. Required.""" + output_index: Required[int] + """The index of the output item that the refusal text is finalized. Required.""" + content_index: Required[int] + """The index of the content part that the refusal text is finalized. Required.""" + refusal: Required[str] + """The refusal text that is finalized. Required.""" + sequence_number: Required[int] + """The sequence number of this event. Required.""" + + +class ResponseStreamOptions(TypedDict, total=False): + """Options for streaming responses. Only set this when you set ``stream: true``. + + :ivar include_obfuscation: When true, stream obfuscation will be enabled. Stream obfuscation + adds random characters to an ``obfuscation`` field on streaming delta events to normalize + payload sizes as a mitigation to certain side-channel attacks. These obfuscation fields are + included by default, but add a small amount of overhead to the data stream. You can set + ``include_obfuscation`` to false to optimize for bandwidth if you trust the network links + between your application and the OpenAI API. + :vartype include_obfuscation: bool + """ + + include_obfuscation: bool + """When true, stream obfuscation will be enabled. Stream obfuscation adds random characters to an + ``obfuscation`` field on streaming delta events to normalize payload sizes as a mitigation to + certain side-channel attacks. These obfuscation fields are included by default, but add a small + amount of overhead to the data stream. You can set ``include_obfuscation`` to false to optimize + for bandwidth if you trust the network links between your application and the OpenAI API.""" + + +class ResponseTextDeltaEvent(TypedDict, total=False): + """Emitted when there is an additional text delta. + + :ivar type: The type of the event. Always ``response.output_text.delta``. Required. + RESPONSE_OUTPUT_TEXT_DELTA. + :vartype type: Literal["response.output_text.delta"] + :ivar item_id: The ID of the output item that the text delta was added to. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the text delta was added to. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that the text delta was added to. Required. + :vartype content_index: int + :ivar delta: The text delta that was added. Required. + :vartype delta: str + :ivar sequence_number: The sequence number for this event. Required. + :vartype sequence_number: int + :ivar logprobs: The log probabilities of the tokens in the delta. Required. + :vartype logprobs: list["ResponseLogProb"] + """ + + type: Required[Literal["response.output_text.delta"]] + """The type of the event. Always ``response.output_text.delta``. Required. + RESPONSE_OUTPUT_TEXT_DELTA.""" + item_id: Required[str] + """The ID of the output item that the text delta was added to. Required.""" + output_index: Required[int] + """The index of the output item that the text delta was added to. Required.""" + content_index: Required[int] + """The index of the content part that the text delta was added to. Required.""" + delta: Required[str] + """The text delta that was added. Required.""" + sequence_number: Required[int] + """The sequence number for this event. Required.""" + logprobs: Required[list["ResponseLogProb"]] + """The log probabilities of the tokens in the delta. Required.""" + + +class ResponseTextDoneEvent(TypedDict, total=False): + """Emitted when text content is finalized. + + :ivar type: The type of the event. Always ``response.output_text.done``. Required. + RESPONSE_OUTPUT_TEXT_DONE. + :vartype type: Literal["response.output_text.done"] + :ivar item_id: The ID of the output item that the text content is finalized. Required. + :vartype item_id: str + :ivar output_index: The index of the output item that the text content is finalized. Required. + :vartype output_index: int + :ivar content_index: The index of the content part that the text content is finalized. + Required. + :vartype content_index: int + :ivar text: The text content that is finalized. Required. + :vartype text: str + :ivar sequence_number: The sequence number for this event. Required. + :vartype sequence_number: int + :ivar logprobs: The log probabilities of the tokens in the delta. Required. + :vartype logprobs: list["ResponseLogProb"] + """ + + type: Required[Literal["response.output_text.done"]] + """The type of the event. Always ``response.output_text.done``. Required. + RESPONSE_OUTPUT_TEXT_DONE.""" + item_id: Required[str] + """The ID of the output item that the text content is finalized. Required.""" + output_index: Required[int] + """The index of the output item that the text content is finalized. Required.""" + content_index: Required[int] + """The index of the content part that the text content is finalized. Required.""" + text: Required[str] + """The text content that is finalized. Required.""" + sequence_number: Required[int] + """The sequence number for this event. Required.""" + logprobs: Required[list["ResponseLogProb"]] + """The log probabilities of the tokens in the delta. Required.""" + + +class ResponseTextParam(TypedDict, total=False): + """Configuration options for a text response from the model. Can be plain + text or structured JSON data. Learn more: + + * [Text inputs and outputs](/docs/guides/text) + * [Structured Outputs](/docs/guides/structured-outputs). + + :ivar format: + :vartype format: "TextResponseFormatConfiguration" + :ivar verbosity: Is one of the following types: Literal["low"], Literal["medium"], + Literal["high"] + :vartype verbosity: Literal["low", "medium", "high"] + """ + + format: "TextResponseFormatConfiguration" + verbosity: Optional[Literal["low", "medium", "high"]] + """Is one of the following types: Literal[\"low\"], Literal[\"medium\"], Literal[\"high\"]""" + + +class ResponseUsage(TypedDict, total=False): + """Represents token usage details including input tokens, output tokens, a breakdown of output + tokens, and the total tokens used. + + :ivar input_tokens: The number of input tokens. Required. + :vartype input_tokens: int + :ivar input_tokens_details: A detailed breakdown of the input tokens. Required. + :vartype input_tokens_details: "ResponseUsageInputTokensDetails" + :ivar output_tokens: The number of output tokens. Required. + :vartype output_tokens: int + :ivar output_tokens_details: A detailed breakdown of the output tokens. Required. + :vartype output_tokens_details: "ResponseUsageOutputTokensDetails" + :ivar total_tokens: The total number of tokens used. Required. + :vartype total_tokens: int + """ + + input_tokens: Required[int] + """The number of input tokens. Required.""" + input_tokens_details: Required["ResponseUsageInputTokensDetails"] + """A detailed breakdown of the input tokens. Required.""" + output_tokens: Required[int] + """The number of output tokens. Required.""" + output_tokens_details: Required["ResponseUsageOutputTokensDetails"] + """A detailed breakdown of the output tokens. Required.""" + total_tokens: Required[int] + """The total number of tokens used. Required.""" + + +class ResponseUsageInputTokensDetails(TypedDict, total=False): + """ResponseUsageInputTokensDetails. + + :ivar cached_tokens: Required. + :vartype cached_tokens: int + """ + + cached_tokens: Required[int] + """Required.""" + + +class ResponseUsageOutputTokensDetails(TypedDict, total=False): + """ResponseUsageOutputTokensDetails. + + :ivar reasoning_tokens: Required. + :vartype reasoning_tokens: int + """ + + reasoning_tokens: Required[int] + """Required.""" + + +class ResponseWebSearchCallCompletedEvent(TypedDict, total=False): + """Emitted when a web search call is completed. + + :ivar type: The type of the event. Always ``response.web_search_call.completed``. Required. + RESPONSE_WEB_SEARCH_CALL_COMPLETED. + :vartype type: Literal["response.web_search_call.completed"] + :ivar output_index: The index of the output item that the web search call is associated with. + Required. + :vartype output_index: int + :ivar item_id: Unique ID for the output item associated with the web search call. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the web search call being processed. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.web_search_call.completed"]] + """The type of the event. Always ``response.web_search_call.completed``. Required. + RESPONSE_WEB_SEARCH_CALL_COMPLETED.""" + output_index: Required[int] + """The index of the output item that the web search call is associated with. Required.""" + item_id: Required[str] + """Unique ID for the output item associated with the web search call. Required.""" + sequence_number: Required[int] + """The sequence number of the web search call being processed. Required.""" + + +class ResponseWebSearchCallInProgressEvent(TypedDict, total=False): + """Emitted when a web search call is initiated. + + :ivar type: The type of the event. Always ``response.web_search_call.in_progress``. Required. + RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS. + :vartype type: Literal["response.web_search_call.in_progress"] + :ivar output_index: The index of the output item that the web search call is associated with. + Required. + :vartype output_index: int + :ivar item_id: Unique ID for the output item associated with the web search call. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the web search call being processed. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.web_search_call.in_progress"]] + """The type of the event. Always ``response.web_search_call.in_progress``. Required. + RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS.""" + output_index: Required[int] + """The index of the output item that the web search call is associated with. Required.""" + item_id: Required[str] + """Unique ID for the output item associated with the web search call. Required.""" + sequence_number: Required[int] + """The sequence number of the web search call being processed. Required.""" + + +class ResponseWebSearchCallSearchingEvent(TypedDict, total=False): + """Emitted when a web search call is executing. + + :ivar type: The type of the event. Always ``response.web_search_call.searching``. Required. + RESPONSE_WEB_SEARCH_CALL_SEARCHING. + :vartype type: Literal["response.web_search_call.searching"] + :ivar output_index: The index of the output item that the web search call is associated with. + Required. + :vartype output_index: int + :ivar item_id: Unique ID for the output item associated with the web search call. Required. + :vartype item_id: str + :ivar sequence_number: The sequence number of the web search call being processed. Required. + :vartype sequence_number: int + """ + + type: Required[Literal["response.web_search_call.searching"]] + """The type of the event. Always ``response.web_search_call.searching``. Required. + RESPONSE_WEB_SEARCH_CALL_SEARCHING.""" + output_index: Required[int] + """The index of the output item that the web search call is associated with. Required.""" + item_id: Required[str] + """Unique ID for the output item associated with the web search call. Required.""" + sequence_number: Required[int] + """The sequence number of the web search call being processed. Required.""" + + +class ScreenshotParam(TypedDict, total=False): + """Screenshot. + + :ivar type: Specifies the event type. For a screenshot action, this property is always set to + ``screenshot``. Required. SCREENSHOT. + :vartype type: Literal["screenshot"] + """ + + type: Required[Literal["screenshot"]] + """Specifies the event type. For a screenshot action, this property is always set to + ``screenshot``. Required. SCREENSHOT.""" + + +class ScrollParam(TypedDict, total=False): + """Scroll. + + :ivar type: Specifies the event type. For a scroll action, this property is always set to + ``scroll``. Required. SCROLL. + :vartype type: Literal["scroll"] + :ivar x: The x-coordinate where the scroll occurred. Required. + :vartype x: int + :ivar y: The y-coordinate where the scroll occurred. Required. + :vartype y: int + :ivar scroll_x: The horizontal scroll distance. Required. + :vartype scroll_x: int + :ivar scroll_y: The vertical scroll distance. Required. + :vartype scroll_y: int + :ivar keys_property: + :vartype keys_property: list[str] + """ + + type: Required[Literal["scroll"]] + """Specifies the event type. For a scroll action, this property is always set to ``scroll``. + Required. SCROLL.""" + x: Required[int] + """The x-coordinate where the scroll occurred. Required.""" + y: Required[int] + """The y-coordinate where the scroll occurred. Required.""" + scroll_x: Required[int] + """The horizontal scroll distance. Required.""" + scroll_y: Required[int] + """The vertical scroll distance. Required.""" + keys: Optional[list[str]] + + +class SharepointGroundingToolCall(TypedDict, total=False): + """A SharePoint grounding tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. SHAREPOINT_GROUNDING_PREVIEW_CALL. + :vartype type: Literal["sharepoint_grounding_preview_call"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar arguments: A JSON string of the arguments to pass to the tool. Required. + :vartype arguments: str + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["sharepoint_grounding_preview_call"]] + """Required. SHAREPOINT_GROUNDING_PREVIEW_CALL.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + arguments: Required[str] + """A JSON string of the arguments to pass to the tool. Required.""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class SharepointGroundingToolCallOutput(TypedDict, total=False): + """The output of a SharePoint grounding tool call. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT. + :vartype type: Literal["sharepoint_grounding_preview_call_output"] + :ivar call_id: The unique ID of the tool call generated by the model. Required. + :vartype call_id: str + :ivar output: The output from the SharePoint grounding tool call. Is one of the following + types: {str: Any}, str, [Any] + :vartype output: "_unions.ToolCallOutputContent" + :ivar status: The status of the tool call. Required. Known values are: "in_progress", + "completed", "incomplete", and "failed". + :vartype status: ToolCallStatus + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["sharepoint_grounding_preview_call_output"]] + """Required. SHAREPOINT_GROUNDING_PREVIEW_CALL_OUTPUT.""" + call_id: Required[str] + """The unique ID of the tool call generated by the model. Required.""" + output: "_unions.ToolCallOutputContent" + """The output from the SharePoint grounding tool call. Is one of the following types: {str: Any}, + str, [Any]""" + status: Required[ToolCallStatus] + """The status of the tool call. Required. Known values are: \"in_progress\", \"completed\", + \"incomplete\", and \"failed\".""" + id: Required[str] + """Required.""" + + +class SharepointGroundingToolParameters(TypedDict, total=False): + """The sharepoint grounding tool parameters. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connections: The project connections attached to this tool. There can be a + maximum of 1 connection resource attached to the tool. + :vartype project_connections: list["ToolProjectConnection"] + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connections: list["ToolProjectConnection"] + """The project connections attached to this tool. There can be a maximum of 1 connection resource + attached to the tool.""" + + +class SharepointPreviewTool(TypedDict, total=False): + """The input definition information for a sharepoint tool as used to configure an agent. + + :ivar type: The object type, which is always 'sharepoint_grounding_preview'. Required. + SHAREPOINT_GROUNDING_PREVIEW. + :vartype type: Literal["sharepoint_grounding_preview"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar sharepoint_grounding_preview: The sharepoint grounding tool parameters. Required. + :vartype sharepoint_grounding_preview: "SharepointGroundingToolParameters" + """ + + type: Required[Literal["sharepoint_grounding_preview"]] + """The object type, which is always 'sharepoint_grounding_preview'. Required. + SHAREPOINT_GROUNDING_PREVIEW.""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + sharepoint_grounding_preview: Required["SharepointGroundingToolParameters"] + """The sharepoint grounding tool parameters. Required.""" + + +class SkillReferenceParam(TypedDict, total=False): + """SkillReferenceParam. + + :ivar type: References a skill created with the /v1/skills endpoint. Required. SKILL_REFERENCE. + :vartype type: Literal["skill_reference"] + :ivar skill_id: The ID of the referenced skill. Required. + :vartype skill_id: str + :ivar version: Optional skill version. Use a positive integer or 'latest'. Omit for default. + :vartype version: str + """ + + type: Required[Literal["skill_reference"]] + """References a skill created with the /v1/skills endpoint. Required. SKILL_REFERENCE.""" + skill_id: Required[str] + """The ID of the referenced skill. Required.""" + version: str + """Optional skill version. Use a positive integer or 'latest'. Omit for default.""" + + +class SpecificApplyPatchParam(TypedDict, total=False): + """Specific apply patch tool choice. + + :ivar type: The tool to call. Always ``apply_patch``. Required. APPLY_PATCH. + :vartype type: Literal["apply_patch"] + """ + + type: Required[Literal["apply_patch"]] + """The tool to call. Always ``apply_patch``. Required. APPLY_PATCH.""" + + +class SpecificFunctionShellParam(TypedDict, total=False): + """Specific shell tool choice. + + :ivar type: The tool to call. Always ``shell``. Required. SHELL. + :vartype type: Literal["shell"] + """ + + type: Required[Literal["shell"]] + """The tool to call. Always ``shell``. Required. SHELL.""" + + +class StructuredOutputDefinition(TypedDict, total=False): + """A structured output that can be produced by the agent. + + :ivar name: The name of the structured output. Required. + :vartype name: str + :ivar description: A description of the output to emit. Used by the model to determine when to + emit the output. Required. + :vartype description: str + :ivar schema: The JSON schema for the structured output. Required. + :vartype schema: dict[str, Any] + :ivar strict: Whether to enforce strict validation. Default ``true``. Required. + :vartype strict: bool + """ + + name: Required[str] + """The name of the structured output. Required.""" + description: Required[str] + """A description of the output to emit. Used by the model to determine when to emit the output. + Required.""" + schema: Required[dict[str, Any]] + """The JSON schema for the structured output. Required.""" + strict: Required[Optional[bool]] + """Whether to enforce strict validation. Default ``true``. Required.""" + + +class StructuredOutputsOutputItem(TypedDict, total=False): + """StructuredOutputsOutputItem. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. STRUCTURED_OUTPUTS. + :vartype type: Literal["structured_outputs"] + :ivar output: The structured output captured during the response. Required. + :vartype output: Any + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["structured_outputs"]] + """Required. STRUCTURED_OUTPUTS.""" + output: Required[Any] + """The structured output captured during the response. Required.""" + id: Required[str] + """Required.""" + + +class SummaryTextContent(TypedDict, total=False): + """Summary text. + + :ivar type: The type of the object. Always ``summary_text``. Required. SUMMARY_TEXT. + :vartype type: Literal["summary_text"] + :ivar text: A summary of the reasoning output from the model so far. Required. + :vartype text: str + """ + + type: Required[Literal["summary_text"]] + """The type of the object. Always ``summary_text``. Required. SUMMARY_TEXT.""" + text: Required[str] + """A summary of the reasoning output from the model so far. Required.""" + + +class TextContent(TypedDict, total=False): + """Text Content. + + :ivar type: Required. TEXT. + :vartype type: Literal["text"] + :ivar text: Required. + :vartype text: str + """ + + type: Required[Literal["text"]] + """Required. TEXT.""" + text: Required[str] + """Required.""" + + +class TextResponseFormatConfigurationResponseFormatJsonObject(TypedDict, total=False): # pylint: disable=name-too-long + """JSON object. + + :ivar type: The type of response format being defined. Always ``json_object``. Required. + JSON_OBJECT. + :vartype type: Literal["json_object"] + """ + + type: Required[Literal["json_object"]] + """The type of response format being defined. Always ``json_object``. Required. JSON_OBJECT.""" + + +class TextResponseFormatConfigurationResponseFormatText(TypedDict, total=False): # pylint: disable=name-too-long + """Text. + + :ivar type: The type of response format being defined. Always ``text``. Required. TEXT. + :vartype type: Literal["text"] + """ + + type: Required[Literal["text"]] + """The type of response format being defined. Always ``text``. Required. TEXT.""" + + +class TextResponseFormatJsonSchema(TypedDict, total=False): + """JSON schema. + + :ivar type: The type of response format being defined. Always ``json_schema``. Required. + JSON_SCHEMA. + :vartype type: Literal["json_schema"] + :ivar description: A description of what the response format is for, used by the model to + determine how to respond in the format. + :vartype description: str + :ivar name: The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and + dashes, with a maximum length of 64. Required. + :vartype name: str + :ivar schema: Required. + :vartype schema: "ResponseFormatJsonSchemaSchema" + :ivar strict: + :vartype strict: bool + """ + + type: Required[Literal["json_schema"]] + """The type of response format being defined. Always ``json_schema``. Required. JSON_SCHEMA.""" + description: str + """A description of what the response format is for, used by the model to determine how to respond + in the format.""" + name: Required[str] + """The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with + a maximum length of 64. Required.""" + schema: Required["ResponseFormatJsonSchemaSchema"] + """Required.""" + strict: Optional[bool] + + +class ToolChoiceAllowed(TypedDict, total=False): + """Allowed tools. + + :ivar type: Allowed tool configuration type. Always ``allowed_tools``. Required. ALLOWED_TOOLS. + :vartype type: Literal["allowed_tools"] + :ivar mode: Constrains the tools available to the model to a pre-defined set. ``auto`` allows + the model to pick from among the allowed tools and generate a message. ``required`` requires + the model to call one or more of the allowed tools. Required. Is either a Literal["auto"] type + or a Literal["required"] type. + :vartype mode: Literal["auto", "required"] + :ivar tools: Required. A list of tool definitions that the model should be allowed to call. For + the Responses API, the list of tool definitions might look like: + + .. code-block:: json + + [ + { "type": "function", "name": "get_weather" }, + { "type": "mcp", "server_label": "deepwiki" }, + { "type": "image_generation" } + ] + :vartype tools: list[dict[str, Any]] + """ + + type: Required[Literal["allowed_tools"]] + """Allowed tool configuration type. Always ``allowed_tools``. Required. ALLOWED_TOOLS.""" + mode: Required[Literal["auto", "required"]] + """Constrains the tools available to the model to a pre-defined set. ``auto`` allows the model to + pick from among the allowed tools and generate a message. ``required`` requires the model to + call one or more of the allowed tools. Required. Is either a Literal[\"auto\"] type or a + Literal[\"required\"] type.""" + tools: Required[list[dict[str, Any]]] + """Required. A list of tool definitions that the model should be allowed to call. For the + Responses API, the list of tool definitions might look like: + + .. code-block:: json + + [ + { \"type\": \"function\", \"name\": \"get_weather\" }, + { \"type\": \"mcp\", \"server_label\": \"deepwiki\" }, + { \"type\": \"image_generation\" } + ]""" + + +class ToolChoiceCodeInterpreter(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. CODE_INTERPRETER. + :vartype type: Literal["code_interpreter"] + """ + + type: Required[Literal["code_interpreter"]] + """Required. CODE_INTERPRETER.""" + + +class ToolChoiceComputer(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. COMPUTER. + :vartype type: Literal["computer"] + """ + + type: Required[Literal["computer"]] + """Required. COMPUTER.""" + + +class ToolChoiceComputerUse(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. COMPUTER_USE. + :vartype type: Literal["computer_use"] + """ + + type: Required[Literal["computer_use"]] + """Required. COMPUTER_USE.""" + + +class ToolChoiceComputerUsePreview(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. COMPUTER_USE_PREVIEW. + :vartype type: Literal["computer_use_preview"] + """ + + type: Required[Literal["computer_use_preview"]] + """Required. COMPUTER_USE_PREVIEW.""" + + +class ToolChoiceCustom(TypedDict, total=False): + """Custom tool. + + :ivar type: For custom tool calling, the type is always ``custom``. Required. CUSTOM. + :vartype type: Literal["custom"] + :ivar name: The name of the custom tool to call. Required. + :vartype name: str + """ + + type: Required[Literal["custom"]] + """For custom tool calling, the type is always ``custom``. Required. CUSTOM.""" + name: Required[str] + """The name of the custom tool to call. Required.""" + + +class ToolChoiceFileSearch(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. FILE_SEARCH. + :vartype type: Literal["file_search"] + """ + + type: Required[Literal["file_search"]] + """Required. FILE_SEARCH.""" + + +class ToolChoiceFunction(TypedDict, total=False): + """Function tool. + + :ivar type: For function calling, the type is always ``function``. Required. FUNCTION. + :vartype type: Literal["function"] + :ivar name: The name of the function to call. Required. + :vartype name: str + """ + + type: Required[Literal["function"]] + """For function calling, the type is always ``function``. Required. FUNCTION.""" + name: Required[str] + """The name of the function to call. Required.""" + + +class ToolChoiceImageGeneration(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. IMAGE_GENERATION. + :vartype type: Literal["image_generation"] + """ + + type: Required[Literal["image_generation"]] + """Required. IMAGE_GENERATION.""" + + +class ToolChoiceMCP(TypedDict, total=False): + """MCP tool. + + :ivar type: For MCP tools, the type is always ``mcp``. Required. MCP. + :vartype type: Literal["mcp"] + :ivar server_label: The label of the MCP server to use. Required. + :vartype server_label: str + :ivar name: + :vartype name: str + """ + + type: Required[Literal["mcp"]] + """For MCP tools, the type is always ``mcp``. Required. MCP.""" + server_label: Required[str] + """The label of the MCP server to use. Required.""" + name: Optional[str] + + +class ToolChoiceWebSearchPreview(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. WEB_SEARCH_PREVIEW. + :vartype type: Literal["web_search_preview"] + """ + + type: Required[Literal["web_search_preview"]] + """Required. WEB_SEARCH_PREVIEW.""" + + +class ToolChoiceWebSearchPreview20250311(TypedDict, total=False): + """Indicates that the model should use a built-in tool to generate a response. `Learn more about + built-in tools `_. + + :ivar type: Required. WEB_SEARCH_PREVIEW2025_03_11. + :vartype type: Literal["web_search_preview_2025_03_11"] + """ + + type: Required[Literal["web_search_preview_2025_03_11"]] + """Required. WEB_SEARCH_PREVIEW2025_03_11.""" + + +class ToolProjectConnection(TypedDict, total=False): + """A project connection resource. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connection_id: A project connection in a ToolProjectConnectionList attached to + this tool. Required. + :vartype project_connection_id: str + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connection_id: Required[str] + """A project connection in a ToolProjectConnectionList attached to this tool. Required.""" + + +class ToolSearchCallItemParam(TypedDict, total=False): + """ToolSearchCallItemParam. + + :ivar id: + :vartype id: str + :ivar call_id: + :vartype call_id: str + :ivar type: The item type. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL. + :vartype type: Literal["tool_search_call"] + :ivar execution: Whether tool search was executed by the server or by the client. Known values + are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar arguments: The arguments supplied to the tool search call. Required. + :vartype arguments: "EmptyModelParam" + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallItemStatus + """ + + id: Optional[str] + call_id: Optional[str] + type: Required[Literal["tool_search_call"]] + """The item type. Always ``tool_search_call``. Required. TOOL_SEARCH_CALL.""" + execution: ToolSearchExecutionType + """Whether tool search was executed by the server or by the client. Known values are: \"server\" + and \"client\".""" + arguments: Required["EmptyModelParam"] + """The arguments supplied to the tool search call. Required.""" + status: Optional[FunctionCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + + +class ToolSearchOutputItemParam(TypedDict, total=False): + """ToolSearchOutputItemParam. + + :ivar id: + :vartype id: str + :ivar call_id: + :vartype call_id: str + :ivar type: The item type. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT. + :vartype type: Literal["tool_search_output"] + :ivar execution: Whether tool search was executed by the server or by the client. Known values + are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar tools: The loaded tool definitions returned by the tool search output. Required. + :vartype tools: list["Tool"] + :ivar status: Known values are: "in_progress", "completed", and "incomplete". + :vartype status: FunctionCallItemStatus + """ + + id: Optional[str] + call_id: Optional[str] + type: Required[Literal["tool_search_output"]] + """The item type. Always ``tool_search_output``. Required. TOOL_SEARCH_OUTPUT.""" + execution: ToolSearchExecutionType + """Whether tool search was executed by the server or by the client. Known values are: \"server\" + and \"client\".""" + tools: Required[list["Tool"]] + """The loaded tool definitions returned by the tool search output. Required.""" + status: Optional[FunctionCallItemStatus] + """Known values are: \"in_progress\", \"completed\", and \"incomplete\".""" + + +class ToolSearchToolParam(TypedDict, total=False): + """Tool search tool. + + :ivar type: The type of the tool. Always ``tool_search``. Required. TOOL_SEARCH. + :vartype type: Literal["tool_search"] + :ivar execution: Whether tool search is executed by the server or by the client. Known values + are: "server" and "client". + :vartype execution: ToolSearchExecutionType + :ivar description: + :vartype description: str + :ivar parameters: + :vartype parameters: "EmptyModelParam" + """ + + type: Required[Literal["tool_search"]] + """The type of the tool. Always ``tool_search``. Required. TOOL_SEARCH.""" + execution: ToolSearchExecutionType + """Whether tool search is executed by the server or by the client. Known values are: \"server\" + and \"client\".""" + description: Optional[str] + parameters: Optional["EmptyModelParam"] + + +class TopLogProb(TypedDict, total=False): + """Top log probability. + + :ivar token: Required. + :vartype token: str + :ivar logprob: Required. + :vartype logprob: float + :ivar bytes: Required. + :vartype bytes: list[int] + """ + + token: Required[str] + """Required.""" + logprob: Required[float] + """Required.""" + bytes: Required[list[int]] + """Required.""" + + +class TypeParam(TypedDict, total=False): + """Type. + + :ivar type: Specifies the event type. For a type action, this property is always set to + ``type``. Required. TYPE. + :vartype type: Literal["type"] + :ivar text: The text to type. Required. + :vartype text: str + """ + + type: Required[Literal["type"]] + """Specifies the event type. For a type action, this property is always set to ``type``. Required. + TYPE.""" + text: Required[str] + """The text to type. Required.""" + + +class UrlCitationBody(TypedDict, total=False): + """URL citation. + + :ivar type: The type of the URL citation. Always ``url_citation``. Required. URL_CITATION. + :vartype type: Literal["url_citation"] + :ivar url: The URL of the web resource. Required. + :vartype url: str + :ivar start_index: The index of the first character of the URL citation in the message. + Required. + :vartype start_index: int + :ivar end_index: The index of the last character of the URL citation in the message. Required. + :vartype end_index: int + :ivar title: The title of the web resource. Required. + :vartype title: str + """ + + type: Required[Literal["url_citation"]] + """The type of the URL citation. Always ``url_citation``. Required. URL_CITATION.""" + url: Required[str] + """The URL of the web resource. Required.""" + start_index: Required[int] + """The index of the first character of the URL citation in the message. Required.""" + end_index: Required[int] + """The index of the last character of the URL citation in the message. Required.""" + title: Required[str] + """The title of the web resource. Required.""" + + +class UserProfileMemoryItem(TypedDict, total=False): + """A memory item specifically containing user profile information extracted from conversations, + such as preferences, interests, and personal details. + + :ivar memory_id: The unique ID of the memory item. Required. + :vartype memory_id: str + :ivar updated_at: The last update time of the memory item. Required. + :vartype updated_at: int + :ivar scope: The namespace that logically groups and isolates memories, such as a user ID. + Required. + :vartype scope: str + :ivar content: The content of the memory. Required. + :vartype content: str + :ivar kind: The kind of the memory item. Required. User profile information extracted from + conversations. + :vartype kind: Literal["user_profile"] + """ + + memory_id: Required[str] + """The unique ID of the memory item. Required.""" + updated_at: Required[int] + """The last update time of the memory item. Required.""" + scope: Required[str] + """The namespace that logically groups and isolates memories, such as a user ID. Required.""" + content: Required[str] + """The content of the memory. Required.""" + kind: Required[Literal["user_profile"]] + """The kind of the memory item. Required. User profile information extracted from conversations.""" + + +class VectorStoreFileAttributes(TypedDict, total=False): + """Set of 16 key-value pairs that can be attached to an object. This can be useful for storing + additional information about the object in a structured format, and querying for objects via + API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are + strings with a maximum length of 512 characters, booleans, or numbers. + + """ + + +class WaitParam(TypedDict, total=False): + """Wait. + + :ivar type: Specifies the event type. For a wait action, this property is always set to + ``wait``. Required. WAIT. + :vartype type: Literal["wait"] + """ + + type: Required[Literal["wait"]] + """Specifies the event type. For a wait action, this property is always set to ``wait``. Required. + WAIT.""" + + +class WebSearchActionFind(TypedDict, total=False): + """Find action. + + :ivar type: The action type. Required. Default value is "find_in_page". + :vartype type: Literal["find_in_page"] + :ivar url: The URL of the page searched for the pattern. Required. + :vartype url: str + :ivar pattern: The pattern or text to search for within the page. Required. + :vartype pattern: str + """ + + type: Required[Literal["find_in_page"]] + """The action type. Required. Default value is \"find_in_page\".""" + url: Required[str] + """The URL of the page searched for the pattern. Required.""" + pattern: Required[str] + """The pattern or text to search for within the page. Required.""" + + +class WebSearchActionOpenPage(TypedDict, total=False): + """Open page action. + + :ivar type: The action type. Required. Default value is "open_page". + :vartype type: Literal["open_page"] + :ivar url: The URL opened by the model. + :vartype url: str + """ + + type: Required[Literal["open_page"]] + """The action type. Required. Default value is \"open_page\".""" + url: Optional[str] + """The URL opened by the model.""" + + +class WebSearchActionSearch(TypedDict, total=False): + """Search action. + + :ivar type: The action type. Required. Default value is "search". + :vartype type: Literal["search"] + :ivar query: The search query. + :vartype query: str + :ivar queries: Search queries. + :vartype queries: list[str] + :ivar sources: Web search sources. + :vartype sources: list["WebSearchActionSearchSources"] + """ + + type: Required[Literal["search"]] + """The action type. Required. Default value is \"search\".""" + query: str + """The search query.""" + queries: list[str] + """Search queries.""" + sources: list["WebSearchActionSearchSources"] + """Web search sources.""" + + +class WebSearchActionSearchSources(TypedDict, total=False): + """WebSearchActionSearchSources. + + :ivar type: Required. Default value is "url". + :vartype type: Literal["url"] + :ivar url: Required. + :vartype url: str + """ + + type: Required[Literal["url"]] + """Required. Default value is \"url\".""" + url: Required[str] + """Required.""" + + +class WebSearchApproximateLocation(TypedDict, total=False): + """Web search approximate location. + + :ivar type: The type of location approximation. Always ``approximate``. Required. Default value + is "approximate". + :vartype type: Literal["approximate"] + :ivar country: + :vartype country: str + :ivar region: + :vartype region: str + :ivar city: + :vartype city: str + :ivar timezone: + :vartype timezone: str + """ + + type: Required[Literal["approximate"]] + """The type of location approximation. Always ``approximate``. Required. Default value is + \"approximate\".""" + country: Optional[str] + region: Optional[str] + city: Optional[str] + timezone: Optional[str] + + +class WebSearchConfiguration(TypedDict, total=False): + """A web search configuration for bing custom search. + + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar project_connection_id: Project connection id for grounding with bing custom search. + Required. + :vartype project_connection_id: str + :ivar instance_name: Name of the custom configuration instance given to config. Required. + :vartype instance_name: str + """ + + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + project_connection_id: Required[str] + """Project connection id for grounding with bing custom search. Required.""" + instance_name: Required[str] + """Name of the custom configuration instance given to config. Required.""" + + +class WebSearchPreviewTool(TypedDict, total=False): + """Web search preview. + + :ivar type: The type of the web search tool. One of ``web_search_preview`` or + ``web_search_preview_2025_03_11``. Required. WEB_SEARCH_PREVIEW. + :vartype type: Literal["web_search_preview"] + :ivar user_location: + :vartype user_location: "ApproximateLocation" + :ivar search_context_size: High level guidance for the amount of context window space to use + for the search. One of ``low``, ``medium``, or ``high``. ``medium`` is the default. Known + values are: "low", "medium", and "high". + :vartype search_context_size: SearchContextSize + :ivar search_content_types: + :vartype search_content_types: list[SearchContentType] + """ + + type: Required[Literal["web_search_preview"]] + """The type of the web search tool. One of ``web_search_preview`` or + ``web_search_preview_2025_03_11``. Required. WEB_SEARCH_PREVIEW.""" + user_location: Optional["ApproximateLocation"] + search_context_size: SearchContextSize + """High level guidance for the amount of context window space to use for the search. One of + ``low``, ``medium``, or ``high``. ``medium`` is the default. Known values are: \"low\", + \"medium\", and \"high\".""" + search_content_types: list[SearchContentType] + + +class WebSearchTool(TypedDict, total=False): + """Web search. + + :ivar type: The type of the web search tool. One of ``web_search`` or + ``web_search_2025_08_26``. Required. WEB_SEARCH. + :vartype type: Literal["web_search"] + :ivar filters: + :vartype filters: "WebSearchToolFilters" + :ivar user_location: + :vartype user_location: "WebSearchApproximateLocation" + :ivar search_context_size: High level guidance for the amount of context window space to use + for the search. One of ``low``, ``medium``, or ``high``. ``medium`` is the default. Is one of + the following types: Literal["low"], Literal["medium"], Literal["high"] + :vartype search_context_size: Literal["low", "medium", "high"] + :ivar name: Optional user-defined name for this tool or configuration. + :vartype name: str + :ivar description: Optional user-defined description for this tool or configuration. + :vartype description: str + :ivar custom_search_configuration: The project connections attached to this tool. There can be + a maximum of 1 connection resource attached to the tool. + :vartype custom_search_configuration: "WebSearchConfiguration" + """ + + type: Required[Literal["web_search"]] + """The type of the web search tool. One of ``web_search`` or ``web_search_2025_08_26``. Required. + WEB_SEARCH.""" + filters: Optional["WebSearchToolFilters"] + user_location: Optional["WebSearchApproximateLocation"] + search_context_size: Literal["low", "medium", "high"] + """High level guidance for the amount of context window space to use for the search. One of + ``low``, ``medium``, or ``high``. ``medium`` is the default. Is one of the following types: + Literal[\"low\"], Literal[\"medium\"], Literal[\"high\"]""" + name: str + """Optional user-defined name for this tool or configuration.""" + description: str + """Optional user-defined description for this tool or configuration.""" + custom_search_configuration: "WebSearchConfiguration" + """The project connections attached to this tool. There can be a maximum of 1 connection resource + attached to the tool.""" + + +class WebSearchToolFilters(TypedDict, total=False): + """WebSearchToolFilters. + + :ivar allowed_domains: + :vartype allowed_domains: list[str] + """ + + allowed_domains: Optional[list[str]] + + +class WorkflowActionOutputItem(TypedDict, total=False): + """WorkflowActionOutputItem. + + :ivar agent_reference: The agent that created the item. + :vartype agent_reference: "AgentReference" + :ivar response_id: The response on which the item is created. + :vartype response_id: str + :ivar type: Required. WORKFLOW_ACTION. + :vartype type: Literal["workflow_action"] + :ivar kind: The kind of CSDL action (e.g., 'SetVariable', 'InvokeAzureAgent'). Required. + :vartype kind: str + :ivar action_id: Unique identifier for the action. Required. + :vartype action_id: str + :ivar parent_action_id: ID of the parent action if this is a nested action. + :vartype parent_action_id: str + :ivar previous_action_id: ID of the previous action if this action follows another. + :vartype previous_action_id: str + :ivar status: Status of the action (e.g., 'in_progress', 'completed', 'failed', 'cancelled'). + Required. Is one of the following types: Literal["completed"], Literal["failed"], + Literal["in_progress"], Literal["cancelled"] + :vartype status: Literal["completed", "failed", "in_progress", "cancelled"] + :ivar id: Required. + :vartype id: str + """ + + agent_reference: "AgentReference" + """The agent that created the item.""" + response_id: str + """The response on which the item is created.""" + type: Required[Literal["workflow_action"]] + """Required. WORKFLOW_ACTION.""" + kind: Required[str] + """The kind of CSDL action (e.g., 'SetVariable', 'InvokeAzureAgent'). Required.""" + action_id: Required[str] + """Unique identifier for the action. Required.""" + parent_action_id: str + """ID of the parent action if this is a nested action.""" + previous_action_id: str + """ID of the previous action if this action follows another.""" + status: Required[Literal["completed", "failed", "in_progress", "cancelled"]] + """Status of the action (e.g., 'in_progress', 'completed', 'failed', 'cancelled'). Required. Is + one of the following types: Literal[\"completed\"], Literal[\"failed\"], + Literal[\"in_progress\"], Literal[\"cancelled\"]""" + id: Required[str] + """Required.""" + + +class WorkIQPreviewTool(TypedDict, total=False): + """A WorkIQ server-side tool. + + :ivar type: The object type, which is always 'work_iq_preview'. Required. WORK_IQ_PREVIEW. + :vartype type: Literal["work_iq_preview"] + :ivar work_iq_preview: The WorkIQ tool parameters. Required. + :vartype work_iq_preview: "WorkIQPreviewToolParameters" + """ + + type: Required[Literal["work_iq_preview"]] + """The object type, which is always 'work_iq_preview'. Required. WORK_IQ_PREVIEW.""" + work_iq_preview: Required["WorkIQPreviewToolParameters"] + """The WorkIQ tool parameters. Required.""" + + +class WorkIQPreviewToolParameters(TypedDict, total=False): + """The WorkIQ tool parameters. + + :ivar project_connection_id: The ID of the WorkIQ project connection. Required. + :vartype project_connection_id: str + """ + + project_connection_id: Required[str] + """The ID of the WorkIQ project connection. Required.""" + + +class CompactResponseMethodPublicBody(TypedDict, total=False): + """CompactResponseMethodPublicBody. + + :ivar model: Required. Known values are: "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", + "gpt-5.4-mini-2026-03-17", "gpt-5.4-nano-2026-03-17", "gpt-5.3-chat-latest", "gpt-5.2", + "gpt-5.2-2025-12-11", "gpt-5.2-chat-latest", "gpt-5.2-pro", "gpt-5.2-pro-2025-12-11", + "gpt-5.1", "gpt-5.1-2025-11-13", "gpt-5.1-codex", "gpt-5.1-mini", "gpt-5.1-chat-latest", + "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-5-2025-08-07", "gpt-5-mini-2025-08-07", + "gpt-5-nano-2025-08-07", "gpt-5-chat-latest", "gpt-4.1", "gpt-4.1-mini", "gpt-4.1-nano", + "gpt-4.1-2025-04-14", "gpt-4.1-mini-2025-04-14", "gpt-4.1-nano-2025-04-14", "o4-mini", + "o4-mini-2025-04-16", "o3", "o3-2025-04-16", "o3-mini", "o3-mini-2025-01-31", "o1", + "o1-2024-12-17", "o1-preview", "o1-preview-2024-09-12", "o1-mini", "o1-mini-2024-09-12", + "gpt-4o", "gpt-4o-2024-11-20", "gpt-4o-2024-08-06", "gpt-4o-2024-05-13", + "gpt-4o-audio-preview", "gpt-4o-audio-preview-2024-10-01", "gpt-4o-audio-preview-2024-12-17", + "gpt-4o-audio-preview-2025-06-03", "gpt-4o-mini-audio-preview", + "gpt-4o-mini-audio-preview-2024-12-17", "gpt-4o-search-preview", "gpt-4o-mini-search-preview", + "gpt-4o-search-preview-2025-03-11", "gpt-4o-mini-search-preview-2025-03-11", + "chatgpt-4o-latest", "codex-mini-latest", "gpt-4o-mini", "gpt-4o-mini-2024-07-18", + "gpt-4-turbo", "gpt-4-turbo-2024-04-09", "gpt-4-0125-preview", "gpt-4-turbo-preview", + "gpt-4-1106-preview", "gpt-4-vision-preview", "gpt-4", "gpt-4-0314", "gpt-4-0613", "gpt-4-32k", + "gpt-4-32k-0314", "gpt-4-32k-0613", "gpt-3.5-turbo", "gpt-3.5-turbo-16k", "gpt-3.5-turbo-0301", + "gpt-3.5-turbo-0613", "gpt-3.5-turbo-1106", "gpt-3.5-turbo-0125", "gpt-3.5-turbo-16k-0613", + "o1-pro", "o1-pro-2025-03-19", "o3-pro", "o3-pro-2025-06-10", "o3-deep-research", + "o3-deep-research-2025-06-26", "o4-mini-deep-research", "o4-mini-deep-research-2025-06-26", + "computer-use-preview", "computer-use-preview-2025-03-11", "gpt-5-codex", "gpt-5-pro", + "gpt-5-pro-2025-10-06", and "gpt-5.1-codex-max". + :vartype model: ModelIdsCompaction + :ivar input: Is either a str type or a [Item] type. + :vartype input: Union[str, list["Item"]] + :ivar previous_response_id: + :vartype previous_response_id: str + :ivar instructions: + :vartype instructions: str + :ivar prompt_cache_key: + :vartype prompt_cache_key: str + :ivar prompt_cache_retention: Known values are: "in_memory" and "24h". + :vartype prompt_cache_retention: PromptCacheRetentionEnum + :ivar service_tier: Known values are: "auto", "default", "flex", and "priority". + :vartype service_tier: ServiceTierEnum + """ + + model: Required[Optional[ModelIdsCompaction]] + """Required. Known values are: \"gpt-5.4\", \"gpt-5.4-mini\", \"gpt-5.4-nano\", + \"gpt-5.4-mini-2026-03-17\", \"gpt-5.4-nano-2026-03-17\", \"gpt-5.3-chat-latest\", \"gpt-5.2\", + \"gpt-5.2-2025-12-11\", \"gpt-5.2-chat-latest\", \"gpt-5.2-pro\", \"gpt-5.2-pro-2025-12-11\", + \"gpt-5.1\", \"gpt-5.1-2025-11-13\", \"gpt-5.1-codex\", \"gpt-5.1-mini\", + \"gpt-5.1-chat-latest\", \"gpt-5\", \"gpt-5-mini\", \"gpt-5-nano\", \"gpt-5-2025-08-07\", + \"gpt-5-mini-2025-08-07\", \"gpt-5-nano-2025-08-07\", \"gpt-5-chat-latest\", \"gpt-4.1\", + \"gpt-4.1-mini\", \"gpt-4.1-nano\", \"gpt-4.1-2025-04-14\", \"gpt-4.1-mini-2025-04-14\", + \"gpt-4.1-nano-2025-04-14\", \"o4-mini\", \"o4-mini-2025-04-16\", \"o3\", \"o3-2025-04-16\", + \"o3-mini\", \"o3-mini-2025-01-31\", \"o1\", \"o1-2024-12-17\", \"o1-preview\", + \"o1-preview-2024-09-12\", \"o1-mini\", \"o1-mini-2024-09-12\", \"gpt-4o\", + \"gpt-4o-2024-11-20\", \"gpt-4o-2024-08-06\", \"gpt-4o-2024-05-13\", \"gpt-4o-audio-preview\", + \"gpt-4o-audio-preview-2024-10-01\", \"gpt-4o-audio-preview-2024-12-17\", + \"gpt-4o-audio-preview-2025-06-03\", \"gpt-4o-mini-audio-preview\", + \"gpt-4o-mini-audio-preview-2024-12-17\", \"gpt-4o-search-preview\", + \"gpt-4o-mini-search-preview\", \"gpt-4o-search-preview-2025-03-11\", + \"gpt-4o-mini-search-preview-2025-03-11\", \"chatgpt-4o-latest\", \"codex-mini-latest\", + \"gpt-4o-mini\", \"gpt-4o-mini-2024-07-18\", \"gpt-4-turbo\", \"gpt-4-turbo-2024-04-09\", + \"gpt-4-0125-preview\", \"gpt-4-turbo-preview\", \"gpt-4-1106-preview\", + \"gpt-4-vision-preview\", \"gpt-4\", \"gpt-4-0314\", \"gpt-4-0613\", \"gpt-4-32k\", + \"gpt-4-32k-0314\", \"gpt-4-32k-0613\", \"gpt-3.5-turbo\", \"gpt-3.5-turbo-16k\", + \"gpt-3.5-turbo-0301\", \"gpt-3.5-turbo-0613\", \"gpt-3.5-turbo-1106\", \"gpt-3.5-turbo-0125\", + \"gpt-3.5-turbo-16k-0613\", \"o1-pro\", \"o1-pro-2025-03-19\", \"o3-pro\", + \"o3-pro-2025-06-10\", \"o3-deep-research\", \"o3-deep-research-2025-06-26\", + \"o4-mini-deep-research\", \"o4-mini-deep-research-2025-06-26\", \"computer-use-preview\", + \"computer-use-preview-2025-03-11\", \"gpt-5-codex\", \"gpt-5-pro\", \"gpt-5-pro-2025-10-06\", + and \"gpt-5.1-codex-max\".""" + input: Optional[Union[str, list["Item"]]] + """Is either a str type or a [Item] type.""" + previous_response_id: Optional[str] + instructions: Optional[str] + prompt_cache_key: Optional[str] + prompt_cache_retention: Optional[PromptCacheRetentionEnum] + """Known values are: \"in_memory\" and \"24h\".""" + service_tier: Optional[ServiceTierEnum] + """Known values are: \"auto\", \"default\", \"flex\", and \"priority\".""" + + +Tool = Union[ + A2APreviewTool, + ApplyPatchToolParam, + AzureAISearchTool, + AzureFunctionTool, + BingCustomSearchPreviewTool, + BingGroundingTool, + BrowserAutomationPreviewTool, + CaptureStructuredOutputsTool, + CodeInterpreterTool, + ComputerTool, + ComputerUsePreviewTool, + CustomToolParam, + MicrosoftFabricPreviewTool, + FileSearchTool, + FunctionTool, + ImageGenTool, + LocalShellToolParam, + MCPTool, + MemorySearchPreviewTool, + NamespaceToolParam, + OpenApiTool, + SharepointPreviewTool, + FunctionShellToolParam, + ToolSearchToolParam, + WebSearchTool, + WebSearchPreviewTool, + WorkIQPreviewTool, +] +OutputItem = Union[ + A2AToolCall, + A2AToolCallOutput, + OutputItemAdditionalTools, + OutputItemApplyPatchToolCall, + OutputItemApplyPatchToolCallOutput, + AzureAISearchToolCall, + AzureAISearchToolCallOutput, + AzureFunctionToolCall, + AzureFunctionToolCallOutput, + BingCustomSearchToolCall, + BingCustomSearchToolCallOutput, + BingGroundingToolCall, + BingGroundingToolCallOutput, + BrowserAutomationToolCall, + BrowserAutomationToolCallOutput, + OutputItemCodeInterpreterToolCall, + OutputItemCompactionBody, + OutputItemComputerToolCall, + OutputItemComputerToolCallOutput, + CustomToolCallResource, + CustomToolCallOutputResource, + FabricDataAgentToolCall, + FabricDataAgentToolCallOutput, + OutputItemFileSearchToolCall, + OutputItemFunctionToolCall, + OutputItemFunctionToolCallOutput, + OutputItemImageGenToolCall, + OutputItemLocalShellToolCall, + OutputItemLocalShellToolCallOutput, + OutputItemMcpApprovalRequest, + OutputItemMcpApprovalResponseResource, + OutputItemMcpToolCall, + OutputItemMcpListTools, + MemorySearchToolCallItemResource, + OutputItemMessage, + OAuthConsentRequestOutputItem, + OpenApiToolCall, + OpenApiToolCallOutput, + OutputItemOutputMessage, + OutputItemReasoningItem, + SharepointGroundingToolCall, + SharepointGroundingToolCallOutput, + OutputItemFunctionShellCall, + OutputItemFunctionShellCallOutput, + StructuredOutputsOutputItem, + OutputItemToolSearchCall, + OutputItemToolSearchOutput, + OutputItemWebSearchToolCall, + WorkflowActionOutputItem, +] +Item = Union[ + AdditionalToolsItemParam, + ApplyPatchToolCallItemParam, + ApplyPatchToolCallOutputItemParam, + ItemCodeInterpreterToolCall, + CompactionSummaryItemParam, + ItemComputerToolCall, + ComputerCallOutputItemParam, + ItemCustomToolCall, + ItemCustomToolCallOutput, + ItemFileSearchToolCall, + ItemFunctionToolCall, + FunctionCallOutputItemParam, + ItemImageGenToolCall, + ItemReferenceParam, + ItemLocalShellToolCall, + ItemLocalShellToolCallOutput, + ItemMcpApprovalRequest, + MCPApprovalResponse, + ItemMcpToolCall, + ItemMcpListTools, + MemorySearchToolCallItemParam, + ItemMessage, + ItemOutputMessage, + ItemReasoningItem, + FunctionShellCallItemParam, + FunctionShellCallOutputItemParam, + ToolSearchCallItemParam, + ToolSearchOutputItemParam, + ItemWebSearchToolCall, +] +Annotation = Union[ContainerFileCitationBody, FileCitationBody, FilePath, UrlCitationBody] +ApplyPatchFileOperation = Union[ + ApplyPatchCreateFileOperation, ApplyPatchDeleteFileOperation, ApplyPatchUpdateFileOperation +] +ApplyPatchOperationParam = Union[ + ApplyPatchCreateFileOperationParam, ApplyPatchDeleteFileOperationParam, ApplyPatchUpdateFileOperationParam +] +MemoryItem = Union[ChatSummaryMemoryItem, UserProfileMemoryItem] +ComputerAction = Union[ + ClickParam, + DoubleClickAction, + DragParam, + KeyPressAction, + MoveParam, + ScreenshotParam, + ScrollParam, + TypeParam, + WaitParam, +] +MessageContent = Union[ + ComputerScreenshotContent, + MessageContentInputFileContent, + MessageContentInputImageContent, + MessageContentInputTextContent, + MessageContentOutputTextContent, + MessageContentReasoningTextContent, + MessageContentRefusalContent, + SummaryTextContent, + TextContent, +] +FunctionShellToolParamEnvironment = Union[ + ContainerAutoParam, + FunctionShellToolParamEnvironmentContainerReferenceParam, + FunctionShellToolParamEnvironmentLocalEnvironmentParam, +] +ContainerNetworkPolicyParam = Union[ContainerNetworkPolicyAllowlistParam, ContainerNetworkPolicyDisabledParam] +FunctionShellCallEnvironment = Union[ContainerReferenceResource, LocalEnvironmentResource] +ContainerSkill = Union[InlineSkillParam, SkillReferenceParam] +CustomToolParamFormat = Union[CustomGrammarFormatParam, CustomTextFormatParam] +FunctionAndCustomToolCallOutput = Union[ + FunctionAndCustomToolCallOutputInputFileContent, + FunctionAndCustomToolCallOutputInputImageContent, + FunctionAndCustomToolCallOutputInputTextContent, +] +FunctionShellCallItemParamEnvironment = Union[ + FunctionShellCallItemParamEnvironmentContainerReferenceParam, + FunctionShellCallItemParamEnvironmentLocalEnvironmentParam, +] +FunctionShellCallOutputOutcome = Union[FunctionShellCallOutputExitOutcome, FunctionShellCallOutputTimeoutOutcome] +FunctionShellCallOutputOutcomeParam = Union[ + FunctionShellCallOutputExitOutcomeParam, FunctionShellCallOutputTimeoutOutcomeParam +] +ItemField = Union[ + ItemFieldAdditionalTools, + ItemFieldApplyPatchToolCall, + ItemFieldApplyPatchToolCallOutput, + ItemFieldCodeInterpreterToolCall, + ItemFieldCompactionBody, + ItemFieldComputerToolCall, + ItemFieldComputerToolCallOutput, + ItemFieldCustomToolCall, + ItemFieldCustomToolCallOutput, + ItemFieldFileSearchToolCall, + ItemFieldFunctionToolCall, + ItemFieldFunctionToolCallOutput, + ItemFieldImageGenToolCall, + ItemFieldLocalShellToolCall, + ItemFieldLocalShellToolCallOutput, + ItemFieldMcpApprovalRequest, + ItemFieldMcpApprovalResponseResource, + ItemFieldMcpToolCall, + ItemFieldMcpListTools, + ItemFieldMessage, + ItemFieldReasoningItem, + ItemFieldFunctionShellCall, + ItemFieldFunctionShellCallOutput, + ItemFieldToolSearchCall, + ItemFieldToolSearchOutput, + ItemFieldWebSearchToolCall, +] +ModerationEntry = Union[ModerationErrorBody, ModerationResultBody] +OpenApiAuthDetails = Union[OpenApiAnonymousAuthDetails, OpenApiManagedAuthDetails, OpenApiProjectConnectionAuthDetails] +OutputContent = Union[OutputContentOutputTextContent, OutputContentReasoningTextContent, OutputContentRefusalContent] +OutputMessageContent = Union[OutputMessageContentOutputTextContent, OutputMessageContentRefusalContent] +RealtimeMCPError = Union[RealtimeMCPHTTPError, RealtimeMCPProtocolError, RealtimeMCPToolExecutionError] +ResponseStreamEvent = Union[ + ResponseErrorEvent, + ResponseAudioDeltaEvent, + ResponseAudioDoneEvent, + ResponseAudioTranscriptDeltaEvent, + ResponseAudioTranscriptDoneEvent, + ResponseCodeInterpreterCallCompletedEvent, + ResponseCodeInterpreterCallInProgressEvent, + ResponseCodeInterpreterCallInterpretingEvent, + ResponseCodeInterpreterCallCodeDeltaEvent, + ResponseCodeInterpreterCallCodeDoneEvent, + ResponseCompletedEvent, + ResponseContentPartAddedEvent, + ResponseContentPartDoneEvent, + ResponseCreatedEvent, + ResponseCustomToolCallInputDeltaEvent, + ResponseCustomToolCallInputDoneEvent, + ResponseFailedEvent, + ResponseFileSearchCallCompletedEvent, + ResponseFileSearchCallInProgressEvent, + ResponseFileSearchCallSearchingEvent, + ResponseFunctionCallArgumentsDeltaEvent, + ResponseFunctionCallArgumentsDoneEvent, + ResponseImageGenCallCompletedEvent, + ResponseImageGenCallGeneratingEvent, + ResponseImageGenCallInProgressEvent, + ResponseImageGenCallPartialImageEvent, + ResponseInProgressEvent, + ResponseIncompleteEvent, + ResponseMCPCallCompletedEvent, + ResponseMCPCallFailedEvent, + ResponseMCPCallInProgressEvent, + ResponseMCPCallArgumentsDeltaEvent, + ResponseMCPCallArgumentsDoneEvent, + ResponseMCPListToolsCompletedEvent, + ResponseMCPListToolsFailedEvent, + ResponseMCPListToolsInProgressEvent, + ResponseOutputItemAddedEvent, + ResponseOutputItemDoneEvent, + ResponseOutputTextAnnotationAddedEvent, + ResponseTextDeltaEvent, + ResponseTextDoneEvent, + ResponseQueuedEvent, + ResponseReasoningSummaryPartAddedEvent, + ResponseReasoningSummaryPartDoneEvent, + ResponseReasoningSummaryTextDeltaEvent, + ResponseReasoningSummaryTextDoneEvent, + ResponseReasoningTextDeltaEvent, + ResponseReasoningTextDoneEvent, + ResponseRefusalDeltaEvent, + ResponseRefusalDoneEvent, + ResponseWebSearchCallCompletedEvent, + ResponseWebSearchCallInProgressEvent, + ResponseWebSearchCallSearchingEvent, +] +ToolChoiceParam = Union[ + ToolChoiceAllowed, + SpecificApplyPatchParam, + ToolChoiceCodeInterpreter, + ToolChoiceComputer, + ToolChoiceComputerUse, + ToolChoiceComputerUsePreview, + ToolChoiceCustom, + ToolChoiceFileSearch, + ToolChoiceFunction, + ToolChoiceImageGeneration, + ToolChoiceMCP, + SpecificFunctionShellParam, + ToolChoiceWebSearchPreview, + ToolChoiceWebSearchPreview20250311, +] +TextResponseFormatConfiguration = Union[ + TextResponseFormatConfigurationResponseFormatJsonObject, + TextResponseFormatJsonSchema, + TextResponseFormatConfigurationResponseFormatText, +] diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_helpers.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_helpers.py index a09c06d47db3..7dd96d0a8132 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_helpers.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_helpers.py @@ -4,63 +4,60 @@ from __future__ import annotations -from typing import Any, Literal, Optional, cast +from typing import Any, Optional, cast -from ._generated import ( +from azure.ai.agentserver.responses.models._wire import get_field as _get_field +from azure.ai.agentserver.responses.models._wire import is_type as _is_wire_type +from azure.ai.agentserver.responses.models._wire import set_field as _set_field +from azure.ai.agentserver.responses.models import ( ConversationParam_2, CreateResponse, Item, ItemMessage, + ItemReferenceParam, MessageContent, MessageContentInputTextContent, MessageRole, OutputItem, ResponseObject, - ToolChoiceAllowed, - ToolChoiceOptions, ToolChoiceParam, ) -from ._generated.sdk.models._utils.model_base import _deserialize - -# --------------------------------------------------------------------------- -# Internal utilities for dict-safe field access -# --------------------------------------------------------------------------- -def _get_field(obj: Any, field: str, default: Any = None) -> Any: - """Get *field* from a model instance or a plain dict. - - :param obj: The model instance or dict to read from. - :type obj: Any - :param field: The field name to retrieve. - :type field: str - :param default: The default value if the field is missing. - :type default: Any - :returns: The field value, or *default*. - :rtype: Any - """ - if isinstance(obj, dict): - return obj.get(field, default) - return getattr(obj, field, default) - - -def _is_type(obj: Any, model_cls: type, type_value: str) -> bool: - """Check whether *obj* is *model_cls* or a dict with matching ``type``. +def _is_type(obj: Any, _model_cls: type, type_value: str) -> bool: + """Check whether *obj* has a matching wire ``type`` discriminator. :param obj: The object to check. :type obj: Any - :param model_cls: The model class to check against. + :param model_cls: Retained for call-site readability; ignored at runtime. :type model_cls: type :param type_value: The string type discriminator to match in dicts. :type type_value: str - :returns: True if *obj* matches the model class or type value. + :returns: True if *obj* matches the wire type value. :rtype: bool """ - if isinstance(obj, model_cls): - return True - if isinstance(obj, dict): - return obj.get("type") == type_value - return False + return _is_wire_type(obj, type_value) + + +def is_item_reference(item: Any) -> bool: + """Return whether *item* is an item reference payload. + + Item references are identified by OpenAI's typed ``item_reference`` shape, + or by the legacy id-only shorthand. + """ + if not isinstance(item, dict): + return False + if item.get("type") == "item_reference": + return "id" in item + return "id" in item and "type" not in item and "role" not in item and "content" not in item + + +def _ensure_item_type(data: dict[str, Any]) -> dict[str, Any]: + if "type" in data or is_item_reference(data): + return data + if "role" in data or "content" in data: + return {**data, "type": "message"} + return data # --------------------------------------------------------------------------- @@ -79,7 +76,7 @@ def get_conversation_id(request: CreateResponse | ResponseObject) -> Optional[st :returns: The conversation ID, or ``None`` if no conversation is set. :rtype: str | None """ - conv = request.conversation + conv = _get_field(request, "conversation") if conv is None: return None if isinstance(conv, str): @@ -103,33 +100,31 @@ def get_input_expanded(request: CreateResponse) -> list[Item]: :returns: A list of typed input items. :rtype: list[Item] """ - inp = request.input + inp = _get_field(request, "input") if inp is None: return [] if isinstance(inp, str): return [ - ItemMessage( - role=MessageRole.USER, - content=[MessageContentInputTextContent(text=inp)], - ) + { + "type": "message", + "role": MessageRole.USER, + "content": [{"type": "input_text", "text": inp}], + } ] # Normalize items: per the OpenAI spec, items without an explicit # ``type`` default to ``"message"`` (C-MSG-01 compliance). items: list[Item] = [] for raw in inp: - d = dict(raw) if isinstance(raw, dict) else raw - if isinstance(d, dict) and "type" not in d: - d = {**d, "type": "message"} - if isinstance(d, Item): - items.append(d) - else: - items.append(_deserialize(Item, d)) + item = raw + if isinstance(item, dict): + item = _ensure_item_type(item) + items.append(item) # Auto-expand string content on message items so downstream consumers # always see list[MessageContent] (matches .NET ExpandContent behaviour). for item in items: - if isinstance(item, ItemMessage) and isinstance(item.content, str): - item.content = get_content_expanded(item) + if _is_type(item, ItemMessage, "message") and isinstance(_get_field(item, "content"), str): + _set_field(item, "content", get_content_expanded(item)) return items @@ -169,23 +164,20 @@ def get_tool_choice_expanded(request: CreateResponse) -> Optional[ToolChoicePara :rtype: ToolChoiceParam | None :raises ValueError: If the tool_choice value is an unrecognized string. """ - tc = request.tool_choice + tc = _get_field(request, "tool_choice") if tc is None: return None - if isinstance(tc, ToolChoiceParam): + if isinstance(tc, dict) and "type" in tc: return tc if isinstance(tc, str): - normalized = tc if not isinstance(tc, ToolChoiceOptions) else tc.value + normalized = getattr(tc, "value", tc) if normalized in ("auto", "required"): - return ToolChoiceAllowed(mode=cast(Literal["auto", "required"], normalized), tools=[]) + return cast(ToolChoiceParam, {"type": "allowed_tools", "mode": normalized, "tools": []}) if normalized == "none": return None raise ValueError( f"Unrecognized tool_choice string value: '{normalized}'. Expected 'auto', 'required', or 'none'." ) - # dict fallback — wrap in ToolChoiceParam if it has a "type" key - if isinstance(tc, dict) and "type" in tc: - return ToolChoiceParam(tc) return None @@ -199,17 +191,13 @@ def get_conversation_expanded(request: CreateResponse) -> Optional[ConversationP :returns: The typed conversation parameter, or ``None``. :rtype: ConversationParam_2 | None """ - conv = request.conversation + conv = _get_field(request, "conversation") if conv is None: return None - if isinstance(conv, ConversationParam_2): + if isinstance(conv, dict) and conv.get("id"): return conv if isinstance(conv, str): - return ConversationParam_2(id=conv) if conv else None - # dict fallback - if isinstance(conv, dict): - cid = conv.get("id") - return ConversationParam_2(id=cid) if cid else None + return cast(ConversationParam_2, {"id": conv}) if conv else None return None @@ -231,19 +219,18 @@ def get_instruction_items(response: ResponseObject) -> list[Item]: :returns: A list of instruction items. :rtype: list[Item] """ - instr = response.instructions + instr = _get_field(response, "instructions") if instr is None: return [] if isinstance(instr, str): return [ - ItemMessage( - { - "id": "", - "status": "completed", - "role": MessageRole.DEVELOPER.value, - "content": [{"type": "input_text", "text": instr}], - } - ) + { + "id": "", + "status": "completed", + "type": "message", + "role": MessageRole.DEVELOPER.value, + "content": [{"type": "input_text", "text": instr}], + } ] return list(instr) @@ -256,9 +243,7 @@ def get_instruction_items(response: ResponseObject) -> list[Item]: def get_output_item_id(item: OutputItem) -> str: """Extract the ``id`` field from any :class:`OutputItem` subtype. - The base :class:`OutputItem` class does not define ``id``, but all - concrete subtypes do. Falls back to dict-style access for unknown - subtypes. + All concrete output item wire payloads must include an ``id`` field. :param item: The output item to extract the ID from. :type item: OutputItem @@ -270,14 +255,6 @@ def get_output_item_id(item: OutputItem) -> str: if item_id is not None: return str(item_id) - # Fallback: Model subclass supports Mapping protocol - try: - raw_id = item["id"] # type: ignore[index] - if raw_id is not None: - return str(raw_id) - except (KeyError, TypeError): - pass - raise ValueError( f"OutputItem of type '{type(item).__name__}' does not have a valid id. " "Ensure the id property is set before accessing it." @@ -306,7 +283,7 @@ def get_content_expanded(message: ItemMessage) -> list[MessageContent]: if content is None: return [] if isinstance(content, str): - return [MessageContentInputTextContent(text=content)] if content else [] + return cast(list[MessageContent], [{"type": "input_text", "text": content}]) if content else [] return list(content) @@ -366,11 +343,8 @@ def to_output_item(item: Item, response_id: str | None = None) -> OutputItem | N Returns ``None`` for :class:`ItemReferenceParam` or unrecognised types. - The conversion leverages ``_deserialize(OutputItem, data)`` which - resolves the correct subtype via the ``type`` discriminator. All 24 - input/output discriminator pairs share the same string values, so the - dict representation produced by ``dict(item)`` is directly compatible - with ``OutputItem`` deserialization. + The input/output discriminator pairs share the same string values, so the + item wire payload is directly compatible with the output item wire contract. :param item: The input item to convert. :type item: Item @@ -387,7 +361,7 @@ def to_output_item(item: Item, response_id: str | None = None) -> OutputItem | N if item_id is None: return None # ItemReferenceParam or unrecognised - data = dict(item) + data = _ensure_item_type(item.copy()) data["id"] = item_id item_type = data.get("type", "") @@ -398,16 +372,15 @@ def to_output_item(item: Item, response_id: str | None = None) -> OutputItem | N elif item_type in _PRESERVE_STATUS_ITEM_TYPES: pass # keep the original status from the input item - return _deserialize(OutputItem, data) + return cast(OutputItem, data) def to_item(output_item: OutputItem) -> Item | None: """Convert an :class:`OutputItem` back to the corresponding :class:`Item`. - Both hierarchies share the same ``type`` discriminator values, so - serialising an :class:`OutputItem` to a dict and deserializing as - :class:`Item` produces the correct concrete subtype (e.g. - :class:`OutputItemMessage` → :class:`ItemMessage`). + Both hierarchies share the same ``type`` discriminator values, so the + output item's wire dict is directly compatible with the input item contract + (e.g. ``OutputItemMessage`` → ``ItemMessage``). Returns ``None`` if the output item type has no :class:`Item` counterpart. @@ -416,8 +389,11 @@ def to_item(output_item: OutputItem) -> Item | None: :returns: The corresponding input item, or ``None``. :rtype: Item | None """ - try: - data = dict(output_item) - return _deserialize(Item, data) - except Exception: # pylint: disable=broad-except + if not isinstance(output_item, dict): + return None + if output_item.get("type") == "output_message": + return cast(Item, {**output_item, "type": "message"}) + item = _ensure_item_type(output_item.copy()) + if "type" not in item: return None + return cast(Item, item) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_validators.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_validators.py new file mode 100644 index 000000000000..a60f10f75ea9 --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_validators.py @@ -0,0 +1,14 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. +"""Validation entry points for response wire payloads.""" + +from __future__ import annotations + +from typing import Any, Mapping + +from ._generated._validators import validate_CreateResponse + + +def validate_create_response_payload(payload: Mapping[str, Any]) -> list[dict[str, str]]: + """Validate a create response request payload against the generated wire schema.""" + return validate_CreateResponse(payload) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_wire.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_wire.py new file mode 100644 index 000000000000..fd1a57b71fa0 --- /dev/null +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/_wire.py @@ -0,0 +1,40 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. +"""Helpers for local dict/TypedDict wire payloads.""" + +from __future__ import annotations + +from collections.abc import Mapping +from datetime import datetime +from typing import Any + + +def get_field(payload: Any, field: str, default: Any = None) -> Any: + """Return a field from a mapping-like wire payload.""" + if isinstance(payload, Mapping): + return payload.get(field, default) + return default + + +def set_field(payload: Any, field: str, value: Any) -> None: + """Set a field on a mutable wire payload.""" + if isinstance(payload, dict): + payload[field] = value + + +def is_type(payload: Any, type_value: str) -> bool: + """Return whether a wire payload has the requested discriminator value.""" + return get_field(payload, "type") == type_value + + +def to_wire_dict(value: Any) -> Any: + """Convert JSON-compatible mappings/sequences into plain wire payloads.""" + if value is None or isinstance(value, (str, int, float, bool)): + return value + if isinstance(value, datetime): + return int(value.timestamp()) + if isinstance(value, Mapping): + return {str(k): to_wire_dict(v) for k, v in value.items()} + if isinstance(value, (list, tuple)): + return [to_wire_dict(item) for item in value] + raise TypeError(f"Expected JSON-compatible wire payload, got {type(value).__name__}") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/errors.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/errors.py index 31280a457768..817769de6cce 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/errors.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/errors.py @@ -4,9 +4,9 @@ from __future__ import annotations -from typing import Any +from typing import Any, cast -from azure.ai.agentserver.responses.models._generated import ApiErrorResponse, Error +from azure.ai.agentserver.responses.models import ApiErrorResponse, Error class RequestValidationError(ValueError): @@ -31,34 +31,44 @@ def __init__( self.details = details def to_error(self) -> Error: - """Convert this validation error to the generated ``Error`` model. + """Convert this validation error to an error wire payload. - :returns: An ``Error`` instance populated from this validation error's fields. + :returns: An error payload populated from this validation error's fields. :rtype: Error """ detail_errors: list[Error] | None = None if self.details: detail_errors = [ - Error( - code=d.get("code", "invalid_value"), - message=d.get("message", ""), - param=d.get("param"), - type="invalid_request_error", + cast( + Error, + { + "code": d.get("code", "invalid_value"), + "message": d.get("message", ""), + "param": d.get("param"), + "type": "invalid_request_error", + } ) for d in self.details ] - return Error( - code=self.code, - message=self.message, - param=self.param, - type=self.error_type, - details=detail_errors, + error = cast( + Error, + { + "code": self.code, + "message": self.message, + "param": self.param, + "type": self.error_type, + } ) + if detail_errors is not None: + error["details"] = detail_errors + if self.debug_info is not None: + error["debug_info"] = self.debug_info + return error def to_api_error_response(self) -> ApiErrorResponse: - """Convert this validation error to the generated API error envelope. + """Convert this validation error to the API error envelope. - :returns: An ``ApiErrorResponse`` wrapping the generated ``Error``. + :returns: An ``ApiErrorResponse`` wrapping the error payload. :rtype: ApiErrorResponse """ - return ApiErrorResponse(error=self.to_error()) + return cast(ApiErrorResponse, {"error": self.to_error()}) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/runtime.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/runtime.py index b5fe56b32387..6cb8aef19a08 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/runtime.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/models/runtime.py @@ -9,7 +9,7 @@ from datetime import datetime, timezone from typing import TYPE_CHECKING, Any, Literal, Mapping, cast -from ._generated import AgentReference, OutputItem, ResponseObject, ResponseStreamEvent, ResponseStreamEventType +from azure.ai.agentserver.responses.models import AgentReference, OutputItem, ResponseStreamEvent, ResponseStreamEventType if TYPE_CHECKING: from .._response_context import ResponseContext @@ -58,17 +58,17 @@ def terminal(self) -> bool: } @classmethod - def from_generated(cls, event: ResponseStreamEvent, payload: Mapping[str, Any]) -> "StreamEventRecord": - """Create a stream event record from a generated response stream event model. + def from_event(cls, event: ResponseStreamEvent, payload: Mapping[str, Any]) -> "StreamEventRecord": + """Create a stream event record from a response stream wire payload. - :param event: The generated response stream event. + :param event: The response stream event payload. :type event: ResponseStreamEvent :param payload: The event payload mapping. :type payload: Mapping[str, Any] :returns: A new stream event record. :rtype: StreamEventRecord """ - return cls(sequence_number=event.sequence_number, event_type=event.type, payload=payload) + return cls(sequence_number=event["sequence_number"], event_type=event["type"], payload=payload) class ResponseExecution: # pylint: disable=too-many-instance-attributes @@ -87,7 +87,7 @@ def __init__( updated_at: datetime | None = None, completed_at: datetime | None = None, status: ResponseStatus = "in_progress", - response: ResponseObject | None = None, + response: dict[str, Any] | None = None, execution_task: asyncio.Task[Any] | None = None, cancel_requested: bool = False, client_disconnected: bool = False, @@ -170,7 +170,7 @@ def is_terminal(self) -> bool: """ return self.status in {"completed", "failed", "cancelled", "incomplete"} - def set_response_snapshot(self, response: ResponseObject) -> None: + def set_response_snapshot(self, response: dict[str, Any]) -> None: """Replace the current response snapshot from handler-emitted events. :param response: The latest response snapshot to store. @@ -211,7 +211,7 @@ def apply_event(self, normalized: ResponseStreamEvent, all_events: list[Response Does nothing if the execution is already ``"cancelled"``. - :param normalized: The normalised event (``ResponseStreamEvent`` model instance). + :param normalized: The normalised event wire payload. :type normalized: ResponseStreamEvent :param all_events: The full ordered list of handler events seen so far (used to extract the latest response snapshot). @@ -237,27 +237,25 @@ def apply_event(self, normalized: ResponseStreamEvent, all_events: list[Response agent_reference=agent_reference, model=model, ) - self.set_response_snapshot(ResponseObject(snapshot)) + self.set_response_snapshot(snapshot) resolved = snapshot.get("status") if isinstance(resolved, str): self.status = cast(ResponseStatus, resolved) elif event_type == ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value: item = normalized.get("item") if item is not None and self.response is not None: - item_dict = item.as_dict() if hasattr(item, "as_dict") else item - if isinstance(item_dict, dict): + if isinstance(item, dict): output = self.response.setdefault("output", []) if isinstance(output, list): - output.append(deepcopy(item_dict)) + output.append(deepcopy(item)) elif event_type == ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value: item = normalized.get("item") output_index = normalized.get("output_index") if item is not None and isinstance(output_index, int) and self.response is not None: - item_dict = item.as_dict() if hasattr(item, "as_dict") else item - if isinstance(item_dict, dict): + if isinstance(item, dict): output = self.response.get("output", []) if isinstance(output, list) and 0 <= output_index < len(output): - output[output_index] = deepcopy(item_dict) + output[output_index] = deepcopy(item) @property def agent_reference(self) -> AgentReference | dict[str, Any]: @@ -325,7 +323,7 @@ def build_cancelled_response( agent_reference: AgentReference | dict[str, Any], model: str | None, created_at: datetime | None = None, -) -> ResponseObject: +) -> dict[str, Any]: """Build a Response object representing a cancelled terminal state. :param response_id: The response identifier. @@ -336,8 +334,8 @@ def build_cancelled_response( :type model: str | None :param created_at: Optional creation timestamp; defaults to now if omitted. :type created_at: datetime | None - :returns: A Response object with status ``"cancelled"`` and empty output. - :rtype: ResponseObject + :returns: A response wire payload with status ``"cancelled"`` and empty output. + :rtype: dict[str, Any] """ payload: dict[str, Any] = { "id": response_id, @@ -349,8 +347,8 @@ def build_cancelled_response( "output": [], } if created_at is not None: - payload["created_at"] = created_at.isoformat() - return ResponseObject(payload) + payload["created_at"] = int(created_at.timestamp()) + return payload def build_failed_response( @@ -360,8 +358,8 @@ def build_failed_response( created_at: datetime | None = None, error_message: str = "An internal server error occurred.", error_code: str = "server_error", -) -> ResponseObject: - """Build a ResponseObject representing a failed terminal state. +) -> dict[str, Any]: + """Build a response wire payload representing a failed terminal state. :param response_id: The response identifier. :type response_id: str @@ -375,8 +373,8 @@ def build_failed_response( :type error_message: str :param error_code: Error code string (e.g. ``"server_error"`` or ``"storage_error"``). :type error_code: str - :returns: A Response object with status ``"failed"`` and empty output. - :rtype: ResponseObject + :returns: A response wire payload with status ``"failed"`` and empty output. + :rtype: dict[str, Any] """ payload: dict[str, Any] = { "id": response_id, @@ -389,5 +387,5 @@ def build_failed_response( "error": {"code": error_code, "message": error_message}, } if created_at is not None: - payload["created_at"] = created_at.isoformat() - return ResponseObject(payload) + payload["created_at"] = int(created_at.timestamp()) + return payload diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_base.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_base.py index 92da541e2ea8..641318b946be 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_base.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_base.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Iterable, Protocol, runtime_checkable -from ..models._generated import OutputItem, ResponseObject, ResponseStreamEvent +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject, ResponseStreamEvent if TYPE_CHECKING: from .._response_context import PlatformContext @@ -35,7 +35,7 @@ async def create_response( """Persist a new response envelope and optional input/history references. :param response: The response envelope to persist. - :type response: ~azure.ai.agentserver.responses.models._generated.ResponseObject + :type response: ~azure.ai.agentserver.responses.models.ResponseObject :param input_items: Optional resolved output items to associate with the response. :type input_items: Iterable[OutputItem] | None :param history_item_ids: Optional history item IDs to link to the response. @@ -53,7 +53,7 @@ async def get_response(self, response_id: str, *, context: PlatformContext | Non :keyword context: Platform context for multi-tenant partitioning. :paramtype context: ~azure.ai.agentserver.responses.PlatformContext | None :returns: The response envelope matching the given ID. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseObject + :rtype: ~azure.ai.agentserver.responses.models.ResponseObject :raises KeyError: If the response does not exist. """ ... @@ -62,7 +62,7 @@ async def update_response(self, response: ResponseObject, *, context: PlatformCo """Persist an updated response envelope. :param response: The response envelope with updated fields to persist. - :type response: ~azure.ai.agentserver.responses.models._generated.ResponseObject + :type response: ~azure.ai.agentserver.responses.models.ResponseObject :keyword context: Platform context for multi-tenant partitioning. :paramtype context: ~azure.ai.agentserver.responses.PlatformContext | None :rtype: None @@ -165,7 +165,7 @@ async def save_stream_events( """Persist the complete ordered list of SSE events for a response. Called once when the background+stream response reaches terminal state. - The *events* list contains ``ResponseStreamEvent`` model instances. + The *events* list contains ``ResponseStreamEvent`` wire payloads. :param response_id: The unique identifier of the response. :type response_id: str diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_provider.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_provider.py index 5ef23ccc9630..329f2dc7a699 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_provider.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_provider.py @@ -14,9 +14,9 @@ from azure.core.pipeline import PipelineRequest, policies from azure.core.pipeline.policies import SansIOHTTPPolicy from azure.core.rest import HttpRequest +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject from .._version import VERSION -from ..models._generated import OutputItem, ResponseObject # type: ignore[attr-defined] from ._foundry_errors import raise_for_storage_error from ._foundry_logging_policy import FoundryStorageLoggingPolicy from ._foundry_serializer import ( diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_serializer.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_serializer.py index e3aa4a381169..d34f0e696ad1 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_serializer.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_foundry_serializer.py @@ -7,7 +7,12 @@ import json from typing import Any, Iterable -from ..models._generated import OutputItem, ResponseObject # type: ignore[attr-defined] +from azure.ai.agentserver.responses.models._wire import to_wire_dict +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject + + +def _to_dict(value: Any) -> dict[str, Any]: + return to_wire_dict(value) def serialize_create_request( @@ -27,22 +32,22 @@ def serialize_create_request( :rtype: bytes """ payload: dict[str, Any] = { - "response": response.as_dict(), - "input_items": [item.as_dict() for item in (input_items or [])], + "response": _to_dict(response), + "input_items": [_to_dict(item) for item in (input_items or [])], "history_item_ids": list(history_item_ids or []), } return json.dumps(payload).encode("utf-8") def serialize_response(response: ResponseObject) -> bytes: - """Serialize a single :class:`ResponseObject` snapshot to JSON bytes. + """Serialize a single :class:`ResponseObject` wire snapshot to JSON bytes. :param response: The response model to encode. :type response: ResponseObject :returns: UTF-8 encoded JSON body. :rtype: bytes """ - return json.dumps(response.as_dict()).encode("utf-8") + return json.dumps(_to_dict(response)).encode("utf-8") def serialize_batch_request(item_ids: list[str]) -> bytes: @@ -57,21 +62,20 @@ def serialize_batch_request(item_ids: list[str]) -> bytes: def deserialize_response(body: str) -> ResponseObject: - """Deserialize a JSON response body into a :class:`ResponseObject` model. + """Deserialize a JSON response body into a response wire payload. :param body: The raw JSON response text from the storage API. :type body: str - :returns: A populated :class:`ResponseObject` model. + :returns: A response wire payload. :rtype: ResponseObject """ - return ResponseObject(json.loads(body)) # type: ignore[call-arg] + return json.loads(body) def deserialize_paged_items(body: str) -> list[OutputItem]: """Deserialize a paged-response JSON body, extracting the ``data`` array. - The discriminator field ``type`` on each item determines the concrete - :class:`OutputItem` subclass returned. + Items are returned as dict-native ``OutputItem`` wire payloads. :param body: The raw JSON response text from the storage API. :type body: str @@ -79,7 +83,7 @@ def deserialize_paged_items(body: str) -> list[OutputItem]: :rtype: list[OutputItem] """ data = json.loads(body) - return [OutputItem._deserialize(item, []) for item in data.get("data", [])] # type: ignore[attr-defined] # pylint: disable=protected-access + return list(data.get("data", [])) def deserialize_items_array(body: str) -> list[OutputItem | None]: @@ -99,7 +103,7 @@ def deserialize_items_array(body: str) -> list[OutputItem | None]: if item is None: result.append(None) else: - result.append(OutputItem._deserialize(item, [])) # type: ignore[attr-defined] # pylint: disable=protected-access + result.append(item) # type: ignore[arg-type] return result diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py index 8e8969922d6f..47dbfa3f0c1e 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/store/_memory.py @@ -9,10 +9,12 @@ from collections import defaultdict from copy import deepcopy from datetime import datetime, timedelta, timezone -from typing import Any, AsyncIterator, Dict, Iterable +from typing import Any, AsyncIterator, Dict, Iterable, cast + +from azure.ai.agentserver.responses.models._wire import get_field, to_wire_dict +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject, ResponseStreamEvent from .._response_context import PlatformContext -from ..models._generated import OutputItem, ResponseObject, ResponseStreamEvent from ..models._helpers import get_conversation_id from ..models.runtime import ResponseExecution, ResponseModeFlags, ResponseStatus, StreamEventRecord, StreamReplayState from ._base import ResponseProviderProtocol, ResponseStreamProviderProtocol @@ -84,7 +86,7 @@ async def create_response( and tracks conversation membership for history resolution. :param response: The response envelope to persist. - :type response: ~azure.ai.agentserver.responses.models._generated.Response + :type response: ~azure.ai.agentserver.responses.models.Response :param input_items: Optional resolved output items to associate with the response. :type input_items: Iterable[OutputItem] | None :param history_item_ids: Optional history item IDs to link to the response. @@ -94,7 +96,8 @@ async def create_response( :rtype: None :raises ValueError: If a non-deleted response with the same ID already exists. """ - response_id = str(getattr(response, "id")) + response_payload = to_wire_dict(response) + response_id = str(response_payload["id"]) async with self._locked(): entry = self._entries.get(response_id) if entry is not None and not entry.deleted: @@ -110,21 +113,21 @@ async def create_response( input_ids.append(item_id) history_ids = list(history_item_ids) if history_item_ids is not None else [] - output_ids = self._store_output_items_unlocked(response) + output_ids = self._store_output_items_unlocked(response_payload) self._entries[response_id] = _StoreEntry( execution=ResponseExecution( response_id=response_id, - mode_flags=self._resolve_mode_flags_from_response(response), + mode_flags=self._resolve_mode_flags_from_response(response_payload), ), replay=StreamReplayState(response_id=response_id), - response=deepcopy(response), + response=deepcopy(response_payload), input_item_ids=input_ids, output_item_ids=output_ids, history_item_ids=history_ids, deleted=False, ) - conversation_id = get_conversation_id(response) + conversation_id = get_conversation_id(response_payload) if conversation_id is not None: self._conversation_responses[conversation_id].append(response_id) @@ -136,7 +139,7 @@ async def get_response(self, response_id: str, *, context: PlatformContext | Non :keyword context: Platform context for multi-tenant partitioning. :paramtype context: ~azure.ai.agentserver.responses.PlatformContext | None :returns: A deep copy of the stored response envelope. - :rtype: ~azure.ai.agentserver.responses.models._generated.Response + :rtype: ~azure.ai.agentserver.responses.models.Response :raises KeyError: If the response does not exist or has been deleted. """ async with self._locked(): @@ -152,21 +155,22 @@ async def update_response(self, response: ResponseObject, *, context: PlatformCo the execution snapshot. :param response: The response envelope with updated fields. - :type response: ~azure.ai.agentserver.responses.models._generated.Response + :type response: ~azure.ai.agentserver.responses.models.Response :keyword context: Platform context for multi-tenant partitioning. :paramtype context: ~azure.ai.agentserver.responses.PlatformContext | None :rtype: None :raises KeyError: If the response does not exist or has been deleted. """ - response_id = str(getattr(response, "id")) + response_payload = to_wire_dict(response) + response_id = str(response_payload["id"]) async with self._locked(): entry = self._entries.get(response_id) if entry is None or entry.deleted: raise KeyError(f"response '{response_id}' not found") - entry.response = deepcopy(response) - entry.execution.set_response_snapshot(deepcopy(response)) - entry.output_item_ids = self._store_output_items_unlocked(response) + entry.response = deepcopy(response_payload) + entry.execution.set_response_snapshot(deepcopy(response_payload)) + entry.output_item_ids = self._store_output_items_unlocked(response_payload) async def delete_response(self, response_id: str, *, context: PlatformContext | None = None) -> None: """Delete a stored response envelope by identifier. @@ -366,7 +370,7 @@ async def set_response_snapshot( :param response_id: The unique identifier of the response to update. :type response_id: str :param response: The response snapshot to associate with the execution. - :type response: ~azure.ai.agentserver.responses.models._generated.Response + :type response: ~azure.ai.agentserver.responses.models.Response :keyword int or None ttl_seconds: Optional time-to-live in seconds to refresh expiration. :returns: ``True`` if the entry was found and updated, ``False`` otherwise. :rtype: bool @@ -376,7 +380,7 @@ async def set_response_snapshot( if entry is None: return False - entry.execution.set_response_snapshot(response) + entry.execution.set_response_snapshot(deepcopy(cast(dict[str, Any], response))) self._apply_ttl_unlocked(entry, ttl_seconds) return True @@ -665,11 +669,11 @@ def _store_output_items_unlocked(self, response: ResponseObject) -> list[str]: Must be called while holding ``self._lock``. :param response: The response envelope whose output items should be stored. - :type response: ~azure.ai.agentserver.responses.models._generated.Response + :type response: ~azure.ai.agentserver.responses.models.Response :returns: Ordered list of output item IDs. :rtype: list[str] """ - output = getattr(response, "output", None) + output = get_field(response, "output") if not output: return [] output_ids: list[str] = [] @@ -682,10 +686,7 @@ def _store_output_items_unlocked(self, response: ResponseObject) -> list[str]: @staticmethod def _extract_item_id(item: Any) -> str | None: - """Extract item identifier from object-like or mapping-like values. - - Supports both dict-like (``item["id"]``) and attribute-like (``item.id``) - access patterns. + """Extract item identifier from mapping-like wire values. :param item: The item to extract an ID from. :type item: Any @@ -697,20 +698,19 @@ def _extract_item_id(item: Any) -> str | None: if isinstance(item, dict): value = item.get("id") return str(value) if value is not None else None - value = getattr(item, "id", None) - return str(value) if value is not None else None + return None @staticmethod def _resolve_mode_flags_from_response(response: ResponseObject) -> ResponseModeFlags: """Build mode flags from a response snapshot where available. :param response: The response envelope to extract mode flags from. - :type response: ~azure.ai.agentserver.responses.models._generated.Response + :type response: ~azure.ai.agentserver.responses.models.Response :returns: Mode flags derived from the response's ``stream``, ``store``, and ``background`` attributes. :rtype: ~azure.ai.agentserver.responses.models.runtime.ResponseModeFlags """ return ResponseModeFlags( - stream=bool(getattr(response, "stream", False)), - store=bool(getattr(response, "store", True)), - background=bool(getattr(response, "background", False)), + stream=bool(get_field(response, "stream", False)), + store=bool(get_field(response, "store", True)), + background=bool(get_field(response, "background", False)), ) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_base.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_base.py index 770e497441c4..cb05b6ed79a5 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_base.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_base.py @@ -8,7 +8,7 @@ from enum import Enum from typing import TYPE_CHECKING, Any, cast -from ...models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models if TYPE_CHECKING: from .._event_stream import ResponseEventStream @@ -30,6 +30,13 @@ def _require_non_empty(value: str, field_name: str) -> str: return value +def _require_wire_dict(value: Any, field_name: str) -> dict[str, Any]: + """Validate that a builder payload is already a dict-native wire payload.""" + if not isinstance(value, dict): + raise TypeError(f"{field_name} must be a dict-native wire payload") + return value + + class BuilderLifecycleState(Enum): NOT_STARTED = "not_started" ADDED = "added" @@ -90,7 +97,7 @@ def _ensure_transition(self, expected: BuilderLifecycleState, new_state: Builder ) self._lifecycle_state = new_state - def _emit_added(self, item: dict[str, Any]) -> generated_models.ResponseOutputItemAddedEvent: + def _emit_added(self, item: dict[str, Any]) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event with lifecycle guard. :param item: The output item dict to include in the event. @@ -102,17 +109,17 @@ def _emit_added(self, item: dict[str, Any]) -> generated_models.ResponseOutputIt self._ensure_transition(BuilderLifecycleState.NOT_STARTED, BuilderLifecycleState.ADDED) stamped_item = self._stream._with_output_item_defaults(item) # pylint: disable=protected-access return cast( - generated_models.ResponseOutputItemAddedEvent, + response_models.ResponseOutputItemAddedEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, "output_index": self._output_index, "item": stamped_item, } ), ) - def _emit_done(self, item: dict[str, Any]) -> generated_models.ResponseOutputItemDoneEvent: + def _emit_done(self, item: dict[str, Any]) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event with lifecycle guard. :param item: The completed output item dict to include in the event. @@ -124,10 +131,10 @@ def _emit_done(self, item: dict[str, Any]) -> generated_models.ResponseOutputIte self._ensure_transition(BuilderLifecycleState.ADDED, BuilderLifecycleState.DONE) stamped_item = self._stream._with_output_item_defaults(item) # pylint: disable=protected-access return cast( - generated_models.ResponseOutputItemDoneEvent, + response_models.ResponseOutputItemDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, "output_index": self._output_index, "item": stamped_item, } @@ -136,7 +143,7 @@ def _emit_done(self, item: dict[str, Any]) -> generated_models.ResponseOutputIte def _emit_item_state_event( self, event_type: str, *, extra_payload: dict[str, Any] | None = None - ) -> generated_models.ResponseStreamEvent: + ) -> response_models.ResponseStreamEvent: """Emit an item-level state event (e.g., in-progress, searching, completed). :param event_type: The event type string. @@ -159,7 +166,7 @@ def _emit_item_state_event( class OutputItemBuilder(BaseOutputItemBuilder): """Generic output-item builder for item types without dedicated scoped builders.""" - def emit_added(self, item: generated_models.OutputItem) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self, item: response_models.OutputItem) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for a generic item. :param item: The output item model instance. @@ -167,9 +174,9 @@ def emit_added(self, item: generated_models.OutputItem) -> generated_models.Resp :returns: The emitted event. :rtype: ResponseOutputItemAddedEvent """ - return self._emit_added(item.as_dict()) + return self._emit_added(_require_wire_dict(item, "item")) - def emit_done(self, item: generated_models.OutputItem) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self, item: response_models.OutputItem) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for a generic item. :param item: The completed output item model instance. @@ -177,4 +184,4 @@ def emit_done(self, item: generated_models.OutputItem) -> generated_models.Respo :returns: The emitted event. :rtype: ResponseOutputItemDoneEvent """ - return self._emit_done(item.as_dict()) + return self._emit_done(_require_wire_dict(item, "item")) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_function.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_function.py index 795f92d174df..74683bea6cd6 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_function.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_function.py @@ -8,7 +8,7 @@ from copy import deepcopy from typing import TYPE_CHECKING, AsyncIterator, Iterator, cast -from ...models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models from ._base import BaseOutputItemBuilder, _require_non_empty if TYPE_CHECKING: @@ -62,7 +62,7 @@ def call_id(self) -> str: """ return self._call_id - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for this function call. :returns: The emitted event. @@ -79,7 +79,7 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_arguments_delta(self, delta: str) -> generated_models.ResponseFunctionCallArgumentsDeltaEvent: + def emit_arguments_delta(self, delta: str) -> response_models.ResponseFunctionCallArgumentsDeltaEvent: """Emit a function-call arguments delta event. :param delta: The incremental arguments text fragment. @@ -88,10 +88,10 @@ def emit_arguments_delta(self, delta: str) -> generated_models.ResponseFunctionC :rtype: ResponseFunctionCallArgumentsDeltaEvent """ return cast( - generated_models.ResponseFunctionCallArgumentsDeltaEvent, + response_models.ResponseFunctionCallArgumentsDeltaEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA.value, + "type": response_models.ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA.value, "item_id": self._item_id, "output_index": self._output_index, "delta": delta, @@ -99,7 +99,7 @@ def emit_arguments_delta(self, delta: str) -> generated_models.ResponseFunctionC ), ) - def emit_arguments_done(self, arguments: str) -> generated_models.ResponseFunctionCallArgumentsDoneEvent: + def emit_arguments_done(self, arguments: str) -> response_models.ResponseFunctionCallArgumentsDoneEvent: """Emit a function-call arguments done event. :param arguments: The final, complete arguments string. @@ -109,10 +109,10 @@ def emit_arguments_done(self, arguments: str) -> generated_models.ResponseFuncti """ self._final_arguments = arguments return cast( - generated_models.ResponseFunctionCallArgumentsDoneEvent, + response_models.ResponseFunctionCallArgumentsDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "name": self._name, @@ -121,7 +121,7 @@ def emit_arguments_done(self, arguments: str) -> generated_models.ResponseFuncti ), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this function call. :returns: The emitted event. @@ -140,7 +140,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: # ---- Sub-item convenience generators (S-053) ---- - def arguments(self, args: str) -> Iterator[generated_models.ResponseStreamEvent]: + def arguments(self, args: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the argument delta and done events. Emits ``function_call_arguments.delta`` followed by @@ -154,7 +154,7 @@ def arguments(self, args: str) -> Iterator[generated_models.ResponseStreamEvent] yield self.emit_arguments_delta(args) yield self.emit_arguments_done(args) - async def aarguments(self, args: str | AsyncIterable[str]) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def aarguments(self, args: str | AsyncIterable[str]) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`arguments` with streaming support. When *args* is a string, behaves identically to :meth:`arguments`. @@ -204,9 +204,9 @@ def __init__( self._final_output: ( str | list[ - generated_models.InputTextContentParam - | generated_models.InputImageContentParamAutoParam - | generated_models.InputFileContentParam + response_models.InputTextContentParam + | response_models.InputImageContentParamAutoParam + | response_models.InputFileContentParam ] | None ) = None @@ -224,12 +224,12 @@ def emit_added( self, output: str | list[ - generated_models.InputTextContentParam - | generated_models.InputImageContentParamAutoParam - | generated_models.InputFileContentParam + response_models.InputTextContentParam + | response_models.InputImageContentParamAutoParam + | response_models.InputFileContentParam ] | None = None, - ) -> generated_models.ResponseOutputItemAddedEvent: + ) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for this function-call output. :param output: Optional initial output value. @@ -251,12 +251,12 @@ def emit_done( self, output: str | list[ - generated_models.InputTextContentParam - | generated_models.InputImageContentParamAutoParam - | generated_models.InputFileContentParam + response_models.InputTextContentParam + | response_models.InputImageContentParamAutoParam + | response_models.InputFileContentParam ] | None = None, - ) -> generated_models.ResponseOutputItemDoneEvent: + ) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this function-call output. :param output: Optional final output value. Uses previously set output if ``None``. diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_message.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_message.py index ab02b2875af3..382d5ee64305 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_message.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_message.py @@ -8,8 +8,8 @@ from copy import deepcopy from typing import TYPE_CHECKING, Any, AsyncIterator, Iterator, cast -from ...models import _generated as generated_models -from ._base import BaseOutputItemBuilder, BuilderLifecycleState +from azure.ai.agentserver.responses import models as response_models +from ._base import BaseOutputItemBuilder, BuilderLifecycleState, _require_wire_dict if TYPE_CHECKING: from .._event_stream import ResponseEventStream @@ -62,7 +62,7 @@ def content_index(self) -> int: """ return self._content_index - def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: + def emit_added(self) -> response_models.ResponseContentPartAddedEvent: """Emit a ``content_part.added`` event for this text content. :returns: The emitted event dict. @@ -73,10 +73,10 @@ def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: raise ValueError(f"cannot call emit_added in '{self._lifecycle_state.value}' state") self._lifecycle_state = BuilderLifecycleState.ADDED return cast( - generated_models.ResponseContentPartAddedEvent, + response_models.ResponseContentPartAddedEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -85,15 +85,15 @@ def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: ), ) - def emit_delta(self, text: str) -> generated_models.ResponseTextDeltaEvent: + def emit_delta(self, text: str) -> response_models.ResponseTextDeltaEvent: if self._lifecycle_state is not BuilderLifecycleState.ADDED: raise ValueError(f"cannot call emit_delta in '{self._lifecycle_state.value}' state") self._delta_fragments.append(text) return cast( - generated_models.ResponseTextDeltaEvent, + response_models.ResponseTextDeltaEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DELTA.value, + "type": response_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DELTA.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -103,7 +103,7 @@ def emit_delta(self, text: str) -> generated_models.ResponseTextDeltaEvent: ), ) - def emit_text_done(self, final_text: str | None = None) -> generated_models.ResponseTextDoneEvent: + def emit_text_done(self, final_text: str | None = None) -> response_models.ResponseTextDoneEvent: """Emit an ``output_text.done`` event with the merged final text. Call this after all deltas have been emitted. After this, you may @@ -125,10 +125,10 @@ def emit_text_done(self, final_text: str | None = None) -> generated_models.Resp merged_text = final_text self._final_text = merged_text return cast( - generated_models.ResponseTextDoneEvent, + response_models.ResponseTextDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -138,7 +138,7 @@ def emit_text_done(self, final_text: str | None = None) -> generated_models.Resp ), ) - def emit_done(self) -> generated_models.ResponseContentPartDoneEvent: + def emit_done(self) -> response_models.ResponseContentPartDoneEvent: """Emit a ``content_part.done`` event, closing this content part. Must be called after ``emit_text_done()``. @@ -153,10 +153,10 @@ def emit_done(self) -> generated_models.ResponseContentPartDoneEvent: raise ValueError("must call emit_text_done() before emit_done()") self._lifecycle_state = BuilderLifecycleState.DONE return cast( - generated_models.ResponseContentPartDoneEvent, + response_models.ResponseContentPartDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -171,8 +171,8 @@ def emit_done(self) -> generated_models.ResponseContentPartDoneEvent: ) def emit_annotation_added( - self, annotation: generated_models.Annotation - ) -> generated_models.ResponseOutputTextAnnotationAddedEvent: + self, annotation: response_models.Annotation + ) -> response_models.ResponseOutputTextAnnotationAddedEvent: """Emit a text annotation added event. :param annotation: The annotation to attach—a typed @@ -183,17 +183,16 @@ def emit_annotation_added( """ annotation_index = self._annotation_index self._annotation_index += 1 - annotation_payload = deepcopy(annotation.as_dict()) return cast( - generated_models.ResponseOutputTextAnnotationAddedEvent, + response_models.ResponseOutputTextAnnotationAddedEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_OUTPUT_TEXT_ANNOTATION_ADDED.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, "annotation_index": annotation_index, - "annotation": annotation_payload, + "annotation": _require_wire_dict(annotation, "annotation"), } ), ) @@ -244,7 +243,7 @@ def content_index(self) -> int: """ return self._content_index - def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: + def emit_added(self) -> response_models.ResponseContentPartAddedEvent: """Emit a ``content_part.added`` event for this refusal content. :returns: The emitted event dict. @@ -255,10 +254,10 @@ def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: raise ValueError(f"cannot call emit_added in '{self._lifecycle_state.value}' state") self._lifecycle_state = BuilderLifecycleState.ADDED return cast( - generated_models.ResponseContentPartAddedEvent, + response_models.ResponseContentPartAddedEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_ADDED.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -267,7 +266,7 @@ def emit_added(self) -> generated_models.ResponseContentPartAddedEvent: ), ) - def emit_delta(self, text: str) -> generated_models.ResponseRefusalDeltaEvent: + def emit_delta(self, text: str) -> response_models.ResponseRefusalDeltaEvent: """Emit a refusal delta event. :param text: The incremental refusal text fragment. @@ -276,10 +275,10 @@ def emit_delta(self, text: str) -> generated_models.ResponseRefusalDeltaEvent: :rtype: ResponseRefusalDeltaEvent """ return cast( - generated_models.ResponseRefusalDeltaEvent, + response_models.ResponseRefusalDeltaEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REFUSAL_DELTA.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REFUSAL_DELTA.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -288,7 +287,7 @@ def emit_delta(self, text: str) -> generated_models.ResponseRefusalDeltaEvent: ), ) - def emit_refusal_done(self, final_refusal: str) -> generated_models.ResponseRefusalDoneEvent: + def emit_refusal_done(self, final_refusal: str) -> response_models.ResponseRefusalDoneEvent: """Emit a ``refusal.done`` event. Call this after all deltas have been emitted and before ``emit_done()``. @@ -306,10 +305,10 @@ def emit_refusal_done(self, final_refusal: str) -> generated_models.ResponseRefu self._refusal_done = True self._final_refusal = final_refusal return cast( - generated_models.ResponseRefusalDoneEvent, + response_models.ResponseRefusalDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REFUSAL_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REFUSAL_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -318,7 +317,7 @@ def emit_refusal_done(self, final_refusal: str) -> generated_models.ResponseRefu ), ) - def emit_done(self) -> generated_models.ResponseContentPartDoneEvent: + def emit_done(self) -> response_models.ResponseContentPartDoneEvent: """Emit a ``content_part.done`` event, closing this content part. Must be called after ``emit_refusal_done()``. @@ -333,10 +332,10 @@ def emit_done(self) -> generated_models.ResponseContentPartDoneEvent: raise ValueError("must call emit_refusal_done() before emit_done()") self._lifecycle_state = BuilderLifecycleState.DONE return cast( - generated_models.ResponseContentPartDoneEvent, + response_models.ResponseContentPartDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CONTENT_PART_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "content_index": self._content_index, @@ -371,7 +370,7 @@ def __init__( self._content_index = 0 self._content_builders: list[TextContentBuilder | RefusalContentBuilder] = [] - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for this message item. :returns: The emitted event dict. @@ -421,7 +420,7 @@ def add_refusal_content(self) -> RefusalContentBuilder: self._content_builders.append(rc) return rc - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this message item. Builds the content list from the tracked child content builders. @@ -462,7 +461,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: # ---- Sub-item convenience generators (S-053) ---- - def text_content(self, text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def text_content(self, text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a text content part. Creates the sub-builder, emits ``content_part.added``, @@ -481,7 +480,7 @@ def text_content(self, text: str) -> Iterator[generated_models.ResponseStreamEve async def atext_content( self, text: str | AsyncIterable[str] - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`text_content` with streaming support. When *text* is a string, behaves identically to :meth:`text_content`. @@ -505,7 +504,7 @@ async def atext_content( yield tc.emit_text_done() yield tc.emit_done() - def refusal_content(self, text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def refusal_content(self, text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a refusal content part. Creates the sub-builder, emits ``content_part.added``, @@ -524,7 +523,7 @@ def refusal_content(self, text: str) -> Iterator[generated_models.ResponseStream async def arefusal_content( self, text: str | AsyncIterable[str] - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`refusal_content` with streaming support. When *text* is a string, behaves identically to :meth:`refusal_content`. diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_reasoning.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_reasoning.py index f3392208e264..cda3e280eea7 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_reasoning.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_reasoning.py @@ -7,7 +7,7 @@ from collections.abc import AsyncIterable from typing import TYPE_CHECKING, AsyncIterator, Iterator, cast -from ...models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models from ._base import BaseOutputItemBuilder, BuilderLifecycleState if TYPE_CHECKING: @@ -54,7 +54,7 @@ def summary_index(self) -> int: """ return self._summary_index - def emit_added(self) -> generated_models.ResponseReasoningSummaryPartAddedEvent: + def emit_added(self) -> response_models.ResponseReasoningSummaryPartAddedEvent: """Emit a ``reasoning_summary_part.added`` event. :returns: The emitted event. @@ -65,10 +65,10 @@ def emit_added(self) -> generated_models.ResponseReasoningSummaryPartAddedEvent: raise ValueError(f"cannot call emit_added in '{self._lifecycle_state.value}' state") self._lifecycle_state = BuilderLifecycleState.ADDED return cast( - generated_models.ResponseReasoningSummaryPartAddedEvent, + response_models.ResponseReasoningSummaryPartAddedEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_ADDED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_ADDED.value, "item_id": self._item_id, "output_index": self._output_index, "summary_index": self._summary_index, @@ -77,7 +77,7 @@ def emit_added(self) -> generated_models.ResponseReasoningSummaryPartAddedEvent: ), ) - def emit_text_delta(self, text: str) -> generated_models.ResponseReasoningSummaryTextDeltaEvent: + def emit_text_delta(self, text: str) -> response_models.ResponseReasoningSummaryTextDeltaEvent: """Emit a reasoning summary text delta event. :param text: The incremental summary text fragment. @@ -86,10 +86,10 @@ def emit_text_delta(self, text: str) -> generated_models.ResponseReasoningSummar :rtype: ResponseReasoningSummaryTextDeltaEvent """ return cast( - generated_models.ResponseReasoningSummaryTextDeltaEvent, + response_models.ResponseReasoningSummaryTextDeltaEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DELTA.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DELTA.value, "item_id": self._item_id, "output_index": self._output_index, "summary_index": self._summary_index, @@ -98,7 +98,7 @@ def emit_text_delta(self, text: str) -> generated_models.ResponseReasoningSummar ), ) - def emit_text_done(self, final_text: str) -> generated_models.ResponseReasoningSummaryTextDoneEvent: + def emit_text_done(self, final_text: str) -> response_models.ResponseReasoningSummaryTextDoneEvent: """Emit a reasoning summary text done event. :param final_text: The final, complete summary text. @@ -108,10 +108,10 @@ def emit_text_done(self, final_text: str) -> generated_models.ResponseReasoningS """ self._final_text = final_text return cast( - generated_models.ResponseReasoningSummaryTextDoneEvent, + response_models.ResponseReasoningSummaryTextDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_TEXT_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "summary_index": self._summary_index, @@ -120,7 +120,7 @@ def emit_text_done(self, final_text: str) -> generated_models.ResponseReasoningS ), ) - def emit_done(self) -> generated_models.ResponseReasoningSummaryPartDoneEvent: + def emit_done(self) -> response_models.ResponseReasoningSummaryPartDoneEvent: """Emit a ``reasoning_summary_part.done`` event. :returns: The emitted event. @@ -131,10 +131,10 @@ def emit_done(self) -> generated_models.ResponseReasoningSummaryPartDoneEvent: raise ValueError(f"cannot call emit_done in '{self._lifecycle_state.value}' state") self._lifecycle_state = BuilderLifecycleState.DONE return cast( - generated_models.ResponseReasoningSummaryPartDoneEvent, + response_models.ResponseReasoningSummaryPartDoneEvent, self._stream._emit_event( # pylint: disable=protected-access { - "type": generated_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_DONE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_REASONING_SUMMARY_PART_DONE.value, "item_id": self._item_id, "output_index": self._output_index, "summary_index": self._summary_index, @@ -161,7 +161,7 @@ def __init__(self, stream: "ResponseEventStream", output_index: int, item_id: st self._summary_index = 0 self._summary_builders: list[ReasoningSummaryPartBuilder] = [] - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for this reasoning item. :returns: The emitted event. @@ -181,7 +181,7 @@ def add_summary_part(self) -> ReasoningSummaryPartBuilder: self._summary_builders.append(part) return part - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this reasoning item. :returns: The emitted event. @@ -199,7 +199,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: # ---- Sub-item convenience generators (S-053) ---- - def summary_part(self, text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def summary_part(self, text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a reasoning summary part. Creates the sub-builder, emits ``reasoning_summary_part.added``, @@ -220,7 +220,7 @@ def summary_part(self, text: str) -> Iterator[generated_models.ResponseStreamEve async def asummary_part( self, text: str | AsyncIterable[str], - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`summary_part` with streaming support. When *text* is a string, behaves identically to :meth:`summary_part`. diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_tools.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_tools.py index 66bac939d386..614e2f2cd561 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_tools.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_builders/_tools.py @@ -7,7 +7,7 @@ from collections.abc import AsyncIterable from typing import TYPE_CHECKING, Any, AsyncIterator, Iterator, cast -from ...models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models from ._base import BaseOutputItemBuilder, _require_non_empty if TYPE_CHECKING: @@ -17,7 +17,7 @@ class OutputItemFileSearchCallBuilder(BaseOutputItemBuilder): """Scoped builder for file search tool call events.""" - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for a file search call. :returns: The emitted event dict. @@ -32,46 +32,46 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_in_progress(self) -> generated_models.ResponseFileSearchCallInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseFileSearchCallInProgressEvent: """Emit a file-search in-progress state event. :returns: The emitted event dict. :rtype: ResponseFileSearchCallInProgressEvent """ return cast( - generated_models.ResponseFileSearchCallInProgressEvent, + response_models.ResponseFileSearchCallInProgressEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS.value + response_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_IN_PROGRESS.value ), ) - def emit_searching(self) -> generated_models.ResponseFileSearchCallSearchingEvent: + def emit_searching(self) -> response_models.ResponseFileSearchCallSearchingEvent: """Emit a file-search searching state event. :returns: The emitted event dict. :rtype: ResponseFileSearchCallSearchingEvent """ return cast( - generated_models.ResponseFileSearchCallSearchingEvent, + response_models.ResponseFileSearchCallSearchingEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_SEARCHING.value + response_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_SEARCHING.value ), ) - def emit_completed(self) -> generated_models.ResponseFileSearchCallCompletedEvent: + def emit_completed(self) -> response_models.ResponseFileSearchCallCompletedEvent: """Emit a file-search completed state event. :returns: The emitted event dict. :rtype: ResponseFileSearchCallCompletedEvent """ return cast( - generated_models.ResponseFileSearchCallCompletedEvent, + response_models.ResponseFileSearchCallCompletedEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_COMPLETED.value + response_models.ResponseStreamEventType.RESPONSE_FILE_SEARCH_CALL_COMPLETED.value ), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this file search call. :returns: The emitted event dict. @@ -83,7 +83,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: class OutputItemWebSearchCallBuilder(BaseOutputItemBuilder): """Scoped builder for web search tool call events.""" - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for a web search call. :returns: The emitted event dict. @@ -91,46 +91,46 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: """ return self._emit_added({"type": "web_search_call", "id": self._item_id, "status": "in_progress", "action": {}}) - def emit_in_progress(self) -> generated_models.ResponseWebSearchCallInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseWebSearchCallInProgressEvent: """Emit a web-search in-progress state event. :returns: The emitted event dict. :rtype: ResponseWebSearchCallInProgressEvent """ return cast( - generated_models.ResponseWebSearchCallInProgressEvent, + response_models.ResponseWebSearchCallInProgressEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS.value + response_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_IN_PROGRESS.value ), ) - def emit_searching(self) -> generated_models.ResponseWebSearchCallSearchingEvent: + def emit_searching(self) -> response_models.ResponseWebSearchCallSearchingEvent: """Emit a web-search searching state event. :returns: The emitted event dict. :rtype: ResponseWebSearchCallSearchingEvent """ return cast( - generated_models.ResponseWebSearchCallSearchingEvent, + response_models.ResponseWebSearchCallSearchingEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_SEARCHING.value + response_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_SEARCHING.value ), ) - def emit_completed(self) -> generated_models.ResponseWebSearchCallCompletedEvent: + def emit_completed(self) -> response_models.ResponseWebSearchCallCompletedEvent: """Emit a web-search completed state event. :returns: The emitted event dict. :rtype: ResponseWebSearchCallCompletedEvent """ return cast( - generated_models.ResponseWebSearchCallCompletedEvent, + response_models.ResponseWebSearchCallCompletedEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_COMPLETED.value + response_models.ResponseStreamEventType.RESPONSE_WEB_SEARCH_CALL_COMPLETED.value ), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this web search call. :returns: The emitted event dict. @@ -155,7 +155,7 @@ def __init__(self, stream: "ResponseEventStream", output_index: int, item_id: st super().__init__(stream=stream, output_index=output_index, item_id=item_id) self._final_code: str | None = None - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for a code interpreter call. :returns: The emitted event dict. @@ -172,33 +172,33 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_in_progress(self) -> generated_models.ResponseCodeInterpreterCallInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseCodeInterpreterCallInProgressEvent: """Emit a code-interpreter in-progress state event. :returns: The emitted event dict. :rtype: ResponseCodeInterpreterCallInProgressEvent """ return cast( - generated_models.ResponseCodeInterpreterCallInProgressEvent, + response_models.ResponseCodeInterpreterCallInProgressEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS.value + response_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_IN_PROGRESS.value ), ) - def emit_interpreting(self) -> generated_models.ResponseCodeInterpreterCallInterpretingEvent: + def emit_interpreting(self) -> response_models.ResponseCodeInterpreterCallInterpretingEvent: """Emit a code-interpreter interpreting state event. :returns: The emitted event dict. :rtype: ResponseCodeInterpreterCallInterpretingEvent """ return cast( - generated_models.ResponseCodeInterpreterCallInterpretingEvent, + response_models.ResponseCodeInterpreterCallInterpretingEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING.value + response_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_INTERPRETING.value ), ) - def emit_code_delta(self, delta: str) -> generated_models.ResponseCodeInterpreterCallCodeDeltaEvent: + def emit_code_delta(self, delta: str) -> response_models.ResponseCodeInterpreterCallCodeDeltaEvent: """Emit a code-interpreter code delta event. :param delta: The incremental code fragment. @@ -207,14 +207,14 @@ def emit_code_delta(self, delta: str) -> generated_models.ResponseCodeInterprete :rtype: ResponseCodeInterpreterCallCodeDeltaEvent """ return cast( - generated_models.ResponseCodeInterpreterCallCodeDeltaEvent, + response_models.ResponseCodeInterpreterCallCodeDeltaEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA.value, + response_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DELTA.value, extra_payload={"delta": delta}, ), ) - def emit_code_done(self, code: str) -> generated_models.ResponseCodeInterpreterCallCodeDoneEvent: + def emit_code_done(self, code: str) -> response_models.ResponseCodeInterpreterCallCodeDoneEvent: """Emit a code-interpreter code done event. :param code: The final, complete code string. @@ -224,27 +224,27 @@ def emit_code_done(self, code: str) -> generated_models.ResponseCodeInterpreterC """ self._final_code = code return cast( - generated_models.ResponseCodeInterpreterCallCodeDoneEvent, + response_models.ResponseCodeInterpreterCallCodeDoneEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE.value, + response_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_CODE_DONE.value, extra_payload={"code": code}, ), ) - def emit_completed(self) -> generated_models.ResponseCodeInterpreterCallCompletedEvent: + def emit_completed(self) -> response_models.ResponseCodeInterpreterCallCompletedEvent: """Emit a code-interpreter completed state event. :returns: The emitted event dict. :rtype: ResponseCodeInterpreterCallCompletedEvent """ return cast( - generated_models.ResponseCodeInterpreterCallCompletedEvent, + response_models.ResponseCodeInterpreterCallCompletedEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_COMPLETED.value + response_models.ResponseStreamEventType.RESPONSE_CODE_INTERPRETER_CALL_COMPLETED.value ), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this code interpreter call. :returns: The emitted event dict. @@ -263,7 +263,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: # ---- Sub-item convenience generators (S-053) ---- - def code(self, code_text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def code(self, code_text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the code delta and code done events. Emits ``code_interpreter_call.code.delta`` followed by @@ -277,7 +277,7 @@ def code(self, code_text: str) -> Iterator[generated_models.ResponseStreamEvent] yield self.emit_code_delta(code_text) yield self.emit_code_done(code_text) - async def acode(self, code_text: str | AsyncIterable[str]) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def acode(self, code_text: str | AsyncIterable[str]) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`code` with streaming support. When *code_text* is a string, behaves identically to :meth:`code`. @@ -317,7 +317,7 @@ def __init__(self, stream: "ResponseEventStream", output_index: int, item_id: st super().__init__(stream=stream, output_index=output_index, item_id=item_id) self._partial_image_index = 0 - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for an image generation call. :returns: The emitted event dict. @@ -332,33 +332,33 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_in_progress(self) -> generated_models.ResponseImageGenCallInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseImageGenCallInProgressEvent: """Emit an image-generation in-progress state event. :returns: The emitted event dict. :rtype: ResponseImageGenCallInProgressEvent """ return cast( - generated_models.ResponseImageGenCallInProgressEvent, + response_models.ResponseImageGenCallInProgressEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS.value + response_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_IN_PROGRESS.value ), ) - def emit_generating(self) -> generated_models.ResponseImageGenCallGeneratingEvent: + def emit_generating(self) -> response_models.ResponseImageGenCallGeneratingEvent: """Emit an image-generation generating state event. :returns: The emitted event dict. :rtype: ResponseImageGenCallGeneratingEvent """ return cast( - generated_models.ResponseImageGenCallGeneratingEvent, + response_models.ResponseImageGenCallGeneratingEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_GENERATING.value + response_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_GENERATING.value ), ) - def emit_partial_image(self, partial_image_b64: str) -> generated_models.ResponseImageGenCallPartialImageEvent: + def emit_partial_image(self, partial_image_b64: str) -> response_models.ResponseImageGenCallPartialImageEvent: """Emit a partial image event with base64-encoded image data. :param partial_image_b64: Base64-encoded partial image data. @@ -369,27 +369,27 @@ def emit_partial_image(self, partial_image_b64: str) -> generated_models.Respons partial_index = self._partial_image_index self._partial_image_index += 1 return cast( - generated_models.ResponseImageGenCallPartialImageEvent, + response_models.ResponseImageGenCallPartialImageEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE.value, + response_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_PARTIAL_IMAGE.value, extra_payload={"partial_image_index": partial_index, "partial_image_b64": partial_image_b64}, ), ) - def emit_completed(self) -> generated_models.ResponseImageGenCallCompletedEvent: + def emit_completed(self) -> response_models.ResponseImageGenCallCompletedEvent: """Emit an image-generation completed state event. :returns: The emitted event dict. :rtype: ResponseImageGenCallCompletedEvent """ return cast( - generated_models.ResponseImageGenCallCompletedEvent, + response_models.ResponseImageGenCallCompletedEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_COMPLETED.value + response_models.ResponseStreamEventType.RESPONSE_IMAGE_GENERATION_CALL_COMPLETED.value ), ) - def emit_done(self, result: str) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self, result: str) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this image generation call. :param result: The base64-encoded image result. @@ -455,7 +455,7 @@ def name(self) -> str: """ return self._name - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for an MCP call. :returns: The emitted event dict. @@ -472,18 +472,18 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_in_progress(self) -> generated_models.ResponseMCPCallInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseMCPCallInProgressEvent: """Emit an MCP call in-progress state event. :returns: The emitted event dict. :rtype: ResponseMCPCallInProgressEvent """ return cast( - generated_models.ResponseMCPCallInProgressEvent, - self._emit_item_state_event(generated_models.ResponseStreamEventType.RESPONSE_MCP_CALL_IN_PROGRESS.value), + response_models.ResponseMCPCallInProgressEvent, + self._emit_item_state_event(response_models.ResponseStreamEventType.RESPONSE_MCP_CALL_IN_PROGRESS.value), ) - def emit_arguments_delta(self, delta: str) -> generated_models.ResponseMCPCallArgumentsDeltaEvent: + def emit_arguments_delta(self, delta: str) -> response_models.ResponseMCPCallArgumentsDeltaEvent: """Emit an MCP call arguments delta event. :param delta: The incremental arguments text fragment. @@ -492,14 +492,14 @@ def emit_arguments_delta(self, delta: str) -> generated_models.ResponseMCPCallAr :rtype: ResponseMCPCallArgumentsDeltaEvent """ return cast( - generated_models.ResponseMCPCallArgumentsDeltaEvent, + response_models.ResponseMCPCallArgumentsDeltaEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA.value, + response_models.ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA.value, extra_payload={"delta": delta}, ), ) - def emit_arguments_done(self, arguments: str) -> generated_models.ResponseMCPCallArgumentsDoneEvent: + def emit_arguments_done(self, arguments: str) -> response_models.ResponseMCPCallArgumentsDoneEvent: """Emit an MCP call arguments done event. :param arguments: The final, complete arguments string. @@ -509,14 +509,14 @@ def emit_arguments_done(self, arguments: str) -> generated_models.ResponseMCPCal """ self._final_arguments = arguments return cast( - generated_models.ResponseMCPCallArgumentsDoneEvent, + response_models.ResponseMCPCallArgumentsDoneEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE.value, + response_models.ResponseStreamEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE.value, extra_payload={"arguments": arguments}, ), ) - def emit_completed(self) -> generated_models.ResponseMCPCallCompletedEvent: + def emit_completed(self) -> response_models.ResponseMCPCallCompletedEvent: """Emit an MCP call completed state event. :returns: The emitted event dict. @@ -524,11 +524,11 @@ def emit_completed(self) -> generated_models.ResponseMCPCallCompletedEvent: """ self._terminal_status = "completed" return cast( - generated_models.ResponseMCPCallCompletedEvent, - self._emit_item_state_event(generated_models.ResponseStreamEventType.RESPONSE_MCP_CALL_COMPLETED.value), + response_models.ResponseMCPCallCompletedEvent, + self._emit_item_state_event(response_models.ResponseStreamEventType.RESPONSE_MCP_CALL_COMPLETED.value), ) - def emit_failed(self) -> generated_models.ResponseMCPCallFailedEvent: + def emit_failed(self) -> response_models.ResponseMCPCallFailedEvent: """Emit an MCP call failed state event. :returns: The emitted event dict. @@ -536,8 +536,8 @@ def emit_failed(self) -> generated_models.ResponseMCPCallFailedEvent: """ self._terminal_status = "failed" return cast( - generated_models.ResponseMCPCallFailedEvent, - self._emit_item_state_event(generated_models.ResponseStreamEventType.RESPONSE_MCP_CALL_FAILED.value), + response_models.ResponseMCPCallFailedEvent, + self._emit_item_state_event(response_models.ResponseStreamEventType.RESPONSE_MCP_CALL_FAILED.value), ) def emit_done( @@ -545,7 +545,7 @@ def emit_done( *, output: str | None = None, error: dict[str, Any] | None = None, - ) -> generated_models.ResponseOutputItemDoneEvent: + ) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this MCP call. The ``status`` field reflects the most recent terminal state event @@ -576,7 +576,7 @@ def emit_done( # ---- Sub-item convenience generators (S-053) ---- - def arguments(self, args: str) -> Iterator[generated_models.ResponseStreamEvent]: + def arguments(self, args: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the argument delta and done events. Emits ``mcp_call_arguments.delta`` followed by @@ -590,7 +590,7 @@ def arguments(self, args: str) -> Iterator[generated_models.ResponseStreamEvent] yield self.emit_arguments_delta(args) yield self.emit_arguments_done(args) - async def aarguments(self, args: str | AsyncIterable[str]) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def aarguments(self, args: str | AsyncIterable[str]) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`arguments` with streaming support. When *args* is a string, behaves identically to :meth:`arguments`. @@ -641,7 +641,7 @@ def server_label(self) -> str: """ return self._server_label - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for MCP list-tools. :returns: The emitted event dict. @@ -656,44 +656,44 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_in_progress(self) -> generated_models.ResponseMCPListToolsInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseMCPListToolsInProgressEvent: """Emit an MCP list-tools in-progress state event. :returns: The emitted event dict. :rtype: ResponseMCPListToolsInProgressEvent """ return cast( - generated_models.ResponseMCPListToolsInProgressEvent, + response_models.ResponseMCPListToolsInProgressEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS.value + response_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_IN_PROGRESS.value ), ) - def emit_completed(self) -> generated_models.ResponseMCPListToolsCompletedEvent: + def emit_completed(self) -> response_models.ResponseMCPListToolsCompletedEvent: """Emit an MCP list-tools completed state event. :returns: The emitted event dict. :rtype: ResponseMCPListToolsCompletedEvent """ return cast( - generated_models.ResponseMCPListToolsCompletedEvent, + response_models.ResponseMCPListToolsCompletedEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_COMPLETED.value + response_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_COMPLETED.value ), ) - def emit_failed(self) -> generated_models.ResponseMCPListToolsFailedEvent: + def emit_failed(self) -> response_models.ResponseMCPListToolsFailedEvent: """Emit an MCP list-tools failed state event. :returns: The emitted event dict. :rtype: ResponseMCPListToolsFailedEvent """ return cast( - generated_models.ResponseMCPListToolsFailedEvent, - self._emit_item_state_event(generated_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_FAILED.value), + response_models.ResponseMCPListToolsFailedEvent, + self._emit_item_state_event(response_models.ResponseStreamEventType.RESPONSE_MCP_LIST_TOOLS_FAILED.value), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for MCP list-tools. :returns: The emitted event dict. @@ -756,7 +756,7 @@ def name(self) -> str: """ return self._name - def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: + def emit_added(self) -> response_models.ResponseOutputItemAddedEvent: """Emit an ``output_item.added`` event for a custom tool call. :returns: The emitted event dict. @@ -772,7 +772,7 @@ def emit_added(self) -> generated_models.ResponseOutputItemAddedEvent: } ) - def emit_input_delta(self, delta: str) -> generated_models.ResponseCustomToolCallInputDeltaEvent: + def emit_input_delta(self, delta: str) -> response_models.ResponseCustomToolCallInputDeltaEvent: """Emit a custom tool call input delta event. :param delta: The incremental input text fragment. @@ -781,14 +781,14 @@ def emit_input_delta(self, delta: str) -> generated_models.ResponseCustomToolCal :rtype: ResponseCustomToolCallInputDeltaEvent """ return cast( - generated_models.ResponseCustomToolCallInputDeltaEvent, + response_models.ResponseCustomToolCallInputDeltaEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA.value, + response_models.ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DELTA.value, extra_payload={"delta": delta}, ), ) - def emit_input_done(self, input_text: str) -> generated_models.ResponseCustomToolCallInputDoneEvent: + def emit_input_done(self, input_text: str) -> response_models.ResponseCustomToolCallInputDoneEvent: """Emit a custom tool call input done event. :param input_text: The final, complete input text. @@ -798,14 +798,14 @@ def emit_input_done(self, input_text: str) -> generated_models.ResponseCustomToo """ self._final_input = input_text return cast( - generated_models.ResponseCustomToolCallInputDoneEvent, + response_models.ResponseCustomToolCallInputDoneEvent, self._emit_item_state_event( - generated_models.ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE.value, + response_models.ResponseStreamEventType.RESPONSE_CUSTOM_TOOL_CALL_INPUT_DONE.value, extra_payload={"input": input_text}, ), ) - def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: + def emit_done(self) -> response_models.ResponseOutputItemDoneEvent: """Emit an ``output_item.done`` event for this custom tool call. :returns: The emitted event dict. @@ -823,7 +823,7 @@ def emit_done(self) -> generated_models.ResponseOutputItemDoneEvent: # ---- Sub-item convenience generators (S-053) ---- - def input(self, input_text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def input(self, input_text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the input delta and input done events. Emits ``custom_tool_call_input.delta`` followed by @@ -837,7 +837,7 @@ def input(self, input_text: str) -> Iterator[generated_models.ResponseStreamEven yield self.emit_input_delta(input_text) yield self.emit_input_done(input_text) - async def ainput(self, input_text: str | AsyncIterable[str]) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def ainput(self, input_text: str | AsyncIterable[str]) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`input` with streaming support. When *input_text* is a string, behaves identically to :meth:`input`. diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_event_stream.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_event_stream.py index 8d1ecbe94fe2..d66e1e777ff5 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_event_stream.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_event_stream.py @@ -9,10 +9,10 @@ from datetime import datetime, timezone from typing import Any, AsyncIterator, Iterator, Sequence, cast +from azure.ai.agentserver.responses import models as response_models +from azure.ai.agentserver.responses.models import AgentReference + from .._id_generator import IdGenerator -from ..models import _generated as generated_models -from ..models._generated import AgentReference -from ..models._generated.sdk.models._utils.model_base import Model as _Model from . import _internals from ._builders import ( OutputItemBuilder, @@ -28,7 +28,6 @@ OutputItemReasoningItemBuilder, OutputItemWebSearchCallBuilder, ) -from ._internals import construct_event_model from ._state_machine import EventStreamValidator # Event types whose payload is a full Response snapshot. @@ -41,10 +40,10 @@ def _resolve_conversation_param(raw: Any) -> str | None: The input side of ``CreateResponse.conversation`` is ``Union[str, ConversationParam_2]`` whereas the output side ``ResponseObject.conversation`` is always a ``ConversationReference`` - (object form ``{"id": "..."}``. This helper extracts the string ID from whichever - form was supplied. + (object form ``{"id": "..."}``). This helper extracts the string ID from whichever + wire form was supplied. - :param raw: The raw conversation value from the request (string, dict, model, or None). + :param raw: The raw conversation value from the request (string, dict, or None). :type raw: Any :returns: The conversation ID string, or ``None`` if absent/empty. :rtype: str | None @@ -56,16 +55,13 @@ def _resolve_conversation_param(raw: Any) -> str | None: if isinstance(raw, dict): cid = raw.get("id") return str(cid) if cid else None - if hasattr(raw, "id"): - cid = raw.id - return str(cid) if cid else None return None -def _as_dict(obj: _Model | dict[str, Any]) -> dict[str, Any]: # pylint: disable=docstring-missing-param,docstring-missing-return,docstring-missing-rtype - """Convert a model or dict-like object to a plain dictionary.""" - if isinstance(obj, _Model): - return obj.as_dict() +def _require_wire_dict(obj: Any, field_name: str) -> dict[str, Any]: + """Validate that a convenience-method payload is already dict-native.""" + if not isinstance(obj, dict): + raise TypeError(f"{field_name} must be a dict-native wire payload") return obj @@ -78,8 +74,8 @@ def __init__( response_id: str | None = None, agent_reference: AgentReference | None = None, model: str | None = None, - request: generated_models.CreateResponse | None = None, - response: generated_models.ResponseObject | None = None, + request: response_models.CreateResponse | None = None, + response: response_models.ResponseObject | None = None, ) -> None: """Initialize a new response event stream. @@ -90,9 +86,9 @@ def __init__( :param model: Optional model identifier to stamp on the response. :type model: str | None :param request: Optional create-response request to seed the response envelope from. - :type request: ~azure.ai.agentserver.responses.models._generated.CreateResponse | None + :type request: ~azure.ai.agentserver.responses.models.CreateResponse | None :param response: Optional pre-existing response envelope to build upon. - :type response: ~azure.ai.agentserver.responses.models._generated.ResponseObject | None + :type response: ~azure.ai.agentserver.responses.models.ResponseObject | None :raises ValueError: If both *request* and *response* are provided, or if *response_id* cannot be resolved. """ if request is not None and response is not None: @@ -117,125 +113,123 @@ def __init__( payload["id"] = self._response_id payload.setdefault("object", "response") payload.setdefault("output", []) - self._response = generated_models.ResponseObject(payload) + self._response = payload else: - self._response = generated_models.ResponseObject( - { - "id": self._response_id, - "object": "response", - "output": [], - "created_at": datetime.now(timezone.utc), - } - ) + self._response = { + "id": self._response_id, + "object": "response", + "output": [], + "created_at": datetime.now(timezone.utc), + } if request_mapping is not None: for field_name in ("metadata", "background", "previous_response_id"): value = request_mapping.get(field_name) if value is not None: - setattr(self._response, field_name, deepcopy(value)) + self._response[field_name] = deepcopy(value) # Normalize polymorphic conversation (str | ConversationParam_2) # to the response-side ConversationReference object form. conversation_id = _resolve_conversation_param(request_mapping.get("conversation")) if conversation_id is not None: - self._response.conversation = generated_models.ConversationReference(id=conversation_id) + self._response["conversation"] = {"id": conversation_id} request_model = request_mapping.get("model") if isinstance(request_model, str) and request_model: - self._response.model = request_model + self._response["model"] = request_model request_agent_reference = request_mapping.get("agent_reference") if isinstance(request_agent_reference, dict): - self._response.agent_reference = deepcopy(request_agent_reference) # type: ignore[assignment] + self._response["agent_reference"] = deepcopy(request_agent_reference) if model is not None: - self._response.model = model + self._response["model"] = model if agent_reference is not None: - self._response.agent_reference = deepcopy(agent_reference) # type: ignore[assignment] + self._response["agent_reference"] = deepcopy(agent_reference) self._agent_reference, self._model = _internals.extract_response_fields(self._response) - self._events: list[generated_models.ResponseStreamEvent] = [] + self._events: list[response_models.ResponseStreamEvent] = [] self._validator = EventStreamValidator() self._output_index = 0 @property - def response(self) -> generated_models.ResponseObject: + def response(self) -> dict[str, Any]: """Return the current response envelope. :returns: The mutable response envelope being built by this stream. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseObject + :rtype: ~azure.ai.agentserver.responses.models.ResponseObject """ return self._response - def emit_queued(self) -> generated_models.ResponseQueuedEvent: + def emit_queued(self) -> response_models.ResponseQueuedEvent: """Emit a ``response.queued`` lifecycle event. :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseQueuedEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseQueuedEvent """ - self._response.status = "queued" + self._response["status"] = "queued" return cast( - generated_models.ResponseQueuedEvent, + response_models.ResponseQueuedEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_QUEUED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_QUEUED.value, "response": self._response_payload(), } ), ) - def emit_created(self, *, status: str = "in_progress") -> generated_models.ResponseCreatedEvent: + def emit_created(self, *, status: str = "in_progress") -> response_models.ResponseCreatedEvent: """Emit a ``response.created`` lifecycle event. :keyword status: Initial status to set on the response. Defaults to ``"in_progress"``. :keyword type status: str :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseCreatedEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseCreatedEvent """ - self._response.status = status # type: ignore[assignment] + self._response["status"] = status return cast( - generated_models.ResponseCreatedEvent, + response_models.ResponseCreatedEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_CREATED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CREATED.value, "response": self._response_payload(), } ), ) - def emit_in_progress(self) -> generated_models.ResponseInProgressEvent: + def emit_in_progress(self) -> response_models.ResponseInProgressEvent: """Emit a ``response.in_progress`` lifecycle event. :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseInProgressEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseInProgressEvent """ - self._response.status = "in_progress" + self._response["status"] = "in_progress" return cast( - generated_models.ResponseInProgressEvent, + response_models.ResponseInProgressEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, + "type": response_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, "response": self._response_payload(), } ), ) def emit_completed( - self, *, usage: generated_models.ResponseUsage | None = None - ) -> generated_models.ResponseCompletedEvent: + self, *, usage: response_models.ResponseUsage | None = None + ) -> response_models.ResponseCompletedEvent: """Emit a ``response.completed`` terminal lifecycle event. :keyword usage: Optional usage statistics to attach to the response. - :keyword type usage: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | None + :keyword type usage: ~azure.ai.agentserver.responses.models.ResponseUsage | None :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseCompletedEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseCompletedEvent """ - self._response.status = "completed" - self._response.error = None # type: ignore[assignment] - self._response.incomplete_details = None # type: ignore[assignment] + self._response["status"] = "completed" + self._response["error"] = None + self._response["incomplete_details"] = None self._set_terminal_fields(usage=usage) return cast( - generated_models.ResponseCompletedEvent, + response_models.ResponseCompletedEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, "response": self._response_payload(), } ), @@ -244,35 +238,33 @@ def emit_completed( def emit_failed( self, *, - code: str | generated_models.ResponseErrorCode = "server_error", + code: str | response_models.ResponseErrorCode = "server_error", message: str = "An internal server error occurred.", - usage: generated_models.ResponseUsage | None = None, - ) -> generated_models.ResponseFailedEvent: + usage: response_models.ResponseUsage | None = None, + ) -> response_models.ResponseFailedEvent: """Emit a ``response.failed`` terminal lifecycle event. :keyword code: Error code describing the failure. - :keyword type code: str | ~azure.ai.agentserver.responses.models._generated.ResponseErrorCode + :keyword type code: str | ~azure.ai.agentserver.responses.models.ResponseErrorCode :keyword message: Human-readable error message. :keyword type message: str :keyword usage: Optional usage statistics to attach to the response. - :keyword type usage: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | None + :keyword type usage: ~azure.ai.agentserver.responses.models.ResponseUsage | None :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseFailedEvent - """ - self._response.status = "failed" - self._response.incomplete_details = None # type: ignore[assignment] - self._response.error = generated_models.ResponseErrorInfo( - { - "code": _internals.enum_value(code), - "message": message, - } - ) + :rtype: ~azure.ai.agentserver.responses.models.ResponseFailedEvent + """ + self._response["status"] = "failed" + self._response["incomplete_details"] = None + self._response["error"] = { + "code": _internals.enum_value(code), + "message": message, + } self._set_terminal_fields(usage=usage) return cast( - generated_models.ResponseFailedEvent, + response_models.ResponseFailedEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_FAILED.value, "response": self._response_payload(), } ), @@ -282,34 +274,30 @@ def emit_incomplete( self, *, reason: str | None = None, - usage: generated_models.ResponseUsage | None = None, - ) -> generated_models.ResponseIncompleteEvent: + usage: response_models.ResponseUsage | None = None, + ) -> response_models.ResponseIncompleteEvent: """Emit a ``response.incomplete`` terminal lifecycle event. :keyword reason: Optional reason for incompleteness. - :keyword type reason: str | ~azure.ai.agentserver.responses.models._generated.ResponseIncompleteReason + :keyword type reason: str | ~azure.ai.agentserver.responses.models.ResponseIncompleteReason | None :keyword usage: Optional usage statistics to attach to the response. - :keyword type usage: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | None + :keyword type usage: ~azure.ai.agentserver.responses.models.ResponseUsage | None :returns: The emitted event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseIncompleteEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseIncompleteEvent """ - self._response.status = "incomplete" - self._response.error = None # type: ignore[assignment] + self._response["status"] = "incomplete" + self._response["error"] = None if reason is None: - self._response.incomplete_details = None # type: ignore[assignment] + self._response["incomplete_details"] = None else: - self._response.incomplete_details = generated_models.ResponseIncompleteDetails( - { - "reason": _internals.enum_value(reason), - } - ) + self._response["incomplete_details"] = {"reason": _internals.enum_value(reason)} self._set_terminal_fields(usage=usage) return cast( - generated_models.ResponseIncompleteEvent, + response_models.ResponseIncompleteEvent, self._emit_event( { - "type": generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, + "type": response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, "response": self._response_payload(), } ), @@ -661,44 +649,39 @@ def add_output_item_compaction(self) -> OutputItemBuilder: item_id = IdGenerator.new_compaction_item_id(self._response_id) return OutputItemBuilder(self, output_index=output_index, item_id=item_id) - def events(self) -> list[generated_models.ResponseStreamEvent]: + def events(self) -> list[response_models.ResponseStreamEvent]: """Return copies of all events emitted so far as typed model instances. :returns: A list of ``ResponseStreamEvent`` model instances. - :rtype: list[~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent] + :rtype: list[~azure.ai.agentserver.responses.models.ResponseStreamEvent] """ - return [construct_event_model(event.as_dict()) for event in self._events] + return [deepcopy(event) for event in self._events] - def _emit_event(self, event: dict[str, Any]) -> generated_models.ResponseStreamEvent: + def _emit_event(self, event: dict[str, Any]) -> response_models.ResponseStreamEvent: """Emit a single event, applying defaults and validating the stream. - Accepts a **wire-format** dict (no ``"payload"`` wrapper), constructs - a typed ``ResponseStreamEvent`` model instance via polymorphic - deserialization, stamps defaults and sequence number, stores the - model, and returns it. + Accepts a **wire-format** dict (no ``"payload"`` wrapper), stamps + defaults and sequence number, stores the event, and returns it. :param event: A wire-format event dict. :type event: dict[str, Any] :returns: The typed event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent + :rtype: ~azure.ai.agentserver.responses.models.ResponseStreamEvent """ candidate = deepcopy(event) # Stamp sequence number before model construction candidate["sequence_number"] = len(self._events) - # Construct typed model via polymorphic deserialization - model = construct_event_model(candidate) - # Apply response-level defaults to lifecycle events _internals.apply_common_defaults( - [model], response_id=self._response_id, agent_reference=self._agent_reference, model=self._model + [candidate], response_id=self._response_id, agent_reference=self._agent_reference, model=self._model ) # Track completed output items on the response envelope - _internals.track_completed_output_item(self._response, model) + _internals.track_completed_output_item(self._response, candidate) self._validator.validate_next(candidate) - self._events.append(model) - return model + self._events.append(candidate) + return cast(response_models.ResponseStreamEvent, candidate) # ---- Generator convenience methods (S-056/S-057) ---- # Output-item convenience generators that encapsulate the full lifecycle. @@ -709,7 +692,7 @@ def _emit_event(self, event: dict[str, Any]) -> generated_models.ResponseStreamE @staticmethod def _emit_simple_item( builder: OutputItemBuilder, item: dict[str, Any] - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Emit the added→done pair for a simple output item. :param builder: The generic output item builder. @@ -726,8 +709,8 @@ def output_item_message( self, text: str, *, - annotations: Sequence[generated_models.Annotation] | None = None, - ) -> Iterator[generated_models.ResponseStreamEvent]: + annotations: Sequence[response_models.Annotation] | None = None, + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a text message output item. Emits output_item.added, content_part.added, output_text.delta, @@ -755,7 +738,7 @@ def output_item_message( def output_item_function_call( self, name: str, call_id: str, arguments: str - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a function call output item. Emits output_item.added, function_call_arguments.delta, @@ -777,7 +760,7 @@ def output_item_function_call( def output_item_function_call_output( self, call_id: str, output: str - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a function call output item. Emits output_item.added and output_item.done. @@ -793,7 +776,7 @@ def output_item_function_call_output( yield fco.emit_added(output) yield fco.emit_done(output) - def output_item_reasoning_item(self, summary_text: str) -> Iterator[generated_models.ResponseStreamEvent]: + def output_item_reasoning_item(self, summary_text: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a reasoning output item. Emits output_item.added, reasoning_summary_part.added, @@ -810,7 +793,7 @@ def output_item_reasoning_item(self, summary_text: str) -> Iterator[generated_mo yield from item.summary_part(summary_text) yield item.emit_done() - def output_item_image_gen_call(self, result_base64: str) -> Iterator[generated_models.ResponseStreamEvent]: + def output_item_image_gen_call(self, result_base64: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for an image generation call. Emits added → in_progress → generating → completed → done(result). @@ -827,7 +810,7 @@ def output_item_image_gen_call(self, result_base64: str) -> Iterator[generated_m yield ig.emit_completed() yield ig.emit_done(result_base64) - def output_item_structured_outputs(self, output: Any) -> Iterator[generated_models.ResponseStreamEvent]: + def output_item_structured_outputs(self, output: Any) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a structured outputs item. Emits output_item.added and output_item.done. @@ -844,11 +827,11 @@ def output_item_structured_outputs(self, output: Any) -> Iterator[generated_mode def output_item_computer_call( self, call_id: str, - action: generated_models.ComputerAction, + action: response_models.ComputerAction, *, - pending_safety_checks: list[generated_models.ComputerCallSafetyCheckParam] | None = None, + pending_safety_checks: list[response_models.ComputerCallSafetyCheckParam] | None = None, status: str = "completed", - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a computer call output item. :param call_id: Unique identifier for this tool call. @@ -863,8 +846,8 @@ def output_item_computer_call( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_computer_call() - action_dict = _as_dict(action) - checks = [_as_dict(c) for c in (pending_safety_checks or [])] + action_dict = _require_wire_dict(action, "action") + checks = [_require_wire_dict(c, "pending_safety_checks item") for c in (pending_safety_checks or [])] item = { "type": "computer_call", "id": builder.item_id, @@ -878,10 +861,10 @@ def output_item_computer_call( def output_item_computer_call_output( self, call_id: str, - output: generated_models.ComputerScreenshotImage, + output: response_models.ComputerScreenshotImage, *, - acknowledged_safety_checks: list[generated_models.ComputerCallSafetyCheckParam] | None = None, - ) -> Iterator[generated_models.ResponseStreamEvent]: + acknowledged_safety_checks: list[response_models.ComputerCallSafetyCheckParam] | None = None, + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a computer call output item. :param call_id: The call ID this output belongs to. @@ -894,8 +877,8 @@ def output_item_computer_call_output( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_computer_call_output() - output_dict = _as_dict(output) - checks = [_as_dict(c) for c in (acknowledged_safety_checks or [])] + output_dict = _require_wire_dict(output, "output") + checks = [_require_wire_dict(c, "acknowledged_safety_checks item") for c in (acknowledged_safety_checks or [])] item = { "type": "computer_call_output", "id": builder.item_id, @@ -908,10 +891,10 @@ def output_item_computer_call_output( def output_item_local_shell_call( self, call_id: str, - action: generated_models.LocalShellExecAction, + action: response_models.LocalShellExecAction, *, status: str = "completed", - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a local shell call output item. :param call_id: Unique identifier for this tool call. @@ -924,7 +907,7 @@ def output_item_local_shell_call( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_local_shell_call() - action_dict = _as_dict(action) + action_dict = _require_wire_dict(action, "action") item = { "type": "local_shell_call", "id": builder.item_id, @@ -934,7 +917,7 @@ def output_item_local_shell_call( } yield from self._emit_simple_item(builder, item) - def output_item_local_shell_call_output(self, output: str) -> Iterator[generated_models.ResponseStreamEvent]: + def output_item_local_shell_call_output(self, output: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a local shell call output item. :param output: The shell output string. @@ -949,11 +932,11 @@ def output_item_local_shell_call_output(self, output: str) -> Iterator[generated def output_item_function_shell_call( self, call_id: str, - action: generated_models.FunctionShellAction, - environment: generated_models.FunctionShellCallEnvironment, + action: response_models.FunctionShellAction, + environment: response_models.FunctionShellCallEnvironment, *, status: str = "completed", - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a function shell call output item. :param call_id: Unique identifier for this tool call. @@ -968,8 +951,8 @@ def output_item_function_shell_call( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_function_shell_call() - action_dict = _as_dict(action) - env_dict = _as_dict(environment) + action_dict = _require_wire_dict(action, "action") + env_dict = _require_wire_dict(environment, "environment") item = { "type": "shell_call", "id": builder.item_id, @@ -983,11 +966,11 @@ def output_item_function_shell_call( def output_item_function_shell_call_output( self, call_id: str, - output: list[generated_models.FunctionShellCallOutputContent], + output: list[response_models.FunctionShellCallOutputContent], *, status: str = "completed", max_output_length: int | None = None, - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a function shell call output item. :param call_id: The call ID this output belongs to. @@ -1002,7 +985,7 @@ def output_item_function_shell_call_output( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_function_shell_call_output() - output_list = [_as_dict(o) for o in output] + output_list = [_require_wire_dict(o, "output item") for o in output] item = { "type": "shell_call_output", "id": builder.item_id, @@ -1016,10 +999,10 @@ def output_item_function_shell_call_output( def output_item_apply_patch_call( self, call_id: str, - operation: generated_models.ApplyPatchFileOperation, + operation: response_models.ApplyPatchFileOperation, *, status: str = "completed", - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for an apply-patch call output item. :param call_id: Unique identifier for this tool call. @@ -1032,7 +1015,7 @@ def output_item_apply_patch_call( :rtype: Iterator[ResponseStreamEvent] """ builder = self.add_output_item_apply_patch_call() - op_dict = _as_dict(operation) + op_dict = _require_wire_dict(operation, "operation") item = { "type": "apply_patch_call", "id": builder.item_id, @@ -1048,7 +1031,7 @@ def output_item_apply_patch_call_output( *, status: str = "completed", output: str | None = None, - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for an apply-patch call output item. :param call_id: The call ID this output belongs to. @@ -1074,8 +1057,8 @@ def output_item_apply_patch_call_output( def output_item_custom_tool_call_output( self, call_id: str, - output: str | list[generated_models.FunctionAndCustomToolCallOutput], - ) -> Iterator[generated_models.ResponseStreamEvent]: + output: str | list[response_models.FunctionAndCustomToolCallOutput], + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a custom tool call output item. :param call_id: The call ID this output belongs to. @@ -1088,7 +1071,7 @@ def output_item_custom_tool_call_output( builder = self.add_output_item_custom_tool_call_output() output_val: Any if isinstance(output, list): - output_val = [_as_dict(o) for o in output] + output_val = [_require_wire_dict(o, "output item") for o in output] else: output_val = output item = { @@ -1101,7 +1084,7 @@ def output_item_custom_tool_call_output( def output_item_mcp_approval_request( self, server_label: str, name: str, arguments: str - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for an MCP approval request item. :param server_label: Label identifying the MCP server. @@ -1129,7 +1112,7 @@ def output_item_mcp_approval_response( approve: bool, *, reason: str | None = None, - ) -> Iterator[generated_models.ResponseStreamEvent]: + ) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for an MCP approval response item. :param approval_request_id: The request ID being responded to. @@ -1152,7 +1135,7 @@ def output_item_mcp_approval_response( item["reason"] = reason yield from self._emit_simple_item(builder, item) - def output_item_compaction(self, encrypted_content: str) -> Iterator[generated_models.ResponseStreamEvent]: + def output_item_compaction(self, encrypted_content: str) -> Iterator[response_models.ResponseStreamEvent]: """Yield the full lifecycle for a compaction output item. :param encrypted_content: The encrypted compaction content. @@ -1171,8 +1154,8 @@ async def aoutput_item_message( self, text: str | AsyncIterable[str], *, - annotations: Sequence[generated_models.Annotation] | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + annotations: Sequence[response_models.Annotation] | None = None, + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_message` with streaming support. When *text* is a string, emits the same events as the sync variant. @@ -1208,7 +1191,7 @@ async def aoutput_item_message( async def aoutput_item_function_call( self, name: str, call_id: str, arguments: str | AsyncIterable[str] - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_function_call` with streaming support. When *arguments* is a string, emits the same events as the sync variant. @@ -1236,7 +1219,7 @@ async def aoutput_item_function_call( async def aoutput_item_function_call_output( self, call_id: str, output: str - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_function_call_output`. :param call_id: The call ID of the function call this output belongs to. @@ -1251,7 +1234,7 @@ async def aoutput_item_function_call_output( async def aoutput_item_reasoning_item( self, summary_text: str | AsyncIterable[str] - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_reasoning_item` with streaming support. When *summary_text* is a string, emits the same events as the sync variant. @@ -1278,7 +1261,7 @@ async def aoutput_item_image_gen_call( result_base64: str, *, partials: AsyncIterable[str] | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_image_gen_call` with optional partial streaming. When *partials* is provided, emits ``partial_image`` events between @@ -1301,7 +1284,7 @@ async def aoutput_item_image_gen_call( yield ig.emit_completed() yield ig.emit_done(result_base64) - async def aoutput_item_structured_outputs(self, output: Any) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def aoutput_item_structured_outputs(self, output: Any) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_structured_outputs`. :param output: The structured output data. @@ -1315,11 +1298,11 @@ async def aoutput_item_structured_outputs(self, output: Any) -> AsyncIterator[ge async def aoutput_item_computer_call( self, call_id: str, - action: generated_models.ComputerAction, + action: response_models.ComputerAction, *, - pending_safety_checks: list[generated_models.ComputerCallSafetyCheckParam] | None = None, + pending_safety_checks: list[response_models.ComputerCallSafetyCheckParam] | None = None, status: str = "completed", - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_computer_call`. :param call_id: Unique identifier for this tool call. @@ -1341,10 +1324,10 @@ async def aoutput_item_computer_call( async def aoutput_item_computer_call_output( self, call_id: str, - output: generated_models.ComputerScreenshotImage, + output: response_models.ComputerScreenshotImage, *, - acknowledged_safety_checks: list[generated_models.ComputerCallSafetyCheckParam] | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + acknowledged_safety_checks: list[response_models.ComputerCallSafetyCheckParam] | None = None, + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_computer_call_output`. :param call_id: The call ID this output belongs to. @@ -1364,10 +1347,10 @@ async def aoutput_item_computer_call_output( async def aoutput_item_local_shell_call( self, call_id: str, - action: generated_models.LocalShellExecAction, + action: response_models.LocalShellExecAction, *, status: str = "completed", - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_local_shell_call`. :param call_id: Unique identifier for this tool call. @@ -1384,7 +1367,7 @@ async def aoutput_item_local_shell_call( async def aoutput_item_local_shell_call_output( self, output: str - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_local_shell_call_output`. :param output: The shell output string. @@ -1398,11 +1381,11 @@ async def aoutput_item_local_shell_call_output( async def aoutput_item_function_shell_call( self, call_id: str, - action: generated_models.FunctionShellAction, - environment: generated_models.FunctionShellCallEnvironment, + action: response_models.FunctionShellAction, + environment: response_models.FunctionShellCallEnvironment, *, status: str = "completed", - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_function_shell_call`. :param call_id: Unique identifier for this tool call. @@ -1422,11 +1405,11 @@ async def aoutput_item_function_shell_call( async def aoutput_item_function_shell_call_output( self, call_id: str, - output: list[generated_models.FunctionShellCallOutputContent], + output: list[response_models.FunctionShellCallOutputContent], *, status: str = "completed", max_output_length: int | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_function_shell_call_output`. :param call_id: The call ID this output belongs to. @@ -1448,10 +1431,10 @@ async def aoutput_item_function_shell_call_output( async def aoutput_item_apply_patch_call( self, call_id: str, - operation: generated_models.ApplyPatchFileOperation, + operation: response_models.ApplyPatchFileOperation, *, status: str = "completed", - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_apply_patch_call`. :param call_id: Unique identifier for this tool call. @@ -1472,7 +1455,7 @@ async def aoutput_item_apply_patch_call_output( *, status: str = "completed", output: str | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_apply_patch_call_output`. :param call_id: The call ID this output belongs to. @@ -1490,8 +1473,8 @@ async def aoutput_item_apply_patch_call_output( async def aoutput_item_custom_tool_call_output( self, call_id: str, - output: str | list[generated_models.FunctionAndCustomToolCallOutput], - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + output: str | list[response_models.FunctionAndCustomToolCallOutput], + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_custom_tool_call_output`. :param call_id: The call ID this output belongs to. @@ -1506,7 +1489,7 @@ async def aoutput_item_custom_tool_call_output( async def aoutput_item_mcp_approval_request( self, server_label: str, name: str, arguments: str - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_mcp_approval_request`. :param server_label: Label identifying the MCP server. @@ -1527,7 +1510,7 @@ async def aoutput_item_mcp_approval_response( approve: bool, *, reason: str | None = None, - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_mcp_approval_response`. :param approval_request_id: The request ID being responded to. @@ -1544,7 +1527,7 @@ async def aoutput_item_mcp_approval_response( async def aoutput_item_compaction( self, encrypted_content: str - ) -> AsyncIterator[generated_models.ResponseStreamEvent]: + ) -> AsyncIterator[response_models.ResponseStreamEvent]: """Async variant of :meth:`output_item_compaction`. :param encrypted_content: The encrypted compaction content. @@ -1563,7 +1546,7 @@ def _response_payload(self) -> dict[str, Any]: :returns: A materialized dict representation of the response. :rtype: dict[str, Any] """ - return _internals.materialize_generated_payload(self._response.as_dict()) + return _internals.materialize_wire_payload(self._response) def _with_output_item_defaults(self, item: dict[str, Any]) -> dict[str, Any]: """Stamp an output item dict with response-level defaults. @@ -1580,16 +1563,16 @@ def _with_output_item_defaults(self, item: dict[str, Any]) -> dict[str, Any]: stamped["agent_reference"] = self._agent_reference return stamped - def _set_terminal_fields(self, *, usage: generated_models.ResponseUsage | None) -> None: + def _set_terminal_fields(self, *, usage: response_models.ResponseUsage | None) -> None: """Set terminal fields on the response envelope (completed_at, usage). :keyword usage: Optional usage statistics to attach. - :keyword type usage: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | None + :keyword type usage: ~azure.ai.agentserver.responses.models.ResponseUsage | None :rtype: None """ # B6: completed_at is non-null only for completed status - if self._response.status == "completed": - self._response.completed_at = datetime.now(timezone.utc) + if self._response.get("status") == "completed": + self._response["completed_at"] = datetime.now(timezone.utc) else: - self._response.completed_at = None # type: ignore[assignment] - self._response.usage = _internals.coerce_usage(usage) + self._response["completed_at"] = None + self._response["usage"] = _internals.coerce_usage(usage) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_helpers.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_helpers.py index d7a2844ef9c1..deb348f2bcbd 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_helpers.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_helpers.py @@ -8,8 +8,8 @@ from copy import deepcopy from typing import Any, AsyncIterator -from ..models import _generated as generated_models -from ..models._generated import AgentReference +from azure.ai.agentserver.responses import models as response_models +from azure.ai.agentserver.responses.models import AgentReference from . import _internals from ._event_stream import ResponseEventStream from ._internals import _RESPONSE_SNAPSHOT_EVENT_TYPES @@ -37,10 +37,10 @@ def _build_events( include_progress: bool, agent_reference: AgentReference | dict[str, Any] | None, model: str | None, -) -> list[generated_models.ResponseStreamEvent]: +) -> list[response_models.ResponseStreamEvent]: """Build a minimal lifecycle event sequence for a response. - Returns ``ResponseStreamEvent`` model instances representing the standard + Returns ``ResponseStreamEvent`` wire payloads representing the standard lifecycle: ``response.created`` → (optionally) ``response.in_progress`` → ``response.completed``. @@ -48,22 +48,16 @@ def _build_events( :type response_id: str :keyword include_progress: Whether to include an ``in_progress`` event. :keyword type include_progress: bool - :keyword agent_reference: Agent reference model or metadata dict. + :keyword agent_reference: Agent reference metadata dict. :keyword type agent_reference: AgentReference | dict[str, Any] :keyword model: Optional model identifier. :keyword type model: str | None - :returns: A list of typed ``ResponseStreamEvent`` model instances. - :rtype: list[~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent] + :returns: A list of typed ``ResponseStreamEvent`` wire payloads. + :rtype: list[~azure.ai.agentserver.responses.models.ResponseStreamEvent] """ - if agent_reference is None: - ref = None - elif isinstance(agent_reference, AgentReference): - ref = agent_reference - else: - ref = AgentReference(agent_reference) stream = ResponseEventStream( response_id=response_id, - agent_reference=ref, + agent_reference=agent_reference, model=model, ) stream.emit_created(status="in_progress") @@ -73,8 +67,8 @@ def _build_events( return list(stream._events) # pylint: disable=protected-access -async def _encode_sse(events: list[generated_models.ResponseStreamEvent]) -> AsyncIterator[str]: - """Encode a list of ``ResponseStreamEvent`` model instances as SSE-formatted strings. +async def _encode_sse(events: list[response_models.ResponseStreamEvent]) -> AsyncIterator[str]: + """Encode a list of ``ResponseStreamEvent`` wire payloads as SSE-formatted strings. :param events: The events to encode. :type events: list[ResponseStreamEvent] @@ -86,16 +80,12 @@ async def _encode_sse(events: list[generated_models.ResponseStreamEvent]) -> Asy def _coerce_handler_event( - handler_event: generated_models.ResponseStreamEvent | dict[str, Any], -) -> generated_models.ResponseStreamEvent: - """Coerce a handler event to a ``ResponseStreamEvent`` model instance. + handler_event: response_models.ResponseStreamEvent | dict[str, Any], +) -> response_models.ResponseStreamEvent: + """Coerce a handler event to a response stream wire payload. Handlers may yield events in any of these shapes: - - **Generated event models** (already typed):: - - ResponseCreatedEvent(response={...}, sequence_number=0) - - **Wire / SSE format** for lifecycle events:: {"type": "response.created", "response": {"id": "...", "status": "in_progress", ...}, "sequence_number": 0} @@ -104,38 +94,29 @@ def _coerce_handler_event( {"type": "response.output_text.delta", "output_index": 0, "delta": "Hello", "sequence_number": 3} - All shapes are normalised to a ``ResponseStreamEvent`` model instance - for typed internal pipeline processing. + Events are normalised to plain dict wire payloads for internal processing. - :param handler_event: The event to normalize (dict or model instance). + :param handler_event: The event to normalize. :type handler_event: ResponseStreamEvent | dict[str, Any] - :returns: A typed ``ResponseStreamEvent`` model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent - :raises TypeError: If the event is not a dict or a model with ``as_dict()``. + :returns: A response stream wire payload. + :rtype: ~azure.ai.agentserver.responses.models.ResponseStreamEvent + :raises TypeError: If the event is not a dict. :raises ValueError: If the event does not include a non-empty ``type``. """ - from ._internals import construct_event_model # pylint: disable=import-outside-toplevel - - # Already a typed model — return a copy via as_dict() round-trip. - if isinstance(handler_event, generated_models.ResponseStreamEvent): - return construct_event_model(handler_event.as_dict()) - if isinstance(handler_event, dict): event_data = deepcopy(handler_event) - elif hasattr(handler_event, "as_dict"): - event_data = handler_event.as_dict() else: - raise TypeError("handler events must be dictionaries or generated event models") + raise TypeError("handler events must be dictionaries") event_type = event_data.get("type") if not isinstance(event_type, str) or not event_type: raise ValueError("handler event must include a non-empty 'type'") - return construct_event_model(event_data) + return event_data def _apply_stream_event_defaults( - event: generated_models.ResponseStreamEvent, + event: response_models.ResponseStreamEvent, *, response_id: str, agent_reference: AgentReference | dict[str, Any], @@ -143,10 +124,10 @@ def _apply_stream_event_defaults( sequence_number: int | None, agent_session_id: str | None = None, conversation_id: str | None = None, -) -> generated_models.ResponseStreamEvent: - """Apply response-level defaults to a ``ResponseStreamEvent`` model instance. +) -> response_models.ResponseStreamEvent: + """Apply response-level defaults to a ``ResponseStreamEvent`` wire payload. - For lifecycle events whose ``response`` attribute carries a ``Response`` + For lifecycle events whose ``response`` key carries a ``Response`` snapshot, stamps ``id``, ``response_id``, ``object``, ``agent_reference``, ``model``, and ``agent_session_id`` using ``setdefault`` so handler-supplied values are not overwritten (except ``agent_session_id`` which is forcibly @@ -155,11 +136,11 @@ def _apply_stream_event_defaults( ``sequence_number`` is always applied at the top level of the event, because it lives on the ``ResponseStreamEvent`` base class. - :param event: The event model instance to enrich. + :param event: The event payload to enrich. :type event: ResponseStreamEvent :keyword response_id: Response ID to stamp in lifecycle-event payloads. :keyword type response_id: str - :keyword agent_reference: Agent reference model or metadata dict. + :keyword agent_reference: Agent reference metadata dict. :keyword type agent_reference: AgentReference | dict[str, Any] :keyword model: Optional model identifier. :keyword type model: str | None @@ -177,7 +158,7 @@ def _apply_stream_event_defaults( _internals.apply_common_defaults( [normalized], response_id=response_id, - agent_reference=agent_reference if agent_reference else {}, + agent_reference=agent_reference, model=model, agent_session_id=agent_session_id, conversation_id=conversation_id, @@ -200,7 +181,7 @@ def _apply_stream_event_defaults( def _extract_response_snapshot_from_events( - events: list[generated_models.ResponseStreamEvent], + events: list[response_models.ResponseStreamEvent], *, response_id: str, agent_reference: AgentReference | dict[str, Any], @@ -219,7 +200,7 @@ def _extract_response_snapshot_from_events( :type events: list[dict[str, Any]] :keyword response_id: Response ID for default stamping. :keyword type response_id: str - :keyword agent_reference: Agent reference model or metadata dict. + :keyword agent_reference: Agent reference metadata dict. :keyword type agent_reference: AgentReference | dict[str, Any] :keyword model: Optional model identifier. :keyword type model: str | None @@ -236,13 +217,16 @@ def _extract_response_snapshot_from_events( event_type = event.get("type") snapshot_source = event.get("response") if event_type in _RESPONSE_SNAPSHOT_EVENT_TYPES and isinstance(snapshot_source, MutableMapping): - if hasattr(snapshot_source, "as_dict"): - snapshot = snapshot_source.as_dict() # type: ignore[union-attr] - else: - snapshot = deepcopy(dict(snapshot_source)) + snapshot = deepcopy(snapshot_source) snapshot.setdefault("id", response_id) snapshot.setdefault("response_id", response_id) - snapshot.setdefault("agent_reference", deepcopy(agent_reference)) + existing_agent_reference = snapshot.get("agent_reference") + if ( + not isinstance(existing_agent_reference, MutableMapping) + or not existing_agent_reference + or (_internals.is_default_agent_reference(existing_agent_reference) and bool(agent_reference)) + ): + snapshot["agent_reference"] = _internals.response_agent_reference(agent_reference) snapshot.setdefault("object", "response") snapshot.setdefault("output", []) if model is not None: @@ -263,11 +247,11 @@ def _extract_response_snapshot_from_events( agent_reference=agent_reference, model=model, ) - # _build_events returns model instances — extract snapshot from the last lifecycle event. + # _build_events returns wire payloads — extract snapshot from the last lifecycle event. last_event = fallback_events[-1] - last_wire = last_event.as_dict() - fallback_snapshot = dict(last_wire.get("response", {})) + fallback_snapshot = deepcopy(last_event.get("response", {})) fallback_snapshot.setdefault("output", []) + fallback_snapshot["agent_reference"] = _internals.response_agent_reference(agent_reference) # S-038: forcibly stamp session ID on fallback snapshot if agent_session_id is not None: fallback_snapshot["agent_session_id"] = agent_session_id diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_internals.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_internals.py index 4013fdb8a62a..b584544e1a33 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_internals.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_internals.py @@ -2,59 +2,53 @@ # Licensed under the MIT license. """Internal helper functions extracted from ResponseEventStream. -These are pure or near-pure functions that operate on event dicts -and generated model objects. They carry no mutable state of their own. +These are pure or near-pure functions that operate on event dicts and wire +payloads. They carry no mutable state of their own. """ from __future__ import annotations -from collections.abc import Callable, MutableMapping +from collections.abc import MutableMapping from copy import deepcopy from types import GeneratorType from typing import Any, cast -from ..models import _generated as generated_models -from ..models._generated import AgentReference +from azure.ai.agentserver.responses import models as response_models +from azure.ai.agentserver.responses.models import AgentReference # Event types whose ``response`` field is a full Response snapshot. # Only these events should carry id/response_id/object/agent_reference/model. _RESPONSE_SNAPSHOT_EVENT_TYPES: frozenset[str] = frozenset( { - generated_models.ResponseStreamEventType.RESPONSE_QUEUED.value, - generated_models.ResponseStreamEventType.RESPONSE_CREATED.value, - generated_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, - generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, - generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, + response_models.ResponseStreamEventType.RESPONSE_QUEUED.value, + response_models.ResponseStreamEventType.RESPONSE_CREATED.value, + response_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value, + response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, + response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, } ) +_DEFAULT_AGENT_REFERENCE: dict[str, str] = { + "type": "agent_reference", + "name": "server-default-agent", +} + # --------------------------------------------------------------------------- # Pure / near-pure helpers # --------------------------------------------------------------------------- -def construct_event_model(wire_dict: dict[str, Any]) -> generated_models.ResponseStreamEvent: - """Construct a typed ``ResponseStreamEvent`` subclass from a wire-format dict. - - Uses the discriminator-based ``__mapping__`` on the base class for - polymorphic dispatch. For example, a dict with ``"type": "response.created"`` - produces a ``ResponseCreatedEvent`` instance. +def construct_event_model(wire_dict: dict[str, Any]) -> response_models.ResponseStreamEvent: + """Return a copied ``ResponseStreamEvent`` wire payload. :param wire_dict: A wire-format event dict. :type wire_dict: dict[str, Any] - :returns: A typed event model instance. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent + :returns: A copied event wire payload. + :rtype: ~azure.ai.agentserver.responses.models.ResponseStreamEvent """ - event_type = wire_dict.get("type", "") - if isinstance(event_type, str): - event_class = generated_models.ResponseStreamEvent.__mapping__.get(event_type) - if event_class is not None: - # __mapping__ values are classes; the generated type annotation is imprecise. - constructor = cast(Callable[[dict[str, Any]], generated_models.ResponseStreamEvent], event_class) - return constructor(wire_dict) - return generated_models.ResponseStreamEvent(wire_dict) + return cast(response_models.ResponseStreamEvent, deepcopy(wire_dict)) def enum_value(value: Any) -> Any: @@ -69,9 +63,9 @@ def enum_value(value: Any) -> Any: def coerce_model_mapping(value: Any) -> dict[str, Any] | None: - """Normalise a generated model, dict, or ``None`` to a plain dict copy. + """Normalise a wire mapping or ``None`` to a plain dict copy. - :param value: A generated model, a dict, or ``None``. + :param value: A wire mapping, or ``None``. :type value: Any :returns: A deep-copied plain dict, or ``None`` if *value* is ``None`` or not coercible. :rtype: dict[str, Any] | None @@ -80,14 +74,31 @@ def coerce_model_mapping(value: Any) -> dict[str, Any] | None: return None if isinstance(value, dict): return deepcopy(value) - if hasattr(value, "as_dict"): - result = value.as_dict() - if isinstance(result, dict): - return result return None -def materialize_generated_payload(value: Any) -> Any: +def response_agent_reference(agent_reference: AgentReference | dict[str, Any] | None) -> dict[str, Any]: + """Return a valid response-level agent reference wire payload. + + An empty dict is still used elsewhere as the sentinel for "do not stamp + output items", but response snapshots must carry a valid agent_reference + object. + """ + if isinstance(agent_reference, MutableMapping) and agent_reference: + return deepcopy(agent_reference) + return deepcopy(_DEFAULT_AGENT_REFERENCE) + + +def is_default_agent_reference(value: Any) -> bool: + return ( + isinstance(value, MutableMapping) + and value.get("type") == _DEFAULT_AGENT_REFERENCE["type"] + and value.get("name") == _DEFAULT_AGENT_REFERENCE["name"] + and not value.get("version") + ) + + +def materialize_wire_payload(value: Any) -> Any: """Recursively resolve generators/tuples to plain lists/dicts. :param value: A nested structure that may contain generators or tuples. @@ -96,18 +107,18 @@ def materialize_generated_payload(value: Any) -> Any: :rtype: Any """ if isinstance(value, dict): - return {key: materialize_generated_payload(item) for key, item in value.items()} + return {key: materialize_wire_payload(item) for key, item in value.items()} if isinstance(value, list): - return [materialize_generated_payload(item) for item in value] + return [materialize_wire_payload(item) for item in value] if isinstance(value, tuple): - return [materialize_generated_payload(item) for item in value] + return [materialize_wire_payload(item) for item in value] if isinstance(value, GeneratorType): - return [materialize_generated_payload(item) for item in value] + return [materialize_wire_payload(item) for item in value] return value def apply_common_defaults( - events: list[generated_models.ResponseStreamEvent], + events: list[response_models.ResponseStreamEvent], *, response_id: str, agent_reference: AgentReference | dict[str, Any] | None, @@ -125,7 +136,7 @@ def apply_common_defaults( event types carry different schemas per the contract and are left untouched. Events must use wire format where the snapshot is nested under the - ``"response"`` key (``ResponseStreamEvent`` models or equivalent dicts). + ``"response"`` key. **S-038**: ``agent_session_id`` is forcibly stamped (not ``setdefault``) on every ``response.*`` event so the resolved session ID is always @@ -134,7 +145,7 @@ def apply_common_defaults( **S-040**: ``conversation`` is forcibly stamped on every ``response.*`` event so the resolved conversation round-trips on all lifecycle events. - :param events: The list of events to mutate (``ResponseStreamEvent`` models). + :param events: The list of event payloads to mutate. :type events: list[ResponseStreamEvent] :keyword response_id: Response ID to set as default. :keyword type response_id: str @@ -158,8 +169,13 @@ def apply_common_defaults( snapshot.setdefault("id", response_id) snapshot.setdefault("response_id", response_id) snapshot.setdefault("object", "response") - if agent_reference is not None: - snapshot.setdefault("agent_reference", deepcopy(agent_reference)) + existing_agent_reference = snapshot.get("agent_reference") + if ( + not isinstance(existing_agent_reference, MutableMapping) + or not existing_agent_reference + or (is_default_agent_reference(existing_agent_reference) and bool(agent_reference)) + ): + snapshot["agent_reference"] = response_agent_reference(agent_reference) if model is not None: snapshot.setdefault("model", model) # S-038: forcibly stamp session ID on every response.* event @@ -171,8 +187,8 @@ def apply_common_defaults( def track_completed_output_item( - response: generated_models.ResponseObject, - event: generated_models.ResponseStreamEvent, + response: response_models.ResponseObject, + event: response_models.ResponseStreamEvent, ) -> None: """When an output-item-done event arrives, persist the item on the response. @@ -180,12 +196,12 @@ def track_completed_output_item( stores the item at the appropriate index in ``response.output``. :param response: The response envelope to which the completed item is attached. - :type response: ~azure.ai.agentserver.responses.models._generated.Response - :param event: The event to inspect (``ResponseStreamEvent`` model instance). + :type response: ~azure.ai.agentserver.responses.models.ResponseObject + :param event: The event to inspect. :type event: ResponseStreamEvent :rtype: None """ - if event.get("type") != generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value: + if event.get("type") != response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value: return output_index = event.get("output_index") @@ -194,51 +210,41 @@ def track_completed_output_item( if not isinstance(output_index, int) or output_index < 0 or item_raw is None: return - # Coerce item to a plain dict for the OutputItem constructor - if hasattr(item_raw, "as_dict"): - item_dict = item_raw.as_dict() - elif isinstance(item_raw, dict): + if isinstance(item_raw, dict): item_dict = deepcopy(item_raw) else: return - output_items: list[Any] = response.output if isinstance(response.output, list) else [] - if not isinstance(response.output, list): - response.output = output_items - - try: - typed_item: Any = generated_models.OutputItem._deserialize(item_dict, []) # pylint: disable=protected-access - except Exception: # pylint: disable=broad-exception-caught - typed_item = deepcopy(item_dict) + output_items: list[Any] = response.get("output") if isinstance(response.get("output"), list) else [] + if not isinstance(response.get("output"), list): + response["output"] = output_items while len(output_items) <= output_index: output_items.append(None) - output_items[output_index] = typed_item + output_items[output_index] = deepcopy(item_dict) def coerce_usage( - usage: generated_models.ResponseUsage | dict[str, Any] | None, -) -> generated_models.ResponseUsage | None: - """Normalise a usage value to a generated ``ResponseUsage`` instance. - - :param usage: A usage dict, a ``ResponseUsage`` model, or ``None``. - :type usage: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | dict[str, Any] | None - :returns: A ``ResponseUsage`` instance, or ``None`` if *usage* is ``None``. - :rtype: ~azure.ai.agentserver.responses.models._generated.ResponseUsage | None - :raises TypeError: If *usage* is not a dict or a generated ``ResponseUsage`` model. + usage: response_models.ResponseUsage | dict[str, Any] | None, +) -> dict[str, Any] | None: + """Normalise a usage value to a plain wire dict. + + :param usage: A usage dict or ``None``. + :type usage: ~azure.ai.agentserver.responses.models.ResponseUsage | dict[str, Any] | None + :returns: A usage dict, or ``None`` if *usage* is ``None``. + :rtype: dict[str, Any] | None + :raises TypeError: If *usage* is not a dict. """ if usage is None: return None if isinstance(usage, dict): - return generated_models.ResponseUsage(deepcopy(usage)) - if hasattr(usage, "as_dict"): - return generated_models.ResponseUsage(usage.as_dict()) - raise TypeError("usage must be a dict or a generated ResponseUsage model") + return deepcopy(usage) + raise TypeError("usage must be a dict") def extract_response_fields( - response: generated_models.ResponseObject, + response: response_models.ResponseObject, ) -> tuple[AgentReference | dict[str, Any] | None, str | None]: """Pull ``agent_reference`` and ``model`` from a response in one pass. @@ -252,7 +258,7 @@ def extract_response_fields( return None, None agent_reference = payload.get("agent_reference") agent_ref: AgentReference | dict[str, Any] | None = ( - dict(agent_reference) if isinstance(agent_reference, MutableMapping) else None + deepcopy(agent_reference) if isinstance(agent_reference, MutableMapping) else None ) model = payload.get("model") model_str = model if isinstance(model, str) and model else None diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_sse.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_sse.py index 9152500afa10..602d0babb9f1 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_sse.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_sse.py @@ -10,7 +10,7 @@ from datetime import date, datetime, time, timedelta from typing import Any, Mapping -from ..models._generated import ResponseStreamEvent +from azure.ai.agentserver.responses.models import ResponseStreamEvent _stream_counter_var: ContextVar[itertools.count] = ContextVar("_stream_counter_var") @@ -18,8 +18,7 @@ def _json_default(o: Any) -> Any: """JSON encoder default for datetime and bytes. - Handles datetime objects that leak through model ``as_dict()`` calls - by serializing to ISO-8601 strings (or Unix timestamps for datetime). + Serializes datetime-like values to JSON-friendly wire values. :param o: The object to encode. :type o: Any @@ -68,9 +67,7 @@ def _next_sequence_number() -> int: def _coerce_payload(event: Any) -> tuple[str, dict[str, Any]]: - """Extract and normalize event type and payload from an event object. - - Supports dict-like, model-with-``as_dict()``, and plain-object event sources. + """Extract and normalize event type and payload from an event mapping. :param event: The SSE event object to coerce. :type event: Any @@ -78,18 +75,10 @@ def _coerce_payload(event: Any) -> tuple[str, dict[str, Any]]: :rtype: tuple[str, dict[str, Any]] :raises ValueError: If the event does not include a non-empty ``type``. """ - event_type = getattr(event, "type", None) - - if isinstance(event, Mapping): - payload = dict(event) - if event_type is None: - event_type = payload.get("type") - elif hasattr(event, "as_dict"): - payload = event.as_dict() # type: ignore[assignment] - if event_type is None: - event_type = payload.get("type") - else: - payload = {key: value for key, value in vars(event).items() if not key.startswith("_")} + if not isinstance(event, Mapping): + raise TypeError("SSE event must be a mapping") + payload = event.copy() if isinstance(event, dict) else {key: value for key, value in event.items()} + event_type = payload.get("type") if not event_type: raise ValueError("SSE event must include a non-empty 'type'") @@ -101,14 +90,14 @@ def _coerce_payload(event: Any) -> tuple[str, dict[str, Any]]: def _ensure_sequence_number(event: Any, payload: dict[str, Any]) -> None: """Ensure the payload has a valid ``sequence_number``, assigning one if missing. - :param event: The original event object (used for attribute fallback). + :param event: The original event mapping. :type event: Any :param payload: The payload dict to mutate. :type payload: dict[str, Any] :rtype: None """ explicit = payload.get("sequence_number") - event_value = getattr(event, "sequence_number", None) + event_value = event.get("sequence_number") if isinstance(event, Mapping) else None candidate = explicit if explicit is not None else event_value if not isinstance(candidate, int) or candidate < 0: @@ -139,17 +128,11 @@ def _build_sse_frame(event_type: str, payload: dict[str, Any]) -> str: def encode_sse_event(event: ResponseStreamEvent) -> str: """Encode a response stream event into SSE wire format. - :param event: Generated response stream event model. - :type event: ~azure.ai.agentserver.responses.models._generated.ResponseStreamEvent + :param event: Response stream event wire payload. + :type event: ~azure.ai.agentserver.responses.models.ResponseStreamEvent :returns: Encoded SSE payload string. :rtype: str """ - if hasattr(event, "as_dict"): - wire = event.as_dict() - event_type = str(wire.get("type", "")) - _ensure_sequence_number(event, wire) - return _build_sse_frame(event_type, wire) - # Fallback for non-model event objects (e.g. plain dataclass-like) event_type, payload = _coerce_payload(event) _ensure_sequence_number(event, payload) return _build_sse_frame(event_type, {"type": event_type, **payload}) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_state_machine.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_state_machine.py index 1d31d92815d0..84824f26e5ac 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_state_machine.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_state_machine.py @@ -7,14 +7,14 @@ from copy import deepcopy from typing import Any, Mapping, MutableMapping, Sequence, cast -from ..models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models OUTPUT_ITEM_DELTA_EVENT_TYPE = "response.output_item.delta" _TERMINAL_EVENT_TYPES = { - generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, - generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, - generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, + response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value, + response_models.ResponseStreamEventType.RESPONSE_FAILED.value, + response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value, } _TERMINAL_TYPE_STATUS: dict[str, set[str]] = { "response.completed": {"completed"}, @@ -22,16 +22,16 @@ "response.incomplete": {"incomplete"}, } _OUTPUT_ITEM_EVENT_TYPES = { - generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, + response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value, OUTPUT_ITEM_DELTA_EVENT_TYPE, - generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, + response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value, } _EVENT_STAGES = { - generated_models.ResponseStreamEventType.RESPONSE_CREATED.value: 0, - generated_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value: 1, - generated_models.ResponseStreamEventType.RESPONSE_COMPLETED.value: 2, - generated_models.ResponseStreamEventType.RESPONSE_FAILED.value: 2, - generated_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value: 2, + response_models.ResponseStreamEventType.RESPONSE_CREATED.value: 0, + response_models.ResponseStreamEventType.RESPONSE_IN_PROGRESS.value: 1, + response_models.ResponseStreamEventType.RESPONSE_COMPLETED.value: 2, + response_models.ResponseStreamEventType.RESPONSE_FAILED.value: 2, + response_models.ResponseStreamEventType.RESPONSE_INCOMPLETE.value: 2, } @@ -62,7 +62,7 @@ def validate_next(self, event: Mapping[str, Any]) -> None: if not isinstance(event_type, str) or not event_type: raise ValueError("each lifecycle event must include a non-empty type") - if self._event_count == 0 and event_type != generated_models.ResponseStreamEventType.RESPONSE_CREATED.value: + if self._event_count == 0 and event_type != response_models.ResponseStreamEventType.RESPONSE_CREATED.value: raise ValueError("first lifecycle event must be response.created") self._event_count += 1 @@ -99,7 +99,7 @@ def validate_next(self, event: Mapping[str, Any]) -> None: output_index_raw = event.get("output_index", 0) output_index = output_index_raw if isinstance(output_index_raw, int) and output_index_raw >= 0 else 0 - if event_type == generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value: + if event_type == response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_ADDED.value: if output_index in self._done_indexes: raise ValueError("cannot add output item after it has been marked done") self._added_indexes.add(output_index) @@ -108,7 +108,7 @@ def validate_next(self, event: Mapping[str, Any]) -> None: if output_index not in self._added_indexes: raise ValueError("output item delta/done requires a preceding output_item.added") - if event_type == generated_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value: + if event_type == response_models.ResponseStreamEventType.RESPONSE_OUTPUT_ITEM_DONE.value: self._done_indexes.add(output_index) return @@ -175,7 +175,7 @@ def _normalize_lifecycle_events( if not normalized: normalized = [ { - "type": generated_models.ResponseStreamEventType.RESPONSE_CREATED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_CREATED.value, "response": { "id": response_id, "object": "response", @@ -193,7 +193,7 @@ def _normalize_lifecycle_events( if terminal_count == 0: normalized.append( { - "type": generated_models.ResponseStreamEventType.RESPONSE_FAILED.value, + "type": response_models.ResponseStreamEventType.RESPONSE_FAILED.value, "response": { "id": response_id, "object": "response", diff --git a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_text_response.py b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_text_response.py index 5e557ff19c85..a5b95a32efb3 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_text_response.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/azure/ai/agentserver/responses/streaming/_text_response.py @@ -19,12 +19,12 @@ from collections.abc import AsyncIterable from typing import TYPE_CHECKING, AsyncIterator, Awaitable, Callable, Union -from ..models import _generated as generated_models +from azure.ai.agentserver.responses import models as response_models from ._event_stream import ResponseEventStream if TYPE_CHECKING: from .._response_context import ResponseContext - from ..models._generated import CreateResponse, ResponseObject + from azure.ai.agentserver.responses.models import CreateResponse, ResponseObject #: Union of all accepted text sources. TextSource = Union[str, Callable[[], Union[str, Awaitable[str]]], AsyncIterable[str]] @@ -86,10 +86,10 @@ def __init__( self._text = text self._configure = configure - def __aiter__(self) -> AsyncIterator[generated_models.ResponseStreamEvent]: + def __aiter__(self) -> AsyncIterator[response_models.ResponseStreamEvent]: return self._generate() - async def _generate(self) -> AsyncIterator[generated_models.ResponseStreamEvent]: + async def _generate(self) -> AsyncIterator[response_models.ResponseStreamEvent]: stream = ResponseEventStream( response_id=self._context.response_id, request=self._request, diff --git a/sdk/agentserver/azure-ai-agentserver-responses/pyproject.toml b/sdk/agentserver/azure-ai-agentserver-responses/pyproject.toml index 8d86e6e143a1..9e2e348ef3f7 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/pyproject.toml +++ b/sdk/agentserver/azure-ai-agentserver-responses/pyproject.toml @@ -48,7 +48,10 @@ exclude = [ ] [tool.setuptools.package-data] -pytyped = ["py.typed"] +pytyped = [ + "py.typed", + "models/_generated/py.typed", +] [tool.mypy] python_version = "3.10" diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_04_function_calling.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_04_function_calling.py index 62a6ee7dd3b4..536994d34cdd 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_04_function_calling.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_04_function_calling.py @@ -46,16 +46,14 @@ ResponseEventStream, ResponsesAgentServerHost, ) -from azure.ai.agentserver.responses.models import FunctionCallOutputItemParam - app = ResponsesAgentServerHost() async def _find_function_call_output(context: ResponseContext) -> str | None: """Return the output string from the first function_call_output item, or None.""" for item in await context.get_input_items(): - if isinstance(item, FunctionCallOutputItemParam): - output = item.output + if item.get("type") == "function_call_output": + output = item.get("output") if isinstance(output, str): return output return None diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_07_customization.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_07_customization.py index b01485ea29de..e6452884a59a 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_07_customization.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_07_customization.py @@ -7,7 +7,7 @@ - ``ResponsesServerOptions`` for default model, SSE keep-alive, and shutdown grace period. - ``log_level`` on the host for verbose logging. - - A handler that relies on ``request.model``, which is automatically + - A handler that relies on ``request["model"]``, which is automatically filled from ``default_model`` when the client omits it. Usage:: @@ -53,7 +53,7 @@ async def handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): """Echo handler that reports which model is being used.""" input_text = await context.get_input_text() - return TextResponse(context, request, text=f"[model={request.model}] Echo: {input_text}") + return TextResponse(context, request, text=f"[model={request.get('model')}] Echo: {input_text}") def main() -> None: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_10_streaming_upstream.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_10_streaming_upstream.py index 060480873a2a..272ee0462320 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_10_streaming_upstream.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_10_streaming_upstream.py @@ -67,17 +67,17 @@ def _build_response_snapshot(request: CreateResponse, context: ResponseContext) "id": context.response_id, "object": "response", "status": "in_progress", - "model": request.model or "", + "model": request.get("model") or "", "output": [], } - if request.metadata is not None: - snapshot["metadata"] = request.metadata - if request.background is not None: - snapshot["background"] = request.background - if request.previous_response_id is not None: - snapshot["previous_response_id"] = request.previous_response_id + if request.get("metadata") is not None: + snapshot["metadata"] = request["metadata"] + if request.get("background") is not None: + snapshot["background"] = request["background"] + if request.get("previous_response_id") is not None: + snapshot["previous_response_id"] = request["previous_response_id"] # Normalize conversation to ConversationReference form. - conv = request.conversation + conv = request.get("conversation") if isinstance(conv, str): snapshot["conversation"] = {"id": conv} elif isinstance(conv, dict) and conv.get("id"): @@ -100,7 +100,7 @@ async def handler( # Build the upstream request — translate every input item. # Both model stacks share the same JSON wire contract, so # serializing our Item to dict round-trips to the OpenAI SDK. - input_items = [item.as_dict() for item in await context.get_input_items()] + input_items = [dict(item) for item in await context.get_input_items()] # This handler owns the response lifecycle — construct the # response snapshot directly instead of forwarding the upstream's. @@ -119,7 +119,7 @@ async def handler( upstream_failed = False async with await upstream.responses.create( - model=request.model or "gpt-4o-mini", + model=request.get("model") or "gpt-4o-mini", input=input_items, # type: ignore[arg-type] stream=True, ) as upstream_stream: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_11_non_streaming_upstream.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_11_non_streaming_upstream.py index 63239e29c716..f068f1d12e99 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_11_non_streaming_upstream.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_11_non_streaming_upstream.py @@ -72,11 +72,11 @@ async def handler( # Build the upstream request — translate every input item. # Both model stacks share the same JSON wire contract, so # serializing our Item to dict round-trips to the OpenAI SDK. - input_items = [item.as_dict() for item in await context.get_input_items()] + input_items = [dict(item) for item in await context.get_input_items()] # Call upstream without streaming and get the complete response. result = await upstream.responses.create( - model=request.model or "gpt-4o-mini", + model=request.get("model") or "gpt-4o-mini", input=input_items, # type: ignore[arg-type] ) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_13_image_input.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_13_image_input.py index 0f85d2caec61..9bb59b0a1ef0 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_13_image_input.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_13_image_input.py @@ -54,7 +54,6 @@ TextResponse, ) from azure.ai.agentserver.responses._data_url import get_media_type, is_data_url, try_decode_bytes -from azure.ai.agentserver.responses.models import ItemMessage, MessageContentInputImageContent app = ResponsesAgentServerHost() @@ -63,10 +62,10 @@ def _extract_images(items): """Extract ``MessageContentInputImageContent`` from expanded input items.""" images = [] for item in items: - if not isinstance(item, ItemMessage): + if item.get("type") != "message": continue - for content in item.content or []: - if isinstance(content, MessageContentInputImageContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_image": images.append(content) return images @@ -78,7 +77,7 @@ async def url_handler(request: CreateResponse, context: ResponseContext): items = await context.get_input_items() images = _extract_images(items) - urls = [img.image_url for img in images if img.image_url and not is_data_url(img.image_url)] + urls = [img["image_url"] for img in images if img.get("image_url") and not is_data_url(img["image_url"])] return TextResponse(context, request, text=f"Received {len(urls)} image URL(s): {', '.join(urls)}") @@ -91,9 +90,10 @@ async def base64_handler(request: CreateResponse, context: ResponseContext): results = [] for img in images: - if img.image_url and is_data_url(img.image_url): - raw = try_decode_bytes(img.image_url) - media = get_media_type(img.image_url) + image_url = img.get("image_url") + if image_url and is_data_url(image_url): + raw = try_decode_bytes(image_url) + media = get_media_type(image_url) size = len(raw) if raw else 0 results.append(f"{media or 'unknown'} ({size} bytes)") return TextResponse(context, request, text=f"Decoded {len(results)} image(s): {'; '.join(results)}") @@ -106,7 +106,7 @@ async def file_id_handler(request: CreateResponse, context: ResponseContext): items = await context.get_input_items() images = _extract_images(items) - file_ids = [img.file_id for img in images if img.file_id] + file_ids = [img["file_id"] for img in images if img.get("file_id")] return TextResponse(context, request, text=f"Received {len(file_ids)} file ID(s): {', '.join(file_ids)}") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_14_file_inputs.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_14_file_inputs.py index 6636d3a3f829..aadd47c22752 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_14_file_inputs.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_14_file_inputs.py @@ -51,7 +51,6 @@ TextResponse, ) from azure.ai.agentserver.responses._data_url import get_media_type, is_data_url, try_decode_bytes -from azure.ai.agentserver.responses.models import ItemMessage, MessageContentInputFileContent app = ResponsesAgentServerHost() @@ -60,10 +59,10 @@ def _extract_files(items): """Extract ``MessageContentInputFileContent`` from expanded input items.""" files = [] for item in items: - if not isinstance(item, ItemMessage): + if item.get("type") != "message": continue - for content in item.content or []: - if isinstance(content, MessageContentInputFileContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_file": files.append(content) return files @@ -77,9 +76,10 @@ async def base64_handler(request: CreateResponse, context: ResponseContext): results = [] for f in files: - if f.file_data and is_data_url(f.file_data): - raw = try_decode_bytes(f.file_data) - media = get_media_type(f.file_data) + file_data = f.get("file_data") + if file_data and is_data_url(file_data): + raw = try_decode_bytes(file_data) + media = get_media_type(file_data) size = len(raw) if raw else 0 results.append(f"{media or 'unknown'} ({size} bytes)") return TextResponse(context, request, text=f"Decoded {len(results)} file(s): {'; '.join(results)}") @@ -92,7 +92,7 @@ async def url_handler(request: CreateResponse, context: ResponseContext): items = await context.get_input_items() files = _extract_files(items) - urls = [f.file_url for f in files if f.file_url] + urls = [f["file_url"] for f in files if f.get("file_url")] return TextResponse(context, request, text=f"Received {len(urls)} file URL(s): {', '.join(urls)}") @@ -103,7 +103,7 @@ async def file_id_handler(request: CreateResponse, context: ResponseContext): items = await context.get_input_items() files = _extract_files(items) - file_ids = [f.file_id for f in files if f.file_id] + file_ids = [f["file_id"] for f in files if f.get("file_id")] return TextResponse(context, request, text=f"Received {len(file_ids)} file ID(s): {', '.join(file_ids)}") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_16_structured_outputs.py b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_16_structured_outputs.py index d39b2dde18c5..1e568edaa3f3 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_16_structured_outputs.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/samples/sample_16_structured_outputs.py @@ -23,7 +23,7 @@ ResponseEventStream, ResponsesAgentServerHost, ) -from azure.ai.agentserver.responses.models._generated import StructuredOutputsOutputItem +from azure.ai.agentserver.responses.models import StructuredOutputsOutputItem app = ResponsesAgentServerHost() diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_bg_isolation_propagation.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_bg_isolation_propagation.py index d9ce0b6f30d8..e2c9bf6111c0 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_bg_isolation_propagation.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_bg_isolation_propagation.py @@ -21,7 +21,7 @@ from azure.ai.agentserver.responses import ResponsesAgentServerHost from azure.ai.agentserver.responses._response_context import PlatformContext -from azure.ai.agentserver.responses.models._generated import OutputItem, ResponseObject +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject from azure.ai.agentserver.responses.store._memory import InMemoryResponseProvider from azure.ai.agentserver.responses.streaming import ResponseEventStream from tests._helpers import poll_until diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_response_invariants.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_response_invariants.py index ca77a6334f26..09e85d238c09 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_response_invariants.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_response_invariants.py @@ -611,18 +611,12 @@ def test_output_item__agent_reference_stamped_on_item() -> None: def _handler_with_agent_ref(request: Any, context: Any, cancellation_signal: Any): """Handler that creates a stream with agent_reference and emits a message item.""" - agent_ref = None - if hasattr(request, "agent_reference") and request.agent_reference is not None: - agent_ref_raw = request.agent_reference - if hasattr(agent_ref_raw, "as_dict"): - agent_ref = agent_ref_raw.as_dict() - elif isinstance(agent_ref_raw, dict): - agent_ref = agent_ref_raw + agent_ref = request.get("agent_reference") if isinstance(request, dict) else None async def _events(): stream = ResponseEventStream( response_id=context.response_id, - model=getattr(request, "model", None), + model=request.get("model") if isinstance(request, dict) else None, agent_reference=agent_ref, ) yield stream.emit_created() diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_event_lifecycle.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_event_lifecycle.py index 4b692142b993..441125068b7b 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_event_lifecycle.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_event_lifecycle.py @@ -27,7 +27,7 @@ from starlette.testclient import TestClient from azure.ai.agentserver.responses import ResponsesAgentServerHost -from azure.ai.agentserver.responses.models._generated import OutputItem, ResponseObject +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject from azure.ai.agentserver.responses.store._base import ( ResponseProviderProtocol, ResponseStreamProviderProtocol, diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_provider_fallback.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_provider_fallback.py index e7f7008594dd..496c73943ba4 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_provider_fallback.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/contract/test_stream_provider_fallback.py @@ -19,7 +19,7 @@ from starlette.testclient import TestClient from azure.ai.agentserver.responses import ResponsesAgentServerHost -from azure.ai.agentserver.responses.models._generated import OutputItem, ResponseObject +from azure.ai.agentserver.responses.models import OutputItem, ResponseObject from azure.ai.agentserver.responses.store._base import ( ResponseProviderProtocol, ResponseStreamProviderProtocol, diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_proxy_e2e.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_proxy_e2e.py index e6d14f72a6f6..fca6b2f28400 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_proxy_e2e.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_proxy_e2e.py @@ -96,7 +96,7 @@ def _emit_text_only_handler(text: str): def handler(request: CreateResponse, context: ResponseContext, cancellation_signal: Any): async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -119,7 +119,7 @@ def _emit_multi_output_handler(request: CreateResponse, context: ResponseContext """Emit 3 output items: reasoning + function_call + text message.""" async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -162,7 +162,7 @@ def _emit_failed_handler(request: CreateResponse, context: ResponseContext, canc """Emit created, in_progress, then failed.""" async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() yield stream.emit_failed(code="server_error", message="Backend processing error") @@ -180,7 +180,7 @@ def _make_streaming_proxy_handler(upstream_client: openai.AsyncOpenAI): def handler(request: CreateResponse, context: ResponseContext, cancellation_signal: Any): async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -193,7 +193,7 @@ async def _events(): full_text: list[str] = [] async with await upstream_client.responses.create( - model=request.model or "gpt-4o-mini", + model=request.get("model") or "gpt-4o-mini", input=user_text, stream=True, ) as upstream_stream: @@ -221,7 +221,7 @@ async def _events(): user_text = await context.get_input_text() or "hello" result = await upstream_client.responses.create( - model=request.model or "gpt-4o-mini", + model=request.get("model") or "gpt-4o-mini", input=user_text, ) @@ -233,7 +233,7 @@ async def _events(): if part.type == "output_text": output_text += part.text - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -257,7 +257,7 @@ def _make_upstream_integration_handler(upstream_client: openai.AsyncOpenAI): def handler(request: CreateResponse, context: ResponseContext, cancellation_signal: Any): async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -272,7 +272,7 @@ async def _events(): text_builder = None async with await upstream_client.responses.create( - model=request.model or "gpt-4o-mini", + model=request.get("model") or "gpt-4o-mini", input=user_text, stream=True, ) as upstream_stream: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_sample_e2e.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_sample_e2e.py index f198fdfb905b..5ac6e7a09942 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_sample_e2e.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/e2e/test_sample_e2e.py @@ -19,8 +19,7 @@ ResponsesServerOptions, TextResponse, ) -from azure.ai.agentserver.responses.models import FunctionCallOutputItemParam, ItemMessage -from azure.ai.agentserver.responses.models._generated import StructuredOutputsOutputItem +from azure.ai.agentserver.responses.models import StructuredOutputsOutputItem # --------------------------------------------------------------------------- # Helpers @@ -62,6 +61,18 @@ def _collect_stream_events(response: Any) -> list[dict[str, Any]]: return events +def _is_item_type(item: Any, type_value: str) -> bool: + return isinstance(item, dict) and item.get("type") == type_value + + +def _message_texts(item: dict[str, Any]) -> list[str]: + return [ + part["text"] + for part in item.get("content") or [] + if isinstance(part, dict) and isinstance(part.get("text"), str) + ] + + def _post_json(client: TestClient, payload: dict[str, Any]) -> Any: return client.post("/responses", json=payload) @@ -245,7 +256,7 @@ def test_sample3_greeting_includes_input() -> None: async def _sample4_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): """Function-calling handler: uses convenience generators for both turns.""" items = await context.get_input_items() - has_fn_output = any(isinstance(item, FunctionCallOutputItemParam) for item in items) + has_fn_output = any(_is_item_type(item, "function_call_output") for item in items) stream = ResponseEventStream(response_id=context.response_id, request=request) yield stream.emit_created() @@ -255,8 +266,8 @@ async def _sample4_handler(request: CreateResponse, context: ResponseContext, ca # Second turn: extract function output and echo it as text fn_output_text = "" for item in items: - if isinstance(item, FunctionCallOutputItemParam): - fn_output_text = item.output or "" + if _is_item_type(item, "function_call_output"): + fn_output_text = item.get("output") or "" break for event in stream.output_item_message(f"The weather is: {fn_output_text}"): yield event @@ -316,10 +327,10 @@ def test_sample4_turn2_returns_weather_text() -> None: async def _sample5_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): """Study tutor handler using TextResponse: welcome on first turn, references previous_response_id on second turn.""" - has_previous = request.previous_response_id is not None and str(request.previous_response_id).strip() != "" + has_previous = request.get("previous_response_id") is not None and str(request.get("previous_response_id")).strip() != "" user_text = await context.get_input_text() if has_previous: - text = f"Building on our previous discussion ({request.previous_response_id}): {user_text}" + text = f"Building on our previous discussion ({request.get('previous_response_id')}): {user_text}" else: text = f"Welcome! I'm your study tutor. You asked: {user_text}" @@ -422,7 +433,7 @@ def _sample7_handler(request: CreateResponse, context: ResponseContext, cancella return TextResponse( context, request, - text=lambda: f"[model={request.model}]", + text=lambda: f"[model={request.get('model')}]", ) @@ -625,7 +636,7 @@ async def _events(): "id": context.response_id, "object": "response", "status": "in_progress", - "model": request.model or "", + "model": request.get("model") or "", "output": [], } @@ -787,15 +798,11 @@ async def _item_ref_echo_handler(request: CreateResponse, context: ResponseConte items = await context.get_input_items() summaries = [] for item in items: - if isinstance(item, ItemMessage): - texts = [] - for part in getattr(item, "content", None) or []: - t = getattr(part, "text", None) - if t: - texts.append(t) + if _is_item_type(item, "message"): + texts = _message_texts(item) summaries.append({"type": "message", "text": " ".join(texts)}) else: - summaries.append({"type": getattr(item, "type", "unknown")}) + summaries.append({"type": item.get("type", "unknown") if isinstance(item, dict) else "unknown"}) return TextResponse(context, request, text=lambda: json.dumps(summaries)) @@ -950,7 +957,7 @@ async def _unresolved_handler( items = await context.get_input_items(resolve_references=False) summaries = [] for item in items: - item_type = getattr(item, "type", "unknown") + item_type = item.get("type", "unknown") if isinstance(item, dict) else "unknown" summaries.append({"type": item_type}) return TextResponse(context, request, text=lambda: json.dumps(summaries)) @@ -1111,53 +1118,50 @@ def test_sample12_image_gen_non_streaming_returns_result() -> None: async def _image_url_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): from azure.ai.agentserver.responses._data_url import is_data_url - from azure.ai.agentserver.responses.models import MessageContentInputImageContent items = await context.get_input_items() images = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputImageContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_image": images.append(content) - urls = [img.image_url for img in images if img.image_url and not is_data_url(img.image_url)] + urls = [img["image_url"] for img in images if img.get("image_url") and not is_data_url(img["image_url"])] return TextResponse(context, request, text=f"URLs: {', '.join(urls)}") async def _image_base64_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): from azure.ai.agentserver.responses._data_url import get_media_type, is_data_url, try_decode_bytes - from azure.ai.agentserver.responses.models import MessageContentInputImageContent items = await context.get_input_items() images = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputImageContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_image": images.append(content) results = [] for img in images: - if img.image_url and is_data_url(img.image_url): - raw = try_decode_bytes(img.image_url) - media = get_media_type(img.image_url) + image_url = img.get("image_url") + if image_url and is_data_url(image_url): + raw = try_decode_bytes(image_url) + media = get_media_type(image_url) results.append(f"{media} ({len(raw)} bytes)") return TextResponse(context, request, text=f"Decoded: {'; '.join(results)}") async def _image_file_id_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): - from azure.ai.agentserver.responses.models import MessageContentInputImageContent - items = await context.get_input_items() images = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputImageContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_image": images.append(content) - file_ids = [img.file_id for img in images if img.file_id] + file_ids = [img["file_id"] for img in images if img.get("file_id")] return TextResponse(context, request, text=f"File IDs: {', '.join(file_ids)}") @@ -1208,52 +1212,48 @@ def test_sample13_image_input_file_id_handler() -> None: async def _file_base64_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): from azure.ai.agentserver.responses._data_url import get_media_type, is_data_url, try_decode_bytes - from azure.ai.agentserver.responses.models import ItemMessage, MessageContentInputFileContent items = await context.get_input_items() files = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputFileContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_file": files.append(content) results = [] for f in files: - if f.file_data and is_data_url(f.file_data): - raw = try_decode_bytes(f.file_data) - media = get_media_type(f.file_data) + file_data = f.get("file_data") + if file_data and is_data_url(file_data): + raw = try_decode_bytes(file_data) + media = get_media_type(file_data) results.append(f"{media} ({len(raw)} bytes)") return TextResponse(context, request, text=f"Decoded: {'; '.join(results)}") async def _file_url_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): - from azure.ai.agentserver.responses.models import ItemMessage, MessageContentInputFileContent - items = await context.get_input_items() files = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputFileContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_file": files.append(content) - urls = [f.file_url for f in files if f.file_url] + urls = [f["file_url"] for f in files if f.get("file_url")] return TextResponse(context, request, text=f"URLs: {', '.join(urls)}") async def _file_id_handler(request: CreateResponse, context: ResponseContext, cancellation_signal: asyncio.Event): - from azure.ai.agentserver.responses.models import ItemMessage, MessageContentInputFileContent - items = await context.get_input_items() files = [] for item in items: - if not isinstance(item, ItemMessage): + if not _is_item_type(item, "message"): continue - for content in item.content or []: - if isinstance(content, MessageContentInputFileContent): + for content in item.get("content") or []: + if isinstance(content, dict) and content.get("type") == "input_file": files.append(content) - file_ids = [f.file_id for f in files if f.file_id] + file_ids = [f["file_id"] for f in files if f.get("file_id")] return TextResponse(context, request, text=f"File IDs: {', '.join(file_ids)}") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_openai_wire_compliance.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_openai_wire_compliance.py index 693ffb4cba52..2e7984ee9ec6 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_openai_wire_compliance.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_openai_wire_compliance.py @@ -43,7 +43,7 @@ def _capture_handler(request: CreateResponse, context: ResponseContext, cancella _captured["request"] = request async def _events(): - stream = ResponseEventStream(response_id=context.response_id, model=request.model) + stream = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield stream.emit_created() yield stream.emit_in_progress() @@ -252,10 +252,10 @@ def test_c_func_01__function_tool_without_strict_accepted() -> None: }] } """) - assert request.tools is not None - assert len(request.tools) == 1 - assert request.tools[0].get("type") == "function" - assert request.tools[0].get("name") == "get_weather" + assert request.get("tools") is not None + assert len(request.get("tools")) == 1 + assert request.get("tools")[0].get("type") == "function" + assert request.get("tools")[0].get("name") == "get_weather" def test_c_func_02__function_tool_without_parameters_accepted() -> None: @@ -268,9 +268,9 @@ def test_c_func_02__function_tool_without_parameters_accepted() -> None: }] } """) - assert request.tools is not None - assert len(request.tools) == 1 - assert request.tools[0].get("name") == "no_params_tool" + assert request.get("tools") is not None + assert len(request.get("tools")) == 1 + assert request.get("tools")[0].get("name") == "no_params_tool" def test_c_func_01_02__function_tool_minimal_form_accepted() -> None: @@ -280,9 +280,9 @@ def test_c_func_01_02__function_tool_minimal_form_accepted() -> None: "tools": [{ "type": "function", "name": "minimal_tool" }] } """) - assert request.tools is not None - assert len(request.tools) == 1 - assert request.tools[0].get("name") == "minimal_tool" + assert request.get("tools") is not None + assert len(request.get("tools")) == 1 + assert request.get("tools")[0].get("name") == "minimal_tool" def test_c_func_01__function_tool_with_strict_null_accepted() -> None: @@ -297,8 +297,8 @@ def test_c_func_01__function_tool_with_strict_null_accepted() -> None: }] } """) - assert request.tools is not None - assert len(request.tools) == 1 + assert request.get("tools") is not None + assert len(request.get("tools")) == 1 def test_c_func_01__function_tool_with_strict_true_accepted() -> None: @@ -313,8 +313,8 @@ def test_c_func_01__function_tool_with_strict_true_accepted() -> None: }] } """) - assert request.tools is not None - assert len(request.tools) == 1 + assert request.get("tools") is not None + assert len(request.get("tools")) == 1 # ═══════════════════════════════════════════════════════════════════ @@ -492,27 +492,27 @@ def test_input_mixed_types_all_deserialize() -> None: def test_create_response_model() -> None: req = _send_and_capture('{"model": "gpt-4o-mini"}') - assert req.model == "gpt-4o-mini" + assert req["model"] == "gpt-4o-mini" def test_create_response_instructions() -> None: req = _send_and_capture('{"model": "test", "instructions": "Be helpful"}') - assert req.instructions == "Be helpful" + assert req["instructions"] == "Be helpful" def test_create_response_temperature() -> None: req = _send_and_capture('{"model": "test", "temperature": 0.7}') - assert abs(req.temperature - 0.7) < 0.001 + assert abs(req["temperature"] - 0.7) < 0.001 def test_create_response_top_p() -> None: req = _send_and_capture('{"model": "test", "top_p": 0.9}') - assert abs(req.top_p - 0.9) < 0.001 + assert abs(req["top_p"] - 0.9) < 0.001 def test_create_response_max_output_tokens() -> None: req = _send_and_capture('{"model": "test", "max_output_tokens": 1024}') - assert req.max_output_tokens == 1024 + assert req["max_output_tokens"] == 1024 def test_create_response_previous_response_id() -> None: @@ -520,46 +520,46 @@ def test_create_response_previous_response_id() -> None: valid_id = IdGenerator.new_response_id() req = _send_and_capture(f'{{"model": "test", "previous_response_id": "{valid_id}"}}') - assert req.previous_response_id == valid_id + assert req["previous_response_id"] == valid_id def test_create_response_store() -> None: req = _send_and_capture('{"model": "test", "store": false}') - assert req.store is False + assert req["store"] is False def test_create_response_metadata() -> None: req = _send_and_capture('{"model": "test", "metadata": {"key": "value"}}') - assert req.metadata is not None - assert req.metadata.get("key") == "value" + assert req.get("metadata") is not None + assert req["metadata"].get("key") == "value" def test_create_response_parallel_tool_calls() -> None: req = _send_and_capture('{"model": "test", "parallel_tool_calls": false}') - assert req.parallel_tool_calls is False + assert req["parallel_tool_calls"] is False def test_create_response_truncation() -> None: req = _send_and_capture('{"model": "test", "truncation": "auto"}') - assert req.truncation is not None + assert req.get("truncation") is not None def test_create_response_reasoning() -> None: req = _send_and_capture('{"model": "test", "reasoning": {"effort": "high"}}') - assert req.reasoning is not None + assert req.get("reasoning") is not None def test_create_response_tool_choice_auto() -> None: req = _send_and_capture('{"model": "test", "tool_choice": "auto"}') tc = get_tool_choice_expanded(req) assert tc is not None - assert tc.get("type") == "auto" or tc.get("mode") == "auto" + assert tc == {"type": "allowed_tools", "mode": "auto", "tools": []} def test_create_response_tool_choice_required() -> None: req = _send_and_capture('{"model": "test", "tool_choice": "required"}') tc = get_tool_choice_expanded(req) - assert tc is not None + assert tc == {"type": "allowed_tools", "mode": "required", "tools": []} def test_create_response_tool_choice_none() -> None: @@ -581,27 +581,27 @@ def test_create_response_tools_web_search() -> None: req = _send_and_capture(""" {"model": "test", "tools": [{"type": "web_search_preview"}]} """) - assert req.tools is not None - assert len(req.tools) == 1 - assert req.tools[0].get("type") == "web_search_preview" + assert req.get("tools") is not None + assert len(req["tools"]) == 1 + assert req["tools"][0].get("type") == "web_search_preview" def test_create_response_tools_file_search() -> None: req = _send_and_capture(""" {"model": "test", "tools": [{"type": "file_search", "vector_store_ids": ["vs_abc"]}]} """) - assert req.tools is not None - assert len(req.tools) == 1 - assert req.tools[0].get("type") == "file_search" + assert req.get("tools") is not None + assert len(req["tools"]) == 1 + assert req["tools"][0].get("type") == "file_search" def test_create_response_tools_code_interpreter() -> None: req = _send_and_capture(""" {"model": "test", "tools": [{"type": "code_interpreter"}]} """) - assert req.tools is not None - assert len(req.tools) == 1 - assert req.tools[0].get("type") == "code_interpreter" + assert req.get("tools") is not None + assert len(req["tools"]) == 1 + assert req["tools"][0].get("type") == "code_interpreter" def test_create_response_stream() -> None: @@ -697,11 +697,11 @@ def test_full_payload_all_shorthands_and_minimal_forms() -> None: ] } """) - assert req.model == "gpt-4o" - assert req.instructions == "Be helpful" - assert abs(req.temperature - 0.5) < 0.001 - assert req.max_output_tokens == 500 - assert req.store is True + assert req["model"] == "gpt-4o" + assert req["instructions"] == "Be helpful" + assert abs(req["temperature"] - 0.5) < 0.001 + assert req["max_output_tokens"] == 500 + assert req["store"] is True items = get_input_expanded(req) assert len(items) == 1 @@ -710,8 +710,8 @@ def test_full_payload_all_shorthands_and_minimal_forms() -> None: tc = get_tool_choice_expanded(req) assert tc is not None - assert req.tools is not None - assert len(req.tools) == 1 + assert req.get("tools") is not None + assert len(req["tools"]) == 1 def test_multi_turn_mixed_shorthand_and_full_form() -> None: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_sdk_round_trip.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_sdk_round_trip.py index 538ba8b1f972..126599e61615 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_sdk_round_trip.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/interop/test_sdk_round_trip.py @@ -91,7 +91,7 @@ def wrapper(request, context, cancellation_signal): def _text_message_handler(text: str = "Hello, world!"): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() for ev in s.output_item_message(text): yield ev @@ -109,7 +109,7 @@ def _function_call_handler( ): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() for ev in s.output_item_function_call(name, call_id, arguments): yield ev @@ -126,7 +126,7 @@ def _function_call_output_handler( ): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() for ev in s.output_item_function_call_output(call_id, output): yield ev @@ -140,7 +140,7 @@ async def events(): def _reasoning_handler(summary: str = "Let me think step by step..."): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() for ev in s.output_item_reasoning_item(summary): yield ev @@ -154,7 +154,7 @@ async def events(): def _file_search_handler(): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_file_search_call() yield b.emit_added() @@ -179,7 +179,7 @@ def _web_search_handler(): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_web_search_call() # Override the added item to include a valid action. @@ -203,7 +203,7 @@ async def events(): def _code_interpreter_handler(code: str = "print('hello')"): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_code_interpreter_call() yield b.emit_added() @@ -221,7 +221,7 @@ async def events(): def _image_gen_handler(): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_image_gen_call() yield b.emit_added() @@ -241,7 +241,7 @@ def _mcp_call_handler( ): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_mcp_call(server_label, name) yield b.emit_added() @@ -259,7 +259,7 @@ async def events(): def _mcp_list_tools_handler(server_label: str = "my-server"): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() b = s.add_output_item_mcp_list_tools(server_label) yield b.emit_added() @@ -277,7 +277,7 @@ def _multiple_items_handler(): def handler(request, context, cancellation_signal): async def events(): - s = ResponseEventStream(response_id=context.response_id, model=request.model) + s = ResponseEventStream(response_id=context.response_id, model=request.get("model")) yield s.emit_created() for ev in s.output_item_message("Here is the result."): yield ev @@ -657,19 +657,19 @@ def test_model_in_request(self): handler = _text_message_handler() client = _make_sdk_client(_capturing(handler)) client.responses.create(model="gpt-4o", input="hi") - assert _captured["request"].model == "gpt-4o" + assert _captured["request"]["model"] == "gpt-4o" def test_instructions_in_request(self): handler = _text_message_handler() client = _make_sdk_client(_capturing(handler)) client.responses.create(model="test", input="hi", instructions="Be helpful") - assert _captured["request"].instructions == "Be helpful" + assert _captured["request"]["instructions"] == "Be helpful" def test_temperature_in_request(self): handler = _text_message_handler() client = _make_sdk_client(_capturing(handler)) client.responses.create(model="test", input="hi", temperature=0.7) - assert _captured["request"].temperature == pytest.approx(0.7) + assert _captured["request"]["temperature"] == pytest.approx(0.7) def test_tools_in_request(self): handler = _text_message_handler() @@ -689,8 +689,8 @@ def test_tools_in_request(self): ], ) req = _captured["request"] - assert req.tools is not None - assert len(req.tools) >= 1 + assert req.get("tools") is not None + assert len(req["tools"]) >= 1 def test_max_output_tokens_in_request(self): handler = _text_message_handler() @@ -700,7 +700,7 @@ def test_max_output_tokens_in_request(self): input="hi", max_output_tokens=1024, ) - assert _captured["request"].max_output_tokens == 1024 + assert _captured["request"]["max_output_tokens"] == 1024 # --------------------------------------------------------------------------- diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_builders.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_builders.py index b7b1a510d0b7..89115310aa21 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_builders.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_builders.py @@ -5,11 +5,6 @@ from __future__ import annotations from azure.ai.agentserver.responses._id_generator import IdGenerator -from azure.ai.agentserver.responses.models._generated import ( - OutputItemMessage, - ResponseObject, - ResponseStreamEvent, -) from azure.ai.agentserver.responses.streaming import ( OutputItemFunctionCallBuilder, OutputItemFunctionCallOutputBuilder, @@ -32,9 +27,9 @@ def test_text_content_builder__emits_added_delta_done_events() -> None: done = text.emit_done() assert isinstance(text, TextContentBuilder) - # Every emitted event must be a ResponseStreamEvent subtype, not a plain dict + # Every emitted event must be a ResponseStreamEvent wire dict. for event in (added, delta, text_done, done): - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" assert added["type"] == "response.content_part.added" assert delta["type"] == "response.output_text.delta" assert text_done["type"] == "response.output_text.done" @@ -75,7 +70,7 @@ def test_output_item_message_builder__emits_added_content_done_and_done() -> Non assert isinstance(message, OutputItemMessageBuilder) for event in (added, content_done, done): - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" assert added["type"] == "response.output_item.added" assert content_done["type"] == "response.content_part.done" assert done["type"] == "response.output_item.done" @@ -95,7 +90,7 @@ def test_output_item_function_call_builder__emits_arguments_and_done_events() -> assert isinstance(function_call, OutputItemFunctionCallBuilder) for event in (added, delta, args_done, done): - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" assert added["type"] == "response.output_item.added" assert delta["type"] == "response.function_call_arguments.delta" assert args_done["type"] == "response.function_call_arguments.done" @@ -115,7 +110,7 @@ def test_output_item_function_call_output_builder__emits_added_and_done_events() assert isinstance(function_output, OutputItemFunctionCallOutputBuilder) for event in (added, done): - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" assert added["type"] == "response.output_item.added" assert added["item"]["type"] == "function_call_output" assert added["item"]["call_id"] == "call_1" @@ -305,8 +300,8 @@ def test_output_item_mcp_call_emit_done__includes_output_and_error_when_provided def test_response_event_stream__exposes_mutable_response_snapshot_for_lifecycle_events() -> None: stream = ResponseEventStream(response_id="resp_builder_snapshot", model="gpt-4o-mini") - stream.response.temperature = 1 - stream.response.metadata = {"source": "unit-test"} + stream.response["temperature"] = 1 + stream.response["metadata"] = {"source": "unit-test"} created = stream.emit_created() @@ -331,14 +326,10 @@ def test_response_event_stream__tracks_completed_output_items_into_response_outp done = message.emit_done() assert done["type"] == "response.output_item.done" - # response.output items must be properly typed model instances - assert isinstance(stream.response, ResponseObject) - assert len(stream.response.output) == 1 - output_item_obj = stream.response.output[0] - assert isinstance(output_item_obj, OutputItemMessage), ( - f"Expected OutputItemMessage on response.output, got {type(output_item_obj)}" - ) - output_item = output_item_obj.as_dict() + # response.output items must be dict-native wire payloads. + assert isinstance(stream.response, dict) + assert len(stream.response["output"]) == 1 + output_item = stream.response["output"][0] assert output_item["id"] == message.item_id assert output_item["type"] == "message" assert output_item["content"][0]["text"] == "hello" diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_emit_return_types.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_emit_return_types.py index 3e7b29926222..9c7a18504ee5 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_emit_return_types.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_emit_return_types.py @@ -1,12 +1,10 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -"""Strongly-typed return type assertions for every public emit_* method. +"""Wire-event return assertions for every public emit_* method. -Every builder ``emit_*`` method must return the specific ``ResponseStreamEvent`` -subtype per spec (e.g. ``emit_added()`` on a message -builder returns ``ResponseOutputItemAddedEvent``, not the base -``ResponseStreamEvent``). These tests assert the ``isinstance`` contract for -every public emit method on every builder class. +Every builder ``emit_*`` method must return a dict-native ``ResponseStreamEvent`` +with the specific wire ``type`` per spec (e.g. ``emit_added()`` on a message +builder returns a payload with ``type == "response.output_item.added"``). Builder classes covered: - ResponseEventStream (lifecycle: queued, created, in_progress, completed, failed, incomplete) @@ -33,53 +31,9 @@ from __future__ import annotations -from azure.ai.agentserver.responses.models._generated import ( - ResponseCodeInterpreterCallCodeDeltaEvent, - ResponseCodeInterpreterCallCodeDoneEvent, - ResponseCodeInterpreterCallCompletedEvent, - ResponseCodeInterpreterCallInProgressEvent, - ResponseCodeInterpreterCallInterpretingEvent, - ResponseCompletedEvent, - ResponseContentPartAddedEvent, - ResponseContentPartDoneEvent, - ResponseCreatedEvent, - ResponseCustomToolCallInputDeltaEvent, - ResponseCustomToolCallInputDoneEvent, - ResponseFailedEvent, - ResponseFileSearchCallCompletedEvent, - ResponseFileSearchCallInProgressEvent, - ResponseFileSearchCallSearchingEvent, - ResponseFunctionCallArgumentsDeltaEvent, - ResponseFunctionCallArgumentsDoneEvent, - ResponseImageGenCallCompletedEvent, - ResponseImageGenCallGeneratingEvent, - ResponseImageGenCallInProgressEvent, - ResponseImageGenCallPartialImageEvent, - ResponseIncompleteEvent, - ResponseInProgressEvent, - ResponseMCPCallArgumentsDeltaEvent, - ResponseMCPCallArgumentsDoneEvent, - ResponseMCPCallCompletedEvent, - ResponseMCPCallFailedEvent, - ResponseMCPCallInProgressEvent, - ResponseMCPListToolsCompletedEvent, - ResponseMCPListToolsFailedEvent, - ResponseMCPListToolsInProgressEvent, - ResponseOutputItemAddedEvent, - ResponseOutputItemDoneEvent, - ResponseOutputTextAnnotationAddedEvent, - ResponseQueuedEvent, - ResponseReasoningSummaryPartAddedEvent, - ResponseReasoningSummaryPartDoneEvent, - ResponseReasoningSummaryTextDeltaEvent, - ResponseReasoningSummaryTextDoneEvent, - ResponseRefusalDeltaEvent, - ResponseRefusalDoneEvent, - ResponseTextDeltaEvent, - ResponseTextDoneEvent, - ResponseWebSearchCallCompletedEvent, - ResponseWebSearchCallInProgressEvent, - ResponseWebSearchCallSearchingEvent, +from typing import Any + +from azure.ai.agentserver.responses.models import ( StructuredOutputsOutputItem, UrlCitationBody, ) @@ -88,6 +42,122 @@ # ---- helper ---- +def _event_type_checker(name: str, event_type: str) -> type: + class _EventTypeMeta(type): + def __instancecheck__(cls, instance: Any) -> bool: # pylint: disable=unused-argument + return isinstance(instance, dict) and instance.get("type") == event_type + + return _EventTypeMeta(name, (), {}) + + +ResponseCodeInterpreterCallCodeDeltaEvent = _event_type_checker( + "ResponseCodeInterpreterCallCodeDeltaEvent", "response.code_interpreter_call_code.delta" +) +ResponseCodeInterpreterCallCodeDoneEvent = _event_type_checker( + "ResponseCodeInterpreterCallCodeDoneEvent", "response.code_interpreter_call_code.done" +) +ResponseCodeInterpreterCallCompletedEvent = _event_type_checker( + "ResponseCodeInterpreterCallCompletedEvent", "response.code_interpreter_call.completed" +) +ResponseCodeInterpreterCallInProgressEvent = _event_type_checker( + "ResponseCodeInterpreterCallInProgressEvent", "response.code_interpreter_call.in_progress" +) +ResponseCodeInterpreterCallInterpretingEvent = _event_type_checker( + "ResponseCodeInterpreterCallInterpretingEvent", "response.code_interpreter_call.interpreting" +) +ResponseCompletedEvent = _event_type_checker("ResponseCompletedEvent", "response.completed") +ResponseContentPartAddedEvent = _event_type_checker("ResponseContentPartAddedEvent", "response.content_part.added") +ResponseContentPartDoneEvent = _event_type_checker("ResponseContentPartDoneEvent", "response.content_part.done") +ResponseCreatedEvent = _event_type_checker("ResponseCreatedEvent", "response.created") +ResponseCustomToolCallInputDeltaEvent = _event_type_checker( + "ResponseCustomToolCallInputDeltaEvent", "response.custom_tool_call_input.delta" +) +ResponseCustomToolCallInputDoneEvent = _event_type_checker( + "ResponseCustomToolCallInputDoneEvent", "response.custom_tool_call_input.done" +) +ResponseFailedEvent = _event_type_checker("ResponseFailedEvent", "response.failed") +ResponseFileSearchCallCompletedEvent = _event_type_checker( + "ResponseFileSearchCallCompletedEvent", "response.file_search_call.completed" +) +ResponseFileSearchCallInProgressEvent = _event_type_checker( + "ResponseFileSearchCallInProgressEvent", "response.file_search_call.in_progress" +) +ResponseFileSearchCallSearchingEvent = _event_type_checker( + "ResponseFileSearchCallSearchingEvent", "response.file_search_call.searching" +) +ResponseFunctionCallArgumentsDeltaEvent = _event_type_checker( + "ResponseFunctionCallArgumentsDeltaEvent", "response.function_call_arguments.delta" +) +ResponseFunctionCallArgumentsDoneEvent = _event_type_checker( + "ResponseFunctionCallArgumentsDoneEvent", "response.function_call_arguments.done" +) +ResponseImageGenCallCompletedEvent = _event_type_checker( + "ResponseImageGenCallCompletedEvent", "response.image_generation_call.completed" +) +ResponseImageGenCallGeneratingEvent = _event_type_checker( + "ResponseImageGenCallGeneratingEvent", "response.image_generation_call.generating" +) +ResponseImageGenCallInProgressEvent = _event_type_checker( + "ResponseImageGenCallInProgressEvent", "response.image_generation_call.in_progress" +) +ResponseImageGenCallPartialImageEvent = _event_type_checker( + "ResponseImageGenCallPartialImageEvent", "response.image_generation_call.partial_image" +) +ResponseIncompleteEvent = _event_type_checker("ResponseIncompleteEvent", "response.incomplete") +ResponseInProgressEvent = _event_type_checker("ResponseInProgressEvent", "response.in_progress") +ResponseMCPCallArgumentsDeltaEvent = _event_type_checker( + "ResponseMCPCallArgumentsDeltaEvent", "response.mcp_call_arguments.delta" +) +ResponseMCPCallArgumentsDoneEvent = _event_type_checker( + "ResponseMCPCallArgumentsDoneEvent", "response.mcp_call_arguments.done" +) +ResponseMCPCallCompletedEvent = _event_type_checker("ResponseMCPCallCompletedEvent", "response.mcp_call.completed") +ResponseMCPCallFailedEvent = _event_type_checker("ResponseMCPCallFailedEvent", "response.mcp_call.failed") +ResponseMCPCallInProgressEvent = _event_type_checker( + "ResponseMCPCallInProgressEvent", "response.mcp_call.in_progress" +) +ResponseMCPListToolsCompletedEvent = _event_type_checker( + "ResponseMCPListToolsCompletedEvent", "response.mcp_list_tools.completed" +) +ResponseMCPListToolsFailedEvent = _event_type_checker( + "ResponseMCPListToolsFailedEvent", "response.mcp_list_tools.failed" +) +ResponseMCPListToolsInProgressEvent = _event_type_checker( + "ResponseMCPListToolsInProgressEvent", "response.mcp_list_tools.in_progress" +) +ResponseOutputItemAddedEvent = _event_type_checker("ResponseOutputItemAddedEvent", "response.output_item.added") +ResponseOutputItemDoneEvent = _event_type_checker("ResponseOutputItemDoneEvent", "response.output_item.done") +ResponseOutputTextAnnotationAddedEvent = _event_type_checker( + "ResponseOutputTextAnnotationAddedEvent", "response.output_text.annotation.added" +) +ResponseQueuedEvent = _event_type_checker("ResponseQueuedEvent", "response.queued") +ResponseReasoningSummaryPartAddedEvent = _event_type_checker( + "ResponseReasoningSummaryPartAddedEvent", "response.reasoning_summary_part.added" +) +ResponseReasoningSummaryPartDoneEvent = _event_type_checker( + "ResponseReasoningSummaryPartDoneEvent", "response.reasoning_summary_part.done" +) +ResponseReasoningSummaryTextDeltaEvent = _event_type_checker( + "ResponseReasoningSummaryTextDeltaEvent", "response.reasoning_summary_text.delta" +) +ResponseReasoningSummaryTextDoneEvent = _event_type_checker( + "ResponseReasoningSummaryTextDoneEvent", "response.reasoning_summary_text.done" +) +ResponseRefusalDeltaEvent = _event_type_checker("ResponseRefusalDeltaEvent", "response.refusal.delta") +ResponseRefusalDoneEvent = _event_type_checker("ResponseRefusalDoneEvent", "response.refusal.done") +ResponseTextDeltaEvent = _event_type_checker("ResponseTextDeltaEvent", "response.output_text.delta") +ResponseTextDoneEvent = _event_type_checker("ResponseTextDoneEvent", "response.output_text.done") +ResponseWebSearchCallCompletedEvent = _event_type_checker( + "ResponseWebSearchCallCompletedEvent", "response.web_search_call.completed" +) +ResponseWebSearchCallInProgressEvent = _event_type_checker( + "ResponseWebSearchCallInProgressEvent", "response.web_search_call.in_progress" +) +ResponseWebSearchCallSearchingEvent = _event_type_checker( + "ResponseWebSearchCallSearchingEvent", "response.web_search_call.searching" +) + + def _stream() -> ResponseEventStream: return ResponseEventStream(response_id="resp_emit_types") diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_event_stream_generators.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_event_stream_generators.py index 179dfe720bdb..bc54e2eec3de 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_event_stream_generators.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_event_stream_generators.py @@ -6,7 +6,6 @@ import pytest -from azure.ai.agentserver.responses.models._generated import ResponseStreamEvent from azure.ai.agentserver.responses.streaming._event_stream import ResponseEventStream RESPONSE_ID = "resp_gen_test_12345" @@ -32,9 +31,9 @@ def test_output_item_message_yields_full_lifecycle() -> None: events = list(stream.output_item_message("Hello world")) assert len(events) == 6 - # Every yielded event must be a ResponseStreamEvent model, not a plain dict + # Every yielded event must be a ResponseStreamEvent wire dict. for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" types = [e["type"] for e in events] assert types == [ "response.output_item.added", @@ -63,7 +62,7 @@ def test_output_item_function_call_yields_full_lifecycle() -> None: assert len(events) == 4 for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" types = [e["type"] for e in events] assert types == [ "response.output_item.added", @@ -93,7 +92,7 @@ def test_output_item_function_call_output_yields_added_and_done() -> None: assert len(events) == 2 for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" types = [e["type"] for e in events] assert types == [ "response.output_item.added", @@ -115,7 +114,7 @@ def test_output_item_reasoning_item_yields_full_lifecycle() -> None: assert len(events) == 6 for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" types = [e["type"] for e in events] assert types == [ "response.output_item.added", diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_foundry_storage_provider.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_foundry_storage_provider.py index 0ef99fb9b2b5..696727a7ff76 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_foundry_storage_provider.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_foundry_storage_provider.py @@ -6,7 +6,7 @@ from __future__ import annotations import json -from typing import Any +from typing import Any, cast from unittest.mock import AsyncMock, MagicMock import pytest @@ -25,6 +25,7 @@ FoundryStorageProvider, ) from azure.ai.agentserver.responses.store._foundry_settings import FoundryStorageSettings +from azure.ai.agentserver.responses.models import ResponseObject # --------------------------------------------------------------------------- # Helpers @@ -87,6 +88,10 @@ def _make_provider(credential: Any, settings: FoundryStorageSettings, response: return provider +def _response_object() -> ResponseObject: + return cast(ResponseObject, _RESPONSE_DICT) + + # --------------------------------------------------------------------------- # Fixtures # --------------------------------------------------------------------------- @@ -110,9 +115,7 @@ def settings() -> FoundryStorageSettings: @pytest.mark.asyncio async def test_create_response__posts_to_responses_endpoint(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - - response = ResponseObject(_RESPONSE_DICT) + response = _response_object() await provider.create_response(response, None, None) request = provider._client.send_request.call_args[0][0] @@ -124,10 +127,8 @@ async def test_create_response__posts_to_responses_endpoint(credential: Any, set @pytest.mark.asyncio async def test_create_response__sends_correct_envelope(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - - response = ResponseObject(_RESPONSE_DICT) - await provider.create_response(response, [MagicMock(as_dict=lambda: _INPUT_ITEM_DICT)], ["prev_item_1"]) + response = _response_object() + await provider.create_response(response, [_INPUT_ITEM_DICT], ["prev_item_1"]) request = provider._client.send_request.call_args[0][0] payload = json.loads(request.content.decode("utf-8")) @@ -141,10 +142,8 @@ async def test_create_response__raises_foundry_api_error_on_500( credential: Any, settings: FoundryStorageSettings ) -> None: provider = _make_provider(credential, settings, _make_response(500, {"error": {"message": "server fault"}})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - with pytest.raises(FoundryApiError) as exc_info: - await provider.create_response(ResponseObject(_RESPONSE_DICT), None, None) + await provider.create_response(_response_object(), None, None) assert "server fault" in exc_info.value.message @@ -205,9 +204,7 @@ async def test_get_response__url_encodes_special_characters(credential: Any, set @pytest.mark.asyncio async def test_update_response__posts_to_response_id_url(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - - response = ResponseObject(_RESPONSE_DICT) + response = _response_object() await provider.update_response(response) request = provider._client.send_request.call_args[0][0] @@ -220,9 +217,7 @@ async def test_update_response__sends_serialized_response_body( credential: Any, settings: FoundryStorageSettings ) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - - response = ResponseObject(_RESPONSE_DICT) + response = _response_object() await provider.update_response(response) request = provider._client.send_request.call_args[0][0] @@ -233,10 +228,8 @@ async def test_update_response__sends_serialized_response_body( @pytest.mark.asyncio async def test_update_response__raises_bad_request_on_409(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(409, {"error": {"message": "conflict"}})) - from azure.ai.agentserver.responses.models._generated import ResponseObject - with pytest.raises(FoundryBadRequestError) as exc_info: - await provider.update_response(ResponseObject(_RESPONSE_DICT)) + await provider.update_response(_response_object()) assert "conflict" in exc_info.value.message @@ -466,10 +459,10 @@ async def test_get_history_item_ids__omits_optional_params_when_none( @pytest.mark.asyncio async def test_create_response__sends_platform_headers(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject + from azure.ai.agentserver.responses.models import ResponseObject isolation = PlatformContext(user_id_key="u_key_1", call_id="c_key_1") - await provider.create_response(ResponseObject(_RESPONSE_DICT), None, None, context=isolation) + await provider.create_response(_response_object(), None, None, context=isolation) request = provider._client.send_request.call_args[0][0] assert _USER_ID_HEADER not in request.headers # user_id is not forwarded to 1P @@ -491,10 +484,10 @@ async def test_get_response__sends_platform_headers(credential: Any, settings: F @pytest.mark.asyncio async def test_update_response__sends_platform_headers(credential: Any, settings: FoundryStorageSettings) -> None: provider = _make_provider(credential, settings, _make_response(200, {})) - from azure.ai.agentserver.responses.models._generated import ResponseObject + from azure.ai.agentserver.responses.models import ResponseObject isolation = PlatformContext(user_id_key="u_key_3", call_id="c_key_3") - await provider.update_response(ResponseObject(_RESPONSE_DICT), context=isolation) + await provider.update_response(_response_object(), context=isolation) request = provider._client.send_request.call_args[0][0] assert _USER_ID_HEADER not in request.headers # user_id is not forwarded to 1P diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_generated_payload_validation.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_generated_payload_validation.py index 2de5b2219130..706bd1cb433b 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_generated_payload_validation.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_generated_payload_validation.py @@ -7,7 +7,7 @@ import pytest from azure.ai.agentserver.responses.hosting._validation import parse_create_response -from azure.ai.agentserver.responses.models._generated._validators import validate_CreateResponse +from azure.ai.agentserver.responses.models._validators import validate_create_response_payload from azure.ai.agentserver.responses.models.errors import RequestValidationError # --------------------------------------------------------------------------- @@ -28,7 +28,7 @@ def test_parse_create_response_rejects_invalid_payload() -> None: def test_parse_create_response_allows_valid_payload() -> None: parsed = parse_create_response({"model": "gpt-4o"}) - assert parsed.model == "gpt-4o" + assert parsed["model"] == "gpt-4o" def test_parse_create_response_rejects_non_object_body() -> None: @@ -39,39 +39,39 @@ def test_parse_create_response_rejects_non_object_body() -> None: # --------------------------------------------------------------------------- -# Generated validator tests (validate_CreateResponse directly) +# Generated validator wrapper tests # --------------------------------------------------------------------------- def test_generated_create_response_validator_accepts_string_input() -> None: - errors = validate_CreateResponse({"input": "hello world"}) + errors = validate_create_response_payload({"input": "hello world"}) assert errors == [] def test_generated_create_response_validator_accepts_array_input_items() -> None: # ItemMessage requires role + content in addition to type (GAP-01: type is # optional on input, but role/content remain required by the spec). - errors = validate_CreateResponse({"input": [{"type": "message", "role": "user", "content": "hello"}]}) + errors = validate_create_response_payload({"input": [{"type": "message", "role": "user", "content": "hello"}]}) assert errors == [] def test_generated_create_response_validator_rejects_non_string_non_array_input() -> None: - errors = validate_CreateResponse({"input": 123}) + errors = validate_create_response_payload({"input": 123}) assert any(e["path"] == "$.input" and "Expected one of: string, array" in e["message"] for e in errors) def test_generated_create_response_validator_rejects_non_object_input_item() -> None: - errors = validate_CreateResponse({"input": [123]}) + errors = validate_create_response_payload({"input": [123]}) assert any(e["path"] == "$.input" and "Expected one of: string, array" in e["message"] for e in errors) def test_generated_create_response_validator_rejects_input_item_missing_type() -> None: - errors = validate_CreateResponse({"input": [{}]}) + errors = validate_create_response_payload({"input": [{}]}) assert any(e["path"] == "$.input" and "Expected one of: string, array" in e["message"] for e in errors) def test_generated_create_response_validator_rejects_input_item_type_with_wrong_primitive() -> None: - errors = validate_CreateResponse({"input": [{"type": 1}]}) + errors = validate_create_response_payload({"input": [{"type": 1}]}) assert any(e["path"] == "$.input" and "Expected one of: string, array" in e["message"] for e in errors) @@ -91,12 +91,12 @@ def test_generated_create_response_validator_rejects_input_item_type_with_wrong_ @pytest.mark.parametrize("item_type", list(_VALID_INPUT_ITEMS)) def test_generated_create_response_validator_accepts_multiple_input_item_types(item_type: str) -> None: - errors = validate_CreateResponse({"input": [_VALID_INPUT_ITEMS[item_type]]}) + errors = validate_create_response_payload({"input": [_VALID_INPUT_ITEMS[item_type]]}) assert errors == [] def test_generated_create_response_validator_accepts_mixed_input_item_types() -> None: - errors = validate_CreateResponse( + errors = validate_create_response_payload( { "input": [ _VALID_INPUT_ITEMS["message"], diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_id_generator.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_id_generator.py index f0b47d97d537..ec6bae4b9d9a 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_id_generator.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_id_generator.py @@ -9,7 +9,6 @@ import pytest from azure.ai.agentserver.responses._id_generator import IdGenerator -from azure.ai.agentserver.responses.models import _generated as generated_models def test_id_generator__new_id_uses_new_format_shape() -> None: @@ -98,13 +97,17 @@ def test_id_generator__convenience_method_uses_caresp_prefix() -> None: assert len(created_id.split("_", maxsplit=1)[1]) == 50 -def test_id_generator__new_item_id_dispatches_by_generated_model_type() -> None: - item_message = object.__new__(generated_models.ItemMessage) - item_reference = object.__new__(generated_models.ItemReferenceParam) +def test_id_generator__new_item_id_dispatches_by_wire_type() -> None: + item_message = {"type": "message"} + item_compaction = {"type": "compaction"} + item_reference = {"type": "item_reference", "id": "item_1"} generated_id = IdGenerator.new_item_id(item_message) + compaction_id = IdGenerator.new_item_id(item_compaction) assert generated_id is not None assert generated_id.startswith("msg_") + assert compaction_id is not None + assert compaction_id.startswith("cmp_") assert IdGenerator.new_item_id(item_reference) is None assert IdGenerator.new_item_id(object()) is None diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py index 3aa249cc0675..bc01f201392d 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_in_memory_provider_crud.py @@ -10,11 +10,11 @@ from __future__ import annotations import asyncio -from typing import Any +from typing import Any, cast import pytest -from azure.ai.agentserver.responses.models import _generated as generated_models +from azure.ai.agentserver.responses.models import ResponseObject from azure.ai.agentserver.responses.store._memory import InMemoryResponseProvider # --------------------------------------------------------------------------- @@ -28,7 +28,7 @@ def _response( status: str = "completed", output: list[dict[str, Any]] | None = None, conversation_id: str | None = None, -) -> generated_models.ResponseObject: +) -> ResponseObject: payload: dict[str, Any] = { "id": response_id, "object": "response", @@ -38,7 +38,7 @@ def _response( } if conversation_id is not None: payload["conversation"] = {"id": conversation_id} - return generated_models.ResponseObject(payload) + return cast(ResponseObject, payload) def _input_item(item_id: str, text: str) -> dict[str, Any]: @@ -70,7 +70,7 @@ def test_create__stores_response_envelope() -> None: asyncio.run(provider.create_response(_response("resp_1"), None, None)) result = asyncio.run(provider.get_response("resp_1")) - assert str(getattr(result, "id")) == "resp_1" + assert result["id"] == "resp_1" def test_create__duplicate_raises_value_error() -> None: @@ -115,7 +115,7 @@ def test_create__returns_defensive_copy() -> None: r1["status"] = "failed" r2 = asyncio.run(provider.get_response("resp_copy")) - assert str(getattr(r2, "status")) == "completed" + assert r2["status"] == "completed" # =========================================================================== @@ -157,7 +157,7 @@ def test_update__replaces_envelope() -> None: asyncio.run(provider.update_response(updated)) result = asyncio.run(provider.get_response("resp_upd")) - assert str(getattr(result, "status")) == "completed" + assert result["status"] == "completed" def test_update__stores_new_output_items() -> None: diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_input_items_provider_behavior.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_input_items_provider_behavior.py index d5e027594438..f3ce1d63bcd9 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_input_items_provider_behavior.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_input_items_provider_behavior.py @@ -5,22 +5,24 @@ from __future__ import annotations import asyncio +from typing import cast import pytest -from azure.ai.agentserver.responses.models import _generated as generated_models +from azure.ai.agentserver.responses.models import ResponseObject from azure.ai.agentserver.responses.store._memory import InMemoryResponseProvider -def _response(response_id: str, *, store: bool = True) -> generated_models.ResponseObject: - return generated_models.ResponseObject( +def _response(response_id: str, *, store: bool = True) -> ResponseObject: + return cast( + ResponseObject, { "id": response_id, "object": "response", "output": [], "store": store, "status": "completed", - } + }, ) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_public_contract_types.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_public_contract_types.py index 5bfaacf1da9d..6463ef3d3166 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_public_contract_types.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_public_contract_types.py @@ -1,32 +1,31 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -"""Contract type assertions for every public handler/consumer surface. +"""Contract shape assertions for every public handler/consumer surface. -Every public API that returns model objects MUST return proper discriminated -subtypes — never base classes, never plain dicts. These tests assert the -``isinstance`` contract so regressions are caught immediately. +Public APIs now return dict-native wire payloads. These tests assert the +discriminator and field-shape contract so regressions are caught immediately. Surfaces covered: 1. context.request → CreateResponse - 2. context.get_input_items() → Sequence[Item] with subtype fidelity + 2. context.get_input_items() → Sequence[Item] wire dicts 3. context.get_input_text() → str - 4. context.get_history() → Sequence[OutputItem] with subtype fidelity - 5. stream.response → ResponseObject - 6. stream.response.output → list of OutputItem subtypes - 7. Builder emit_* returns → ResponseStreamEvent subtypes - 8. Generator convenience → ResponseStreamEvent subtypes + 4. context.get_history() → Sequence[OutputItem] wire dicts + 5. stream.response → ResponseObject wire dict + 6. stream.response.output → list of OutputItem wire dicts + 7. Builder emit_* returns → ResponseStreamEvent wire dicts + 8. Generator convenience → ResponseStreamEvent wire dicts """ from __future__ import annotations from collections.abc import Sequence -from typing import Any +from typing import Any, cast from unittest.mock import AsyncMock import pytest from azure.ai.agentserver.responses._response_context import ResponseContext -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( CreateResponse, Item, ItemMessage, @@ -61,7 +60,7 @@ def _mode_flags() -> ResponseModeFlags: def _make_request(inp: Any) -> CreateResponse: - return CreateResponse(model="test-model", input=inp) + return cast(CreateResponse, {"model": "test-model", "input": inp}) def _mock_provider(**overrides: Any) -> Any: @@ -71,13 +70,23 @@ def _mock_provider(**overrides: Any) -> Any: return provider +def _field(payload: Any, name: str) -> Any: + return payload.get(name) if isinstance(payload, dict) else None + + +def _content_text(item: Any, index: int = 0) -> str: + content = _field(item, "content") + part = content[index] + return _field(part, "text") + + # ===================================================================== # 1. context.request → CreateResponse # ===================================================================== class TestContextRequestType: - """context.request must be a CreateResponse model instance.""" + """context.request must be a CreateResponse wire payload.""" @pytest.mark.asyncio async def test_request_is_create_response_model(self) -> None: @@ -88,9 +97,8 @@ async def test_request_is_create_response_model(self) -> None: request=request, ) - assert isinstance(ctx.request, CreateResponse) - # Attribute access works (not a dict) - assert ctx.request.model == "test-model" + assert isinstance(ctx.request, dict) + assert ctx.request["model"] == "test-model" # ===================================================================== @@ -103,16 +111,18 @@ class TestInputItemsContractTypes: @pytest.mark.asyncio async def test_inline_message_returns_item_message_subtype(self) -> None: - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - request = CreateResponse(model="m", input=[msg.as_dict()]) + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + request = cast(CreateResponse, {"model": "m", "input": [msg]}) ctx = ResponseContext(response_id="resp_type_2a", mode_flags=_mode_flags(), request=request) items = await ctx.get_input_items() assert isinstance(items, Sequence) assert len(items) == 1 - assert isinstance(items[0], Item), f"Expected Item, got {type(items[0])}" - assert isinstance(items[0], ItemMessage), f"Expected ItemMessage, got {type(items[0])}" + assert isinstance(items[0], dict), f"Expected Item wire dict, got {type(items[0])}" + assert items[0]["type"] == "message" + assert items[0]["role"] == "user" + assert _content_text(items[0]) == "hi" @pytest.mark.asyncio async def test_resolved_reference_returns_typed_item(self) -> None: @@ -127,7 +137,7 @@ async def test_resolved_reference_returns_typed_item(self) -> None: } ) provider = _mock_provider(get_items_return=[stored_msg]) - request = CreateResponse(model="m", input=[{"type": "item_reference", "id": "msg_ref_01"}]) + request = cast(CreateResponse, {"model": "m", "input": [{"type": "item_reference", "id": "msg_ref_01"}]}) ctx = ResponseContext( response_id="resp_type_2b", mode_flags=_mode_flags(), @@ -138,8 +148,10 @@ async def test_resolved_reference_returns_typed_item(self) -> None: items = await ctx.get_input_items() assert len(items) == 1 - assert isinstance(items[0], Item), f"Expected Item subtype, got {type(items[0])}" - assert isinstance(items[0], ItemMessage), f"Expected ItemMessage, got {type(items[0])}" + assert isinstance(items[0], dict), f"Expected Item wire dict, got {type(items[0])}" + assert items[0]["type"] == "message" + assert items[0]["id"] == "msg_ref_01" + assert _content_text(items[0]) == "resolved" # ===================================================================== @@ -226,18 +238,10 @@ async def test_returns_typed_output_item_subtypes(self) -> None: assert isinstance(history, Sequence) assert len(history) == 2 - # First item must be OutputItemMessage, not base OutputItem - assert isinstance(history[0], OutputItem), f"Expected OutputItem, got {type(history[0])}" - assert isinstance(history[0], OutputItemMessage), f"Expected OutputItemMessage, got {type(history[0])}" - # Attribute access must work (not just dict access) - assert history[0].content[0].text == "previous reply" - - # Second item must be OutputItemFunctionToolCall - assert isinstance(history[1], OutputItem), f"Expected OutputItem, got {type(history[1])}" - assert isinstance(history[1], OutputItemFunctionToolCall), ( - f"Expected OutputItemFunctionToolCall, got {type(history[1])}" - ) - assert history[1].name == "get_weather" + assert _field(history[0], "type") == "message" + assert _content_text(history[0]) == "previous reply" + assert _field(history[1], "type") == "function_call" + assert _field(history[1], "name") == "get_weather" @pytest.mark.asyncio async def test_caches_result_on_second_call(self) -> None: @@ -267,7 +271,7 @@ async def test_caches_result_on_second_call(self) -> None: second = await ctx.get_history() assert first is second # cached tuple - assert isinstance(first[0], OutputItemMessage) + assert _field(first[0], "type") == "message" # ===================================================================== @@ -276,21 +280,21 @@ async def test_caches_result_on_second_call(self) -> None: class TestStreamResponseType: - """stream.response must be a ResponseObject, not a dict.""" + """stream.response must be a ResponseObject wire dict.""" def test_response_is_response_object_model(self) -> None: stream = ResponseEventStream(response_id="resp_type_5a", model="gpt-4o") - assert isinstance(stream.response, ResponseObject) - assert stream.response.id == "resp_type_5a" - assert stream.response.model == "gpt-4o" + assert isinstance(stream.response, dict) + assert stream.response["id"] == "resp_type_5a" + assert stream.response["model"] == "gpt-4o" def test_seed_response_preserves_type(self) -> None: - seed = ResponseObject({"id": "resp_type_5b", "object": "response", "output": [], "model": "gpt-4o"}) + seed = cast(ResponseObject, {"id": "resp_type_5b", "object": "response", "output": [], "model": "gpt-4o"}) stream = ResponseEventStream(response=seed) - assert isinstance(stream.response, ResponseObject) - assert stream.response.id == "resp_type_5b" + assert isinstance(stream.response, dict) + assert stream.response["id"] == "resp_type_5b" # ===================================================================== @@ -299,7 +303,7 @@ def test_seed_response_preserves_type(self) -> None: class TestResponseOutputItemTypes: - """After output_item.done, response.output items must be proper subtypes.""" + """After output_item.done, response.output items must have proper wire discriminators.""" def test_message_output_item_is_output_item_message(self) -> None: stream = ResponseEventStream(response_id="resp_type_6a") @@ -313,12 +317,10 @@ def test_message_output_item_is_output_item_message(self) -> None: text.emit_done() message.emit_done() - assert len(stream.response.output) == 1 - item = stream.response.output[0] - assert isinstance(item, OutputItem), f"Expected OutputItem, got {type(item)}" - assert isinstance(item, OutputItemMessage), f"Expected OutputItemMessage, got {type(item)}" - # Subtype-specific attribute access must work - assert item.content[0].text == "hello" + assert len(stream.response["output"]) == 1 + item = stream.response["output"][0] + assert item["type"] == "message" + assert item["content"][0]["text"] == "hello" def test_function_call_output_item_is_function_tool_call(self) -> None: stream = ResponseEventStream(response_id="resp_type_6b") @@ -329,12 +331,11 @@ def test_function_call_output_item_is_function_tool_call(self) -> None: fc.emit_arguments_done('{"city":"Seattle"}') fc.emit_done() - assert len(stream.response.output) == 1 - item = stream.response.output[0] - assert isinstance(item, OutputItem), f"Expected OutputItem, got {type(item)}" - assert isinstance(item, OutputItemFunctionToolCall), f"Expected OutputItemFunctionToolCall, got {type(item)}" - assert item.name == "get_weather" - assert item.arguments == '{"city":"Seattle"}' + assert len(stream.response["output"]) == 1 + item = stream.response["output"][0] + assert item["type"] == "function_call" + assert item["name"] == "get_weather" + assert item["arguments"] == '{"city":"Seattle"}' def test_reasoning_output_item_is_reasoning_item(self) -> None: stream = ResponseEventStream(response_id="resp_type_6c") @@ -347,10 +348,9 @@ def test_reasoning_output_item_is_reasoning_item(self) -> None: summary.emit_done() reasoning.emit_done() - assert len(stream.response.output) == 1 - item = stream.response.output[0] - assert isinstance(item, OutputItem), f"Expected OutputItem, got {type(item)}" - assert isinstance(item, OutputItemReasoningItem), f"Expected OutputItemReasoningItem, got {type(item)}" + assert len(stream.response["output"]) == 1 + item = stream.response["output"][0] + assert item["type"] == "reasoning" def test_multiple_output_items_all_typed(self) -> None: """Mixed output items must all be proper subtypes.""" @@ -373,9 +373,9 @@ def test_multiple_output_items_all_typed(self) -> None: fc.emit_arguments_done("{}") fc.emit_done() - assert len(stream.response.output) == 2 - assert isinstance(stream.response.output[0], OutputItemMessage) - assert isinstance(stream.response.output[1], OutputItemFunctionToolCall) + assert len(stream.response["output"]) == 2 + assert stream.response["output"][0]["type"] == "message" + assert stream.response["output"][1]["type"] == "function_call" # ===================================================================== @@ -384,18 +384,18 @@ def test_multiple_output_items_all_typed(self) -> None: class TestBuilderEventTypes: - """Every builder emit_* method must return a typed ResponseStreamEvent subtype.""" + """Every builder emit_* method must return a typed ResponseStreamEvent wire dict.""" def test_lifecycle_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_7a") created = stream.emit_created() - assert isinstance(created, ResponseStreamEvent) - assert isinstance(created, ResponseCreatedEvent), f"Expected ResponseCreatedEvent, got {type(created)}" + assert isinstance(created, dict) + assert created["type"] == "response.created" in_progress = stream.emit_in_progress() - assert isinstance(in_progress, ResponseStreamEvent) - assert isinstance(in_progress, ResponseInProgressEvent) + assert isinstance(in_progress, dict) + assert in_progress["type"] == "response.in_progress" msg = stream.add_output_item_message() msg.emit_added() @@ -407,8 +407,8 @@ def test_lifecycle_events_are_typed(self) -> None: msg.emit_done() completed = stream.emit_completed() - assert isinstance(completed, ResponseStreamEvent) - assert isinstance(completed, ResponseCompletedEvent) + assert isinstance(completed, dict) + assert completed["type"] == "response.completed" def test_message_builder_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_7b") @@ -416,29 +416,29 @@ def test_message_builder_events_are_typed(self) -> None: message = stream.add_output_item_message() added = message.emit_added() - assert isinstance(added, ResponseStreamEvent) - assert isinstance(added, ResponseOutputItemAddedEvent) + assert isinstance(added, dict) + assert added["type"] == "response.output_item.added" text = message.add_text_content() content_added = text.emit_added() - assert isinstance(content_added, ResponseStreamEvent) - assert isinstance(content_added, ResponseContentPartAddedEvent) + assert isinstance(content_added, dict) + assert content_added["type"] == "response.content_part.added" delta = text.emit_delta("hello") - assert isinstance(delta, ResponseStreamEvent) - assert isinstance(delta, ResponseTextDeltaEvent) + assert isinstance(delta, dict) + assert delta["type"] == "response.output_text.delta" text_done = text.emit_text_done() - assert isinstance(text_done, ResponseStreamEvent) - assert isinstance(text_done, ResponseTextDoneEvent) + assert isinstance(text_done, dict) + assert text_done["type"] == "response.output_text.done" content_done = text.emit_done() - assert isinstance(content_done, ResponseStreamEvent) - assert isinstance(content_done, ResponseContentPartDoneEvent) + assert isinstance(content_done, dict) + assert content_done["type"] == "response.content_part.done" item_done = message.emit_done() - assert isinstance(item_done, ResponseStreamEvent) - assert isinstance(item_done, ResponseOutputItemDoneEvent) + assert isinstance(item_done, dict) + assert item_done["type"] == "response.output_item.done" def test_function_call_builder_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_7c") @@ -446,16 +446,16 @@ def test_function_call_builder_events_are_typed(self) -> None: fc = stream.add_output_item_function_call("fn", "call_1") added = fc.emit_added() - assert isinstance(added, ResponseOutputItemAddedEvent) + assert added["type"] == "response.output_item.added" delta = fc.emit_arguments_delta('{"k":') - assert isinstance(delta, ResponseFunctionCallArgumentsDeltaEvent) + assert delta["type"] == "response.function_call_arguments.delta" args_done = fc.emit_arguments_done('{"k":"v"}') - assert isinstance(args_done, ResponseFunctionCallArgumentsDoneEvent) + assert args_done["type"] == "response.function_call_arguments.done" done = fc.emit_done() - assert isinstance(done, ResponseOutputItemDoneEvent) + assert done["type"] == "response.output_item.done" # ===================================================================== @@ -464,7 +464,7 @@ def test_function_call_builder_events_are_typed(self) -> None: class TestGeneratorConvenienceTypes: - """Generator convenience methods must yield typed ResponseStreamEvent subtypes.""" + """Generator convenience methods must yield ResponseStreamEvent wire dicts.""" def test_output_item_message_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_8a") @@ -474,15 +474,16 @@ def test_output_item_message_events_are_typed(self) -> None: events = list(stream.output_item_message("Hi there")) for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" - # Verify specific subtypes for key events - assert isinstance(events[0], ResponseOutputItemAddedEvent) # output_item.added - assert isinstance(events[1], ResponseContentPartAddedEvent) # content_part.added - assert isinstance(events[2], ResponseTextDeltaEvent) # output_text.delta - assert isinstance(events[3], ResponseTextDoneEvent) # output_text.done - assert isinstance(events[4], ResponseContentPartDoneEvent) # content_part.done - assert isinstance(events[5], ResponseOutputItemDoneEvent) # output_item.done + assert [event["type"] for event in events] == [ + "response.output_item.added", + "response.content_part.added", + "response.output_text.delta", + "response.output_text.done", + "response.content_part.done", + "response.output_item.done", + ] def test_output_item_function_call_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_8b") @@ -492,10 +493,10 @@ def test_output_item_function_call_events_are_typed(self) -> None: events = list(stream.output_item_function_call("fn", "call_1", "{}")) for event in events: - assert isinstance(event, ResponseStreamEvent) + assert isinstance(event, dict) - assert isinstance(events[0], ResponseOutputItemAddedEvent) - assert isinstance(events[-1], ResponseOutputItemDoneEvent) + assert events[0]["type"] == "response.output_item.added" + assert events[-1]["type"] == "response.output_item.done" def test_output_item_reasoning_events_are_typed(self) -> None: stream = ResponseEventStream(response_id="resp_type_8c") @@ -505,10 +506,10 @@ def test_output_item_reasoning_events_are_typed(self) -> None: events = list(stream.output_item_reasoning_item("thinking")) for event in events: - assert isinstance(event, ResponseStreamEvent) + assert isinstance(event, dict) - assert isinstance(events[0], ResponseOutputItemAddedEvent) - assert isinstance(events[-1], ResponseOutputItemDoneEvent) + assert events[0]["type"] == "response.output_item.added" + assert events[-1]["type"] == "response.output_item.done" # ===================================================================== @@ -517,8 +518,7 @@ def test_output_item_reasoning_events_are_typed(self) -> None: class TestInMemoryProviderTypePreservation: - """Items stored and retrieved through InMemoryResponseProvider must - retain their discriminated subtype identity.""" + """Items stored and retrieved through InMemoryResponseProvider retain wire discriminators.""" @pytest.mark.asyncio async def test_stored_output_items_retrieved_as_subtypes(self) -> None: @@ -527,8 +527,9 @@ async def test_stored_output_items_retrieved_as_subtypes(self) -> None: provider = InMemoryResponseProvider() - # Build a response with typed output items on response.output - response = ResponseObject( + # Build a response with typed output item wire payloads on response.output + response = cast( + ResponseObject, { "id": "resp_mem_1", "object": "response", @@ -551,7 +552,7 @@ async def test_stored_output_items_retrieved_as_subtypes(self) -> None: "status": "completed", }, ], - } + }, ) await provider.create_response(response, input_items=None, history_item_ids=None) @@ -562,15 +563,11 @@ async def test_stored_output_items_retrieved_as_subtypes(self) -> None: assert len(items) == 2 assert items[0] is not None assert items[1] is not None - assert isinstance(items[0], OutputItem) - assert isinstance(items[0], OutputItemMessage), f"Expected OutputItemMessage, got {type(items[0])}" - assert items[0].content[0].text == "stored text" + assert _field(items[0], "type") == "message" + assert _content_text(items[0]) == "stored text" - assert isinstance(items[1], OutputItem) - assert isinstance(items[1], OutputItemFunctionToolCall), ( - f"Expected OutputItemFunctionToolCall, got {type(items[1])}" - ) - assert items[1].name == "lookup" + assert _field(items[1], "type") == "function_call" + assert _field(items[1], "name") == "lookup" @pytest.mark.asyncio async def test_history_round_trip_preserves_subtypes(self) -> None: @@ -580,7 +577,8 @@ async def test_history_round_trip_preserves_subtypes(self) -> None: provider = InMemoryResponseProvider() # Create a completed response with output items - response = ResponseObject( + response = cast( + ResponseObject, { "id": "resp_hist_rt_1", "object": "response", @@ -596,7 +594,7 @@ async def test_history_round_trip_preserves_subtypes(self) -> None: "content": [{"type": "output_text", "text": "turn 1 reply", "annotations": []}], } ], - } + }, ) await provider.create_response(response, input_items=None, history_item_ids=None) @@ -612,10 +610,10 @@ async def test_history_round_trip_preserves_subtypes(self) -> None: assert len(history) >= 1 # The message from turn 1 must be a proper OutputItemMessage - msg_item = next((h for h in history if getattr(h, "id", None) == "msg_rt_1"), None) + msg_item = next((h for h in history if _field(h, "id") == "msg_rt_1"), None) assert msg_item is not None, "Expected msg_rt_1 in history" - assert isinstance(msg_item, OutputItemMessage), f"Expected OutputItemMessage, got {type(msg_item)}" - assert msg_item.content[0].text == "turn 1 reply" + assert _field(msg_item, "type") == "message" + assert _content_text(msg_item) == "turn 1 reply" # ===================================================================== @@ -625,7 +623,7 @@ async def test_history_round_trip_preserves_subtypes(self) -> None: class TestStreamLifecycleOutputTypes: """After a full create→in_progress→items→completed stream, response.output - must contain properly typed OutputItem subtypes (not base OutputItem).""" + must contain proper OutputItem wire discriminators.""" def test_full_stream_lifecycle_output_types(self) -> None: stream = ResponseEventStream(response_id="resp_type_10a", model="gpt-4o") @@ -642,16 +640,12 @@ def test_full_stream_lifecycle_output_types(self) -> None: stream.emit_completed() - output = stream.response.output + output = stream.response["output"] assert len(output) == 2 - assert isinstance(output[0], OutputItemMessage), ( - f"After full lifecycle, output[0] should be OutputItemMessage, got {type(output[0])}" - ) - assert output[0].content[0].text == "Hello" + assert output[0]["type"] == "message" + assert output[0]["content"][0]["text"] == "Hello" - assert isinstance(output[1], OutputItemFunctionToolCall), ( - f"After full lifecycle, output[1] should be OutputItemFunctionToolCall, got {type(output[1])}" - ) - assert output[1].name == "get_temp" - assert output[1].arguments == '{"unit":"C"}' + assert output[1]["type"] == "function_call" + assert output[1]["name"] == "get_temp" + assert output[1]["arguments"] == '{"unit":"C"}' diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_resolve_input_items_for_persistence.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_resolve_input_items_for_persistence.py index 5e35b1ad53c5..b0b6b4f64f04 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_resolve_input_items_for_persistence.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_resolve_input_items_for_persistence.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import Any +from typing import Any, cast from unittest.mock import AsyncMock import pytest from azure.ai.agentserver.responses._response_context import ResponseContext from azure.ai.agentserver.responses.hosting._orchestrator import _resolve_input_items_for_persistence -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( CreateResponse, ItemMessage, ItemReferenceParam, @@ -34,7 +34,11 @@ def _mock_provider(**overrides: Any) -> Any: def _make_request(inp: Any) -> CreateResponse: - return CreateResponse(model="test-model", input=inp) + return cast(CreateResponse, {"model": "test-model", "input": inp}) + + +def _item_ref(item_id: str) -> ItemReferenceParam: + return cast(ItemReferenceParam, {"id": item_id}) # ------------------------------------------------------------------ @@ -45,8 +49,8 @@ def _make_request(inp: Any) -> CreateResponse: @pytest.mark.asyncio async def test_resolves_references_via_context() -> None: """item_reference entries are resolved to concrete OutputItem for persistence.""" - inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - ref = ItemReferenceParam(id="item_ref1") + inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + ref = _item_ref("item_ref1") resolved = OutputItemMessage(id="item_ref1", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) @@ -68,7 +72,7 @@ async def test_resolves_references_via_context() -> None: # Should have BOTH items: resolved reference + inline message assert result is not None assert len(result) == 2 - assert all(isinstance(item, OutputItemMessage) for item in result) + assert all(isinstance(item, dict) and item.get("type") == "message" for item in result) # ------------------------------------------------------------------ @@ -79,7 +83,7 @@ async def test_resolves_references_via_context() -> None: @pytest.mark.asyncio async def test_fallback_when_no_context() -> None: """When context is None, returns the fallback items.""" - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) fallback = [out for item in [msg] if (out := to_output_item(item, "resp_002")) is not None] result = await _resolve_input_items_for_persistence(None, fallback) @@ -96,8 +100,8 @@ async def test_fallback_when_no_context() -> None: @pytest.mark.asyncio async def test_fallback_on_resolution_error() -> None: """When context._get_input_items_for_persistence raises, falls back.""" - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - ref = ItemReferenceParam(id="item_bad") + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + ref = _item_ref("item_bad") provider = _mock_provider() provider.get_items = AsyncMock(side_effect=RuntimeError("provider down")) @@ -146,7 +150,7 @@ async def test_returns_none_for_empty_inputs() -> None: @pytest.mark.asyncio async def test_no_double_fetch_via_cache() -> None: """The provider is called only once even if both handler and persistence paths run.""" - ref = ItemReferenceParam(id="item_cache") + ref = _item_ref("item_cache") resolved = OutputItemMessage(id="item_cache", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_context_input_items.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_context_input_items.py index bc878b06b8b7..dd0fd1c516a6 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_context_input_items.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_context_input_items.py @@ -4,13 +4,13 @@ from __future__ import annotations -from typing import Any +from typing import Any, cast from unittest.mock import AsyncMock import pytest from azure.ai.agentserver.responses._response_context import PlatformContext, ResponseContext -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( CreateResponse, Item, ItemMessage, @@ -36,7 +36,24 @@ def _mock_provider(**overrides: Any) -> Any: def _make_request(inp: Any) -> CreateResponse: """Build a minimal CreateResponse with the given input.""" - return CreateResponse(model="test-model", input=inp) + return cast(CreateResponse, {"model": "test-model", "input": inp}) + + +def _item_ref(item_id: str) -> ItemReferenceParam: + return cast(ItemReferenceParam, {"id": item_id}) + + +def _assert_message(item: Any, role: str | MessageRole | None = None) -> None: + assert isinstance(item, dict) + assert item.get("type") == "message" + if role is not None: + assert item.get("role") == role + + +def _assert_output_message(item: Any) -> None: + _assert_message(item) + assert str(item.get("id", "")).startswith("msg_") or str(item.get("id", "")).startswith("item_") + assert item.get("status") == "completed" # ------------------------------------------------------------------ @@ -47,7 +64,7 @@ def _make_request(inp: Any) -> CreateResponse: @pytest.mark.asyncio async def test_get_input_items__no_references_passes_through() -> None: """Inline items are returned as Item subtypes (ItemMessage).""" - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hello")]) + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hello")]) request = _make_request([msg]) ctx = ResponseContext( response_id="resp_001", @@ -59,9 +76,7 @@ async def test_get_input_items__no_references_passes_through() -> None: items = await ctx.get_input_items() assert len(items) == 1 - assert isinstance(items[0], ItemMessage) - assert isinstance(items[0], Item) - assert items[0].role == MessageRole.USER + _assert_message(items[0], MessageRole.USER) # ------------------------------------------------------------------ @@ -72,7 +87,7 @@ async def test_get_input_items__no_references_passes_through() -> None: @pytest.mark.asyncio async def test_get_input_items__resolves_single_reference() -> None: """A single ItemReferenceParam is resolved and converted to an Item subtype.""" - ref = ItemReferenceParam(id="item_abc") + ref = _item_ref("item_abc") resolved_item = OutputItemMessage(id="item_abc", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved_item]) @@ -88,9 +103,8 @@ async def test_get_input_items__resolves_single_reference() -> None: items = await ctx.get_input_items() assert len(items) == 1 - # Resolved via to_item(): OutputItemMessage → ItemMessage - assert isinstance(items[0], ItemMessage) - assert items[0].role == "assistant" + # Resolved via to_item(): OutputItemMessage -> Item wire payload + _assert_message(items[0], "assistant") provider.get_items.assert_awaited_once_with(["item_abc"], context=ctx.platform_context) @@ -102,9 +116,9 @@ async def test_get_input_items__resolves_single_reference() -> None: @pytest.mark.asyncio async def test_get_input_items__mixed_inline_and_references() -> None: """Inline items and references are interleaved; references are resolved in-place.""" - inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - ref1 = ItemReferenceParam(id="item_111") - ref2 = ItemReferenceParam(id="item_222") + inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + ref1 = _item_ref("item_111") + ref2 = _item_ref("item_222") resolved1 = OutputItemMessage(id="item_111", role="assistant", content=[], status="completed") resolved2 = OutputItemMessage(id="item_222", role="user", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved1, resolved2]) @@ -120,13 +134,11 @@ async def test_get_input_items__mixed_inline_and_references() -> None: items = await ctx.get_input_items() - # inline passed through as Item, references resolved via to_item() + # inline passed through as Item wire payload, references resolved via to_item() assert len(items) == 3 - assert isinstance(items[0], ItemMessage) - assert isinstance(items[1], ItemMessage) # resolved from OutputItemMessage - assert items[1].role == "assistant" - assert isinstance(items[2], ItemMessage) # resolved from OutputItemMessage - assert items[2].role == "user" + _assert_message(items[0], MessageRole.USER) + _assert_message(items[1], "assistant") # resolved from OutputItemMessage + _assert_message(items[2], "user") # resolved from OutputItemMessage # ------------------------------------------------------------------ @@ -137,8 +149,8 @@ async def test_get_input_items__mixed_inline_and_references() -> None: @pytest.mark.asyncio async def test_get_input_items__unresolvable_references_dropped() -> None: """References that resolve to None are silently dropped.""" - ref1 = ItemReferenceParam(id="item_exists") - ref2 = ItemReferenceParam(id="item_missing") + ref1 = _item_ref("item_exists") + ref2 = _item_ref("item_missing") resolved1 = OutputItemMessage(id="item_exists", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved1, None]) @@ -154,7 +166,7 @@ async def test_get_input_items__unresolvable_references_dropped() -> None: items = await ctx.get_input_items() assert len(items) == 1 - assert isinstance(items[0], ItemMessage) # resolved via to_item() + _assert_message(items[0]) # resolved via to_item() # ------------------------------------------------------------------ @@ -165,8 +177,8 @@ async def test_get_input_items__unresolvable_references_dropped() -> None: @pytest.mark.asyncio async def test_get_input_items__no_provider_no_resolution() -> None: """Without a provider, ItemReferenceParam entries are silently dropped (unresolvable).""" - inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - ref = ItemReferenceParam(id="item_xyz") + inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + ref = _item_ref("item_xyz") request = _make_request([inline_msg, ref]) ctx = ResponseContext( @@ -179,9 +191,9 @@ async def test_get_input_items__no_provider_no_resolution() -> None: items = await ctx.get_input_items() - # inline item returned as Item subtype; reference placeholder is dropped + # inline item returned as Item wire payload; reference placeholder is dropped assert len(items) == 1 - assert isinstance(items[0], ItemMessage) + _assert_message(items[0], MessageRole.USER) # ------------------------------------------------------------------ @@ -192,7 +204,7 @@ async def test_get_input_items__no_provider_no_resolution() -> None: @pytest.mark.asyncio async def test_get_input_items__caches_result() -> None: """Calling get_input_items() twice returns the cached result.""" - ref = ItemReferenceParam(id="item_cache") + ref = _item_ref("item_cache") resolved = OutputItemMessage(id="item_cache", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) @@ -232,8 +244,7 @@ async def test_get_input_items__string_input_expanded() -> None: items = await ctx.get_input_items() assert len(items) == 1 - assert isinstance(items[0], ItemMessage) - assert items[0].role == MessageRole.USER + _assert_message(items[0], MessageRole.USER) # ------------------------------------------------------------------ @@ -265,7 +276,7 @@ async def test_get_input_items__empty_input() -> None: @pytest.mark.asyncio async def test_get_input_items__forwards_platform_context() -> None: """Platform context is passed through to provider.get_items().""" - ref = ItemReferenceParam(id="item_iso") + ref = _item_ref("item_iso") resolved = OutputItemMessage(id="item_iso", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) isolation = PlatformContext(user_id_key="user_123", call_id="call_456") @@ -283,7 +294,7 @@ async def test_get_input_items__forwards_platform_context() -> None: items = await ctx.get_input_items() assert len(items) == 1 - assert isinstance(items[0], ItemMessage) # resolved via to_item() + _assert_message(items[0]) # resolved via to_item() provider.get_items.assert_awaited_once_with(["item_iso"], context=isolation) @@ -295,8 +306,8 @@ async def test_get_input_items__forwards_platform_context() -> None: @pytest.mark.asyncio async def test_get_input_items__all_references_unresolvable() -> None: """When all references resolve to None, result is empty.""" - ref1 = ItemReferenceParam(id="item_gone1") - ref2 = ItemReferenceParam(id="item_gone2") + ref1 = _item_ref("item_gone1") + ref2 = _item_ref("item_gone2") provider = _mock_provider(get_items_return=[None, None]) request = _make_request([ref1, ref2]) @@ -321,9 +332,9 @@ async def test_get_input_items__all_references_unresolvable() -> None: @pytest.mark.asyncio async def test_get_input_items__preserves_order() -> None: """Order of inline items and resolved references matches input order.""" - msg1 = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="first")]) - ref = ItemReferenceParam(id="item_mid") - msg2 = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="last")]) + msg1 = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="first")]) + ref = _item_ref("item_mid") + msg2 = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="last")]) resolved = OutputItemMessage(id="item_mid", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) @@ -339,10 +350,9 @@ async def test_get_input_items__preserves_order() -> None: items = await ctx.get_input_items() assert len(items) == 3 - assert isinstance(items[0], ItemMessage) - assert isinstance(items[1], ItemMessage) # resolved via to_item() - assert items[1].role == "assistant" - assert isinstance(items[2], ItemMessage) + _assert_message(items[0], MessageRole.USER) + _assert_message(items[1], "assistant") # resolved via to_item() + _assert_message(items[2], MessageRole.USER) # ------------------------------------------------------------------ @@ -352,18 +362,16 @@ async def test_get_input_items__preserves_order() -> None: def test_to_output_item__converts_item_message() -> None: """ItemMessage is converted to OutputItemMessage with generated ID.""" - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hello")]) + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hello")]) result = to_output_item(msg, "resp_123") assert result is not None - assert isinstance(result, OutputItemMessage) - assert result.id.startswith("msg_") - assert result.status == "completed" - assert result.role == MessageRole.USER + _assert_output_message(result) + assert result["role"] == MessageRole.USER def test_to_output_item__returns_none_for_reference() -> None: """ItemReferenceParam is non-convertible — returns None.""" - ref = ItemReferenceParam(id="item_abc") + ref = _item_ref("item_abc") result = to_output_item(ref) assert result is None @@ -376,8 +384,8 @@ def test_to_output_item__returns_none_for_reference() -> None: @pytest.mark.asyncio async def test_get_input_items_for_persistence__resolves_references() -> None: """_get_input_items_for_persistence resolves item_reference entries to OutputItem.""" - inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hi")]) - ref = ItemReferenceParam(id="item_ref1") + inline_msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hi")]) + ref = _item_ref("item_ref1") resolved = OutputItemMessage(id="item_ref1", role="assistant", content=[], status="completed") provider = _mock_provider(get_items_return=[resolved]) @@ -394,13 +402,13 @@ async def test_get_input_items_for_persistence__resolves_references() -> None: # Both items should be converted to OutputItem — including the resolved reference assert len(output_items) == 2 - assert all(isinstance(item, OutputItemMessage) for item in output_items) + assert all(isinstance(item, dict) and item.get("type") == "message" for item in output_items) @pytest.mark.asyncio async def test_get_input_items_for_persistence__no_references_passes_through() -> None: """When no references exist, all inline items are returned as OutputItem.""" - msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(text="hello")]) + msg = ItemMessage(role=MessageRole.USER, content=[MessageContentInputTextContent(type="input_text", text="hello")]) request = _make_request([msg]) ctx = ResponseContext( response_id="resp_persist_002", @@ -412,13 +420,13 @@ async def test_get_input_items_for_persistence__no_references_passes_through() - output_items = await ctx._get_input_items_for_persistence() assert len(output_items) == 1 - assert isinstance(output_items[0], OutputItemMessage) + _assert_output_message(output_items[0]) @pytest.mark.asyncio async def test_get_input_items_for_persistence__unresolvable_dropped() -> None: """Unresolvable references are dropped from the persistence result.""" - ref = ItemReferenceParam(id="item_gone") + ref = _item_ref("item_gone") provider = _mock_provider(get_items_return=[None]) request = _make_request([ref]) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_event_stream_builder.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_event_stream_builder.py index 8a6cbec03e56..2ad3ac56b2df 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_event_stream_builder.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_event_stream_builder.py @@ -4,22 +4,14 @@ from __future__ import annotations +from typing import cast + import pytest from azure.ai.agentserver.responses._id_generator import IdGenerator -from azure.ai.agentserver.responses.models import _generated as generated_models -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( AgentReference, - OutputItemComputerToolCallOutputResource, - ResponseCompletedEvent, - ResponseCreatedEvent, - ResponseFailedEvent, - ResponseIncompleteEvent, - ResponseInProgressEvent, - ResponseObject, - ResponseOutputItemAddedEvent, - ResponseOutputItemDoneEvent, - ResponseStreamEvent, + CreateResponse, ResponseUsage, ) from azure.ai.agentserver.responses.streaming._event_stream import ResponseEventStream @@ -28,7 +20,7 @@ def test_event_stream_builder__builds_lifecycle_events() -> None: stream = ResponseEventStream( response_id="resp_builder_12345", - agent_reference=AgentReference(type="agent_reference", name="unit-agent"), + agent_reference=cast(AgentReference, {"type": "agent_reference", "name": "unit-agent"}), model="gpt-4o-mini", ) @@ -38,12 +30,9 @@ def test_event_stream_builder__builds_lifecycle_events() -> None: stream.emit_completed(), ] - # All events must be typed ResponseStreamEvent subtypes + # All events must be dict-native ResponseStreamEvent wire payloads. for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" - assert isinstance(events[0], ResponseCreatedEvent) - assert isinstance(events[1], ResponseInProgressEvent) - assert isinstance(events[2], ResponseCompletedEvent) + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" assert [event["type"] for event in events] == [ "response.created", @@ -73,7 +62,7 @@ def test_event_stream_builder__builds_output_item_events() -> None: ] for event in events: - assert isinstance(event, ResponseStreamEvent), f"Expected ResponseStreamEvent, got {type(event)}" + assert isinstance(event, dict), f"Expected ResponseStreamEvent dict, got {type(event)}" event_types = [event["type"] for event in events] assert "response.output_item.added" in event_types @@ -84,7 +73,7 @@ def test_event_stream_builder__builds_output_item_events() -> None: def test_event_stream_builder__output_item_added_returns_event_immediately() -> None: stream = ResponseEventStream( response_id="resp_builder_incremental_12345", - agent_reference=AgentReference(type="agent_reference", name="unit-agent"), + agent_reference=cast(AgentReference, {"type": "agent_reference", "name": "unit-agent"}), model="gpt-4o-mini", ) stream.emit_created(status="queued") @@ -93,8 +82,7 @@ def test_event_stream_builder__output_item_added_returns_event_immediately() -> emitted = message.emit_added() - assert isinstance(emitted, ResponseStreamEvent) - assert isinstance(emitted, ResponseOutputItemAddedEvent) + assert isinstance(emitted, dict) assert emitted["type"] == "response.output_item.added" assert emitted["output_index"] == 0 assert emitted["item"]["id"] == message.item_id @@ -153,12 +141,11 @@ def test_event_stream_builder__emit_completed_accepts_usage_and_sets_terminal_fi completed = stream.emit_completed(usage=usage) - assert isinstance(completed, ResponseStreamEvent) - assert isinstance(completed, ResponseCompletedEvent) + assert isinstance(completed, dict) assert completed["type"] == "response.completed" assert completed["response"]["status"] == "completed" assert completed["response"]["usage"]["total_tokens"] == 3 - assert isinstance(completed["response"]["completed_at"], int) + assert completed["response"]["completed_at"] is not None def test_event_stream_builder__emit_failed_accepts_error_and_usage() -> None: @@ -175,8 +162,7 @@ def test_event_stream_builder__emit_failed_accepts_error_and_usage() -> None: failed = stream.emit_failed(code="server_error", message="boom", usage=usage) - assert isinstance(failed, ResponseStreamEvent) - assert isinstance(failed, ResponseFailedEvent) + assert isinstance(failed, dict) assert failed["type"] == "response.failed" assert failed["response"]["status"] == "failed" assert failed["response"]["error"]["code"] == "server_error" @@ -199,8 +185,7 @@ def test_event_stream_builder__emit_incomplete_accepts_reason_and_usage() -> Non incomplete = stream.emit_incomplete(reason="max_output_tokens", usage=usage) - assert isinstance(incomplete, ResponseStreamEvent) - assert isinstance(incomplete, ResponseIncompleteEvent) + assert isinstance(incomplete, dict) assert incomplete["type"] == "response.incomplete" assert incomplete["response"]["status"] == "incomplete" assert incomplete["response"]["incomplete_details"]["reason"] == "max_output_tokens" @@ -214,32 +199,26 @@ def test_event_stream_builder__add_output_item_generic_emits_added_and_done() -> item_id = IdGenerator.new_computer_call_output_item_id("resp_builder_generic_item") builder = stream.add_output_item(item_id) - added_item = OutputItemComputerToolCallOutputResource( - { - "id": item_id, - "type": "computer_call_output", - "call_id": "call_1", - "output": {"type": "computer_screenshot", "image_url": "https://example.com/1.png"}, - "status": "in_progress", - } - ) - done_item = OutputItemComputerToolCallOutputResource( - { - "id": item_id, - "type": "computer_call_output", - "call_id": "call_1", - "output": {"type": "computer_screenshot", "image_url": "https://example.com/2.png"}, - "status": "completed", - } - ) + added_item = { + "id": item_id, + "type": "computer_call_output", + "call_id": "call_1", + "output": {"type": "computer_screenshot", "image_url": "https://example.com/1.png"}, + "status": "in_progress", + } + done_item = { + "id": item_id, + "type": "computer_call_output", + "call_id": "call_1", + "output": {"type": "computer_screenshot", "image_url": "https://example.com/2.png"}, + "status": "completed", + } added = builder.emit_added(added_item) done = builder.emit_done(done_item) - assert isinstance(added, ResponseStreamEvent) - assert isinstance(added, ResponseOutputItemAddedEvent) - assert isinstance(done, ResponseStreamEvent) - assert isinstance(done, ResponseOutputItemDoneEvent) + assert isinstance(added, dict) + assert isinstance(done, dict) assert added["type"] == "response.output_item.added" assert added["output_index"] == 0 assert done["type"] == "response.output_item.done" @@ -247,34 +226,33 @@ def test_event_stream_builder__add_output_item_generic_emits_added_and_done() -> def test_event_stream_builder__constructor_accepts_seed_response() -> None: - seed_response = generated_models.ResponseObject( - { - "id": "resp_builder_seed_response", - "object": "response", - "output": [], - "model": "gpt-4o-mini", - "metadata": {"source": "seed"}, - } - ) + seed_response = { + "id": "resp_builder_seed_response", + "object": "response", + "output": [], + "model": "gpt-4o-mini", + "metadata": {"source": "seed"}, + } stream = ResponseEventStream(response=seed_response) created = stream.emit_created() - assert isinstance(stream.response, ResponseObject) - assert isinstance(created, ResponseCreatedEvent) + assert isinstance(stream.response, dict) + assert created["type"] == "response.created" assert created["response"]["id"] == "resp_builder_seed_response" assert created["response"]["model"] == "gpt-4o-mini" assert created["response"]["metadata"] == {"source": "seed"} def test_event_stream_builder__constructor_accepts_request_seed_fields() -> None: - request = generated_models.CreateResponse( + request = cast( + CreateResponse, { "model": "gpt-4o-mini", "background": True, "metadata": {"tag": "seeded"}, "previous_response_id": "resp_prev_seed", - } + }, ) stream = ResponseEventStream(response_id="resp_builder_seed_request", request=request) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_execution.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_execution.py index 5f8bfcaf9952..adac9fc05969 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_execution.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_response_execution.py @@ -188,10 +188,13 @@ def test_apply_event_cancelled_is_noop() -> None: def test_apply_event_output_item_added() -> None: - from azure.ai.agentserver.responses.models._generated import ResponseObject + from typing import cast + + from azure.ai.agentserver.responses.models import ResponseObject execution = _make_execution(status="in_progress") - execution.response = ResponseObject( + execution.response = cast( + ResponseObject, { "id": execution.response_id, "response_id": execution.response_id, @@ -199,7 +202,7 @@ def test_apply_event_output_item_added() -> None: "object": "response", "status": "in_progress", "output": [], - } + }, ) item = {"id": "item_1", "type": "text"} diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_runtime_state.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_runtime_state.py index 57ff645d1fd8..fd14a51f94c1 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_runtime_state.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_runtime_state.py @@ -4,10 +4,12 @@ from __future__ import annotations +from typing import cast + import pytest from azure.ai.agentserver.responses.hosting._runtime_state import _RuntimeState -from azure.ai.agentserver.responses.models._generated import ResponseObject +from azure.ai.agentserver.responses.models import ResponseObject from azure.ai.agentserver.responses.models.runtime import ResponseExecution, ResponseModeFlags # --------------------------------------------------------------------------- @@ -147,7 +149,8 @@ async def test_get_input_items_deleted_raises_value_error() -> None: def test_to_snapshot_with_response() -> None: rid = "caresp_eee0000000000000000000000000000" execution = _make_execution(rid, status="completed") - execution.response = ResponseObject( + execution.response = cast( + ResponseObject, { "id": rid, "response_id": rid, @@ -155,7 +158,7 @@ def test_to_snapshot_with_response() -> None: "object": "response", "status": "completed", "output": [], - } + }, ) snapshot = _RuntimeState.to_snapshot(execution) @@ -194,7 +197,7 @@ def test_to_snapshot_status_matches_execution_status() -> None: rid = "caresp_ggg0000000000000000000000000000" execution = _make_execution(rid, status="in_progress") # Give a response that says completed but execution.status says in_progress - execution.response = ResponseObject({"id": rid, "status": "completed", "output": []}) + execution.response = cast(ResponseObject, {"id": rid, "status": "completed", "output": []}) snapshot = _RuntimeState.to_snapshot(execution) @@ -210,7 +213,7 @@ def test_to_snapshot_injects_defaults_when_response_missing_ids() -> None: rid = "caresp_hhh0000000000000000000000000000" execution = _make_execution(rid, status="completed") # Response without id/response_id - execution.response = ResponseObject({"status": "completed", "output": []}) + execution.response = cast(ResponseObject, {"status": "completed", "output": []}) snapshot = _RuntimeState.to_snapshot(execution) diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_session_and_response_id_resolution.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_session_and_response_id_resolution.py index b0d8ec5ef71e..d9783017bdb5 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_session_and_response_id_resolution.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_session_and_response_id_resolution.py @@ -25,25 +25,8 @@ # --------------------------------------------------------------------------- -class _FakeParsed: - """Minimal stub matching the CreateResponse model interface.""" - - def __init__(self, **kwargs): - for key, value in kwargs.items(): - setattr(self, key, value) - if not hasattr(self, "agent_reference"): - self.agent_reference = None - if not hasattr(self, "conversation"): - self.conversation = None - if not hasattr(self, "previous_response_id"): - self.previous_response_id = None - - def as_dict(self): - d = {} - for key in ("response_id", "agent_reference", "conversation", "previous_response_id", "agent_session_id"): - if hasattr(self, key): - d[key] = getattr(self, key) - return d +class _FakeParsed(dict): + """Minimal dict-native parsed CreateResponse payload.""" # =================================================================== diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_sse_writer.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_sse_writer.py index 259063f82960..a70a2cdc98a6 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_sse_writer.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_sse_writer.py @@ -7,15 +7,8 @@ from azure.ai.agentserver.responses.streaming import _sse -class _FakeEvent: - def __init__(self, type: str, sequence_number: int, text: str) -> None: - self.type = type - self.sequence_number = sequence_number - self.text = text - - def test_sse_writer__encodes_event_and_data_lines_with_separator() -> None: - event = _FakeEvent(type="response.created", sequence_number=0, text="hello") + event = {"type": "response.created", "sequence_number": 0, "text": "hello"} encoded = _sse.encode_sse_event(event) # type: ignore[arg-type] assert encoded.startswith("event: response.created\n") @@ -24,7 +17,7 @@ def test_sse_writer__encodes_event_and_data_lines_with_separator() -> None: def test_sse_writer__encodes_multiline_text_as_single_data_line() -> None: - event = _FakeEvent(type="response.output_text.delta", sequence_number=1, text="line1\nline2") + event = {"type": "response.output_text.delta", "sequence_number": 1, "text": "line1\nline2"} encoded = _sse.encode_sse_event(event) # type: ignore[arg-type] # Spec requires a single data: line with JSON payload — no extra data: lines @@ -43,8 +36,8 @@ def test_sse_writer__injects_monotonic_sequence_numbers() -> None: _sse.new_stream_counter() - first_event = _FakeEvent(type="response.created", sequence_number=-1, text="a") - second_event = _FakeEvent(type="response.in_progress", sequence_number=-1, text="b") + first_event = {"type": "response.created", "sequence_number": -1, "text": "a"} + second_event = {"type": "response.in_progress", "sequence_number": -1, "text": "b"} encoded_first = _sse.encode_sse_event(first_event) # type: ignore[arg-type] encoded_second = _sse.encode_sse_event(second_event) # type: ignore[arg-type] diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_string_content_expansion.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_string_content_expansion.py index ea491c95c2b5..6cd7e498cace 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_string_content_expansion.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_string_content_expansion.py @@ -9,9 +9,11 @@ from __future__ import annotations +from typing import Any, cast + import pytest -from azure.ai.agentserver.responses.models._generated import ( +from azure.ai.agentserver.responses.models import ( CreateResponse, ItemMessage, MessageContentInputTextContent, @@ -24,6 +26,10 @@ ) +def _make_request(inp: Any) -> CreateResponse: + return cast(CreateResponse, {"model": "test", "input": inp}) + + # --------------------------------------------------------------------------- # get_content_expanded — string content # --------------------------------------------------------------------------- @@ -35,8 +41,8 @@ def test_get_content_expanded__string_content_wraps_as_input_text() -> None: parts = get_content_expanded(msg) assert len(parts) == 1 - assert isinstance(parts[0], MessageContentInputTextContent) - assert parts[0].text == "Hello world" + assert parts[0]["type"] == "input_text" + assert parts[0]["text"] == "Hello world" def test_get_content_expanded__empty_string_returns_empty_list() -> None: @@ -51,12 +57,12 @@ def test_get_content_expanded__list_content_passes_through() -> None: """A list[MessageContent] should pass through unchanged.""" msg = ItemMessage( role=MessageRole.USER, - content=[MessageContentInputTextContent(text="part1")], + content=[MessageContentInputTextContent(type="input_text", text="part1")], ) parts = get_content_expanded(msg) assert len(parts) == 1 - assert parts[0].text == "part1" + assert parts[0]["text"] == "part1" def test_get_content_expanded__none_content_returns_empty() -> None: @@ -78,8 +84,8 @@ def test_get_content_expanded__dict_with_string_content() -> None: parts = get_content_expanded(msg) assert len(parts) == 1 - assert isinstance(parts[0], MessageContentInputTextContent) - assert parts[0].text == "dict string content" + assert parts[0]["type"] == "input_text" + assert parts[0]["text"] == "dict string content" # --------------------------------------------------------------------------- @@ -89,9 +95,8 @@ def test_get_content_expanded__dict_with_string_content() -> None: def test_get_input_text__message_with_string_content() -> None: """_get_input_text extracts text from a message whose content is a plain string.""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ ItemMessage(role=MessageRole.USER, content="Hello from string content"), ], ) @@ -101,13 +106,12 @@ def test_get_input_text__message_with_string_content() -> None: def test_get_input_text__mixed_string_and_list_content() -> None: """_get_input_text handles a mix of string-content and list-content messages.""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ ItemMessage(role=MessageRole.USER, content="First message"), ItemMessage( role=MessageRole.USER, - content=[MessageContentInputTextContent(text="Second message")], + content=[MessageContentInputTextContent(type="input_text", text="Second message")], ), ], ) @@ -117,16 +121,15 @@ def test_get_input_text__mixed_string_and_list_content() -> None: def test_get_input_text__string_input_shorthand() -> None: """When CreateResponse.input is a plain string, _get_input_text returns it.""" - request = CreateResponse(model="test", input="Just a string") + request = _make_request("Just a string") result = _get_input_text(request) assert result == "Just a string" def test_get_input_text__empty_string_content_skipped() -> None: """An empty-string content message contributes nothing to the result.""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ ItemMessage(role=MessageRole.USER, content=""), ItemMessage(role=MessageRole.USER, content="Real text"), ], @@ -137,9 +140,8 @@ def test_get_input_text__empty_string_content_skipped() -> None: def test_get_input_text__dict_message_with_string_content() -> None: """A raw dict message with string content is correctly extracted.""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ {"type": "message", "role": "user", "content": "dict string"}, ], ) @@ -154,9 +156,8 @@ def test_get_input_text__dict_message_with_string_content() -> None: def test_get_input_expanded__normalizes_string_content_to_list() -> None: """get_input_expanded auto-expands string content to list[MessageContent].""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ ItemMessage(role=MessageRole.USER, content="expanded text"), ], ) @@ -164,38 +165,36 @@ def test_get_input_expanded__normalizes_string_content_to_list() -> None: assert len(items) == 1 msg = items[0] - assert isinstance(msg, ItemMessage) # content should now be a list, not a string - assert isinstance(msg.content, list) - assert len(msg.content) == 1 - assert isinstance(msg.content[0], MessageContentInputTextContent) - assert msg.content[0].text == "expanded text" + assert isinstance(msg["content"], list) + assert len(msg["content"]) == 1 + assert msg["content"][0]["type"] == "input_text" + assert msg["content"][0]["text"] == "expanded text" def test_get_input_expanded__list_content_unchanged() -> None: """get_input_expanded leaves list content untouched.""" - request = CreateResponse( - model="test", - input=[ + request = _make_request( + [ ItemMessage( role=MessageRole.USER, - content=[MessageContentInputTextContent(text="already a list")], + content=[MessageContentInputTextContent(type="input_text", text="already a list")], ), ], ) items = get_input_expanded(request) msg = items[0] - assert isinstance(msg.content, list) - assert msg.content[0].text == "already a list" + assert isinstance(msg["content"], list) + assert msg["content"][0]["text"] == "already a list" def test_get_input_expanded__string_input_shorthand_already_list() -> None: """When input is a plain string, the generated ItemMessage already has list content.""" - request = CreateResponse(model="test", input="plain string input") + request = _make_request("plain string input") items = get_input_expanded(request) msg = items[0] - assert isinstance(msg, ItemMessage) - assert isinstance(msg.content, list) - assert msg.content[0].text == "plain string input" + assert msg["type"] == "message" + assert isinstance(msg["content"], list) + assert msg["content"][0]["text"] == "plain string input" diff --git a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_validation.py b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_validation.py index 3a62ff1cc23e..02403acf9a25 100644 --- a/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_validation.py +++ b/sdk/agentserver/azure-ai-agentserver-responses/tests/unit/test_validation.py @@ -14,7 +14,7 @@ from azure.ai.agentserver.responses.models.errors import RequestValidationError -class _FakeCreateRequest: +class _FakeCreateRequest(dict): def __init__( self, store: bool | None = True, @@ -23,11 +23,13 @@ def __init__( stream_options: object | None = None, model: str | None = "gpt-4o-mini", ) -> None: - self.store = store - self.background = background - self.stream = stream - self.stream_options = stream_options - self.model = model + super().__init__( + store=store, + background=background, + stream=stream, + stream_options=stream_options, + model=model, + ) def test_validation__non_object_payload_returns_invalid_request() -> None: @@ -50,4 +52,4 @@ def test_validation__unexpected_exception_maps_to_bad_request_category() -> None error = ValueError("bad payload") envelope = to_api_error_response(error) - assert envelope.error.type == "invalid_request_error" + assert envelope["error"]["type"] == "invalid_request_error"