everyrow 0.1.10__py3-none-any.whl → 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. everyrow/__init__.py +8 -1
  2. everyrow/api_utils.py +5 -1
  3. everyrow/billing.py +29 -0
  4. everyrow/constants.py +1 -1
  5. everyrow/generated/__init__.py +1 -1
  6. everyrow/generated/api/{default/interrupt_chat_task_tasks_chat_interrupt_post.py → artifacts/create_artifact_artifacts_post.py} +38 -32
  7. everyrow/generated/api/billing/__init__.py +1 -0
  8. everyrow/generated/api/{default/get_queues_stats_jobs_queues_get.py → billing/get_billing_balance_billing_get.py} +25 -17
  9. everyrow/generated/api/operations/__init__.py +1 -0
  10. everyrow/generated/api/{default/re_execute_task_endpoint_tasks_re_execute_post.py → operations/agent_map_operations_agent_map_post.py} +53 -41
  11. everyrow/generated/api/{default/create_workflow_from_artifact_workflows_from_artifact_post.py → operations/dedupe_operations_dedupe_post.py} +39 -33
  12. everyrow/generated/api/{default/submit_task_tasks_post.py → operations/merge_operations_merge_post.py} +37 -29
  13. everyrow/generated/api/{default/copy_workflow_endpoint_workflows_copy_post.py → operations/rank_operations_rank_post.py} +43 -29
  14. everyrow/generated/api/{default/export_to_google_sheets_export_post.py → operations/screen_operations_screen_post.py} +43 -31
  15. everyrow/generated/api/operations/single_agent_operations_single_agent_post.py +236 -0
  16. everyrow/generated/api/sessions/__init__.py +1 -0
  17. everyrow/generated/api/{default/copy_artifacts_artifacts_copy_post.py → sessions/create_session_endpoint_sessions_post.py} +35 -27
  18. everyrow/generated/api/tasks/__init__.py +1 -0
  19. everyrow/generated/api/{default/get_job_progress_for_task_jobs_progress_get.py → tasks/get_task_result_tasks_task_id_result_get.py} +45 -33
  20. everyrow/generated/api/{default/get_task_status_endpoint_tasks_task_id_status_get.py → tasks/get_task_status_tasks_task_id_status_get.py} +24 -42
  21. everyrow/generated/models/__init__.py +82 -266
  22. everyrow/generated/models/agent_map_operation.py +315 -0
  23. everyrow/generated/models/{artifact_group_record_metadata_type_0.py → agent_map_operation_input_type_1_item.py} +5 -5
  24. everyrow/generated/models/agent_map_operation_input_type_2.py +46 -0
  25. everyrow/generated/models/{standalone_artifact_record_analysis_type_0.py → agent_map_operation_response_schema_type_0.py} +5 -5
  26. everyrow/generated/models/{create_query_params.py → billing_response.py} +13 -12
  27. everyrow/generated/models/{continue_task_request.py → create_artifact_request.py} +43 -43
  28. everyrow/generated/models/create_artifact_request_data_type_0_item.py +46 -0
  29. everyrow/generated/models/{task_metadata_cols_to_rename_type_0.py → create_artifact_request_data_type_1.py} +5 -5
  30. everyrow/generated/models/{copy_artifacts_response.py → create_artifact_response.py} +12 -12
  31. everyrow/generated/models/{create_session_request.py → create_session.py} +6 -7
  32. everyrow/generated/models/dedupe_operation.py +151 -0
  33. everyrow/generated/models/dedupe_operation_input_type_1_item.py +46 -0
  34. everyrow/generated/models/{import_request_token_data.py → dedupe_operation_input_type_2.py} +5 -5
  35. everyrow/generated/models/error_response.py +109 -0
  36. everyrow/generated/models/{task_insert_query_params.py → error_response_details_type_0.py} +5 -5
  37. everyrow/generated/models/insufficient_balance_error.py +8 -0
  38. everyrow/generated/models/{llm_enum.py → llm_enum_public.py} +1 -20
  39. everyrow/generated/models/merge_operation.py +278 -0
  40. everyrow/generated/models/merge_operation_left_input_type_1_item.py +46 -0
  41. everyrow/generated/models/{chat_completion_message_tool_call.py → merge_operation_left_input_type_2.py} +5 -5
  42. everyrow/generated/models/merge_operation_right_input_type_1_item.py +46 -0
  43. everyrow/generated/models/merge_operation_right_input_type_2.py +46 -0
  44. everyrow/generated/models/merge_operation_use_web_search_type_0.py +10 -0
  45. everyrow/generated/models/operation_response.py +131 -0
  46. everyrow/generated/models/{multi_agent_effort_level.py → public_effort_level.py} +1 -1
  47. everyrow/generated/models/public_task_type.py +12 -0
  48. everyrow/generated/models/rank_operation.py +203 -0
  49. everyrow/generated/models/rank_operation_input_type_1_item.py +46 -0
  50. everyrow/generated/models/{export_request_token_data.py → rank_operation_input_type_2.py} +5 -5
  51. everyrow/generated/models/{artifact_group_record_analysis_type_0.py → rank_operation_response_schema_type_0.py} +5 -5
  52. everyrow/generated/models/screen_operation.py +186 -0
  53. everyrow/generated/models/screen_operation_input_type_1_item.py +46 -0
  54. everyrow/generated/models/screen_operation_input_type_2.py +46 -0
  55. everyrow/generated/models/screen_operation_response_schema_type_0.py +46 -0
  56. everyrow/generated/models/{create_session_response.py → session_response.py} +7 -8
  57. everyrow/generated/models/single_agent_operation.py +304 -0
  58. everyrow/generated/models/single_agent_operation_input_type_1_item.py +46 -0
  59. everyrow/generated/models/single_agent_operation_input_type_2.py +46 -0
  60. everyrow/generated/models/single_agent_operation_response_schema_type_0.py +46 -0
  61. everyrow/generated/models/task_result_response.py +185 -0
  62. everyrow/generated/models/task_result_response_data_type_0_item.py +46 -0
  63. everyrow/generated/models/task_result_response_data_type_1.py +46 -0
  64. everyrow/generated/models/task_status_response.py +99 -19
  65. everyrow/ops.py +360 -434
  66. everyrow/session.py +5 -7
  67. everyrow/task.py +68 -115
  68. {everyrow-0.1.10.dist-info → everyrow-0.2.0.dist-info}/METADATA +22 -8
  69. everyrow-0.2.0.dist-info/RECORD +81 -0
  70. everyrow/citations.py +0 -50
  71. everyrow/generated/api/default/continue_task_endpoint_tasks_continue_post.py +0 -208
  72. everyrow/generated/api/default/create_api_key_endpoint_api_keys_create_post.py +0 -186
  73. everyrow/generated/api/default/create_session_endpoint_sessions_create_post.py +0 -198
  74. everyrow/generated/api/default/generate_feedback_endpoint_tasks_generate_feedback_post.py +0 -186
  75. everyrow/generated/api/default/get_artifacts_artifacts_get.py +0 -260
  76. everyrow/generated/api/default/get_default_timeout_seconds_models_default_timeout_seconds_get.py +0 -165
  77. everyrow/generated/api/default/get_metrics_metrics_get.py +0 -80
  78. everyrow/generated/api/default/get_user_usage_usage_get.py +0 -123
  79. everyrow/generated/api/default/healthz_healthz_get.py +0 -127
  80. everyrow/generated/api/default/import_from_google_sheets_import_post.py +0 -170
  81. everyrow/generated/api/default/list_api_keys_endpoint_api_keys_get.py +0 -186
  82. everyrow/generated/api/default/revoke_api_key_endpoint_api_keys_key_id_revoke_post.py +0 -181
  83. everyrow/generated/api/default/revoke_jobs_for_task_jobs_revoke_post.py +0 -164
  84. everyrow/generated/api/default/rollback_to_message_endpoint_tasks_chat_rollback_post.py +0 -186
  85. everyrow/generated/api/default/submit_chat_task_tasks_chat_post.py +0 -164
  86. everyrow/generated/api/default/task_resource_estimation_task_resource_estimation_post.py +0 -319
  87. everyrow/generated/api/default/trigger_workflow_execution_endpoint_workflows_trigger_post.py +0 -166
  88. everyrow/generated/api/default/whoami_whoami_get.py +0 -127
  89. everyrow/generated/models/agent_improvement_instruction.py +0 -69
  90. everyrow/generated/models/agent_query_params.py +0 -383
  91. everyrow/generated/models/agent_query_params_system_prompt_kind_type_0.py +0 -10
  92. everyrow/generated/models/agent_task_args.py +0 -163
  93. everyrow/generated/models/agent_task_args_processing_mode.py +0 -9
  94. everyrow/generated/models/allowed_suggestions.py +0 -9
  95. everyrow/generated/models/api_key_info.py +0 -163
  96. everyrow/generated/models/artifact_changed_payload.py +0 -89
  97. everyrow/generated/models/artifact_group_record.py +0 -363
  98. everyrow/generated/models/artifact_group_record_trace_mapping_type_0.py +0 -46
  99. everyrow/generated/models/artifact_status.py +0 -14
  100. everyrow/generated/models/auto_cohort_conversation_message.py +0 -533
  101. everyrow/generated/models/aux_data.py +0 -128
  102. everyrow/generated/models/aux_data_source_bank.py +0 -59
  103. everyrow/generated/models/chat_message_metadata.py +0 -193
  104. everyrow/generated/models/concatenate_query_params.py +0 -46
  105. everyrow/generated/models/concatenate_request.py +0 -306
  106. everyrow/generated/models/continue_reason.py +0 -9
  107. everyrow/generated/models/controller_improvement_round.py +0 -79
  108. everyrow/generated/models/conversation_changed_payload.py +0 -89
  109. everyrow/generated/models/copy_artifacts_request.py +0 -70
  110. everyrow/generated/models/copy_workflow_request.py +0 -62
  111. everyrow/generated/models/copy_workflow_response.py +0 -70
  112. everyrow/generated/models/create_api_key_request.py +0 -95
  113. everyrow/generated/models/create_api_key_response.py +0 -96
  114. everyrow/generated/models/create_group_query_params.py +0 -61
  115. everyrow/generated/models/create_group_request.py +0 -305
  116. everyrow/generated/models/create_request.py +0 -305
  117. everyrow/generated/models/create_workflow_from_artifact_request.py +0 -92
  118. everyrow/generated/models/create_workflow_from_artifact_response.py +0 -70
  119. everyrow/generated/models/data_frame_method.py +0 -18
  120. everyrow/generated/models/date_cutoffs.py +0 -145
  121. everyrow/generated/models/dedupe_public_params.py +0 -64
  122. everyrow/generated/models/dedupe_request_params.py +0 -311
  123. everyrow/generated/models/deep_merge_public_params.py +0 -143
  124. everyrow/generated/models/deep_merge_request.py +0 -313
  125. everyrow/generated/models/deep_rank_public_params.py +0 -109
  126. everyrow/generated/models/deep_rank_request.py +0 -313
  127. everyrow/generated/models/deep_screen_public_params.py +0 -132
  128. everyrow/generated/models/deep_screen_request.py +0 -313
  129. everyrow/generated/models/derive_expression.py +0 -69
  130. everyrow/generated/models/derive_query_params.py +0 -75
  131. everyrow/generated/models/derive_request.py +0 -307
  132. everyrow/generated/models/document_query_tool.py +0 -12
  133. everyrow/generated/models/drop_columns_query_params.py +0 -61
  134. everyrow/generated/models/drop_columns_request.py +0 -305
  135. everyrow/generated/models/event_type.py +0 -14
  136. everyrow/generated/models/execution_metadata.py +0 -146
  137. everyrow/generated/models/export_request.py +0 -75
  138. everyrow/generated/models/export_to_google_sheets_export_post_response_export_to_google_sheets_export_post.py +0 -46
  139. everyrow/generated/models/filter_query_params.py +0 -91
  140. everyrow/generated/models/filter_request.py +0 -305
  141. everyrow/generated/models/flatten_query_params.py +0 -46
  142. everyrow/generated/models/flatten_request.py +0 -305
  143. everyrow/generated/models/generate_feedback_request.py +0 -62
  144. everyrow/generated/models/group_by_query_params.py +0 -62
  145. everyrow/generated/models/group_by_request.py +0 -305
  146. everyrow/generated/models/healthz_healthz_get_response_healthz_healthz_get.py +0 -46
  147. everyrow/generated/models/image_chat_content_part.py +0 -80
  148. everyrow/generated/models/image_chat_content_part_image_url.py +0 -46
  149. everyrow/generated/models/import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.py +0 -46
  150. everyrow/generated/models/import_request.py +0 -83
  151. everyrow/generated/models/join_query_params.py +0 -73
  152. everyrow/generated/models/join_request.py +0 -305
  153. everyrow/generated/models/map_agent_request_params.py +0 -313
  154. everyrow/generated/models/map_multi_agent_request_params.py +0 -313
  155. everyrow/generated/models/message_created_payload.py +0 -98
  156. everyrow/generated/models/multi_agent_query_params.py +0 -264
  157. everyrow/generated/models/multi_modal_chat_message.py +0 -160
  158. everyrow/generated/models/multi_modal_chat_message_role.py +0 -10
  159. everyrow/generated/models/preview_metadata.py +0 -144
  160. everyrow/generated/models/processing_mode.py +0 -10
  161. everyrow/generated/models/progress_status.py +0 -83
  162. everyrow/generated/models/queue_stats.py +0 -77
  163. everyrow/generated/models/reduce_agent_request_params.py +0 -305
  164. everyrow/generated/models/reduce_multi_agent_request_params.py +0 -305
  165. everyrow/generated/models/resource_estimation_response.py +0 -85
  166. everyrow/generated/models/response_schema_type.py +0 -9
  167. everyrow/generated/models/revoke_api_key_response.py +0 -61
  168. everyrow/generated/models/rollback_to_message_request.py +0 -62
  169. everyrow/generated/models/rollback_to_message_response.py +0 -77
  170. everyrow/generated/models/session_changed_payload.py +0 -69
  171. everyrow/generated/models/simple_chat_message.py +0 -121
  172. everyrow/generated/models/simple_chat_message_role.py +0 -10
  173. everyrow/generated/models/simple_chat_message_with_tool_calls.py +0 -156
  174. everyrow/generated/models/source_database_entry.py +0 -92
  175. everyrow/generated/models/standalone_artifact_record.py +0 -311
  176. everyrow/generated/models/standalone_artifact_record_metadata_type_0.py +0 -46
  177. everyrow/generated/models/standalone_artifact_record_trace_mapping_type_0.py +0 -46
  178. everyrow/generated/models/status_count.py +0 -71
  179. everyrow/generated/models/status_count_status.py +0 -13
  180. everyrow/generated/models/submit_chat_task_body.py +0 -497
  181. everyrow/generated/models/submit_chat_task_body_selected_task_type_type_0.py +0 -11
  182. everyrow/generated/models/submit_task_body.py +0 -745
  183. everyrow/generated/models/task_changed_payload.py +0 -105
  184. everyrow/generated/models/task_effort.py +0 -10
  185. everyrow/generated/models/task_id_request.py +0 -62
  186. everyrow/generated/models/task_insert.py +0 -725
  187. everyrow/generated/models/task_metadata.py +0 -323
  188. everyrow/generated/models/task_response.py +0 -62
  189. everyrow/generated/models/task_type.py +0 -31
  190. everyrow/generated/models/text_chat_content_part.py +0 -74
  191. everyrow/generated/models/tool_response_message.py +0 -127
  192. everyrow/generated/models/toolkit_constants.py +0 -80
  193. everyrow/generated/models/trace_changed_payload.py +0 -94
  194. everyrow/generated/models/trace_info.py +0 -78
  195. everyrow/generated/models/trigger_workflow_execution_request.py +0 -112
  196. everyrow/generated/models/trigger_workflow_execution_request_task_params.py +0 -65
  197. everyrow/generated/models/trigger_workflow_execution_request_task_params_additional_property.py +0 -46
  198. everyrow/generated/models/trigger_workflow_execution_response.py +0 -69
  199. everyrow/generated/models/upload_csv_payload.py +0 -310
  200. everyrow/generated/models/upload_csv_query_params.py +0 -114
  201. everyrow/generated/models/usage_response.py +0 -77
  202. everyrow/generated/models/whoami_whoami_get_response_whoami_whoami_get.py +0 -46
  203. everyrow/generated/models/workflow_leaf_node_input.py +0 -70
  204. everyrow-0.1.10.dist-info/RECORD +0 -183
  205. /everyrow/generated/api/{default → artifacts}/__init__.py +0 -0
  206. {everyrow-0.1.10.dist-info → everyrow-0.2.0.dist-info}/WHEEL +0 -0
  207. {everyrow-0.1.10.dist-info → everyrow-0.2.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,304 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
5
+ from uuid import UUID
6
+
7
+ from attrs import define as _attrs_define
8
+ from attrs import field as _attrs_field
9
+
10
+ from ..models.llm_enum_public import LLMEnumPublic
11
+ from ..models.public_effort_level import PublicEffortLevel
12
+ from ..types import UNSET, Unset
13
+
14
+ if TYPE_CHECKING:
15
+ from ..models.single_agent_operation_input_type_1_item import SingleAgentOperationInputType1Item
16
+ from ..models.single_agent_operation_input_type_2 import SingleAgentOperationInputType2
17
+ from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
18
+
19
+
20
+ T = TypeVar("T", bound="SingleAgentOperation")
21
+
22
+
23
+ @_attrs_define
24
+ class SingleAgentOperation:
25
+ """
26
+ Attributes:
27
+ input_ (list[SingleAgentOperationInputType1Item] | SingleAgentOperationInputType2 | UUID): The input data as a)
28
+ the ID of an existing artifact, b) a single record in the form of a JSON object, or c) a table of records in the
29
+ form of a list of JSON objects
30
+ task (str): Instructions for the AI agent
31
+ session_id (None | Unset | UUID): Session ID. If not provided, a new session is auto-created for this task.
32
+ response_schema (None | SingleAgentOperationResponseSchemaType0 | Unset): JSON Schema for the response format.
33
+ If not provided, use default answer schema.
34
+ llm (LLMEnumPublic | None | Unset): LLM to use for the agent. Required when effort_level is not set.
35
+ effort_level (None | PublicEffortLevel | Unset): Effort level preset: low (quick), medium (balanced), high
36
+ (thorough). Mutually exclusive with llm/iteration_budget/include_research - use either a preset or custom
37
+ params, not both. If not specified, you must provide all individual parameters (llm, iteration_budget,
38
+ include_research).
39
+ return_list (bool | Unset): If True, treat the output as a list of responses instead of a single response.
40
+ Default: True.
41
+ iteration_budget (int | None | Unset): Number of agent iterations (0-20). Required when effort_level is not set.
42
+ include_research (bool | None | Unset): Include research notes in the response. Required when effort_level is
43
+ not set.
44
+ """
45
+
46
+ input_: list[SingleAgentOperationInputType1Item] | SingleAgentOperationInputType2 | UUID
47
+ task: str
48
+ session_id: None | Unset | UUID = UNSET
49
+ response_schema: None | SingleAgentOperationResponseSchemaType0 | Unset = UNSET
50
+ llm: LLMEnumPublic | None | Unset = UNSET
51
+ effort_level: None | PublicEffortLevel | Unset = UNSET
52
+ return_list: bool | Unset = True
53
+ iteration_budget: int | None | Unset = UNSET
54
+ include_research: bool | None | Unset = UNSET
55
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
56
+
57
+ def to_dict(self) -> dict[str, Any]:
58
+ from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
59
+
60
+ input_: dict[str, Any] | list[dict[str, Any]] | str
61
+ if isinstance(self.input_, UUID):
62
+ input_ = str(self.input_)
63
+ elif isinstance(self.input_, list):
64
+ input_ = []
65
+ for input_type_1_item_data in self.input_:
66
+ input_type_1_item = input_type_1_item_data.to_dict()
67
+ input_.append(input_type_1_item)
68
+
69
+ else:
70
+ input_ = self.input_.to_dict()
71
+
72
+ task = self.task
73
+
74
+ session_id: None | str | Unset
75
+ if isinstance(self.session_id, Unset):
76
+ session_id = UNSET
77
+ elif isinstance(self.session_id, UUID):
78
+ session_id = str(self.session_id)
79
+ else:
80
+ session_id = self.session_id
81
+
82
+ response_schema: dict[str, Any] | None | Unset
83
+ if isinstance(self.response_schema, Unset):
84
+ response_schema = UNSET
85
+ elif isinstance(self.response_schema, SingleAgentOperationResponseSchemaType0):
86
+ response_schema = self.response_schema.to_dict()
87
+ else:
88
+ response_schema = self.response_schema
89
+
90
+ llm: None | str | Unset
91
+ if isinstance(self.llm, Unset):
92
+ llm = UNSET
93
+ elif isinstance(self.llm, LLMEnumPublic):
94
+ llm = self.llm.value
95
+ else:
96
+ llm = self.llm
97
+
98
+ effort_level: None | str | Unset
99
+ if isinstance(self.effort_level, Unset):
100
+ effort_level = UNSET
101
+ elif isinstance(self.effort_level, PublicEffortLevel):
102
+ effort_level = self.effort_level.value
103
+ else:
104
+ effort_level = self.effort_level
105
+
106
+ return_list = self.return_list
107
+
108
+ iteration_budget: int | None | Unset
109
+ if isinstance(self.iteration_budget, Unset):
110
+ iteration_budget = UNSET
111
+ else:
112
+ iteration_budget = self.iteration_budget
113
+
114
+ include_research: bool | None | Unset
115
+ if isinstance(self.include_research, Unset):
116
+ include_research = UNSET
117
+ else:
118
+ include_research = self.include_research
119
+
120
+ field_dict: dict[str, Any] = {}
121
+ field_dict.update(self.additional_properties)
122
+ field_dict.update(
123
+ {
124
+ "input": input_,
125
+ "task": task,
126
+ }
127
+ )
128
+ if session_id is not UNSET:
129
+ field_dict["session_id"] = session_id
130
+ if response_schema is not UNSET:
131
+ field_dict["response_schema"] = response_schema
132
+ if llm is not UNSET:
133
+ field_dict["llm"] = llm
134
+ if effort_level is not UNSET:
135
+ field_dict["effort_level"] = effort_level
136
+ if return_list is not UNSET:
137
+ field_dict["return_list"] = return_list
138
+ if iteration_budget is not UNSET:
139
+ field_dict["iteration_budget"] = iteration_budget
140
+ if include_research is not UNSET:
141
+ field_dict["include_research"] = include_research
142
+
143
+ return field_dict
144
+
145
+ @classmethod
146
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
147
+ from ..models.single_agent_operation_input_type_1_item import SingleAgentOperationInputType1Item
148
+ from ..models.single_agent_operation_input_type_2 import SingleAgentOperationInputType2
149
+ from ..models.single_agent_operation_response_schema_type_0 import SingleAgentOperationResponseSchemaType0
150
+
151
+ d = dict(src_dict)
152
+
153
+ def _parse_input_(
154
+ data: object,
155
+ ) -> list[SingleAgentOperationInputType1Item] | SingleAgentOperationInputType2 | UUID:
156
+ try:
157
+ if not isinstance(data, str):
158
+ raise TypeError()
159
+ input_type_0 = UUID(data)
160
+
161
+ return input_type_0
162
+ except (TypeError, ValueError, AttributeError, KeyError):
163
+ pass
164
+ try:
165
+ if not isinstance(data, list):
166
+ raise TypeError()
167
+ input_type_1 = []
168
+ _input_type_1 = data
169
+ for input_type_1_item_data in _input_type_1:
170
+ input_type_1_item = SingleAgentOperationInputType1Item.from_dict(input_type_1_item_data)
171
+
172
+ input_type_1.append(input_type_1_item)
173
+
174
+ return input_type_1
175
+ except (TypeError, ValueError, AttributeError, KeyError):
176
+ pass
177
+ if not isinstance(data, dict):
178
+ raise TypeError()
179
+ input_type_2 = SingleAgentOperationInputType2.from_dict(data)
180
+
181
+ return input_type_2
182
+
183
+ input_ = _parse_input_(d.pop("input"))
184
+
185
+ task = d.pop("task")
186
+
187
+ def _parse_session_id(data: object) -> None | Unset | UUID:
188
+ if data is None:
189
+ return data
190
+ if isinstance(data, Unset):
191
+ return data
192
+ try:
193
+ if not isinstance(data, str):
194
+ raise TypeError()
195
+ session_id_type_0 = UUID(data)
196
+
197
+ return session_id_type_0
198
+ except (TypeError, ValueError, AttributeError, KeyError):
199
+ pass
200
+ return cast(None | Unset | UUID, data)
201
+
202
+ session_id = _parse_session_id(d.pop("session_id", UNSET))
203
+
204
+ def _parse_response_schema(data: object) -> None | SingleAgentOperationResponseSchemaType0 | Unset:
205
+ if data is None:
206
+ return data
207
+ if isinstance(data, Unset):
208
+ return data
209
+ try:
210
+ if not isinstance(data, dict):
211
+ raise TypeError()
212
+ response_schema_type_0 = SingleAgentOperationResponseSchemaType0.from_dict(data)
213
+
214
+ return response_schema_type_0
215
+ except (TypeError, ValueError, AttributeError, KeyError):
216
+ pass
217
+ return cast(None | SingleAgentOperationResponseSchemaType0 | Unset, data)
218
+
219
+ response_schema = _parse_response_schema(d.pop("response_schema", UNSET))
220
+
221
+ def _parse_llm(data: object) -> LLMEnumPublic | None | Unset:
222
+ if data is None:
223
+ return data
224
+ if isinstance(data, Unset):
225
+ return data
226
+ try:
227
+ if not isinstance(data, str):
228
+ raise TypeError()
229
+ llm_type_0 = LLMEnumPublic(data)
230
+
231
+ return llm_type_0
232
+ except (TypeError, ValueError, AttributeError, KeyError):
233
+ pass
234
+ return cast(LLMEnumPublic | None | Unset, data)
235
+
236
+ llm = _parse_llm(d.pop("llm", UNSET))
237
+
238
+ def _parse_effort_level(data: object) -> None | PublicEffortLevel | Unset:
239
+ if data is None:
240
+ return data
241
+ if isinstance(data, Unset):
242
+ return data
243
+ try:
244
+ if not isinstance(data, str):
245
+ raise TypeError()
246
+ effort_level_type_0 = PublicEffortLevel(data)
247
+
248
+ return effort_level_type_0
249
+ except (TypeError, ValueError, AttributeError, KeyError):
250
+ pass
251
+ return cast(None | PublicEffortLevel | Unset, data)
252
+
253
+ effort_level = _parse_effort_level(d.pop("effort_level", UNSET))
254
+
255
+ return_list = d.pop("return_list", UNSET)
256
+
257
+ def _parse_iteration_budget(data: object) -> int | None | Unset:
258
+ if data is None:
259
+ return data
260
+ if isinstance(data, Unset):
261
+ return data
262
+ return cast(int | None | Unset, data)
263
+
264
+ iteration_budget = _parse_iteration_budget(d.pop("iteration_budget", UNSET))
265
+
266
+ def _parse_include_research(data: object) -> bool | None | Unset:
267
+ if data is None:
268
+ return data
269
+ if isinstance(data, Unset):
270
+ return data
271
+ return cast(bool | None | Unset, data)
272
+
273
+ include_research = _parse_include_research(d.pop("include_research", UNSET))
274
+
275
+ single_agent_operation = cls(
276
+ input_=input_,
277
+ task=task,
278
+ session_id=session_id,
279
+ response_schema=response_schema,
280
+ llm=llm,
281
+ effort_level=effort_level,
282
+ return_list=return_list,
283
+ iteration_budget=iteration_budget,
284
+ include_research=include_research,
285
+ )
286
+
287
+ single_agent_operation.additional_properties = d
288
+ return single_agent_operation
289
+
290
+ @property
291
+ def additional_keys(self) -> list[str]:
292
+ return list(self.additional_properties.keys())
293
+
294
+ def __getitem__(self, key: str) -> Any:
295
+ return self.additional_properties[key]
296
+
297
+ def __setitem__(self, key: str, value: Any) -> None:
298
+ self.additional_properties[key] = value
299
+
300
+ def __delitem__(self, key: str) -> None:
301
+ del self.additional_properties[key]
302
+
303
+ def __contains__(self, key: str) -> bool:
304
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="SingleAgentOperationInputType1Item")
10
+
11
+
12
+ @_attrs_define
13
+ class SingleAgentOperationInputType1Item:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ single_agent_operation_input_type_1_item = cls()
28
+
29
+ single_agent_operation_input_type_1_item.additional_properties = d
30
+ return single_agent_operation_input_type_1_item
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="SingleAgentOperationInputType2")
10
+
11
+
12
+ @_attrs_define
13
+ class SingleAgentOperationInputType2:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ single_agent_operation_input_type_2 = cls()
28
+
29
+ single_agent_operation_input_type_2.additional_properties = d
30
+ return single_agent_operation_input_type_2
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="SingleAgentOperationResponseSchemaType0")
10
+
11
+
12
+ @_attrs_define
13
+ class SingleAgentOperationResponseSchemaType0:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ single_agent_operation_response_schema_type_0 = cls()
28
+
29
+ single_agent_operation_response_schema_type_0.additional_properties = d
30
+ return single_agent_operation_response_schema_type_0
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties
@@ -0,0 +1,185 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
5
+ from uuid import UUID
6
+
7
+ from attrs import define as _attrs_define
8
+ from attrs import field as _attrs_field
9
+
10
+ from ..models.task_status import TaskStatus
11
+ from ..types import UNSET, Unset
12
+
13
+ if TYPE_CHECKING:
14
+ from ..models.task_result_response_data_type_0_item import TaskResultResponseDataType0Item
15
+ from ..models.task_result_response_data_type_1 import TaskResultResponseDataType1
16
+
17
+
18
+ T = TypeVar("T", bound="TaskResultResponse")
19
+
20
+
21
+ @_attrs_define
22
+ class TaskResultResponse:
23
+ """
24
+ Attributes:
25
+ task_id (UUID): The task ID
26
+ status (TaskStatus):
27
+ artifact_id (None | Unset | UUID): Result artifact ID
28
+ data (list[TaskResultResponseDataType0Item] | None | TaskResultResponseDataType1 | Unset): Result data: list of
29
+ records for tables, single record for scalars, null if not completed
30
+ error (None | str | Unset): Error message (if the task failed)
31
+ """
32
+
33
+ task_id: UUID
34
+ status: TaskStatus
35
+ artifact_id: None | Unset | UUID = UNSET
36
+ data: list[TaskResultResponseDataType0Item] | None | TaskResultResponseDataType1 | Unset = UNSET
37
+ error: None | str | Unset = UNSET
38
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
39
+
40
+ def to_dict(self) -> dict[str, Any]:
41
+ from ..models.task_result_response_data_type_1 import TaskResultResponseDataType1
42
+
43
+ task_id = str(self.task_id)
44
+
45
+ status = self.status.value
46
+
47
+ artifact_id: None | str | Unset
48
+ if isinstance(self.artifact_id, Unset):
49
+ artifact_id = UNSET
50
+ elif isinstance(self.artifact_id, UUID):
51
+ artifact_id = str(self.artifact_id)
52
+ else:
53
+ artifact_id = self.artifact_id
54
+
55
+ data: dict[str, Any] | list[dict[str, Any]] | None | Unset
56
+ if isinstance(self.data, Unset):
57
+ data = UNSET
58
+ elif isinstance(self.data, list):
59
+ data = []
60
+ for data_type_0_item_data in self.data:
61
+ data_type_0_item = data_type_0_item_data.to_dict()
62
+ data.append(data_type_0_item)
63
+
64
+ elif isinstance(self.data, TaskResultResponseDataType1):
65
+ data = self.data.to_dict()
66
+ else:
67
+ data = self.data
68
+
69
+ error: None | str | Unset
70
+ if isinstance(self.error, Unset):
71
+ error = UNSET
72
+ else:
73
+ error = self.error
74
+
75
+ field_dict: dict[str, Any] = {}
76
+ field_dict.update(self.additional_properties)
77
+ field_dict.update(
78
+ {
79
+ "task_id": task_id,
80
+ "status": status,
81
+ }
82
+ )
83
+ if artifact_id is not UNSET:
84
+ field_dict["artifact_id"] = artifact_id
85
+ if data is not UNSET:
86
+ field_dict["data"] = data
87
+ if error is not UNSET:
88
+ field_dict["error"] = error
89
+
90
+ return field_dict
91
+
92
+ @classmethod
93
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
94
+ from ..models.task_result_response_data_type_0_item import TaskResultResponseDataType0Item
95
+ from ..models.task_result_response_data_type_1 import TaskResultResponseDataType1
96
+
97
+ d = dict(src_dict)
98
+ task_id = UUID(d.pop("task_id"))
99
+
100
+ status = TaskStatus(d.pop("status"))
101
+
102
+ def _parse_artifact_id(data: object) -> None | Unset | UUID:
103
+ if data is None:
104
+ return data
105
+ if isinstance(data, Unset):
106
+ return data
107
+ try:
108
+ if not isinstance(data, str):
109
+ raise TypeError()
110
+ artifact_id_type_0 = UUID(data)
111
+
112
+ return artifact_id_type_0
113
+ except (TypeError, ValueError, AttributeError, KeyError):
114
+ pass
115
+ return cast(None | Unset | UUID, data)
116
+
117
+ artifact_id = _parse_artifact_id(d.pop("artifact_id", UNSET))
118
+
119
+ def _parse_data(
120
+ data: object,
121
+ ) -> list[TaskResultResponseDataType0Item] | None | TaskResultResponseDataType1 | Unset:
122
+ if data is None:
123
+ return data
124
+ if isinstance(data, Unset):
125
+ return data
126
+ try:
127
+ if not isinstance(data, list):
128
+ raise TypeError()
129
+ data_type_0 = []
130
+ _data_type_0 = data
131
+ for data_type_0_item_data in _data_type_0:
132
+ data_type_0_item = TaskResultResponseDataType0Item.from_dict(data_type_0_item_data)
133
+
134
+ data_type_0.append(data_type_0_item)
135
+
136
+ return data_type_0
137
+ except (TypeError, ValueError, AttributeError, KeyError):
138
+ pass
139
+ try:
140
+ if not isinstance(data, dict):
141
+ raise TypeError()
142
+ data_type_1 = TaskResultResponseDataType1.from_dict(data)
143
+
144
+ return data_type_1
145
+ except (TypeError, ValueError, AttributeError, KeyError):
146
+ pass
147
+ return cast(list[TaskResultResponseDataType0Item] | None | TaskResultResponseDataType1 | Unset, data)
148
+
149
+ data = _parse_data(d.pop("data", UNSET))
150
+
151
+ def _parse_error(data: object) -> None | str | Unset:
152
+ if data is None:
153
+ return data
154
+ if isinstance(data, Unset):
155
+ return data
156
+ return cast(None | str | Unset, data)
157
+
158
+ error = _parse_error(d.pop("error", UNSET))
159
+
160
+ task_result_response = cls(
161
+ task_id=task_id,
162
+ status=status,
163
+ artifact_id=artifact_id,
164
+ data=data,
165
+ error=error,
166
+ )
167
+
168
+ task_result_response.additional_properties = d
169
+ return task_result_response
170
+
171
+ @property
172
+ def additional_keys(self) -> list[str]:
173
+ return list(self.additional_properties.keys())
174
+
175
+ def __getitem__(self, key: str) -> Any:
176
+ return self.additional_properties[key]
177
+
178
+ def __setitem__(self, key: str, value: Any) -> None:
179
+ self.additional_properties[key] = value
180
+
181
+ def __delitem__(self, key: str) -> None:
182
+ del self.additional_properties[key]
183
+
184
+ def __contains__(self, key: str) -> bool:
185
+ return key in self.additional_properties
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ T = TypeVar("T", bound="TaskResultResponseDataType0Item")
10
+
11
+
12
+ @_attrs_define
13
+ class TaskResultResponseDataType0Item:
14
+ """ """
15
+
16
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
17
+
18
+ def to_dict(self) -> dict[str, Any]:
19
+ field_dict: dict[str, Any] = {}
20
+ field_dict.update(self.additional_properties)
21
+
22
+ return field_dict
23
+
24
+ @classmethod
25
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
+ d = dict(src_dict)
27
+ task_result_response_data_type_0_item = cls()
28
+
29
+ task_result_response_data_type_0_item.additional_properties = d
30
+ return task_result_response_data_type_0_item
31
+
32
+ @property
33
+ def additional_keys(self) -> list[str]:
34
+ return list(self.additional_properties.keys())
35
+
36
+ def __getitem__(self, key: str) -> Any:
37
+ return self.additional_properties[key]
38
+
39
+ def __setitem__(self, key: str, value: Any) -> None:
40
+ self.additional_properties[key] = value
41
+
42
+ def __delitem__(self, key: str) -> None:
43
+ del self.additional_properties[key]
44
+
45
+ def __contains__(self, key: str) -> bool:
46
+ return key in self.additional_properties