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,278 @@
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.merge_operation_use_web_search_type_0 import MergeOperationUseWebSearchType0
11
+ from ..types import UNSET, Unset
12
+
13
+ if TYPE_CHECKING:
14
+ from ..models.merge_operation_left_input_type_1_item import MergeOperationLeftInputType1Item
15
+ from ..models.merge_operation_left_input_type_2 import MergeOperationLeftInputType2
16
+ from ..models.merge_operation_right_input_type_1_item import MergeOperationRightInputType1Item
17
+ from ..models.merge_operation_right_input_type_2 import MergeOperationRightInputType2
18
+
19
+
20
+ T = TypeVar("T", bound="MergeOperation")
21
+
22
+
23
+ @_attrs_define
24
+ class MergeOperation:
25
+ """
26
+ Attributes:
27
+ left_input (list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID): Left input: artifact
28
+ UUID, list of records, or single record
29
+ right_input (list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID): Right input:
30
+ artifact UUID, list of records, or single record
31
+ task (str): Instructions for the AI to determine how to merge rows
32
+ left_key (None | str | Unset): Column name to merge on from left table
33
+ right_key (None | str | Unset): Column name to merge on from right table
34
+ use_web_search (MergeOperationUseWebSearchType0 | None | Unset): Control web search behavior: 'auto' (default)
35
+ tries LLM merge first then conditionally searches, 'no' skips web search entirely, 'yes' forces web search
36
+ without initial LLM merge Default: MergeOperationUseWebSearchType0.AUTO.
37
+ session_id (None | Unset | UUID): Session ID. If not provided, a new session is auto-created for this task.
38
+ """
39
+
40
+ left_input: list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID
41
+ right_input: list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID
42
+ task: str
43
+ left_key: None | str | Unset = UNSET
44
+ right_key: None | str | Unset = UNSET
45
+ use_web_search: MergeOperationUseWebSearchType0 | None | Unset = MergeOperationUseWebSearchType0.AUTO
46
+ session_id: None | Unset | UUID = UNSET
47
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
48
+
49
+ def to_dict(self) -> dict[str, Any]:
50
+ left_input: dict[str, Any] | list[dict[str, Any]] | str
51
+ if isinstance(self.left_input, UUID):
52
+ left_input = str(self.left_input)
53
+ elif isinstance(self.left_input, list):
54
+ left_input = []
55
+ for left_input_type_1_item_data in self.left_input:
56
+ left_input_type_1_item = left_input_type_1_item_data.to_dict()
57
+ left_input.append(left_input_type_1_item)
58
+
59
+ else:
60
+ left_input = self.left_input.to_dict()
61
+
62
+ right_input: dict[str, Any] | list[dict[str, Any]] | str
63
+ if isinstance(self.right_input, UUID):
64
+ right_input = str(self.right_input)
65
+ elif isinstance(self.right_input, list):
66
+ right_input = []
67
+ for right_input_type_1_item_data in self.right_input:
68
+ right_input_type_1_item = right_input_type_1_item_data.to_dict()
69
+ right_input.append(right_input_type_1_item)
70
+
71
+ else:
72
+ right_input = self.right_input.to_dict()
73
+
74
+ task = self.task
75
+
76
+ left_key: None | str | Unset
77
+ if isinstance(self.left_key, Unset):
78
+ left_key = UNSET
79
+ else:
80
+ left_key = self.left_key
81
+
82
+ right_key: None | str | Unset
83
+ if isinstance(self.right_key, Unset):
84
+ right_key = UNSET
85
+ else:
86
+ right_key = self.right_key
87
+
88
+ use_web_search: None | str | Unset
89
+ if isinstance(self.use_web_search, Unset):
90
+ use_web_search = UNSET
91
+ elif isinstance(self.use_web_search, MergeOperationUseWebSearchType0):
92
+ use_web_search = self.use_web_search.value
93
+ else:
94
+ use_web_search = self.use_web_search
95
+
96
+ session_id: None | str | Unset
97
+ if isinstance(self.session_id, Unset):
98
+ session_id = UNSET
99
+ elif isinstance(self.session_id, UUID):
100
+ session_id = str(self.session_id)
101
+ else:
102
+ session_id = self.session_id
103
+
104
+ field_dict: dict[str, Any] = {}
105
+ field_dict.update(self.additional_properties)
106
+ field_dict.update(
107
+ {
108
+ "left_input": left_input,
109
+ "right_input": right_input,
110
+ "task": task,
111
+ }
112
+ )
113
+ if left_key is not UNSET:
114
+ field_dict["left_key"] = left_key
115
+ if right_key is not UNSET:
116
+ field_dict["right_key"] = right_key
117
+ if use_web_search is not UNSET:
118
+ field_dict["use_web_search"] = use_web_search
119
+ if session_id is not UNSET:
120
+ field_dict["session_id"] = session_id
121
+
122
+ return field_dict
123
+
124
+ @classmethod
125
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
126
+ from ..models.merge_operation_left_input_type_1_item import MergeOperationLeftInputType1Item
127
+ from ..models.merge_operation_left_input_type_2 import MergeOperationLeftInputType2
128
+ from ..models.merge_operation_right_input_type_1_item import MergeOperationRightInputType1Item
129
+ from ..models.merge_operation_right_input_type_2 import MergeOperationRightInputType2
130
+
131
+ d = dict(src_dict)
132
+
133
+ def _parse_left_input(
134
+ data: object,
135
+ ) -> list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID:
136
+ try:
137
+ if not isinstance(data, str):
138
+ raise TypeError()
139
+ left_input_type_0 = UUID(data)
140
+
141
+ return left_input_type_0
142
+ except (TypeError, ValueError, AttributeError, KeyError):
143
+ pass
144
+ try:
145
+ if not isinstance(data, list):
146
+ raise TypeError()
147
+ left_input_type_1 = []
148
+ _left_input_type_1 = data
149
+ for left_input_type_1_item_data in _left_input_type_1:
150
+ left_input_type_1_item = MergeOperationLeftInputType1Item.from_dict(left_input_type_1_item_data)
151
+
152
+ left_input_type_1.append(left_input_type_1_item)
153
+
154
+ return left_input_type_1
155
+ except (TypeError, ValueError, AttributeError, KeyError):
156
+ pass
157
+ if not isinstance(data, dict):
158
+ raise TypeError()
159
+ left_input_type_2 = MergeOperationLeftInputType2.from_dict(data)
160
+
161
+ return left_input_type_2
162
+
163
+ left_input = _parse_left_input(d.pop("left_input"))
164
+
165
+ def _parse_right_input(
166
+ data: object,
167
+ ) -> list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID:
168
+ try:
169
+ if not isinstance(data, str):
170
+ raise TypeError()
171
+ right_input_type_0 = UUID(data)
172
+
173
+ return right_input_type_0
174
+ except (TypeError, ValueError, AttributeError, KeyError):
175
+ pass
176
+ try:
177
+ if not isinstance(data, list):
178
+ raise TypeError()
179
+ right_input_type_1 = []
180
+ _right_input_type_1 = data
181
+ for right_input_type_1_item_data in _right_input_type_1:
182
+ right_input_type_1_item = MergeOperationRightInputType1Item.from_dict(right_input_type_1_item_data)
183
+
184
+ right_input_type_1.append(right_input_type_1_item)
185
+
186
+ return right_input_type_1
187
+ except (TypeError, ValueError, AttributeError, KeyError):
188
+ pass
189
+ if not isinstance(data, dict):
190
+ raise TypeError()
191
+ right_input_type_2 = MergeOperationRightInputType2.from_dict(data)
192
+
193
+ return right_input_type_2
194
+
195
+ right_input = _parse_right_input(d.pop("right_input"))
196
+
197
+ task = d.pop("task")
198
+
199
+ def _parse_left_key(data: object) -> None | str | Unset:
200
+ if data is None:
201
+ return data
202
+ if isinstance(data, Unset):
203
+ return data
204
+ return cast(None | str | Unset, data)
205
+
206
+ left_key = _parse_left_key(d.pop("left_key", UNSET))
207
+
208
+ def _parse_right_key(data: object) -> None | str | Unset:
209
+ if data is None:
210
+ return data
211
+ if isinstance(data, Unset):
212
+ return data
213
+ return cast(None | str | Unset, data)
214
+
215
+ right_key = _parse_right_key(d.pop("right_key", UNSET))
216
+
217
+ def _parse_use_web_search(data: object) -> MergeOperationUseWebSearchType0 | None | Unset:
218
+ if data is None:
219
+ return data
220
+ if isinstance(data, Unset):
221
+ return data
222
+ try:
223
+ if not isinstance(data, str):
224
+ raise TypeError()
225
+ use_web_search_type_0 = MergeOperationUseWebSearchType0(data)
226
+
227
+ return use_web_search_type_0
228
+ except (TypeError, ValueError, AttributeError, KeyError):
229
+ pass
230
+ return cast(MergeOperationUseWebSearchType0 | None | Unset, data)
231
+
232
+ use_web_search = _parse_use_web_search(d.pop("use_web_search", UNSET))
233
+
234
+ def _parse_session_id(data: object) -> None | Unset | UUID:
235
+ if data is None:
236
+ return data
237
+ if isinstance(data, Unset):
238
+ return data
239
+ try:
240
+ if not isinstance(data, str):
241
+ raise TypeError()
242
+ session_id_type_0 = UUID(data)
243
+
244
+ return session_id_type_0
245
+ except (TypeError, ValueError, AttributeError, KeyError):
246
+ pass
247
+ return cast(None | Unset | UUID, data)
248
+
249
+ session_id = _parse_session_id(d.pop("session_id", UNSET))
250
+
251
+ merge_operation = cls(
252
+ left_input=left_input,
253
+ right_input=right_input,
254
+ task=task,
255
+ left_key=left_key,
256
+ right_key=right_key,
257
+ use_web_search=use_web_search,
258
+ session_id=session_id,
259
+ )
260
+
261
+ merge_operation.additional_properties = d
262
+ return merge_operation
263
+
264
+ @property
265
+ def additional_keys(self) -> list[str]:
266
+ return list(self.additional_properties.keys())
267
+
268
+ def __getitem__(self, key: str) -> Any:
269
+ return self.additional_properties[key]
270
+
271
+ def __setitem__(self, key: str, value: Any) -> None:
272
+ self.additional_properties[key] = value
273
+
274
+ def __delitem__(self, key: str) -> None:
275
+ del self.additional_properties[key]
276
+
277
+ def __contains__(self, key: str) -> bool:
278
+ 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="MergeOperationLeftInputType1Item")
10
+
11
+
12
+ @_attrs_define
13
+ class MergeOperationLeftInputType1Item:
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
+ merge_operation_left_input_type_1_item = cls()
28
+
29
+ merge_operation_left_input_type_1_item.additional_properties = d
30
+ return merge_operation_left_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
@@ -6,11 +6,11 @@ from typing import Any, TypeVar
6
6
  from attrs import define as _attrs_define
7
7
  from attrs import field as _attrs_field
8
8
 
9
- T = TypeVar("T", bound="ChatCompletionMessageToolCall")
9
+ T = TypeVar("T", bound="MergeOperationLeftInputType2")
10
10
 
11
11
 
12
12
  @_attrs_define
13
- class ChatCompletionMessageToolCall:
13
+ class MergeOperationLeftInputType2:
14
14
  """ """
15
15
 
16
16
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
@@ -24,10 +24,10 @@ class ChatCompletionMessageToolCall:
24
24
  @classmethod
25
25
  def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
26
26
  d = dict(src_dict)
27
- chat_completion_message_tool_call = cls()
27
+ merge_operation_left_input_type_2 = cls()
28
28
 
29
- chat_completion_message_tool_call.additional_properties = d
30
- return chat_completion_message_tool_call
29
+ merge_operation_left_input_type_2.additional_properties = d
30
+ return merge_operation_left_input_type_2
31
31
 
32
32
  @property
33
33
  def additional_keys(self) -> list[str]:
@@ -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="MergeOperationRightInputType1Item")
10
+
11
+
12
+ @_attrs_define
13
+ class MergeOperationRightInputType1Item:
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
+ merge_operation_right_input_type_1_item = cls()
28
+
29
+ merge_operation_right_input_type_1_item.additional_properties = d
30
+ return merge_operation_right_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="MergeOperationRightInputType2")
10
+
11
+
12
+ @_attrs_define
13
+ class MergeOperationRightInputType2:
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
+ merge_operation_right_input_type_2 = cls()
28
+
29
+ merge_operation_right_input_type_2.additional_properties = d
30
+ return merge_operation_right_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,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class MergeOperationUseWebSearchType0(str, Enum):
5
+ AUTO = "auto"
6
+ NO = "no"
7
+ YES = "yes"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,131 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import 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
+ T = TypeVar("T", bound="OperationResponse")
14
+
15
+
16
+ @_attrs_define
17
+ class OperationResponse:
18
+ """
19
+ Attributes:
20
+ task_id (UUID): The ID of the created task
21
+ session_id (UUID): The session ID (auto-created if not provided)
22
+ status (TaskStatus):
23
+ artifact_id (None | Unset | UUID): Result artifact ID (available when completed)
24
+ error (None | str | Unset): Error message (available when failed)
25
+ """
26
+
27
+ task_id: UUID
28
+ session_id: UUID
29
+ status: TaskStatus
30
+ artifact_id: None | Unset | UUID = UNSET
31
+ error: None | str | Unset = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ task_id = str(self.task_id)
36
+
37
+ session_id = str(self.session_id)
38
+
39
+ status = self.status.value
40
+
41
+ artifact_id: None | str | Unset
42
+ if isinstance(self.artifact_id, Unset):
43
+ artifact_id = UNSET
44
+ elif isinstance(self.artifact_id, UUID):
45
+ artifact_id = str(self.artifact_id)
46
+ else:
47
+ artifact_id = self.artifact_id
48
+
49
+ error: None | str | Unset
50
+ if isinstance(self.error, Unset):
51
+ error = UNSET
52
+ else:
53
+ error = self.error
54
+
55
+ field_dict: dict[str, Any] = {}
56
+ field_dict.update(self.additional_properties)
57
+ field_dict.update(
58
+ {
59
+ "task_id": task_id,
60
+ "session_id": session_id,
61
+ "status": status,
62
+ }
63
+ )
64
+ if artifact_id is not UNSET:
65
+ field_dict["artifact_id"] = artifact_id
66
+ if error is not UNSET:
67
+ field_dict["error"] = error
68
+
69
+ return field_dict
70
+
71
+ @classmethod
72
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
73
+ d = dict(src_dict)
74
+ task_id = UUID(d.pop("task_id"))
75
+
76
+ session_id = UUID(d.pop("session_id"))
77
+
78
+ status = TaskStatus(d.pop("status"))
79
+
80
+ def _parse_artifact_id(data: object) -> None | Unset | UUID:
81
+ if data is None:
82
+ return data
83
+ if isinstance(data, Unset):
84
+ return data
85
+ try:
86
+ if not isinstance(data, str):
87
+ raise TypeError()
88
+ artifact_id_type_0 = UUID(data)
89
+
90
+ return artifact_id_type_0
91
+ except (TypeError, ValueError, AttributeError, KeyError):
92
+ pass
93
+ return cast(None | Unset | UUID, data)
94
+
95
+ artifact_id = _parse_artifact_id(d.pop("artifact_id", UNSET))
96
+
97
+ def _parse_error(data: object) -> None | str | Unset:
98
+ if data is None:
99
+ return data
100
+ if isinstance(data, Unset):
101
+ return data
102
+ return cast(None | str | Unset, data)
103
+
104
+ error = _parse_error(d.pop("error", UNSET))
105
+
106
+ operation_response = cls(
107
+ task_id=task_id,
108
+ session_id=session_id,
109
+ status=status,
110
+ artifact_id=artifact_id,
111
+ error=error,
112
+ )
113
+
114
+ operation_response.additional_properties = d
115
+ return operation_response
116
+
117
+ @property
118
+ def additional_keys(self) -> list[str]:
119
+ return list(self.additional_properties.keys())
120
+
121
+ def __getitem__(self, key: str) -> Any:
122
+ return self.additional_properties[key]
123
+
124
+ def __setitem__(self, key: str, value: Any) -> None:
125
+ self.additional_properties[key] = value
126
+
127
+ def __delitem__(self, key: str) -> None:
128
+ del self.additional_properties[key]
129
+
130
+ def __contains__(self, key: str) -> bool:
131
+ return key in self.additional_properties
@@ -1,7 +1,7 @@
1
1
  from enum import Enum
2
2
 
3
3
 
4
- class MultiAgentEffortLevel(str, Enum):
4
+ class PublicEffortLevel(str, Enum):
5
5
  HIGH = "high"
6
6
  LOW = "low"
7
7
  MEDIUM = "medium"
@@ -0,0 +1,12 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PublicTaskType(str, Enum):
5
+ AGENT = "agent"
6
+ DEDUPE = "dedupe"
7
+ MERGE = "merge"
8
+ RANK = "rank"
9
+ SCREEN = "screen"
10
+
11
+ def __str__(self) -> str:
12
+ return str(self.value)