From 847e1e6d14558fea87b084a192e3417153b39362 Mon Sep 17 00:00:00 2001 From: Darren Cohen <39422044+dargilco@users.noreply.github.com> Date: Fri, 8 May 2026 11:00:46 -0700 Subject: [PATCH 1/3] Emit SDK from TypeSpec and apply post-emitter fixes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- sdk/ai/azure-ai-projects/CHANGELOG.md | 8 + .../azure-ai-projects/apiview-properties.json | 12 +- .../ai/projects/aio/operations/_operations.py | 153 +++++++++--------- .../azure/ai/projects/models/__init__.py | 24 ++- .../azure/ai/projects/models/_models.py | 98 +++-------- .../ai/projects/operations/_operations.py | 151 +++++++++-------- sdk/ai/azure-ai-projects/tsp-location.yaml | 2 +- 7 files changed, 200 insertions(+), 248 deletions(-) diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index 32fca73275fb..5c5093d1a2bb 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -19,6 +19,14 @@ Breaking changes in beta operations: * Required property `isolation_key_source` removed from class `EntraAuthorizationScheme`. * Required keyword argument `isolation_key` removed from `.beta.agents.create_session()` and `.beta.agents.delete_session()` methods. * Argument `body` in methods `.beta.evaluation_taxonomies.create()` and `.beta.evaluation_taxonomies.update()` renamed to `taxonomy`. +* Renamed model `DeleteSkillResponse` to `DeleteSkillResult`. +* Renamed model `PendingUploadResponse` to `PendingUploadResult`. +* Renamed model `SessionDirectoryListResponse` to `SessionDirectoryListResult`. +* Renamed model `SessionFileWriteResponse` to `SessionFileWriteResult`. +* Renamed model `SkillObject` to `SkillDetails`. +* Removed model `FabricIQPreviewToolParameters`. +* Removed model `WorkIQPreviewToolParameters`. +* Renamed argument `body` to `content` in `.beta.skills.create_from_package()` method. ### Bugs Fixed diff --git a/sdk/ai/azure-ai-projects/apiview-properties.json b/sdk/ai/azure-ai-projects/apiview-properties.json index fb8941da51bc..354cbc4b7d65 100644 --- a/sdk/ai/azure-ai-projects/apiview-properties.json +++ b/sdk/ai/azure-ai-projects/apiview-properties.json @@ -112,7 +112,7 @@ "azure.ai.projects.models.DeleteAgentResponse": "Azure.AI.Projects.DeleteAgentResponse", "azure.ai.projects.models.DeleteAgentVersionResponse": "Azure.AI.Projects.DeleteAgentVersionResponse", "azure.ai.projects.models.DeleteMemoryStoreResult": "Azure.AI.Projects.DeleteMemoryStoreResponse", - "azure.ai.projects.models.DeleteSkillResponse": "Azure.AI.Projects.DeleteSkillResponse", + "azure.ai.projects.models.DeleteSkillResult": "Azure.AI.Projects.DeleteSkillResponse", "azure.ai.projects.models.Deployment": "Azure.AI.Projects.Deployment", "azure.ai.projects.models.EmbeddingConfiguration": "Azure.AI.Projects.EmbeddingConfiguration", "azure.ai.projects.models.EntraAuthorizationScheme": "Azure.AI.Projects.EntraAuthorizationScheme", @@ -140,7 +140,6 @@ "azure.ai.projects.models.EvaluatorVersion": "Azure.AI.Projects.EvaluatorVersion", "azure.ai.projects.models.FabricDataAgentToolParameters": "Azure.AI.Projects.FabricDataAgentToolParameters", "azure.ai.projects.models.FabricIQPreviewTool": "Azure.AI.Projects.FabricIQPreviewTool", - "azure.ai.projects.models.FabricIQPreviewToolParameters": "Azure.AI.Projects.FabricIQPreviewToolParameters", "azure.ai.projects.models.FieldMapping": "Azure.AI.Projects.FieldMapping", "azure.ai.projects.models.FileDataGenerationJobOutput": "Azure.AI.Projects.FileDataGenerationJobOutput", "azure.ai.projects.models.FileDataGenerationJobSource": "Azure.AI.Projects.FileDataGenerationJobSource", @@ -208,7 +207,7 @@ "azure.ai.projects.models.TelemetryEndpoint": "Azure.AI.Projects.TelemetryEndpoint", "azure.ai.projects.models.OtlpTelemetryEndpoint": "Azure.AI.Projects.OtlpTelemetryEndpoint", "azure.ai.projects.models.PendingUploadRequest": "Azure.AI.Projects.PendingUploadRequest", - "azure.ai.projects.models.PendingUploadResponse": "Azure.AI.Projects.PendingUploadResponse", + "azure.ai.projects.models.PendingUploadResult": "Azure.AI.Projects.PendingUploadResponse", "azure.ai.projects.models.PromptAgentDefinition": "Azure.AI.Projects.PromptAgentDefinition", "azure.ai.projects.models.PromptAgentDefinitionTextOptions": "Azure.AI.Projects.PromptAgentDefinitionTextOptions", "azure.ai.projects.models.PromptBasedEvaluatorDefinition": "Azure.AI.Projects.PromptBasedEvaluatorDefinition", @@ -228,13 +227,13 @@ "azure.ai.projects.models.Schedule": "Azure.AI.Projects.Schedule", "azure.ai.projects.models.ScheduleRun": "Azure.AI.Projects.ScheduleRun", "azure.ai.projects.models.SessionDirectoryEntry": "Azure.AI.Projects.SessionDirectoryEntry", - "azure.ai.projects.models.SessionDirectoryListResponse": "Azure.AI.Projects.SessionDirectoryListResponse", - "azure.ai.projects.models.SessionFileWriteResponse": "Azure.AI.Projects.SessionFileWriteResponse", + "azure.ai.projects.models.SessionDirectoryListResult": "Azure.AI.Projects.SessionDirectoryListResponse", + "azure.ai.projects.models.SessionFileWriteResult": "Azure.AI.Projects.SessionFileWriteResponse", "azure.ai.projects.models.SessionLogEvent": "Azure.AI.Projects.SessionLogEvent", "azure.ai.projects.models.SharepointGroundingToolParameters": "Azure.AI.Projects.SharepointGroundingToolParameters", "azure.ai.projects.models.SharepointPreviewTool": "Azure.AI.Projects.SharepointPreviewTool", "azure.ai.projects.models.SimpleQnADataGenerationJobOptions": "Azure.AI.Projects.SimpleQnADataGenerationJobOptions", - "azure.ai.projects.models.SkillObject": "Azure.AI.Projects.SkillObject", + "azure.ai.projects.models.SkillDetails": "Azure.AI.Projects.SkillObject", "azure.ai.projects.models.SkillReferenceParam": "OpenAI.SkillReferenceParam", "azure.ai.projects.models.ToolChoiceParam": "OpenAI.ToolChoiceParam", "azure.ai.projects.models.SpecificApplyPatchParam": "OpenAI.SpecificApplyPatchParam", @@ -281,7 +280,6 @@ "azure.ai.projects.models.WeeklyRecurrenceSchedule": "Azure.AI.Projects.WeeklyRecurrenceSchedule", "azure.ai.projects.models.WorkflowAgentDefinition": "Azure.AI.Projects.WorkflowAgentDefinition", "azure.ai.projects.models.WorkIQPreviewTool": "Azure.AI.Projects.WorkIQPreviewTool", - "azure.ai.projects.models.WorkIQPreviewToolParameters": "Azure.AI.Projects.WorkIQPreviewToolParameters", "azure.ai.projects.models.AgentObjectType": "Azure.AI.Projects.AgentObjectType", "azure.ai.projects.models.AgentKind": "Azure.AI.Projects.AgentKind", "azure.ai.projects.models.ToolType": "OpenAI.ToolType", diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_operations.py b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_operations.py index ca49342578f8..98ac9d539ab0 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_operations.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_operations.py @@ -2147,7 +2147,7 @@ async def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -2159,8 +2159,8 @@ async def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -2173,7 +2173,7 @@ async def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -2185,8 +2185,8 @@ async def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -2199,7 +2199,7 @@ async def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -2211,8 +2211,8 @@ async def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -2223,7 +2223,7 @@ async def pending_upload( version: str, pending_upload_request: Union[_models.PendingUploadRequest, JSON, IO[bytes]], **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -2234,8 +2234,8 @@ async def pending_upload( types: PendingUploadRequest, JSON, IO[bytes] Required. :type pending_upload_request: ~azure.ai.projects.models.PendingUploadRequest or JSON or IO[bytes] - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -2250,7 +2250,7 @@ async def pending_upload( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PendingUploadResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.PendingUploadResult] = kwargs.pop("cls", None) content_type = content_type or "application/json" _content = None @@ -2293,7 +2293,7 @@ async def pending_upload( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.PendingUploadResponse, response.json()) + deserialized = _deserialize(_models.PendingUploadResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -4099,7 +4099,7 @@ async def get_session_log_stream( @distributed_trace_async async def _upload_session_file( self, agent_name: str, agent_session_id: str, content: bytes, *, path: str, **kwargs: Any - ) -> _models.SessionFileWriteResponse: + ) -> _models.SessionFileWriteResult: """Upload a file to the session sandbox via binary stream. Maximum file size is 50 MB. Uploads exceeding this limit return 413 Payload Too Large. @@ -4112,9 +4112,8 @@ async def _upload_session_file( :keyword path: The destination file path within the sandbox, relative to the session home directory. Required. :paramtype path: str - :return: SessionFileWriteResponse. The SessionFileWriteResponse is compatible with - MutableMapping - :rtype: ~azure.ai.projects.models.SessionFileWriteResponse + :return: SessionFileWriteResult. The SessionFileWriteResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SessionFileWriteResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -4129,7 +4128,7 @@ async def _upload_session_file( _params = kwargs.pop("params", {}) or {} content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/octet-stream")) - cls: ClsType[_models.SessionFileWriteResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.SessionFileWriteResult] = kwargs.pop("cls", None) _content = content @@ -4172,7 +4171,7 @@ async def _upload_session_file( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SessionFileWriteResponse, response.json()) + deserialized = _deserialize(_models.SessionFileWriteResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -4253,7 +4252,7 @@ async def download_session_file( @distributed_trace_async async def get_session_files( self, agent_name: str, agent_session_id: str, *, path: str, **kwargs: Any - ) -> _models.SessionDirectoryListResponse: + ) -> _models.SessionDirectoryListResult: """List files and directories at a given path in the session sandbox. Returns only the immediate children of the specified directory (non-recursive). @@ -4263,9 +4262,9 @@ async def get_session_files( :type agent_session_id: str :keyword path: The directory path to list, relative to the session home directory. Required. :paramtype path: str - :return: SessionDirectoryListResponse. The SessionDirectoryListResponse is compatible with + :return: SessionDirectoryListResult. The SessionDirectoryListResult is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SessionDirectoryListResponse + :rtype: ~azure.ai.projects.models.SessionDirectoryListResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -4279,7 +4278,7 @@ async def get_session_files( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SessionDirectoryListResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.SessionDirectoryListResult] = kwargs.pop("cls", None) _request = build_beta_agents_get_session_files_request( agent_name=agent_name, @@ -4318,7 +4317,7 @@ async def get_session_files( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SessionDirectoryListResponse, response.json()) + deserialized = _deserialize(_models.SessionDirectoryListResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -8937,7 +8936,7 @@ async def create( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Creates a skill. :keyword name: The unique name of the skill. Required. @@ -8957,13 +8956,15 @@ async def create( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def create(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> _models.SkillObject: + async def create( + self, body: JSON, *, content_type: str = "application/json", **kwargs: Any + ) -> _models.SkillDetails: """Creates a skill. :param body: Required. @@ -8971,15 +8972,15 @@ async def create(self, body: JSON, *, content_type: str = "application/json", ** :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload async def create( self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Creates a skill. :param body: Required. @@ -8987,8 +8988,8 @@ async def create( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9002,7 +9003,7 @@ async def create( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Creates a skill. :param body: Is either a JSON type or a IO[bytes] type. Required. @@ -9021,8 +9022,8 @@ async def create( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9037,7 +9038,7 @@ async def create( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) if body is _Unset: if name is _Unset: @@ -9087,7 +9088,7 @@ async def create( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -9095,13 +9096,13 @@ async def create( return deserialized # type: ignore @distributed_trace_async - async def create_from_package(self, body: bytes, **kwargs: Any) -> _models.SkillObject: + async def create_from_package(self, content: bytes, **kwargs: Any) -> _models.SkillDetails: """Creates a skill from a zip package. - :param body: The zip package used to create the skill. Required. - :type body: bytes - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :param content: The zip package used to create the skill. Required. + :type content: bytes + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9116,9 +9117,9 @@ async def create_from_package(self, body: bytes, **kwargs: Any) -> _models.Skill _params = kwargs.pop("params", {}) or {} content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/zip")) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) - _content = body + _content = content _request = build_beta_skills_create_from_package_request( content_type=content_type, @@ -9156,7 +9157,7 @@ async def create_from_package(self, body: bytes, **kwargs: Any) -> _models.Skill if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -9164,13 +9165,13 @@ async def create_from_package(self, body: bytes, **kwargs: Any) -> _models.Skill return deserialized # type: ignore @distributed_trace_async - async def get(self, name: str, **kwargs: Any) -> _models.SkillObject: + async def get(self, name: str, **kwargs: Any) -> _models.SkillDetails: """Retrieves a skill. :param name: The unique name of the skill. Required. :type name: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9184,7 +9185,7 @@ async def get(self, name: str, **kwargs: Any) -> _models.SkillObject: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) _request = build_beta_skills_get_request( name=name, @@ -9221,7 +9222,7 @@ async def get(self, name: str, **kwargs: Any) -> _models.SkillObject: if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -9301,7 +9302,7 @@ def list( order: Optional[Union[str, _models.PageOrder]] = None, before: Optional[str] = None, **kwargs: Any - ) -> AsyncItemPaged["_models.SkillObject"]: + ) -> AsyncItemPaged["_models.SkillDetails"]: """Returns the list of all skills. :keyword limit: A limit on the number of objects to be returned. Limit can range between 1 and @@ -9318,14 +9319,14 @@ def list( subsequent call can include before=obj_foo in order to fetch the previous page of the list. Default value is None. :paramtype before: str - :return: An iterator like instance of SkillObject - :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.projects.models.SkillObject] + :return: An iterator like instance of SkillDetails + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.ai.projects.models.SkillDetails] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.SkillObject]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.SkillDetails]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -9355,7 +9356,7 @@ def prepare_request(_continuation_token=None): async def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.SkillObject], + List[_models.SkillDetails], deserialized.get("data", []), ) if cls: @@ -9393,7 +9394,7 @@ async def update( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -9413,15 +9414,15 @@ async def update( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload async def update( self, name: str, body: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -9431,15 +9432,15 @@ async def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload async def update( self, name: str, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -9449,8 +9450,8 @@ async def update( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @@ -9464,7 +9465,7 @@ async def update( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -9483,8 +9484,8 @@ async def update( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9499,7 +9500,7 @@ async def update( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) if body is _Unset: body = {"description": description, "instructions": instructions, "metadata": metadata} @@ -9548,7 +9549,7 @@ async def update( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -9556,13 +9557,13 @@ async def update( return deserialized # type: ignore @distributed_trace_async - async def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: + async def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResult: """Deletes a skill. :param name: The unique name of the skill. Required. :type name: str - :return: DeleteSkillResponse. The DeleteSkillResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.DeleteSkillResponse + :return: DeleteSkillResult. The DeleteSkillResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.DeleteSkillResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -9576,7 +9577,7 @@ async def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.DeleteSkillResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.DeleteSkillResult] = kwargs.pop("cls", None) _request = build_beta_skills_delete_request( name=name, @@ -9613,7 +9614,7 @@ async def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.DeleteSkillResponse, response.json()) + deserialized = _deserialize(_models.DeleteSkillResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/models/__init__.py b/sdk/ai/azure-ai-projects/azure/ai/projects/models/__init__.py index 9d3335645ea7..58d3839bdce5 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/models/__init__.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/models/__init__.py @@ -111,7 +111,7 @@ DeleteAgentResponse, DeleteAgentVersionResponse, DeleteMemoryStoreResult, - DeleteSkillResponse, + DeleteSkillResult, Deployment, EmbeddingConfiguration, EntraAuthorizationScheme, @@ -141,7 +141,6 @@ EvaluatorVersion, FabricDataAgentToolParameters, FabricIQPreviewTool, - FabricIQPreviewToolParameters, FieldMapping, FileDataGenerationJobOutput, FileDataGenerationJobSource, @@ -212,7 +211,7 @@ OpenApiTool, OtlpTelemetryEndpoint, PendingUploadRequest, - PendingUploadResponse, + PendingUploadResult, PromptAgentDefinition, PromptAgentDefinitionTextOptions, PromptBasedEvaluatorDefinition, @@ -234,13 +233,13 @@ ScheduleRun, ScheduleTask, SessionDirectoryEntry, - SessionDirectoryListResponse, - SessionFileWriteResponse, + SessionDirectoryListResult, + SessionFileWriteResult, SessionLogEvent, SharepointGroundingToolParameters, SharepointPreviewTool, SimpleQnADataGenerationJobOptions, - SkillObject, + SkillDetails, SkillReferenceParam, SpecificApplyPatchParam, SpecificFunctionShellParam, @@ -293,7 +292,6 @@ WebSearchToolFilters, WeeklyRecurrenceSchedule, WorkIQPreviewTool, - WorkIQPreviewToolParameters, WorkflowAgentDefinition, ) @@ -471,7 +469,7 @@ "DeleteAgentResponse", "DeleteAgentVersionResponse", "DeleteMemoryStoreResult", - "DeleteSkillResponse", + "DeleteSkillResult", "Deployment", "EmbeddingConfiguration", "EntraAuthorizationScheme", @@ -501,7 +499,6 @@ "EvaluatorVersion", "FabricDataAgentToolParameters", "FabricIQPreviewTool", - "FabricIQPreviewToolParameters", "FieldMapping", "FileDataGenerationJobOutput", "FileDataGenerationJobSource", @@ -572,7 +569,7 @@ "OpenApiTool", "OtlpTelemetryEndpoint", "PendingUploadRequest", - "PendingUploadResponse", + "PendingUploadResult", "PromptAgentDefinition", "PromptAgentDefinitionTextOptions", "PromptBasedEvaluatorDefinition", @@ -594,13 +591,13 @@ "ScheduleRun", "ScheduleTask", "SessionDirectoryEntry", - "SessionDirectoryListResponse", - "SessionFileWriteResponse", + "SessionDirectoryListResult", + "SessionFileWriteResult", "SessionLogEvent", "SharepointGroundingToolParameters", "SharepointPreviewTool", "SimpleQnADataGenerationJobOptions", - "SkillObject", + "SkillDetails", "SkillReferenceParam", "SpecificApplyPatchParam", "SpecificFunctionShellParam", @@ -653,7 +650,6 @@ "WebSearchToolFilters", "WeeklyRecurrenceSchedule", "WorkIQPreviewTool", - "WorkIQPreviewToolParameters", "WorkflowAgentDefinition", "AgentBlueprintReferenceType", "AgentEndpointAuthorizationSchemeType", diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/models/_models.py b/sdk/ai/azure-ai-projects/azure/ai/projects/models/_models.py index 6519d4502f01..3606e0a5d9b8 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/models/_models.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/models/_models.py @@ -4759,7 +4759,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class DeleteSkillResponse(_Model): +class DeleteSkillResult(_Model): """A deleted skill Object. :ivar name: The unique name of the skill. Required. @@ -6019,43 +6019,10 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: class FabricIQPreviewTool(Tool, discriminator="fabric_iq_preview"): - """FabricIQPreviewTool. + """A FabricIQ server-side tool. :ivar type: The object type, which is always 'fabric_iq_preview'. Required. FABRIC_IQ_PREVIEW. :vartype type: str or ~azure.ai.projects.models.FABRIC_IQ_PREVIEW - :ivar fabric_iq_preview: The FabricIQ tool parameters. Required. - :vartype fabric_iq_preview: ~azure.ai.projects.models.FabricIQPreviewToolParameters - """ - - type: Literal[ToolType.FABRIC_IQ_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore - """The object type, which is always 'fabric_iq_preview'. Required. FABRIC_IQ_PREVIEW.""" - fabric_iq_preview: "_models.FabricIQPreviewToolParameters" = rest_field( - visibility=["read", "create", "update", "delete", "query"] - ) - """The FabricIQ tool parameters. Required.""" - - @overload - def __init__( - self, - *, - fabric_iq_preview: "_models.FabricIQPreviewToolParameters", - ) -> None: ... - - @overload - def __init__(self, mapping: Mapping[str, Any]) -> None: - """ - :param mapping: raw 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_IQ_PREVIEW # type: ignore - - -class FabricIQPreviewToolParameters(_Model): - """FabricIQPreviewToolParameters. - :ivar project_connection_id: The ID of the FabricIQ project connection. Required. :vartype project_connection_id: str :ivar server_label: (Optional) The label of the FabricIQ MCP server to connect to. @@ -6066,8 +6033,14 @@ class FabricIQPreviewToolParameters(_Model): :ivar require_approval: (Optional) Whether the agent requires approval before executing actions. Default is always. Is either a MCPToolRequireApproval type or a str type. :vartype require_approval: ~azure.ai.projects.models.MCPToolRequireApproval 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 """ + type: Literal[ToolType.FABRIC_IQ_PREVIEW] = rest_discriminator(name="type", visibility=["read", "create", "update", "delete", "query"]) # type: ignore + """The object type, which is always 'fabric_iq_preview'. Required. FABRIC_IQ_PREVIEW.""" project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) """The ID of the FabricIQ project connection. Required.""" server_label: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) @@ -6080,6 +6053,10 @@ class FabricIQPreviewToolParameters(_Model): ) """(Optional) Whether the agent requires approval before executing actions. Default is always. Is either a MCPToolRequireApproval type or a str 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__( @@ -6089,6 +6066,8 @@ def __init__( server_label: Optional[str] = None, server_url: Optional[str] = None, require_approval: Optional[Union["_models.MCPToolRequireApproval", str]] = None, + name: Optional[str] = None, + description: Optional[str] = None, ) -> None: ... @overload @@ -6100,6 +6079,7 @@ def __init__(self, mapping: Mapping[str, Any]) -> None: def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) + self.type = ToolType.FABRIC_IQ_PREVIEW # type: ignore class FieldMapping(_Model): @@ -9143,7 +9123,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class PendingUploadResponse(_Model): +class PendingUploadResult(_Model): """Represents the response for a pending upload request. :ivar blob_reference: Container-level read, write, list SAS. Required. @@ -10144,7 +10124,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class SessionDirectoryListResponse(_Model): +class SessionDirectoryListResult(_Model): """Response from listing a directory in a session sandbox. :ivar path: The path that was listed, relative to the session home directory. Required. @@ -10179,7 +10159,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) -class SessionFileWriteResponse(_Model): +class SessionFileWriteResult(_Model): """Response from uploading a file to a session sandbox. :ivar path: The path where the file was written, relative to the session home directory. @@ -10398,7 +10378,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: self.type = DataGenerationJobType.SIMPLE_QNA # type: ignore -class SkillObject(_Model): +class SkillDetails(_Model): """A skill object. :ivar skill_id: The unique identifier of the skill. Required. @@ -12247,30 +12227,28 @@ class WorkIQPreviewTool(Tool, discriminator="work_iq_preview"): :ivar type: The object type, which is always 'work_iq_preview'. Required. WORK_IQ_PREVIEW. :vartype type: str or ~azure.ai.projects.models.WORK_IQ_PREVIEW + :ivar project_connection_id: The ID of the WorkIQ project connection. Required. + :vartype project_connection_id: 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 work_iq_preview: The WorkIQ tool parameters. Required. - :vartype work_iq_preview: ~azure.ai.projects.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.""" + project_connection_id: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """The ID of the WorkIQ project connection. Required.""" 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.""" - 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", + project_connection_id: str, name: Optional[str] = None, description: Optional[str] = None, ) -> None: ... @@ -12285,31 +12263,3 @@ def __init__(self, mapping: Mapping[str, Any]) -> None: 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/ai/azure-ai-projects/azure/ai/projects/operations/_operations.py b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_operations.py index a785628fb35e..72b85abdab2f 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_operations.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_operations.py @@ -4678,7 +4678,7 @@ def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -4690,8 +4690,8 @@ def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -4704,7 +4704,7 @@ def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -4716,8 +4716,8 @@ def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -4730,7 +4730,7 @@ def pending_upload( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -4742,8 +4742,8 @@ def pending_upload( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ @@ -4754,7 +4754,7 @@ def pending_upload( version: str, pending_upload_request: Union[_models.PendingUploadRequest, JSON, IO[bytes]], **kwargs: Any - ) -> _models.PendingUploadResponse: + ) -> _models.PendingUploadResult: """Start a new or get an existing pending upload of a dataset for a specific version. :param name: The name of the resource. Required. @@ -4765,8 +4765,8 @@ def pending_upload( types: PendingUploadRequest, JSON, IO[bytes] Required. :type pending_upload_request: ~azure.ai.projects.models.PendingUploadRequest or JSON or IO[bytes] - :return: PendingUploadResponse. The PendingUploadResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.PendingUploadResponse + :return: PendingUploadResult. The PendingUploadResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.PendingUploadResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -4781,7 +4781,7 @@ def pending_upload( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PendingUploadResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.PendingUploadResult] = kwargs.pop("cls", None) content_type = content_type or "application/json" _content = None @@ -4824,7 +4824,7 @@ def pending_upload( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.PendingUploadResponse, response.json()) + deserialized = _deserialize(_models.PendingUploadResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -6630,7 +6630,7 @@ def get_session_log_stream( @distributed_trace def _upload_session_file( self, agent_name: str, agent_session_id: str, content: bytes, *, path: str, **kwargs: Any - ) -> _models.SessionFileWriteResponse: + ) -> _models.SessionFileWriteResult: """Upload a file to the session sandbox via binary stream. Maximum file size is 50 MB. Uploads exceeding this limit return 413 Payload Too Large. @@ -6643,9 +6643,8 @@ def _upload_session_file( :keyword path: The destination file path within the sandbox, relative to the session home directory. Required. :paramtype path: str - :return: SessionFileWriteResponse. The SessionFileWriteResponse is compatible with - MutableMapping - :rtype: ~azure.ai.projects.models.SessionFileWriteResponse + :return: SessionFileWriteResult. The SessionFileWriteResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SessionFileWriteResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -6660,7 +6659,7 @@ def _upload_session_file( _params = kwargs.pop("params", {}) or {} content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/octet-stream")) - cls: ClsType[_models.SessionFileWriteResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.SessionFileWriteResult] = kwargs.pop("cls", None) _content = content @@ -6703,7 +6702,7 @@ def _upload_session_file( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SessionFileWriteResponse, response.json()) + deserialized = _deserialize(_models.SessionFileWriteResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -6784,7 +6783,7 @@ def download_session_file( @distributed_trace def get_session_files( self, agent_name: str, agent_session_id: str, *, path: str, **kwargs: Any - ) -> _models.SessionDirectoryListResponse: + ) -> _models.SessionDirectoryListResult: """List files and directories at a given path in the session sandbox. Returns only the immediate children of the specified directory (non-recursive). @@ -6794,9 +6793,9 @@ def get_session_files( :type agent_session_id: str :keyword path: The directory path to list, relative to the session home directory. Required. :paramtype path: str - :return: SessionDirectoryListResponse. The SessionDirectoryListResponse is compatible with + :return: SessionDirectoryListResult. The SessionDirectoryListResult is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SessionDirectoryListResponse + :rtype: ~azure.ai.projects.models.SessionDirectoryListResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -6810,7 +6809,7 @@ def get_session_files( _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SessionDirectoryListResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.SessionDirectoryListResult] = kwargs.pop("cls", None) _request = build_beta_agents_get_session_files_request( agent_name=agent_name, @@ -6849,7 +6848,7 @@ def get_session_files( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SessionDirectoryListResponse, response.json()) + deserialized = _deserialize(_models.SessionDirectoryListResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -11464,7 +11463,7 @@ def create( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Creates a skill. :keyword name: The unique name of the skill. Required. @@ -11484,13 +11483,13 @@ def create( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def create(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> _models.SkillObject: + def create(self, body: JSON, *, content_type: str = "application/json", **kwargs: Any) -> _models.SkillDetails: """Creates a skill. :param body: Required. @@ -11498,13 +11497,13 @@ def create(self, body: JSON, *, content_type: str = "application/json", **kwargs :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def create(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> _models.SkillObject: + def create(self, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any) -> _models.SkillDetails: """Creates a skill. :param body: Required. @@ -11512,8 +11511,8 @@ def create(self, body: IO[bytes], *, content_type: str = "application/json", **k :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @@ -11527,7 +11526,7 @@ def create( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Creates a skill. :param body: Is either a JSON type or a IO[bytes] type. Required. @@ -11546,8 +11545,8 @@ def create( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -11562,7 +11561,7 @@ def create( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) if body is _Unset: if name is _Unset: @@ -11612,7 +11611,7 @@ def create( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -11620,13 +11619,13 @@ def create( return deserialized # type: ignore @distributed_trace - def create_from_package(self, body: bytes, **kwargs: Any) -> _models.SkillObject: + def create_from_package(self, content: bytes, **kwargs: Any) -> _models.SkillDetails: """Creates a skill from a zip package. - :param body: The zip package used to create the skill. Required. - :type body: bytes - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :param content: The zip package used to create the skill. Required. + :type content: bytes + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -11641,9 +11640,9 @@ def create_from_package(self, body: bytes, **kwargs: Any) -> _models.SkillObject _params = kwargs.pop("params", {}) or {} content_type: str = kwargs.pop("content_type", _headers.pop("Content-Type", "application/zip")) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) - _content = body + _content = content _request = build_beta_skills_create_from_package_request( content_type=content_type, @@ -11681,7 +11680,7 @@ def create_from_package(self, body: bytes, **kwargs: Any) -> _models.SkillObject if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -11689,13 +11688,13 @@ def create_from_package(self, body: bytes, **kwargs: Any) -> _models.SkillObject return deserialized # type: ignore @distributed_trace - def get(self, name: str, **kwargs: Any) -> _models.SkillObject: + def get(self, name: str, **kwargs: Any) -> _models.SkillDetails: """Retrieves a skill. :param name: The unique name of the skill. Required. :type name: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -11709,7 +11708,7 @@ def get(self, name: str, **kwargs: Any) -> _models.SkillObject: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) _request = build_beta_skills_get_request( name=name, @@ -11746,7 +11745,7 @@ def get(self, name: str, **kwargs: Any) -> _models.SkillObject: if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -11826,7 +11825,7 @@ def list( order: Optional[Union[str, _models.PageOrder]] = None, before: Optional[str] = None, **kwargs: Any - ) -> ItemPaged["_models.SkillObject"]: + ) -> ItemPaged["_models.SkillDetails"]: """Returns the list of all skills. :keyword limit: A limit on the number of objects to be returned. Limit can range between 1 and @@ -11843,14 +11842,14 @@ def list( subsequent call can include before=obj_foo in order to fetch the previous page of the list. Default value is None. :paramtype before: str - :return: An iterator like instance of SkillObject - :rtype: ~azure.core.paging.ItemPaged[~azure.ai.projects.models.SkillObject] + :return: An iterator like instance of SkillDetails + :rtype: ~azure.core.paging.ItemPaged[~azure.ai.projects.models.SkillDetails] :raises ~azure.core.exceptions.HttpResponseError: """ _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[List[_models.SkillObject]] = kwargs.pop("cls", None) + cls: ClsType[List[_models.SkillDetails]] = kwargs.pop("cls", None) error_map: MutableMapping = { 401: ClientAuthenticationError, @@ -11880,7 +11879,7 @@ def prepare_request(_continuation_token=None): def extract_data(pipeline_response): deserialized = pipeline_response.http_response.json() list_of_elem = _deserialize( - List[_models.SkillObject], + List[_models.SkillDetails], deserialized.get("data", []), ) if cls: @@ -11918,7 +11917,7 @@ def update( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -11938,15 +11937,15 @@ def update( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload def update( self, name: str, body: JSON, *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -11956,15 +11955,15 @@ def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @overload def update( self, name: str, body: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -11974,8 +11973,8 @@ def update( :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ @@ -11989,7 +11988,7 @@ def update( instructions: Optional[str] = None, metadata: Optional[dict[str, str]] = None, **kwargs: Any - ) -> _models.SkillObject: + ) -> _models.SkillDetails: """Updates an existing skill. :param name: The unique name of the skill. Required. @@ -12008,8 +12007,8 @@ def update( Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters. Default value is None. :paramtype metadata: dict[str, str] - :return: SkillObject. The SkillObject is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SkillObject + :return: SkillDetails. The SkillDetails is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.SkillDetails :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -12024,7 +12023,7 @@ def update( _params = kwargs.pop("params", {}) or {} content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SkillObject] = kwargs.pop("cls", None) + cls: ClsType[_models.SkillDetails] = kwargs.pop("cls", None) if body is _Unset: body = {"description": description, "instructions": instructions, "metadata": metadata} @@ -12073,7 +12072,7 @@ def update( if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.SkillObject, response.json()) + deserialized = _deserialize(_models.SkillDetails, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore @@ -12081,13 +12080,13 @@ def update( return deserialized # type: ignore @distributed_trace - def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: + def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResult: """Deletes a skill. :param name: The unique name of the skill. Required. :type name: str - :return: DeleteSkillResponse. The DeleteSkillResponse is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.DeleteSkillResponse + :return: DeleteSkillResult. The DeleteSkillResult is compatible with MutableMapping + :rtype: ~azure.ai.projects.models.DeleteSkillResult :raises ~azure.core.exceptions.HttpResponseError: """ error_map: MutableMapping = { @@ -12101,7 +12100,7 @@ def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: _headers = kwargs.pop("headers", {}) or {} _params = kwargs.pop("params", {}) or {} - cls: ClsType[_models.DeleteSkillResponse] = kwargs.pop("cls", None) + cls: ClsType[_models.DeleteSkillResult] = kwargs.pop("cls", None) _request = build_beta_skills_delete_request( name=name, @@ -12138,7 +12137,7 @@ def delete(self, name: str, **kwargs: Any) -> _models.DeleteSkillResponse: if _stream: deserialized = response.iter_bytes() if _decompress else response.iter_raw() else: - deserialized = _deserialize(_models.DeleteSkillResponse, response.json()) + deserialized = _deserialize(_models.DeleteSkillResult, response.json()) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore diff --git a/sdk/ai/azure-ai-projects/tsp-location.yaml b/sdk/ai/azure-ai-projects/tsp-location.yaml index efd5cc5ec9e0..f7ab1acc313e 100644 --- a/sdk/ai/azure-ai-projects/tsp-location.yaml +++ b/sdk/ai/azure-ai-projects/tsp-location.yaml @@ -1,4 +1,4 @@ directory: specification/ai-foundry/data-plane/Foundry -commit: 1bcc9a4d17446295bdcb7af28d0808be620031f8 +commit: 8dba3c8402a82cf0c2bf8a905b0e932bec57727a repo: Azure/azure-rest-api-specs additionalDirectories: From ba9d3562f7a7fdc16037cfba51c75f9adad4991d Mon Sep 17 00:00:00 2001 From: Darren Cohen <39422044+dargilco@users.noreply.github.com> Date: Fri, 8 May 2026 11:24:34 -0700 Subject: [PATCH 2/3] Fix renamed model references in patch files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai/projects/aio/operations/_patch_datasets_async.py | 4 ++-- .../ai/projects/aio/operations/_patch_sessions_async.py | 6 +++--- .../azure/ai/projects/operations/_patch_datasets.py | 4 ++-- .../azure/ai/projects/operations/_patch_sessions.py | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_datasets_async.py b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_datasets_async.py index dc7095c827ea..f4983d79e7f9 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_datasets_async.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_datasets_async.py @@ -22,7 +22,7 @@ FileDatasetVersion, FolderDatasetVersion, PendingUploadRequest, - PendingUploadResponse, + PendingUploadResult, PendingUploadType, ) @@ -48,7 +48,7 @@ async def _create_dataset_and_get_its_container_client( connection_name: Optional[str] = None, ) -> Tuple[ContainerClient, str]: - pending_upload_response: PendingUploadResponse = await self.pending_upload( + pending_upload_response: PendingUploadResult = await self.pending_upload( name=name, version=input_version, pending_upload_request=PendingUploadRequest( diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_sessions_async.py b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_sessions_async.py index c4257fec3242..dd1427541a65 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_sessions_async.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/aio/operations/_patch_sessions_async.py @@ -34,7 +34,7 @@ async def upload_session_file( # type: ignore[override] *, path: str, **kwargs: Any, - ) -> _models.SessionFileWriteResponse: + ) -> _models.SessionFileWriteResult: """Upload a file to the session sandbox. Accepts either a ``bytes`` buffer or a local file path (``str``). @@ -52,9 +52,9 @@ async def upload_session_file( # type: ignore[override] :keyword path: The destination file path within the sandbox, relative to the session home directory. Required. :paramtype path: str - :return: SessionFileWriteResponse. The SessionFileWriteResponse is compatible with + :return: SessionFileWriteResult. The SessionFileWriteResult is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SessionFileWriteResponse + :rtype: ~azure.ai.projects.models.SessionFileWriteResult :raises ~azure.core.exceptions.HttpResponseError: :raises FileNotFoundError: If *content_or_file_path* is a ``str`` and the file does not exist. """ diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_datasets.py b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_datasets.py index bf2c0db51271..e8c13ff64627 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_datasets.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_datasets.py @@ -21,7 +21,7 @@ FileDatasetVersion, FolderDatasetVersion, PendingUploadRequest, - PendingUploadResponse, + PendingUploadResult, PendingUploadType, ) @@ -47,7 +47,7 @@ def _create_dataset_and_get_its_container_client( connection_name: Optional[str] = None, ) -> Tuple[ContainerClient, str]: - pending_upload_response: PendingUploadResponse = self.pending_upload( + pending_upload_response: PendingUploadResult = self.pending_upload( name=name, version=input_version, pending_upload_request=PendingUploadRequest( diff --git a/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_sessions.py b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_sessions.py index 053bbc8292ed..8d417620e725 100644 --- a/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_sessions.py +++ b/sdk/ai/azure-ai-projects/azure/ai/projects/operations/_patch_sessions.py @@ -34,7 +34,7 @@ def upload_session_file( # type: ignore[override] *, path: str, **kwargs: Any, - ) -> _models.SessionFileWriteResponse: + ) -> _models.SessionFileWriteResult: """Upload a file to the session sandbox. Accepts either a ``bytes`` buffer or a local file path (``str``). @@ -52,9 +52,9 @@ def upload_session_file( # type: ignore[override] :keyword path: The destination file path within the sandbox, relative to the session home directory. Required. :paramtype path: str - :return: SessionFileWriteResponse. The SessionFileWriteResponse is compatible with + :return: SessionFileWriteResult. The SessionFileWriteResult is compatible with MutableMapping - :rtype: ~azure.ai.projects.models.SessionFileWriteResponse + :rtype: ~azure.ai.projects.models.SessionFileWriteResult :raises ~azure.core.exceptions.HttpResponseError: :raises FileNotFoundError: If *content_or_file_path* is a ``str`` and the file does not exist. """ From 232612c3ac8ad43d743be4ab73289165fe0c3413 Mon Sep 17 00:00:00 2001 From: Darren Cohen <39422044+dargilco@users.noreply.github.com> Date: Fri, 8 May 2026 14:07:20 -0700 Subject: [PATCH 3/3] Update skill and changelog --- .../SKILL.md | 25 +++++++++------- sdk/ai/azure-ai-projects/CHANGELOG.md | 30 ++++++++++--------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/sdk/ai/azure-ai-projects/.github/skills/azure-ai-projects-emit-from-typespec/SKILL.md b/sdk/ai/azure-ai-projects/.github/skills/azure-ai-projects-emit-from-typespec/SKILL.md index 4f95c93e92bd..286a43c36e4d 100644 --- a/sdk/ai/azure-ai-projects/.github/skills/azure-ai-projects-emit-from-typespec/SKILL.md +++ b/sdk/ai/azure-ai-projects/.github/skills/azure-ai-projects-emit-from-typespec/SKILL.md @@ -105,7 +105,7 @@ This script applies azure-ai-projects-specific corrections to the emitted code ( --- -## Step 6: Fix patched code +## Step 6: Fix patched code related to preview feature headers The emitted code may have introduced another beta sub-client (a new property on class `BetaOperations`). It may have also added another enum value to the existing internal class `_FoundryFeaturesOptInKeys`. This means that the client library needs to set a new HTTP request header when making REST API calls to the service, to opt-in to the new service features which are still in preview. If that's the case, do the following: @@ -119,13 +119,22 @@ If a new enum value was added to `_AgentDefinitionOptInKeys`, please print a not --- -## Step 7: Install package from sources +## Step 7: Update samples and tests + +If there were any breaking changes in existing APIs, like class or method renames: +* update the patched code accordingly in the client library to reflect those changes. Changes should be made to Python source file names that start with "_patch", under the `azure\ai\projects` folder. +* update the samples accordingly to reflect those changes. Changes should be made under `sdk/ai/azure-ai-projects/samples` folder. +* update the tests accordingly to reflect those changes. Changes should be made under `sdk/ai/azure-ai-projects/tests` folder. + +--- + +## Step 8: Install package from sources In the folder `sdk\ai\azure-ai-projects`, run `pip install -e .` to install the package from sources. If there are any errors, stop and report the error to the user. Do not continue. --- -## Step 8: Update CHANGELOG.md +## Step 9: Update CHANGELOG.md Use the **`azsdk-common-generate-sdk-locally`** skill's changelog capability (`azsdk_package_update_changelog_content`) to update `CHANGELOG.md` in the `sdk/ai/azure-ai-projects` folder with a summary of changes from the TypeSpec emit. Some guidelines to follow: * Start by examining the public SDK API surface of the latest released version of the azure-ai-projects package. The source code for this version can be found in the Main branch of the `azure-sdk-for-python` repository, in the folder `sdk\ai\azure-ai-projects`. @@ -136,12 +145,6 @@ Use the **`azsdk-common-generate-sdk-locally`** skill's changelog capability (`a --- -## Step 9: Update samples and tests - -If there were any breaking changes in existing APIs, like class or method renames, update the samples and tests accordingly to reflect those changes. Changes should be made in the "samples" and "tests" folders under `sdk/ai/azure-ai-projects`. - ---- - ## Step 10: Commit and push Stage all changes (excluding file names that start with `.env`), commit, and push the topic branch: @@ -167,7 +170,9 @@ gh pr create --draft --base --head --assignee @me - - **Title:** Use a descriptive title such as `[azure-ai-projects] Emit SDK from TypeSpec ()`. - **Body:** Include which TypeSpec source was used and a summary of the changelog entry. -Show the user the PR URL when done. +You must show the user the resulting PR URL on screen when done, before you continue to the next step. + +Open a new tab in the default browser and navigate to the PR URL. --- diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index 5c5093d1a2bb..1caa7949ab75 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -6,27 +6,29 @@ * New Agent tool `FabricIQPreviewTool`. * New Agent tool `ToolboxSearchPreviewTool`. -* New string properties `description` and `name` added to all Agent tools. +* New optional string properties `description` and `name` added to Agent tools which did not have them before. * New `.beta.datasets` sub-client with data generation job operations: `create_generation_job`, `get_generation_job`, `list_generation_jobs`, `cancel_generation_job`, `delete_generation_job`. -* New read-only property `content_hash` on `CodeConfiguration`, returning the SHA-256 hex digest of the uploaded code zip. * New evaluator generation job operations on `.beta.evaluators`: `create_generation_job`, `get_generation_job`, `list_generation_jobs`, `cancel_generation_job`, `delete_generation_job`. * New methods on `.beta.agents` sub-client for code-based hosted agents: `update_agent_from_code()`, `create_agent_version_from_code()`, `download_agent_version_code()`, `download_agent_code()`. +* New read-only property `content_hash` on `CodeConfiguration`, returning the SHA-256 hex digest of the uploaded code zip. ### Breaking Changes -Breaking changes in beta operations: -* Renamed model `AgentEndpoint` to `AgentEndpointConfig`. -* Required property `isolation_key_source` removed from class `EntraAuthorizationScheme`. -* Required keyword argument `isolation_key` removed from `.beta.agents.create_session()` and `.beta.agents.delete_session()` methods. +Breaking changes in beta methods: +* Required keyword `isolation_key` removed from `.beta.agents.create_session()` and `.beta.agents.delete_session()` methods. * Argument `body` in methods `.beta.evaluation_taxonomies.create()` and `.beta.evaluation_taxonomies.update()` renamed to `taxonomy`. -* Renamed model `DeleteSkillResponse` to `DeleteSkillResult`. -* Renamed model `PendingUploadResponse` to `PendingUploadResult`. -* Renamed model `SessionDirectoryListResponse` to `SessionDirectoryListResult`. -* Renamed model `SessionFileWriteResponse` to `SessionFileWriteResult`. -* Renamed model `SkillObject` to `SkillDetails`. -* Removed model `FabricIQPreviewToolParameters`. -* Removed model `WorkIQPreviewToolParameters`. -* Renamed argument `body` to `content` in `.beta.skills.create_from_package()` method. +* Argument `body` in method `.beta.skills.create_from_package()` renamed to `content`. + +Breaking changes in beta classes: +* Required property `isolation_key_source` removed from class `EntraAuthorizationScheme`. +* Renamed class `AgentEndpoint` to `AgentEndpointConfig`. +* Renamed class `DeleteSkillResponse` to `DeleteSkillResult`. +* Renamed class `PendingUploadResponse` to `PendingUploadResult`. +* Renamed class `SessionDirectoryListResponse` to `SessionDirectoryListResult`. +* Renamed class `SessionFileWriteResponse` to `SessionFileWriteResult`. +* Renamed class `SkillObject` to `SkillDetails`. +* Removed class `FabricIQPreviewToolParameters`. +* Removed class `WorkIQPreviewToolParameters`. ### Bugs Fixed