diff --git a/.roe-main-release-version b/.roe-main-release-version index b5d092b..41158aa 100644 --- a/.roe-main-release-version +++ b/.roe-main-release-version @@ -1 +1 @@ -1-0-95 +1-0-96 diff --git a/README.md b/README.md index 1a202f4..2098080 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ A Python SDK for the [Roe](https://www.roe-ai.com/) API. -> **v1.1.11** - SDK operation coverage is synchronized across Python, +> **v1.1.12** - SDK operation coverage is synchronized across Python, > TypeScript, and Go. See `SDK_EXAMPLES.md` for copy-ready examples and > use cases. diff --git a/openapi/openapi.yml b/openapi/openapi.yml index 10124c6..9f43fe1 100644 --- a/openapi/openapi.yml +++ b/openapi/openapi.yml @@ -2631,7 +2631,8 @@ paths: schema: $ref: '#/components/schemas/DuplicateConnectionResponse' description: A strict-identity duplicate of this connection already exists - in this organization. + in this organization, or post actions still call a write operation this + update removes or renames ({error}). patch: operationId: connections_partial_update description: 'Public API: GET/PATCH/DELETE /api/v1/connections/{id}/ - Manage @@ -2712,7 +2713,8 @@ paths: schema: $ref: '#/components/schemas/DuplicateConnectionResponse' description: A strict-identity duplicate of this connection already exists - in this organization. + in this organization, or post actions still call a write operation this + update removes or renames ({error}). delete: operationId: connections_destroy description: 'Public API: GET/PATCH/DELETE /api/v1/connections/{id}/ - Manage @@ -2752,6 +2754,12 @@ paths: schema: $ref: '#/components/schemas/ErrorDetailResponse' description: Connection not found. + '409': + content: + application/json: + schema: + $ref: '#/components/schemas/ConnectionDeleteErrorResponse' + description: Post actions still reference this connection. '500': content: application/json: @@ -4655,6 +4663,12 @@ components: description: List of input definitions for this agent version. engine_config: description: Engine configuration. + post_actions: + type: array + items: + $ref: '#/components/schemas/PostActionSpec' + readOnly: true + description: Connector write actions configured on this version. organization_id: type: string format: uuid @@ -4677,6 +4691,7 @@ components: - input_definitions - name - organization_id + - post_actions - readonly - supports_memory - version_name @@ -4698,6 +4713,14 @@ components: description: List of input definitions for this agent version. engine_config: description: Engine configuration as a dictionary of string key-value pairs. + post_actions: + type: array + items: + $ref: '#/components/schemas/PostActionSpecRequest' + writeOnly: true + description: 'Connector write actions for this version. Omitted: the new + version keeps the current version''s actions. A list: those become the + new version''s actions. []: the new version has none.' AgentVersionUpdateRequest: type: object properties: @@ -4784,6 +4807,11 @@ components: items: $ref: '#/components/schemas/AgentTag' readOnly: true + skill_generation_state: + readOnly: true + oneOf: + - $ref: '#/components/schemas/SkillGenerationStateEnum' + - $ref: '#/components/schemas/NullEnum' required: - cache_failed_jobs - created_at @@ -4796,6 +4824,7 @@ components: - most_recent_job - name - organization_id + - skill_generation_state - tags - updated_at BaseAgentCreateRequest: @@ -5075,6 +5104,7 @@ components: - salesforce - web_application - shield + - sift - custom_api - lexis_nexis - sardine @@ -5096,6 +5126,7 @@ components: * `salesforce` - SALESFORCE * `web_application` - WEB_APPLICATION * `shield` - SHIELD + * `sift` - SIFT * `custom_api` - CUSTOM_API * `lexis_nexis` - LEXIS_NEXIS * `sardine` - SARDINE @@ -5621,6 +5652,8 @@ components: type: string required: - message + NullEnum: + type: 'null' PaginatedBaseAgentList: type: object required: @@ -5983,6 +6016,63 @@ components: - display_name - email - id + PostActionSpec: + type: object + description: |- + Schema mirror of PostActionSpec (agents/services/post_actions.py); + generated clients import this component instead of hand-writing it. + properties: + name: + type: string + connection_id: + type: string + format: uuid + operation: + type: string + trigger_on: + type: array + items: + type: integer + param_mappings: + type: object + additionalProperties: + type: string + required: + - connection_id + - name + - operation + - param_mappings + - trigger_on + PostActionSpecRequest: + type: object + description: |- + Schema mirror of PostActionSpec (agents/services/post_actions.py); + generated clients import this component instead of hand-writing it. + properties: + name: + type: string + minLength: 1 + connection_id: + type: string + format: uuid + operation: + type: string + minLength: 1 + trigger_on: + type: array + items: + type: integer + param_mappings: + type: object + additionalProperties: + type: string + minLength: 1 + required: + - connection_id + - name + - operation + - param_mappings + - trigger_on PublicAgentJobStatusEvent: type: object description: |- @@ -6084,6 +6174,14 @@ components: * `pending` - Pending Review * `approved` - Approved * `rejected` - Rejected + SkillGenerationStateEnum: + enum: + - generating + - failed + type: string + description: |- + * `generating` - generating + * `failed` - failed StatusEnum: enum: - active diff --git a/pyproject.toml b/pyproject.toml index df64d8a..0944c7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "roe-ai" -version = "1.1.11" +version = "1.1.12" authors = [ { name = "Roe", email = "founders@roe-ai.com" }, ] diff --git a/src/roe/_generated/api/connections/connections_destroy.py b/src/roe/_generated/api/connections/connections_destroy.py index 9f99685..b51fe8d 100644 --- a/src/roe/_generated/api/connections/connections_destroy.py +++ b/src/roe/_generated/api/connections/connections_destroy.py @@ -67,6 +67,13 @@ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Res return response_404 + if response.status_code == 409: + response_409 = ConnectionDeleteErrorResponse.from_dict(response.json()) + + + + return response_409 + if response.status_code == 500: response_500 = ConnectionDeleteErrorResponse.from_dict(response.json()) diff --git a/src/roe/_generated/models/__init__.py b/src/roe/_generated/models/__init__.py index 11cc6ba..379a4ea 100644 --- a/src/roe/_generated/models/__init__.py +++ b/src/roe/_generated/models/__init__.py @@ -118,6 +118,10 @@ from .policy_delete_conflict import PolicyDeleteConflict from .policy_version import PolicyVersion from .policy_version_created_by import PolicyVersionCreatedBy +from .post_action_spec import PostActionSpec +from .post_action_spec_param_mappings import PostActionSpecParamMappings +from .post_action_spec_request import PostActionSpecRequest +from .post_action_spec_request_param_mappings import PostActionSpecRequestParamMappings from .public_agent_job_status_event import PublicAgentJobStatusEvent from .public_agent_job_status_event_error_details import PublicAgentJobStatusEventErrorDetails from .qdrant_cleanup_error_response import QdrantCleanupErrorResponse @@ -127,6 +131,7 @@ from .resolve_request import ResolveRequest from .resolve_request_refs_item import ResolveRequestRefsItem from .review_status_enum import ReviewStatusEnum +from .skill_generation_state_enum import SkillGenerationStateEnum from .status_enum import StatusEnum from .supported_llm_model import SupportedLLMModel from .supported_llm_model_list import SupportedLLMModelList @@ -282,6 +287,10 @@ "PolicyDeleteConflict", "PolicyVersion", "PolicyVersionCreatedBy", + "PostActionSpec", + "PostActionSpecParamMappings", + "PostActionSpecRequest", + "PostActionSpecRequestParamMappings", "PublicAgentJobStatusEvent", "PublicAgentJobStatusEventErrorDetails", "QdrantCleanupErrorResponse", @@ -291,6 +300,7 @@ "ResolveRequest", "ResolveRequestRefsItem", "ReviewStatusEnum", + "SkillGenerationStateEnum", "StatusEnum", "SupportedLLMModel", "SupportedLLMModelList", diff --git a/src/roe/_generated/models/agent_version.py b/src/roe/_generated/models/agent_version.py index 3723a79..1949edd 100644 --- a/src/roe/_generated/models/agent_version.py +++ b/src/roe/_generated/models/agent_version.py @@ -17,6 +17,7 @@ if TYPE_CHECKING: from ..models.agent_input_definition import AgentInputDefinition from ..models.base_agent import BaseAgent + from ..models.post_action_spec import PostActionSpec from ..models.user_info import UserInfo @@ -42,6 +43,7 @@ class AgentVersion: configured on it. Independent of whether memory is currently switched on. input_definitions (list[AgentInputDefinition]): List of input definitions for this agent version. engine_config (Any): Engine configuration. + post_actions (list[PostActionSpec]): Connector write actions configured on this version. organization_id (UUID): Organization ID from base_agent. readonly (bool): base_agent (BaseAgent): Serializer for BaseAgent (agent config) @@ -58,6 +60,7 @@ class AgentVersion: supports_memory: bool input_definitions: list[AgentInputDefinition] engine_config: Any + post_actions: list[PostActionSpec] organization_id: UUID readonly: bool base_agent: BaseAgent @@ -72,6 +75,7 @@ class AgentVersion: def to_dict(self) -> dict[str, Any]: from ..models.agent_input_definition import AgentInputDefinition from ..models.base_agent import BaseAgent + from ..models.post_action_spec import PostActionSpec from ..models.user_info import UserInfo id = str(self.id) @@ -96,6 +100,13 @@ def to_dict(self) -> dict[str, Any]: engine_config = self.engine_config + post_actions = [] + for post_actions_item_data in self.post_actions: + post_actions_item = post_actions_item_data.to_dict() + post_actions.append(post_actions_item) + + + organization_id = str(self.organization_id) readonly = self.readonly @@ -125,6 +136,7 @@ def to_dict(self) -> dict[str, Any]: "supports_memory": supports_memory, "input_definitions": input_definitions, "engine_config": engine_config, + "post_actions": post_actions, "organization_id": organization_id, "readonly": readonly, "base_agent": base_agent, @@ -142,6 +154,7 @@ def to_dict(self) -> dict[str, Any]: def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.agent_input_definition import AgentInputDefinition from ..models.base_agent import BaseAgent + from ..models.post_action_spec import PostActionSpec from ..models.user_info import UserInfo d = dict(src_dict) id = UUID(d.pop("id")) @@ -176,6 +189,16 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: engine_config = d.pop("engine_config") + post_actions = [] + _post_actions = d.pop("post_actions") + for post_actions_item_data in (_post_actions): + post_actions_item = PostActionSpec.from_dict(post_actions_item_data) + + + + post_actions.append(post_actions_item) + + organization_id = UUID(d.pop("organization_id")) @@ -220,6 +243,7 @@ def _parse_creator(data: object) -> None | Unset | UserInfo: supports_memory=supports_memory, input_definitions=input_definitions, engine_config=engine_config, + post_actions=post_actions, organization_id=organization_id, readonly=readonly, base_agent=base_agent, diff --git a/src/roe/_generated/models/agent_version_create_request.py b/src/roe/_generated/models/agent_version_create_request.py index 68d63ad..dabf8c8 100644 --- a/src/roe/_generated/models/agent_version_create_request.py +++ b/src/roe/_generated/models/agent_version_create_request.py @@ -11,6 +11,8 @@ from ..types import UNSET, Unset from typing import cast +if TYPE_CHECKING: + from ..models.post_action_spec_request import PostActionSpecRequest @@ -29,12 +31,16 @@ class AgentVersionCreateRequest: description (None | str | Unset): Description for the agent version. input_definitions (Any | Unset): List of input definitions for this agent version. engine_config (Any | Unset): Engine configuration as a dictionary of string key-value pairs. + post_actions (list[PostActionSpecRequest] | Unset): Connector write actions for this version. Omitted: the new + version keeps the current version's actions. A list: those become the new version's actions. []: the new version + has none. """ version_name: str | Unset = UNSET description: None | str | Unset = UNSET input_definitions: Any | Unset = UNSET engine_config: Any | Unset = UNSET + post_actions: list[PostActionSpecRequest] | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -42,6 +48,7 @@ class AgentVersionCreateRequest: def to_dict(self) -> dict[str, Any]: + from ..models.post_action_spec_request import PostActionSpecRequest version_name = self.version_name description: None | str | Unset @@ -54,6 +61,15 @@ def to_dict(self) -> dict[str, Any]: engine_config = self.engine_config + post_actions: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.post_actions, Unset): + post_actions = [] + for post_actions_item_data in self.post_actions: + post_actions_item = post_actions_item_data.to_dict() + post_actions.append(post_actions_item) + + + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) @@ -67,6 +83,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["input_definitions"] = input_definitions if engine_config is not UNSET: field_dict["engine_config"] = engine_config + if post_actions is not UNSET: + field_dict["post_actions"] = post_actions return field_dict @@ -74,6 +92,7 @@ def to_dict(self) -> dict[str, Any]: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.post_action_spec_request import PostActionSpecRequest d = dict(src_dict) version_name = d.pop("version_name", UNSET) @@ -91,11 +110,24 @@ def _parse_description(data: object) -> None | str | Unset: engine_config = d.pop("engine_config", UNSET) + _post_actions = d.pop("post_actions", UNSET) + post_actions: list[PostActionSpecRequest] | Unset = UNSET + if _post_actions is not UNSET: + post_actions = [] + for post_actions_item_data in _post_actions: + post_actions_item = PostActionSpecRequest.from_dict(post_actions_item_data) + + + + post_actions.append(post_actions_item) + + agent_version_create_request = cls( version_name=version_name, description=description, input_definitions=input_definitions, engine_config=engine_config, + post_actions=post_actions, ) diff --git a/src/roe/_generated/models/base_agent.py b/src/roe/_generated/models/base_agent.py index b05d6a4..9290ed9 100644 --- a/src/roe/_generated/models/base_agent.py +++ b/src/roe/_generated/models/base_agent.py @@ -8,6 +8,7 @@ from ..types import UNSET, Unset +from ..models.skill_generation_state_enum import SkillGenerationStateEnum from ..types import UNSET, Unset from dateutil.parser import isoparse from typing import cast @@ -46,6 +47,7 @@ class BaseAgent: most_recent_job (datetime.datetime | None): engine_name (str): Engine Display Name tags (list[AgentTag]): + skill_generation_state (None | SkillGenerationStateEnum): creator (None | Unset | UserInfo): """ @@ -62,6 +64,7 @@ class BaseAgent: most_recent_job: datetime.datetime | None engine_name: str tags: list[AgentTag] + skill_generation_state: None | SkillGenerationStateEnum creator: None | Unset | UserInfo = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -108,6 +111,12 @@ def to_dict(self) -> dict[str, Any]: + skill_generation_state: None | str + if isinstance(self.skill_generation_state, SkillGenerationStateEnum): + skill_generation_state = self.skill_generation_state.value + else: + skill_generation_state = self.skill_generation_state + creator: dict[str, Any] | None | Unset if isinstance(self.creator, Unset): creator = UNSET @@ -133,6 +142,7 @@ def to_dict(self) -> dict[str, Any]: "most_recent_job": most_recent_job, "engine_name": engine_name, "tags": tags, + "skill_generation_state": skill_generation_state, }) if creator is not UNSET: field_dict["creator"] = creator @@ -217,6 +227,24 @@ def _parse_most_recent_job(data: object) -> datetime.datetime | None: tags.append(tags_item) + def _parse_skill_generation_state(data: object) -> None | SkillGenerationStateEnum: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + skill_generation_state_type_0 = SkillGenerationStateEnum(data) + + + + return skill_generation_state_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(None | SkillGenerationStateEnum, data) + + skill_generation_state = _parse_skill_generation_state(d.pop("skill_generation_state")) + + def _parse_creator(data: object) -> None | Unset | UserInfo: if data is None: return data @@ -251,6 +279,7 @@ def _parse_creator(data: object) -> None | Unset | UserInfo: most_recent_job=most_recent_job, engine_name=engine_name, tags=tags, + skill_generation_state=skill_generation_state, creator=creator, ) diff --git a/src/roe/_generated/models/connector_type_enum.py b/src/roe/_generated/models/connector_type_enum.py index a1666e1..6458018 100644 --- a/src/roe/_generated/models/connector_type_enum.py +++ b/src/roe/_generated/models/connector_type_enum.py @@ -15,6 +15,7 @@ class ConnectorTypeEnum(str, Enum): SARDINE = "sardine" SHAREPOINT = "sharepoint" SHIELD = "shield" + SIFT = "sift" SNOWFLAKE = "snowflake" SOCURE = "socure" STRIPE = "stripe" diff --git a/src/roe/_generated/models/create_connection_request.py b/src/roe/_generated/models/create_connection_request.py index aafb159..5720eab 100644 --- a/src/roe/_generated/models/create_connection_request.py +++ b/src/roe/_generated/models/create_connection_request.py @@ -42,6 +42,7 @@ class CreateConnectionRequest: * `salesforce` - SALESFORCE * `web_application` - WEB_APPLICATION * `shield` - SHIELD + * `sift` - SIFT * `custom_api` - CUSTOM_API * `lexis_nexis` - LEXIS_NEXIS * `sardine` - SARDINE diff --git a/src/roe/_generated/models/post_action_spec.py b/src/roe/_generated/models/post_action_spec.py new file mode 100644 index 0000000..9910ed0 --- /dev/null +++ b/src/roe/_generated/models/post_action_spec.py @@ -0,0 +1,125 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +from typing import cast +from uuid import UUID + +if TYPE_CHECKING: + from ..models.post_action_spec_param_mappings import PostActionSpecParamMappings + + + + + +T = TypeVar("T", bound="PostActionSpec") + + + +@_attrs_define +class PostActionSpec: + """ Schema mirror of PostActionSpec (agents/services/post_actions.py); + generated clients import this component instead of hand-writing it. + + Attributes: + name (str): + connection_id (UUID): + operation (str): + trigger_on (list[int]): + param_mappings (PostActionSpecParamMappings): + """ + + name: str + connection_id: UUID + operation: str + trigger_on: list[int] + param_mappings: PostActionSpecParamMappings + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + + + def to_dict(self) -> dict[str, Any]: + from ..models.post_action_spec_param_mappings import PostActionSpecParamMappings + name = self.name + + connection_id = str(self.connection_id) + + operation = self.operation + + trigger_on = self.trigger_on + + + + param_mappings = self.param_mappings.to_dict() + + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({ + "name": name, + "connection_id": connection_id, + "operation": operation, + "trigger_on": trigger_on, + "param_mappings": param_mappings, + }) + + return field_dict + + + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.post_action_spec_param_mappings import PostActionSpecParamMappings + d = dict(src_dict) + name = d.pop("name") + + connection_id = UUID(d.pop("connection_id")) + + + + + operation = d.pop("operation") + + trigger_on = cast(list[int], d.pop("trigger_on")) + + + param_mappings = PostActionSpecParamMappings.from_dict(d.pop("param_mappings")) + + + + + post_action_spec = cls( + name=name, + connection_id=connection_id, + operation=operation, + trigger_on=trigger_on, + param_mappings=param_mappings, + ) + + + post_action_spec.additional_properties = d + return post_action_spec + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/roe/_generated/models/post_action_spec_param_mappings.py b/src/roe/_generated/models/post_action_spec_param_mappings.py new file mode 100644 index 0000000..e35d11d --- /dev/null +++ b/src/roe/_generated/models/post_action_spec_param_mappings.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + + + + + + + +T = TypeVar("T", bound="PostActionSpecParamMappings") + + + +@_attrs_define +class PostActionSpecParamMappings: + """ + """ + + additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) + + + + + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + post_action_spec_param_mappings = cls( + ) + + + post_action_spec_param_mappings.additional_properties = d + return post_action_spec_param_mappings + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> str: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: str) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/roe/_generated/models/post_action_spec_request.py b/src/roe/_generated/models/post_action_spec_request.py new file mode 100644 index 0000000..376159d --- /dev/null +++ b/src/roe/_generated/models/post_action_spec_request.py @@ -0,0 +1,125 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +from typing import cast +from uuid import UUID + +if TYPE_CHECKING: + from ..models.post_action_spec_request_param_mappings import PostActionSpecRequestParamMappings + + + + + +T = TypeVar("T", bound="PostActionSpecRequest") + + + +@_attrs_define +class PostActionSpecRequest: + """ Schema mirror of PostActionSpec (agents/services/post_actions.py); + generated clients import this component instead of hand-writing it. + + Attributes: + name (str): + connection_id (UUID): + operation (str): + trigger_on (list[int]): + param_mappings (PostActionSpecRequestParamMappings): + """ + + name: str + connection_id: UUID + operation: str + trigger_on: list[int] + param_mappings: PostActionSpecRequestParamMappings + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + + + + + def to_dict(self) -> dict[str, Any]: + from ..models.post_action_spec_request_param_mappings import PostActionSpecRequestParamMappings + name = self.name + + connection_id = str(self.connection_id) + + operation = self.operation + + trigger_on = self.trigger_on + + + + param_mappings = self.param_mappings.to_dict() + + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({ + "name": name, + "connection_id": connection_id, + "operation": operation, + "trigger_on": trigger_on, + "param_mappings": param_mappings, + }) + + return field_dict + + + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.post_action_spec_request_param_mappings import PostActionSpecRequestParamMappings + d = dict(src_dict) + name = d.pop("name") + + connection_id = UUID(d.pop("connection_id")) + + + + + operation = d.pop("operation") + + trigger_on = cast(list[int], d.pop("trigger_on")) + + + param_mappings = PostActionSpecRequestParamMappings.from_dict(d.pop("param_mappings")) + + + + + post_action_spec_request = cls( + name=name, + connection_id=connection_id, + operation=operation, + trigger_on=trigger_on, + param_mappings=param_mappings, + ) + + + post_action_spec_request.additional_properties = d + return post_action_spec_request + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/roe/_generated/models/post_action_spec_request_param_mappings.py b/src/roe/_generated/models/post_action_spec_request_param_mappings.py new file mode 100644 index 0000000..3a95a9e --- /dev/null +++ b/src/roe/_generated/models/post_action_spec_request_param_mappings.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + + + + + + + +T = TypeVar("T", bound="PostActionSpecRequestParamMappings") + + + +@_attrs_define +class PostActionSpecRequestParamMappings: + """ + """ + + additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) + + + + + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + post_action_spec_request_param_mappings = cls( + ) + + + post_action_spec_request_param_mappings.additional_properties = d + return post_action_spec_request_param_mappings + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> str: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: str) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/roe/_generated/models/skill_generation_state_enum.py b/src/roe/_generated/models/skill_generation_state_enum.py new file mode 100644 index 0000000..ac5393c --- /dev/null +++ b/src/roe/_generated/models/skill_generation_state_enum.py @@ -0,0 +1,8 @@ +from enum import Enum + +class SkillGenerationStateEnum(str, Enum): + FAILED = "failed" + GENERATING = "generating" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/roe/_generated/models/test_connection_credentials_request.py b/src/roe/_generated/models/test_connection_credentials_request.py index 385ccc6..c8cd3ac 100644 --- a/src/roe/_generated/models/test_connection_credentials_request.py +++ b/src/roe/_generated/models/test_connection_credentials_request.py @@ -40,6 +40,7 @@ class TestConnectionCredentialsRequest: * `salesforce` - SALESFORCE * `web_application` - WEB_APPLICATION * `shield` - SHIELD + * `sift` - SIFT * `custom_api` - CUSTOM_API * `lexis_nexis` - LEXIS_NEXIS * `sardine` - SARDINE diff --git a/tests/unit/test_agents_wrapper_transport.py b/tests/unit/test_agents_wrapper_transport.py index 438e9cd..8e6cdcd 100644 --- a/tests/unit/test_agents_wrapper_transport.py +++ b/tests/unit/test_agents_wrapper_transport.py @@ -33,6 +33,7 @@ def _base_agent_json() -> dict[str, object]: "most_recent_job": None, "engine_name": "Engine", "tags": [], + "skill_generation_state": None, } diff --git a/uv.lock b/uv.lock index 0c0bc94..2b8b90f 100644 --- a/uv.lock +++ b/uv.lock @@ -454,7 +454,7 @@ wheels = [ [[package]] name = "roe-ai" -version = "1.1.11" +version = "1.1.12" source = { editable = "." } dependencies = [ { name = "attrs" },