everyrow 0.1.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 (183) hide show
  1. everyrow/__init__.py +4 -0
  2. everyrow/api_utils.py +45 -0
  3. everyrow/citations.py +46 -0
  4. everyrow/constants.py +4 -0
  5. everyrow/generated/__init__.py +8 -0
  6. everyrow/generated/api/__init__.py +1 -0
  7. everyrow/generated/api/default/__init__.py +1 -0
  8. everyrow/generated/api/default/continue_task_endpoint_tasks_continue_post.py +208 -0
  9. everyrow/generated/api/default/copy_artifacts_artifacts_copy_post.py +166 -0
  10. everyrow/generated/api/default/copy_workflow_endpoint_workflows_copy_post.py +166 -0
  11. everyrow/generated/api/default/create_api_key_endpoint_api_keys_create_post.py +186 -0
  12. everyrow/generated/api/default/create_session_endpoint_sessions_create_post.py +198 -0
  13. everyrow/generated/api/default/create_workflow_from_artifact_workflows_from_artifact_post.py +174 -0
  14. everyrow/generated/api/default/export_to_google_sheets_export_post.py +168 -0
  15. everyrow/generated/api/default/generate_feedback_endpoint_tasks_generate_feedback_post.py +186 -0
  16. everyrow/generated/api/default/get_artifacts_artifacts_get.py +260 -0
  17. everyrow/generated/api/default/get_default_timeout_seconds_models_default_timeout_seconds_get.py +165 -0
  18. everyrow/generated/api/default/get_job_progress_for_task_jobs_progress_get.py +167 -0
  19. everyrow/generated/api/default/get_metrics_metrics_get.py +80 -0
  20. everyrow/generated/api/default/get_queues_stats_jobs_queues_get.py +123 -0
  21. everyrow/generated/api/default/get_task_status_endpoint_tasks_task_id_status_get.py +193 -0
  22. everyrow/generated/api/default/get_user_usage_usage_get.py +123 -0
  23. everyrow/generated/api/default/healthz_healthz_get.py +127 -0
  24. everyrow/generated/api/default/import_from_google_sheets_import_post.py +170 -0
  25. everyrow/generated/api/default/interrupt_chat_task_tasks_chat_interrupt_post.py +172 -0
  26. everyrow/generated/api/default/list_api_keys_endpoint_api_keys_get.py +186 -0
  27. everyrow/generated/api/default/re_execute_task_endpoint_tasks_re_execute_post.py +192 -0
  28. everyrow/generated/api/default/revoke_api_key_endpoint_api_keys_key_id_revoke_post.py +181 -0
  29. everyrow/generated/api/default/revoke_jobs_for_task_jobs_revoke_post.py +164 -0
  30. everyrow/generated/api/default/rollback_to_message_endpoint_tasks_chat_rollback_post.py +186 -0
  31. everyrow/generated/api/default/submit_chat_task_tasks_chat_post.py +164 -0
  32. everyrow/generated/api/default/submit_task_tasks_post.py +172 -0
  33. everyrow/generated/api/default/task_resource_estimation_task_resource_estimation_post.py +319 -0
  34. everyrow/generated/api/default/trigger_workflow_execution_endpoint_workflows_trigger_post.py +166 -0
  35. everyrow/generated/api/default/whoami_whoami_get.py +127 -0
  36. everyrow/generated/client.py +268 -0
  37. everyrow/generated/errors.py +16 -0
  38. everyrow/generated/models/__init__.py +281 -0
  39. everyrow/generated/models/agent_improvement_instruction.py +69 -0
  40. everyrow/generated/models/agent_query_params.py +362 -0
  41. everyrow/generated/models/agent_query_params_system_prompt_kind_type_0.py +10 -0
  42. everyrow/generated/models/agent_task_args.py +163 -0
  43. everyrow/generated/models/agent_task_args_processing_mode.py +9 -0
  44. everyrow/generated/models/allowed_suggestions.py +8 -0
  45. everyrow/generated/models/api_key_info.py +163 -0
  46. everyrow/generated/models/artifact_changed_payload.py +89 -0
  47. everyrow/generated/models/artifact_group_record.py +330 -0
  48. everyrow/generated/models/artifact_group_record_metadata_type_0.py +46 -0
  49. everyrow/generated/models/artifact_group_record_trace_mapping_type_0.py +46 -0
  50. everyrow/generated/models/artifact_status.py +14 -0
  51. everyrow/generated/models/auto_cohort_conversation_message.py +533 -0
  52. everyrow/generated/models/aux_data.py +128 -0
  53. everyrow/generated/models/aux_data_source_bank.py +59 -0
  54. everyrow/generated/models/chat_completion_message_tool_call.py +46 -0
  55. everyrow/generated/models/chat_message_metadata.py +193 -0
  56. everyrow/generated/models/concatenate_query_params.py +46 -0
  57. everyrow/generated/models/concatenate_request.py +306 -0
  58. everyrow/generated/models/continue_reason.py +9 -0
  59. everyrow/generated/models/continue_task_request.py +133 -0
  60. everyrow/generated/models/controller_improvement_round.py +79 -0
  61. everyrow/generated/models/conversation_changed_payload.py +89 -0
  62. everyrow/generated/models/copy_artifacts_request.py +70 -0
  63. everyrow/generated/models/copy_artifacts_response.py +70 -0
  64. everyrow/generated/models/copy_workflow_request.py +62 -0
  65. everyrow/generated/models/copy_workflow_response.py +70 -0
  66. everyrow/generated/models/create_api_key_request.py +95 -0
  67. everyrow/generated/models/create_api_key_response.py +96 -0
  68. everyrow/generated/models/create_group_query_params.py +61 -0
  69. everyrow/generated/models/create_group_request.py +305 -0
  70. everyrow/generated/models/create_query_params.py +61 -0
  71. everyrow/generated/models/create_request.py +305 -0
  72. everyrow/generated/models/create_session_request.py +62 -0
  73. everyrow/generated/models/create_session_response.py +63 -0
  74. everyrow/generated/models/create_workflow_from_artifact_request.py +92 -0
  75. everyrow/generated/models/create_workflow_from_artifact_response.py +70 -0
  76. everyrow/generated/models/data_frame_method.py +18 -0
  77. everyrow/generated/models/date_cutoffs.py +145 -0
  78. everyrow/generated/models/dedupe_mode.py +9 -0
  79. everyrow/generated/models/dedupe_query_params.py +174 -0
  80. everyrow/generated/models/dedupe_request_params.py +311 -0
  81. everyrow/generated/models/deep_merge_public_params.py +143 -0
  82. everyrow/generated/models/deep_merge_request.py +313 -0
  83. everyrow/generated/models/deep_rank_public_params.py +99 -0
  84. everyrow/generated/models/deep_rank_request.py +313 -0
  85. everyrow/generated/models/deep_screen_public_params.py +122 -0
  86. everyrow/generated/models/deep_screen_request.py +313 -0
  87. everyrow/generated/models/derive_expression.py +69 -0
  88. everyrow/generated/models/derive_query_params.py +75 -0
  89. everyrow/generated/models/derive_request.py +307 -0
  90. everyrow/generated/models/document_query_tool.py +12 -0
  91. everyrow/generated/models/drop_columns_query_params.py +61 -0
  92. everyrow/generated/models/drop_columns_request.py +305 -0
  93. everyrow/generated/models/embedding_models.py +9 -0
  94. everyrow/generated/models/event_type.py +14 -0
  95. everyrow/generated/models/execution_metadata.py +146 -0
  96. everyrow/generated/models/export_request.py +75 -0
  97. everyrow/generated/models/export_request_token_data.py +46 -0
  98. everyrow/generated/models/export_to_google_sheets_export_post_response_export_to_google_sheets_export_post.py +46 -0
  99. everyrow/generated/models/filter_query_params.py +91 -0
  100. everyrow/generated/models/filter_request.py +305 -0
  101. everyrow/generated/models/flatten_query_params.py +46 -0
  102. everyrow/generated/models/flatten_request.py +305 -0
  103. everyrow/generated/models/generate_feedback_request.py +62 -0
  104. everyrow/generated/models/group_by_query_params.py +62 -0
  105. everyrow/generated/models/group_by_request.py +305 -0
  106. everyrow/generated/models/healthz_healthz_get_response_healthz_healthz_get.py +46 -0
  107. everyrow/generated/models/http_validation_error.py +79 -0
  108. everyrow/generated/models/image_chat_content_part.py +80 -0
  109. everyrow/generated/models/image_chat_content_part_image_url.py +46 -0
  110. everyrow/generated/models/import_from_google_sheets_import_post_response_import_from_google_sheets_import_post.py +46 -0
  111. everyrow/generated/models/import_request.py +83 -0
  112. everyrow/generated/models/import_request_token_data.py +46 -0
  113. everyrow/generated/models/insufficient_balance_error.py +81 -0
  114. everyrow/generated/models/join_query_params.py +73 -0
  115. everyrow/generated/models/join_request.py +305 -0
  116. everyrow/generated/models/llm_enum.py +54 -0
  117. everyrow/generated/models/map_agent_request_params.py +313 -0
  118. everyrow/generated/models/map_multi_agent_request_params.py +313 -0
  119. everyrow/generated/models/message_created_payload.py +98 -0
  120. everyrow/generated/models/multi_agent_effort_level.py +10 -0
  121. everyrow/generated/models/multi_agent_query_params.py +264 -0
  122. everyrow/generated/models/multi_modal_chat_message.py +160 -0
  123. everyrow/generated/models/multi_modal_chat_message_role.py +10 -0
  124. everyrow/generated/models/preview_metadata.py +144 -0
  125. everyrow/generated/models/processing_mode.py +10 -0
  126. everyrow/generated/models/progress_status.py +83 -0
  127. everyrow/generated/models/queue_stats.py +77 -0
  128. everyrow/generated/models/reduce_agent_request_params.py +305 -0
  129. everyrow/generated/models/reduce_multi_agent_request_params.py +305 -0
  130. everyrow/generated/models/resource_estimation_response.py +85 -0
  131. everyrow/generated/models/response_schema_type.py +9 -0
  132. everyrow/generated/models/revoke_api_key_response.py +61 -0
  133. everyrow/generated/models/rollback_to_message_request.py +62 -0
  134. everyrow/generated/models/rollback_to_message_response.py +77 -0
  135. everyrow/generated/models/session_changed_payload.py +69 -0
  136. everyrow/generated/models/simple_chat_message.py +121 -0
  137. everyrow/generated/models/simple_chat_message_role.py +10 -0
  138. everyrow/generated/models/simple_chat_message_with_tool_calls.py +156 -0
  139. everyrow/generated/models/source_database_entry.py +92 -0
  140. everyrow/generated/models/standalone_artifact_record.py +278 -0
  141. everyrow/generated/models/standalone_artifact_record_metadata_type_0.py +46 -0
  142. everyrow/generated/models/standalone_artifact_record_trace_mapping_type_0.py +46 -0
  143. everyrow/generated/models/status_count.py +71 -0
  144. everyrow/generated/models/status_count_status.py +13 -0
  145. everyrow/generated/models/submit_chat_task_body.py +497 -0
  146. everyrow/generated/models/submit_chat_task_body_selected_task_type_type_0.py +11 -0
  147. everyrow/generated/models/submit_task_body.py +745 -0
  148. everyrow/generated/models/task_changed_payload.py +105 -0
  149. everyrow/generated/models/task_effort.py +10 -0
  150. everyrow/generated/models/task_id_request.py +62 -0
  151. everyrow/generated/models/task_insert.py +725 -0
  152. everyrow/generated/models/task_insert_query_params.py +46 -0
  153. everyrow/generated/models/task_metadata.py +323 -0
  154. everyrow/generated/models/task_metadata_cols_to_rename_type_0.py +46 -0
  155. everyrow/generated/models/task_response.py +62 -0
  156. everyrow/generated/models/task_status.py +12 -0
  157. everyrow/generated/models/task_status_response.py +112 -0
  158. everyrow/generated/models/task_type.py +31 -0
  159. everyrow/generated/models/text_chat_content_part.py +74 -0
  160. everyrow/generated/models/tool_response_message.py +127 -0
  161. everyrow/generated/models/toolkit_constants.py +80 -0
  162. everyrow/generated/models/trace_changed_payload.py +94 -0
  163. everyrow/generated/models/trace_info.py +78 -0
  164. everyrow/generated/models/trigger_workflow_execution_request.py +112 -0
  165. everyrow/generated/models/trigger_workflow_execution_request_task_params.py +65 -0
  166. everyrow/generated/models/trigger_workflow_execution_request_task_params_additional_property.py +46 -0
  167. everyrow/generated/models/trigger_workflow_execution_response.py +69 -0
  168. everyrow/generated/models/upload_csv_payload.py +310 -0
  169. everyrow/generated/models/upload_csv_query_params.py +114 -0
  170. everyrow/generated/models/usage_response.py +77 -0
  171. everyrow/generated/models/validation_error.py +90 -0
  172. everyrow/generated/models/whoami_whoami_get_response_whoami_whoami_get.py +46 -0
  173. everyrow/generated/models/workflow_leaf_node_input.py +70 -0
  174. everyrow/generated/py.typed +1 -0
  175. everyrow/generated/types.py +54 -0
  176. everyrow/ops.py +672 -0
  177. everyrow/result.py +25 -0
  178. everyrow/session.py +53 -0
  179. everyrow/task.py +143 -0
  180. everyrow-0.1.0.dist-info/METADATA +238 -0
  181. everyrow-0.1.0.dist-info/RECORD +183 -0
  182. everyrow-0.1.0.dist-info/WHEEL +4 -0
  183. everyrow-0.1.0.dist-info/licenses/LICENSE.txt +21 -0
@@ -0,0 +1,98 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar
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.event_type import EventType
11
+ from ..types import UNSET, Unset
12
+
13
+ T = TypeVar("T", bound="MessageCreatedPayload")
14
+
15
+
16
+ @_attrs_define
17
+ class MessageCreatedPayload:
18
+ """
19
+ Attributes:
20
+ conversation_ids (list[UUID]):
21
+ event_type (EventType | Unset):
22
+ hide_on_frontend (bool | Unset): Default: False.
23
+ """
24
+
25
+ conversation_ids: list[UUID]
26
+ event_type: EventType | Unset = UNSET
27
+ hide_on_frontend: bool | Unset = False
28
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
+
30
+ def to_dict(self) -> dict[str, Any]:
31
+ conversation_ids = []
32
+ for conversation_ids_item_data in self.conversation_ids:
33
+ conversation_ids_item = str(conversation_ids_item_data)
34
+ conversation_ids.append(conversation_ids_item)
35
+
36
+ event_type: str | Unset = UNSET
37
+ if not isinstance(self.event_type, Unset):
38
+ event_type = self.event_type.value
39
+
40
+ hide_on_frontend = self.hide_on_frontend
41
+
42
+ field_dict: dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ field_dict.update(
45
+ {
46
+ "conversation_ids": conversation_ids,
47
+ }
48
+ )
49
+ if event_type is not UNSET:
50
+ field_dict["event_type"] = event_type
51
+ if hide_on_frontend is not UNSET:
52
+ field_dict["hide_on_frontend"] = hide_on_frontend
53
+
54
+ return field_dict
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+ conversation_ids = []
60
+ _conversation_ids = d.pop("conversation_ids")
61
+ for conversation_ids_item_data in _conversation_ids:
62
+ conversation_ids_item = UUID(conversation_ids_item_data)
63
+
64
+ conversation_ids.append(conversation_ids_item)
65
+
66
+ _event_type = d.pop("event_type", UNSET)
67
+ event_type: EventType | Unset
68
+ if isinstance(_event_type, Unset):
69
+ event_type = UNSET
70
+ else:
71
+ event_type = EventType(_event_type)
72
+
73
+ hide_on_frontend = d.pop("hide_on_frontend", UNSET)
74
+
75
+ message_created_payload = cls(
76
+ conversation_ids=conversation_ids,
77
+ event_type=event_type,
78
+ hide_on_frontend=hide_on_frontend,
79
+ )
80
+
81
+ message_created_payload.additional_properties = d
82
+ return message_created_payload
83
+
84
+ @property
85
+ def additional_keys(self) -> list[str]:
86
+ return list(self.additional_properties.keys())
87
+
88
+ def __getitem__(self, key: str) -> Any:
89
+ return self.additional_properties[key]
90
+
91
+ def __setitem__(self, key: str, value: Any) -> None:
92
+ self.additional_properties[key] = value
93
+
94
+ def __delitem__(self, key: str) -> None:
95
+ del self.additional_properties[key]
96
+
97
+ def __contains__(self, key: str) -> bool:
98
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class MultiAgentEffortLevel(str, Enum):
5
+ HIGH = "high"
6
+ LOW = "low"
7
+ MEDIUM = "medium"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,264 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..models.llm_enum import LLMEnum
10
+ from ..models.multi_agent_effort_level import MultiAgentEffortLevel
11
+ from ..models.response_schema_type import ResponseSchemaType
12
+ from ..types import UNSET, Unset
13
+
14
+ T = TypeVar("T", bound="MultiAgentQueryParams")
15
+
16
+
17
+ @_attrs_define
18
+ class MultiAgentQueryParams:
19
+ """
20
+ Attributes:
21
+ task (str): The task assigned to the multi-agent
22
+ llm (LLMEnum | Unset):
23
+ agenda (str | Unset): Research agenda, if any Default: ''.
24
+ selected_input_fields (list[str] | None | Unset): Fields to select from the input artifacts. If None, select all
25
+ fields.
26
+ apply_at_depth (int | Unset): Default: -1.
27
+ preview (bool | Unset): When true, process only the first 5 inputs in map/map-expand operations Default: False.
28
+ is_expand (bool | Unset): When true, treat outputs as lists (expand behavior) Default: False.
29
+ flatten_map_expand (bool | Unset): When true with MAP mode and is_expand, flatten expanded results into single
30
+ group instead of nested groups Default: True.
31
+ response_schema (Any | Unset): Default: {'_model_name': 'Root', 'answer': {'description': 'The response
32
+ answer', 'optional': False, 'type': 'str'}}.
33
+ response_schema_type (ResponseSchemaType | Unset): Type of response schema format.
34
+ effort_level (MultiAgentEffortLevel | Unset): Effort level for the multi-agent task.
35
+ agent_model (LLMEnum | Unset):
36
+ driver_model (LLMEnum | Unset):
37
+ agent_step_timeout_seconds (int | Unset): Agent step timeout in seconds (8-1400) Default: 300.
38
+ timeout_seconds (int | Unset): Full task timeout in seconds (20-360000) Default: 600.
39
+ retries (int | Unset): Number of retries (0-5) Default: 2.
40
+ """
41
+
42
+ task: str
43
+ llm: LLMEnum | Unset = UNSET
44
+ agenda: str | Unset = ""
45
+ selected_input_fields: list[str] | None | Unset = UNSET
46
+ apply_at_depth: int | Unset = -1
47
+ preview: bool | Unset = False
48
+ is_expand: bool | Unset = False
49
+ flatten_map_expand: bool | Unset = True
50
+ response_schema: Any | Unset = {
51
+ "_model_name": "Root",
52
+ "answer": {"description": "The response answer", "optional": False, "type": "str"},
53
+ }
54
+ response_schema_type: ResponseSchemaType | Unset = UNSET
55
+ effort_level: MultiAgentEffortLevel | Unset = UNSET
56
+ agent_model: LLMEnum | Unset = UNSET
57
+ driver_model: LLMEnum | Unset = UNSET
58
+ agent_step_timeout_seconds: int | Unset = 300
59
+ timeout_seconds: int | Unset = 600
60
+ retries: int | Unset = 2
61
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
62
+
63
+ def to_dict(self) -> dict[str, Any]:
64
+ task = self.task
65
+
66
+ llm: str | Unset = UNSET
67
+ if not isinstance(self.llm, Unset):
68
+ llm = self.llm.value
69
+
70
+ agenda = self.agenda
71
+
72
+ selected_input_fields: list[str] | None | Unset
73
+ if isinstance(self.selected_input_fields, Unset):
74
+ selected_input_fields = UNSET
75
+ elif isinstance(self.selected_input_fields, list):
76
+ selected_input_fields = self.selected_input_fields
77
+
78
+ else:
79
+ selected_input_fields = self.selected_input_fields
80
+
81
+ apply_at_depth = self.apply_at_depth
82
+
83
+ preview = self.preview
84
+
85
+ is_expand = self.is_expand
86
+
87
+ flatten_map_expand = self.flatten_map_expand
88
+
89
+ response_schema = self.response_schema
90
+
91
+ response_schema_type: str | Unset = UNSET
92
+ if not isinstance(self.response_schema_type, Unset):
93
+ response_schema_type = self.response_schema_type.value
94
+
95
+ effort_level: str | Unset = UNSET
96
+ if not isinstance(self.effort_level, Unset):
97
+ effort_level = self.effort_level.value
98
+
99
+ agent_model: str | Unset = UNSET
100
+ if not isinstance(self.agent_model, Unset):
101
+ agent_model = self.agent_model.value
102
+
103
+ driver_model: str | Unset = UNSET
104
+ if not isinstance(self.driver_model, Unset):
105
+ driver_model = self.driver_model.value
106
+
107
+ agent_step_timeout_seconds = self.agent_step_timeout_seconds
108
+
109
+ timeout_seconds = self.timeout_seconds
110
+
111
+ retries = self.retries
112
+
113
+ field_dict: dict[str, Any] = {}
114
+ field_dict.update(self.additional_properties)
115
+ field_dict.update(
116
+ {
117
+ "task": task,
118
+ }
119
+ )
120
+ if llm is not UNSET:
121
+ field_dict["llm"] = llm
122
+ if agenda is not UNSET:
123
+ field_dict["agenda"] = agenda
124
+ if selected_input_fields is not UNSET:
125
+ field_dict["selected_input_fields"] = selected_input_fields
126
+ if apply_at_depth is not UNSET:
127
+ field_dict["apply_at_depth"] = apply_at_depth
128
+ if preview is not UNSET:
129
+ field_dict["preview"] = preview
130
+ if is_expand is not UNSET:
131
+ field_dict["is_expand"] = is_expand
132
+ if flatten_map_expand is not UNSET:
133
+ field_dict["flatten_map_expand"] = flatten_map_expand
134
+ if response_schema is not UNSET:
135
+ field_dict["response_schema"] = response_schema
136
+ if response_schema_type is not UNSET:
137
+ field_dict["response_schema_type"] = response_schema_type
138
+ if effort_level is not UNSET:
139
+ field_dict["effort_level"] = effort_level
140
+ if agent_model is not UNSET:
141
+ field_dict["agent_model"] = agent_model
142
+ if driver_model is not UNSET:
143
+ field_dict["driver_model"] = driver_model
144
+ if agent_step_timeout_seconds is not UNSET:
145
+ field_dict["agent_step_timeout_seconds"] = agent_step_timeout_seconds
146
+ if timeout_seconds is not UNSET:
147
+ field_dict["timeout_seconds"] = timeout_seconds
148
+ if retries is not UNSET:
149
+ field_dict["retries"] = retries
150
+
151
+ return field_dict
152
+
153
+ @classmethod
154
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
155
+ d = dict(src_dict)
156
+ task = d.pop("task")
157
+
158
+ _llm = d.pop("llm", UNSET)
159
+ llm: LLMEnum | Unset
160
+ if isinstance(_llm, Unset):
161
+ llm = UNSET
162
+ else:
163
+ llm = LLMEnum(_llm)
164
+
165
+ agenda = d.pop("agenda", UNSET)
166
+
167
+ def _parse_selected_input_fields(data: object) -> list[str] | None | Unset:
168
+ if data is None:
169
+ return data
170
+ if isinstance(data, Unset):
171
+ return data
172
+ try:
173
+ if not isinstance(data, list):
174
+ raise TypeError()
175
+ selected_input_fields_type_0 = cast(list[str], data)
176
+
177
+ return selected_input_fields_type_0
178
+ except (TypeError, ValueError, AttributeError, KeyError):
179
+ pass
180
+ return cast(list[str] | None | Unset, data)
181
+
182
+ selected_input_fields = _parse_selected_input_fields(d.pop("selected_input_fields", UNSET))
183
+
184
+ apply_at_depth = d.pop("apply_at_depth", UNSET)
185
+
186
+ preview = d.pop("preview", UNSET)
187
+
188
+ is_expand = d.pop("is_expand", UNSET)
189
+
190
+ flatten_map_expand = d.pop("flatten_map_expand", UNSET)
191
+
192
+ response_schema = d.pop("response_schema", UNSET)
193
+
194
+ _response_schema_type = d.pop("response_schema_type", UNSET)
195
+ response_schema_type: ResponseSchemaType | Unset
196
+ if isinstance(_response_schema_type, Unset):
197
+ response_schema_type = UNSET
198
+ else:
199
+ response_schema_type = ResponseSchemaType(_response_schema_type)
200
+
201
+ _effort_level = d.pop("effort_level", UNSET)
202
+ effort_level: MultiAgentEffortLevel | Unset
203
+ if isinstance(_effort_level, Unset):
204
+ effort_level = UNSET
205
+ else:
206
+ effort_level = MultiAgentEffortLevel(_effort_level)
207
+
208
+ _agent_model = d.pop("agent_model", UNSET)
209
+ agent_model: LLMEnum | Unset
210
+ if isinstance(_agent_model, Unset):
211
+ agent_model = UNSET
212
+ else:
213
+ agent_model = LLMEnum(_agent_model)
214
+
215
+ _driver_model = d.pop("driver_model", UNSET)
216
+ driver_model: LLMEnum | Unset
217
+ if isinstance(_driver_model, Unset):
218
+ driver_model = UNSET
219
+ else:
220
+ driver_model = LLMEnum(_driver_model)
221
+
222
+ agent_step_timeout_seconds = d.pop("agent_step_timeout_seconds", UNSET)
223
+
224
+ timeout_seconds = d.pop("timeout_seconds", UNSET)
225
+
226
+ retries = d.pop("retries", UNSET)
227
+
228
+ multi_agent_query_params = cls(
229
+ task=task,
230
+ llm=llm,
231
+ agenda=agenda,
232
+ selected_input_fields=selected_input_fields,
233
+ apply_at_depth=apply_at_depth,
234
+ preview=preview,
235
+ is_expand=is_expand,
236
+ flatten_map_expand=flatten_map_expand,
237
+ response_schema=response_schema,
238
+ response_schema_type=response_schema_type,
239
+ effort_level=effort_level,
240
+ agent_model=agent_model,
241
+ driver_model=driver_model,
242
+ agent_step_timeout_seconds=agent_step_timeout_seconds,
243
+ timeout_seconds=timeout_seconds,
244
+ retries=retries,
245
+ )
246
+
247
+ multi_agent_query_params.additional_properties = d
248
+ return multi_agent_query_params
249
+
250
+ @property
251
+ def additional_keys(self) -> list[str]:
252
+ return list(self.additional_properties.keys())
253
+
254
+ def __getitem__(self, key: str) -> Any:
255
+ return self.additional_properties[key]
256
+
257
+ def __setitem__(self, key: str, value: Any) -> None:
258
+ self.additional_properties[key] = value
259
+
260
+ def __delitem__(self, key: str) -> None:
261
+ del self.additional_properties[key]
262
+
263
+ def __contains__(self, key: str) -> bool:
264
+ return key in self.additional_properties
@@ -0,0 +1,160 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, Literal, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..models.multi_modal_chat_message_role import MultiModalChatMessageRole
10
+ from ..types import UNSET, Unset
11
+
12
+ if TYPE_CHECKING:
13
+ from ..models.image_chat_content_part import ImageChatContentPart
14
+ from ..models.text_chat_content_part import TextChatContentPart
15
+
16
+
17
+ T = TypeVar("T", bound="MultiModalChatMessage")
18
+
19
+
20
+ @_attrs_define
21
+ class MultiModalChatMessage:
22
+ """
23
+ Attributes:
24
+ role (MultiModalChatMessageRole):
25
+ content (list[ImageChatContentPart | TextChatContentPart]):
26
+ message_type (Literal['multi_modal'] | Unset): Default: 'multi_modal'.
27
+ completion_tokens (int | None | Unset):
28
+ cacheable (bool | Unset): Default: False.
29
+ explicit_cache_breakpoint (bool | Unset): Default: False.
30
+ """
31
+
32
+ role: MultiModalChatMessageRole
33
+ content: list[ImageChatContentPart | TextChatContentPart]
34
+ message_type: Literal["multi_modal"] | Unset = "multi_modal"
35
+ completion_tokens: int | None | Unset = UNSET
36
+ cacheable: bool | Unset = False
37
+ explicit_cache_breakpoint: bool | Unset = False
38
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
39
+
40
+ def to_dict(self) -> dict[str, Any]:
41
+ from ..models.text_chat_content_part import TextChatContentPart
42
+
43
+ role = self.role.value
44
+
45
+ content = []
46
+ for content_item_data in self.content:
47
+ content_item: dict[str, Any]
48
+ if isinstance(content_item_data, TextChatContentPart):
49
+ content_item = content_item_data.to_dict()
50
+ else:
51
+ content_item = content_item_data.to_dict()
52
+
53
+ content.append(content_item)
54
+
55
+ message_type = self.message_type
56
+
57
+ completion_tokens: int | None | Unset
58
+ if isinstance(self.completion_tokens, Unset):
59
+ completion_tokens = UNSET
60
+ else:
61
+ completion_tokens = self.completion_tokens
62
+
63
+ cacheable = self.cacheable
64
+
65
+ explicit_cache_breakpoint = self.explicit_cache_breakpoint
66
+
67
+ field_dict: dict[str, Any] = {}
68
+ field_dict.update(self.additional_properties)
69
+ field_dict.update(
70
+ {
71
+ "role": role,
72
+ "content": content,
73
+ }
74
+ )
75
+ if message_type is not UNSET:
76
+ field_dict["message_type"] = message_type
77
+ if completion_tokens is not UNSET:
78
+ field_dict["completion_tokens"] = completion_tokens
79
+ if cacheable is not UNSET:
80
+ field_dict["cacheable"] = cacheable
81
+ if explicit_cache_breakpoint is not UNSET:
82
+ field_dict["explicit_cache_breakpoint"] = explicit_cache_breakpoint
83
+
84
+ return field_dict
85
+
86
+ @classmethod
87
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
88
+ from ..models.image_chat_content_part import ImageChatContentPart
89
+ from ..models.text_chat_content_part import TextChatContentPart
90
+
91
+ d = dict(src_dict)
92
+ role = MultiModalChatMessageRole(d.pop("role"))
93
+
94
+ content = []
95
+ _content = d.pop("content")
96
+ for content_item_data in _content:
97
+
98
+ def _parse_content_item(data: object) -> ImageChatContentPart | TextChatContentPart:
99
+ try:
100
+ if not isinstance(data, dict):
101
+ raise TypeError()
102
+ content_item_type_0 = TextChatContentPart.from_dict(data)
103
+
104
+ return content_item_type_0
105
+ except (TypeError, ValueError, AttributeError, KeyError):
106
+ pass
107
+ if not isinstance(data, dict):
108
+ raise TypeError()
109
+ content_item_type_1 = ImageChatContentPart.from_dict(data)
110
+
111
+ return content_item_type_1
112
+
113
+ content_item = _parse_content_item(content_item_data)
114
+
115
+ content.append(content_item)
116
+
117
+ message_type = cast(Literal["multi_modal"] | Unset, d.pop("message_type", UNSET))
118
+ if message_type != "multi_modal" and not isinstance(message_type, Unset):
119
+ raise ValueError(f"message_type must match const 'multi_modal', got '{message_type}'")
120
+
121
+ def _parse_completion_tokens(data: object) -> int | None | Unset:
122
+ if data is None:
123
+ return data
124
+ if isinstance(data, Unset):
125
+ return data
126
+ return cast(int | None | Unset, data)
127
+
128
+ completion_tokens = _parse_completion_tokens(d.pop("completion_tokens", UNSET))
129
+
130
+ cacheable = d.pop("cacheable", UNSET)
131
+
132
+ explicit_cache_breakpoint = d.pop("explicit_cache_breakpoint", UNSET)
133
+
134
+ multi_modal_chat_message = cls(
135
+ role=role,
136
+ content=content,
137
+ message_type=message_type,
138
+ completion_tokens=completion_tokens,
139
+ cacheable=cacheable,
140
+ explicit_cache_breakpoint=explicit_cache_breakpoint,
141
+ )
142
+
143
+ multi_modal_chat_message.additional_properties = d
144
+ return multi_modal_chat_message
145
+
146
+ @property
147
+ def additional_keys(self) -> list[str]:
148
+ return list(self.additional_properties.keys())
149
+
150
+ def __getitem__(self, key: str) -> Any:
151
+ return self.additional_properties[key]
152
+
153
+ def __setitem__(self, key: str, value: Any) -> None:
154
+ self.additional_properties[key] = value
155
+
156
+ def __delitem__(self, key: str) -> None:
157
+ del self.additional_properties[key]
158
+
159
+ def __contains__(self, key: str) -> bool:
160
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class MultiModalChatMessageRole(str, Enum):
5
+ ASSISTANT = "assistant"
6
+ SYSTEM = "system"
7
+ USER = "user"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)
@@ -0,0 +1,144 @@
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 ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="PreviewMetadata")
13
+
14
+
15
+ @_attrs_define
16
+ class PreviewMetadata:
17
+ """
18
+ Attributes:
19
+ original_task_id (UUID):
20
+ index (int | None | Unset):
21
+ label (None | str | Unset):
22
+ description (None | str | Unset):
23
+ num_omitted_artifacts (int | None | Unset):
24
+ """
25
+
26
+ original_task_id: UUID
27
+ index: int | None | Unset = UNSET
28
+ label: None | str | Unset = UNSET
29
+ description: None | str | Unset = UNSET
30
+ num_omitted_artifacts: int | None | Unset = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ original_task_id = str(self.original_task_id)
35
+
36
+ index: int | None | Unset
37
+ if isinstance(self.index, Unset):
38
+ index = UNSET
39
+ else:
40
+ index = self.index
41
+
42
+ label: None | str | Unset
43
+ if isinstance(self.label, Unset):
44
+ label = UNSET
45
+ else:
46
+ label = self.label
47
+
48
+ description: None | str | Unset
49
+ if isinstance(self.description, Unset):
50
+ description = UNSET
51
+ else:
52
+ description = self.description
53
+
54
+ num_omitted_artifacts: int | None | Unset
55
+ if isinstance(self.num_omitted_artifacts, Unset):
56
+ num_omitted_artifacts = UNSET
57
+ else:
58
+ num_omitted_artifacts = self.num_omitted_artifacts
59
+
60
+ field_dict: dict[str, Any] = {}
61
+ field_dict.update(self.additional_properties)
62
+ field_dict.update(
63
+ {
64
+ "original_task_id": original_task_id,
65
+ }
66
+ )
67
+ if index is not UNSET:
68
+ field_dict["index"] = index
69
+ if label is not UNSET:
70
+ field_dict["label"] = label
71
+ if description is not UNSET:
72
+ field_dict["description"] = description
73
+ if num_omitted_artifacts is not UNSET:
74
+ field_dict["num_omitted_artifacts"] = num_omitted_artifacts
75
+
76
+ return field_dict
77
+
78
+ @classmethod
79
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
80
+ d = dict(src_dict)
81
+ original_task_id = UUID(d.pop("original_task_id"))
82
+
83
+ def _parse_index(data: object) -> int | None | Unset:
84
+ if data is None:
85
+ return data
86
+ if isinstance(data, Unset):
87
+ return data
88
+ return cast(int | None | Unset, data)
89
+
90
+ index = _parse_index(d.pop("index", UNSET))
91
+
92
+ def _parse_label(data: object) -> None | str | Unset:
93
+ if data is None:
94
+ return data
95
+ if isinstance(data, Unset):
96
+ return data
97
+ return cast(None | str | Unset, data)
98
+
99
+ label = _parse_label(d.pop("label", UNSET))
100
+
101
+ def _parse_description(data: object) -> None | str | Unset:
102
+ if data is None:
103
+ return data
104
+ if isinstance(data, Unset):
105
+ return data
106
+ return cast(None | str | Unset, data)
107
+
108
+ description = _parse_description(d.pop("description", UNSET))
109
+
110
+ def _parse_num_omitted_artifacts(data: object) -> int | None | Unset:
111
+ if data is None:
112
+ return data
113
+ if isinstance(data, Unset):
114
+ return data
115
+ return cast(int | None | Unset, data)
116
+
117
+ num_omitted_artifacts = _parse_num_omitted_artifacts(d.pop("num_omitted_artifacts", UNSET))
118
+
119
+ preview_metadata = cls(
120
+ original_task_id=original_task_id,
121
+ index=index,
122
+ label=label,
123
+ description=description,
124
+ num_omitted_artifacts=num_omitted_artifacts,
125
+ )
126
+
127
+ preview_metadata.additional_properties = d
128
+ return preview_metadata
129
+
130
+ @property
131
+ def additional_keys(self) -> list[str]:
132
+ return list(self.additional_properties.keys())
133
+
134
+ def __getitem__(self, key: str) -> Any:
135
+ return self.additional_properties[key]
136
+
137
+ def __setitem__(self, key: str, value: Any) -> None:
138
+ self.additional_properties[key] = value
139
+
140
+ def __delitem__(self, key: str) -> None:
141
+ del self.additional_properties[key]
142
+
143
+ def __contains__(self, key: str) -> bool:
144
+ return key in self.additional_properties
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+
4
+ class ProcessingMode(str, Enum):
5
+ MAP = "map"
6
+ REDUCE = "reduce"
7
+ TRANSFORM = "transform"
8
+
9
+ def __str__(self) -> str:
10
+ return str(self.value)