athena-intelligence 0.1.227__py3-none-any.whl → 0.1.357__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.

Potentially problematic release.


This version of athena-intelligence might be problematic. Click here for more details.

Files changed (55) hide show
  1. athena/__init__.py +223 -69
  2. athena/agents/__init__.py +33 -1
  3. athena/agents/client.py +81 -18
  4. athena/aop/client.py +2 -2
  5. athena/aop/raw_client.py +2 -2
  6. athena/assets/client.py +359 -2
  7. athena/assets/raw_client.py +562 -0
  8. athena/base_client.py +118 -18
  9. athena/client.py +23 -21
  10. athena/core/__init__.py +73 -20
  11. athena/core/client_wrapper.py +2 -2
  12. athena/core/force_multipart.py +4 -2
  13. athena/core/http_response.py +1 -1
  14. athena/core/pydantic_utilities.py +5 -2
  15. athena/environment.py +0 -2
  16. athena/errors/__init__.py +42 -7
  17. athena/query/__init__.py +28 -1
  18. athena/query/types/__init__.py +30 -1
  19. athena/tools/__init__.py +39 -4
  20. athena/tools/client.py +161 -31
  21. athena/tools/raw_client.py +12 -9
  22. athena/tools/sheets/__init__.py +29 -2
  23. athena/tools/sheets/client.py +66 -101
  24. athena/tools/sheets/raw_client.py +66 -93
  25. athena/tools/sheets/types/__init__.py +31 -2
  26. athena/tools/sheets/types/{insert_table_row_request_row_data_item_value.py → update_sheet_range_request_values_item_item.py} +1 -1
  27. athena/tools/types/__init__.py +28 -1
  28. athena/types/__init__.py +187 -52
  29. athena/types/aop_execute_response_out.py +2 -1
  30. athena/types/border_model.py +32 -0
  31. athena/types/border_style.py +7 -0
  32. athena/types/borders_model.py +58 -0
  33. athena/types/cell_format.py +60 -0
  34. athena/types/cell_format_horizontal_alignment.py +5 -0
  35. athena/types/cell_format_vertical_alignment.py +5 -0
  36. athena/types/conversation_asset_info.py +8 -2
  37. athena/types/conversation_message.py +42 -0
  38. athena/types/conversation_result.py +67 -0
  39. athena/types/creatable_asset_type.py +5 -0
  40. athena/types/create_asset_response_out.py +46 -0
  41. athena/types/create_project_response_out.py +51 -0
  42. athena/types/dimension_properties.py +49 -0
  43. athena/types/grid_range.py +39 -0
  44. athena/types/{file_chunk_request_out.py → number_format_model.py} +8 -4
  45. athena/types/number_format_type.py +21 -0
  46. athena/types/sheet.py +83 -0
  47. athena/types/table_row_data.py +5 -0
  48. athena/types/text_format_model.py +37 -0
  49. athena/types/textrotation.py +5 -0
  50. athena/types/{document_chunk.py → theme_color.py} +3 -7
  51. athena/types/thread_status_response_out.py +5 -0
  52. athena/types/wrap_strategy.py +5 -0
  53. {athena_intelligence-0.1.227.dist-info → athena_intelligence-0.1.357.dist-info}/METADATA +1 -1
  54. {athena_intelligence-0.1.227.dist-info → athena_intelligence-0.1.357.dist-info}/RECORD +55 -36
  55. {athena_intelligence-0.1.227.dist-info → athena_intelligence-0.1.357.dist-info}/WHEEL +0 -0
athena/types/__init__.py CHANGED
@@ -2,56 +2,172 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .aop_async_execute_response_out import AopAsyncExecuteResponseOut
6
- from .aop_execute_request_in import AopExecuteRequestIn
7
- from .aop_execute_response_out import AopExecuteResponseOut
8
- from .asset_content_request_out import AssetContentRequestOut
9
- from .asset_node import AssetNode
10
- from .asset_screenshot_response_out import AssetScreenshotResponseOut
11
- from .chunk import Chunk
12
- from .chunk_content_item import ChunkContentItem, ChunkContentItem_ImageUrl, ChunkContentItem_Text
13
- from .chunk_result import ChunkResult
14
- from .chunk_result_chunk_id import ChunkResultChunkId
15
- from .content import Content
16
- from .conversation_asset_info import ConversationAssetInfo
17
- from .create_new_sheet_tab_response import CreateNewSheetTabResponse
18
- from .custom_agent_response import CustomAgentResponse
19
- from .data_frame_request_out import DataFrameRequestOut
20
- from .data_frame_request_out_columns_item import DataFrameRequestOutColumnsItem
21
- from .data_frame_request_out_data_item_item import DataFrameRequestOutDataItemItem
22
- from .data_frame_request_out_index_item import DataFrameRequestOutIndexItem
23
- from .data_frame_unknown_format_error import DataFrameUnknownFormatError
24
- from .document_chunk import DocumentChunk
25
- from .drive_agent_response import DriveAgentResponse
26
- from .file_chunk_request_out import FileChunkRequestOut
27
- from .file_too_large_error import FileTooLargeError
28
- from .folder_response import FolderResponse
29
- from .general_agent_config import GeneralAgentConfig
30
- from .general_agent_config_enabled_tools_item import GeneralAgentConfigEnabledToolsItem
31
- from .general_agent_request import GeneralAgentRequest
32
- from .general_agent_response import GeneralAgentResponse
33
- from .general_agent_response_message import GeneralAgentResponseMessage
34
- from .general_agent_response_message_kwargs import GeneralAgentResponseMessageKwargs
35
- from .get_table_response import GetTableResponse
36
- from .id import Id
37
- from .image_url_content import ImageUrlContent
38
- from .input_message import InputMessage
39
- from .input_message_content_item import (
40
- InputMessageContentItem,
41
- InputMessageContentItem_ImageUrl,
42
- InputMessageContentItem_Text,
43
- )
44
- from .paginated_assets_out import PaginatedAssetsOut
45
- from .prompt_message import PromptMessage
46
- from .public_asset_out import PublicAssetOut
47
- from .research_agent_response import ResearchAgentResponse
48
- from .save_asset_request_out import SaveAssetRequestOut
49
- from .sheet_operation_response import SheetOperationResponse
50
- from .sql_agent_response import SqlAgentResponse
51
- from .structured_data_extractor_response import StructuredDataExtractorResponse
52
- from .text_content import TextContent
53
- from .thread_status_response_out import ThreadStatusResponseOut
54
- from .type import Type
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .aop_async_execute_response_out import AopAsyncExecuteResponseOut
10
+ from .aop_execute_request_in import AopExecuteRequestIn
11
+ from .aop_execute_response_out import AopExecuteResponseOut
12
+ from .asset_content_request_out import AssetContentRequestOut
13
+ from .asset_node import AssetNode
14
+ from .asset_screenshot_response_out import AssetScreenshotResponseOut
15
+ from .border_model import BorderModel
16
+ from .border_style import BorderStyle
17
+ from .borders_model import BordersModel
18
+ from .cell_format import CellFormat
19
+ from .cell_format_horizontal_alignment import CellFormatHorizontalAlignment
20
+ from .cell_format_vertical_alignment import CellFormatVerticalAlignment
21
+ from .chunk import Chunk
22
+ from .chunk_content_item import ChunkContentItem, ChunkContentItem_ImageUrl, ChunkContentItem_Text
23
+ from .chunk_result import ChunkResult
24
+ from .chunk_result_chunk_id import ChunkResultChunkId
25
+ from .content import Content
26
+ from .conversation_asset_info import ConversationAssetInfo
27
+ from .conversation_message import ConversationMessage
28
+ from .conversation_result import ConversationResult
29
+ from .creatable_asset_type import CreatableAssetType
30
+ from .create_asset_response_out import CreateAssetResponseOut
31
+ from .create_new_sheet_tab_response import CreateNewSheetTabResponse
32
+ from .create_project_response_out import CreateProjectResponseOut
33
+ from .custom_agent_response import CustomAgentResponse
34
+ from .data_frame_request_out import DataFrameRequestOut
35
+ from .data_frame_request_out_columns_item import DataFrameRequestOutColumnsItem
36
+ from .data_frame_request_out_data_item_item import DataFrameRequestOutDataItemItem
37
+ from .data_frame_request_out_index_item import DataFrameRequestOutIndexItem
38
+ from .data_frame_unknown_format_error import DataFrameUnknownFormatError
39
+ from .dimension_properties import DimensionProperties
40
+ from .drive_agent_response import DriveAgentResponse
41
+ from .file_too_large_error import FileTooLargeError
42
+ from .folder_response import FolderResponse
43
+ from .general_agent_config import GeneralAgentConfig
44
+ from .general_agent_config_enabled_tools_item import GeneralAgentConfigEnabledToolsItem
45
+ from .general_agent_request import GeneralAgentRequest
46
+ from .general_agent_response import GeneralAgentResponse
47
+ from .general_agent_response_message import GeneralAgentResponseMessage
48
+ from .general_agent_response_message_kwargs import GeneralAgentResponseMessageKwargs
49
+ from .get_table_response import GetTableResponse
50
+ from .grid_range import GridRange
51
+ from .id import Id
52
+ from .image_url_content import ImageUrlContent
53
+ from .input_message import InputMessage
54
+ from .input_message_content_item import (
55
+ InputMessageContentItem,
56
+ InputMessageContentItem_ImageUrl,
57
+ InputMessageContentItem_Text,
58
+ )
59
+ from .number_format_model import NumberFormatModel
60
+ from .number_format_type import NumberFormatType
61
+ from .paginated_assets_out import PaginatedAssetsOut
62
+ from .prompt_message import PromptMessage
63
+ from .public_asset_out import PublicAssetOut
64
+ from .research_agent_response import ResearchAgentResponse
65
+ from .save_asset_request_out import SaveAssetRequestOut
66
+ from .sheet import Sheet
67
+ from .sheet_operation_response import SheetOperationResponse
68
+ from .sql_agent_response import SqlAgentResponse
69
+ from .structured_data_extractor_response import StructuredDataExtractorResponse
70
+ from .table_row_data import TableRowData
71
+ from .text_content import TextContent
72
+ from .text_format_model import TextFormatModel
73
+ from .textrotation import Textrotation
74
+ from .theme_color import ThemeColor
75
+ from .thread_status_response_out import ThreadStatusResponseOut
76
+ from .type import Type
77
+ from .wrap_strategy import WrapStrategy
78
+ _dynamic_imports: typing.Dict[str, str] = {
79
+ "AopAsyncExecuteResponseOut": ".aop_async_execute_response_out",
80
+ "AopExecuteRequestIn": ".aop_execute_request_in",
81
+ "AopExecuteResponseOut": ".aop_execute_response_out",
82
+ "AssetContentRequestOut": ".asset_content_request_out",
83
+ "AssetNode": ".asset_node",
84
+ "AssetScreenshotResponseOut": ".asset_screenshot_response_out",
85
+ "BorderModel": ".border_model",
86
+ "BorderStyle": ".border_style",
87
+ "BordersModel": ".borders_model",
88
+ "CellFormat": ".cell_format",
89
+ "CellFormatHorizontalAlignment": ".cell_format_horizontal_alignment",
90
+ "CellFormatVerticalAlignment": ".cell_format_vertical_alignment",
91
+ "Chunk": ".chunk",
92
+ "ChunkContentItem": ".chunk_content_item",
93
+ "ChunkContentItem_ImageUrl": ".chunk_content_item",
94
+ "ChunkContentItem_Text": ".chunk_content_item",
95
+ "ChunkResult": ".chunk_result",
96
+ "ChunkResultChunkId": ".chunk_result_chunk_id",
97
+ "Content": ".content",
98
+ "ConversationAssetInfo": ".conversation_asset_info",
99
+ "ConversationMessage": ".conversation_message",
100
+ "ConversationResult": ".conversation_result",
101
+ "CreatableAssetType": ".creatable_asset_type",
102
+ "CreateAssetResponseOut": ".create_asset_response_out",
103
+ "CreateNewSheetTabResponse": ".create_new_sheet_tab_response",
104
+ "CreateProjectResponseOut": ".create_project_response_out",
105
+ "CustomAgentResponse": ".custom_agent_response",
106
+ "DataFrameRequestOut": ".data_frame_request_out",
107
+ "DataFrameRequestOutColumnsItem": ".data_frame_request_out_columns_item",
108
+ "DataFrameRequestOutDataItemItem": ".data_frame_request_out_data_item_item",
109
+ "DataFrameRequestOutIndexItem": ".data_frame_request_out_index_item",
110
+ "DataFrameUnknownFormatError": ".data_frame_unknown_format_error",
111
+ "DimensionProperties": ".dimension_properties",
112
+ "DriveAgentResponse": ".drive_agent_response",
113
+ "FileTooLargeError": ".file_too_large_error",
114
+ "FolderResponse": ".folder_response",
115
+ "GeneralAgentConfig": ".general_agent_config",
116
+ "GeneralAgentConfigEnabledToolsItem": ".general_agent_config_enabled_tools_item",
117
+ "GeneralAgentRequest": ".general_agent_request",
118
+ "GeneralAgentResponse": ".general_agent_response",
119
+ "GeneralAgentResponseMessage": ".general_agent_response_message",
120
+ "GeneralAgentResponseMessageKwargs": ".general_agent_response_message_kwargs",
121
+ "GetTableResponse": ".get_table_response",
122
+ "GridRange": ".grid_range",
123
+ "Id": ".id",
124
+ "ImageUrlContent": ".image_url_content",
125
+ "InputMessage": ".input_message",
126
+ "InputMessageContentItem": ".input_message_content_item",
127
+ "InputMessageContentItem_ImageUrl": ".input_message_content_item",
128
+ "InputMessageContentItem_Text": ".input_message_content_item",
129
+ "NumberFormatModel": ".number_format_model",
130
+ "NumberFormatType": ".number_format_type",
131
+ "PaginatedAssetsOut": ".paginated_assets_out",
132
+ "PromptMessage": ".prompt_message",
133
+ "PublicAssetOut": ".public_asset_out",
134
+ "ResearchAgentResponse": ".research_agent_response",
135
+ "SaveAssetRequestOut": ".save_asset_request_out",
136
+ "Sheet": ".sheet",
137
+ "SheetOperationResponse": ".sheet_operation_response",
138
+ "SqlAgentResponse": ".sql_agent_response",
139
+ "StructuredDataExtractorResponse": ".structured_data_extractor_response",
140
+ "TableRowData": ".table_row_data",
141
+ "TextContent": ".text_content",
142
+ "TextFormatModel": ".text_format_model",
143
+ "Textrotation": ".textrotation",
144
+ "ThemeColor": ".theme_color",
145
+ "ThreadStatusResponseOut": ".thread_status_response_out",
146
+ "Type": ".type",
147
+ "WrapStrategy": ".wrap_strategy",
148
+ }
149
+
150
+
151
+ def __getattr__(attr_name: str) -> typing.Any:
152
+ module_name = _dynamic_imports.get(attr_name)
153
+ if module_name is None:
154
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
155
+ try:
156
+ module = import_module(module_name, __package__)
157
+ if module_name == f".{attr_name}":
158
+ return module
159
+ else:
160
+ return getattr(module, attr_name)
161
+ except ImportError as e:
162
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
163
+ except AttributeError as e:
164
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
165
+
166
+
167
+ def __dir__():
168
+ lazy_attrs = list(_dynamic_imports.keys())
169
+ return sorted(lazy_attrs)
170
+
55
171
 
56
172
  __all__ = [
57
173
  "AopAsyncExecuteResponseOut",
@@ -60,6 +176,12 @@ __all__ = [
60
176
  "AssetContentRequestOut",
61
177
  "AssetNode",
62
178
  "AssetScreenshotResponseOut",
179
+ "BorderModel",
180
+ "BorderStyle",
181
+ "BordersModel",
182
+ "CellFormat",
183
+ "CellFormatHorizontalAlignment",
184
+ "CellFormatVerticalAlignment",
63
185
  "Chunk",
64
186
  "ChunkContentItem",
65
187
  "ChunkContentItem_ImageUrl",
@@ -68,16 +190,20 @@ __all__ = [
68
190
  "ChunkResultChunkId",
69
191
  "Content",
70
192
  "ConversationAssetInfo",
193
+ "ConversationMessage",
194
+ "ConversationResult",
195
+ "CreatableAssetType",
196
+ "CreateAssetResponseOut",
71
197
  "CreateNewSheetTabResponse",
198
+ "CreateProjectResponseOut",
72
199
  "CustomAgentResponse",
73
200
  "DataFrameRequestOut",
74
201
  "DataFrameRequestOutColumnsItem",
75
202
  "DataFrameRequestOutDataItemItem",
76
203
  "DataFrameRequestOutIndexItem",
77
204
  "DataFrameUnknownFormatError",
78
- "DocumentChunk",
205
+ "DimensionProperties",
79
206
  "DriveAgentResponse",
80
- "FileChunkRequestOut",
81
207
  "FileTooLargeError",
82
208
  "FolderResponse",
83
209
  "GeneralAgentConfig",
@@ -87,21 +213,30 @@ __all__ = [
87
213
  "GeneralAgentResponseMessage",
88
214
  "GeneralAgentResponseMessageKwargs",
89
215
  "GetTableResponse",
216
+ "GridRange",
90
217
  "Id",
91
218
  "ImageUrlContent",
92
219
  "InputMessage",
93
220
  "InputMessageContentItem",
94
221
  "InputMessageContentItem_ImageUrl",
95
222
  "InputMessageContentItem_Text",
223
+ "NumberFormatModel",
224
+ "NumberFormatType",
96
225
  "PaginatedAssetsOut",
97
226
  "PromptMessage",
98
227
  "PublicAssetOut",
99
228
  "ResearchAgentResponse",
100
229
  "SaveAssetRequestOut",
230
+ "Sheet",
101
231
  "SheetOperationResponse",
102
232
  "SqlAgentResponse",
103
233
  "StructuredDataExtractorResponse",
234
+ "TableRowData",
104
235
  "TextContent",
236
+ "TextFormatModel",
237
+ "Textrotation",
238
+ "ThemeColor",
105
239
  "ThreadStatusResponseOut",
106
240
  "Type",
241
+ "WrapStrategy",
107
242
  ]
@@ -4,6 +4,7 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .conversation_result import ConversationResult
7
8
 
8
9
 
9
10
  class AopExecuteResponseOut(UniversalBaseModel):
@@ -31,7 +32,7 @@ class AopExecuteResponseOut(UniversalBaseModel):
31
32
  Base prompt of the AOP before user inputs were added
32
33
  """
33
34
 
34
- conversation: typing.Optional[typing.Optional[typing.Any]] = pydantic.Field(default=None)
35
+ conversation: typing.Optional[ConversationResult] = pydantic.Field(default=None)
35
36
  """
36
37
  The conversation result from the AOP execution
37
38
  """
@@ -0,0 +1,32 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .border_style import BorderStyle
8
+ from .theme_color import ThemeColor
9
+
10
+
11
+ class BorderModel(UniversalBaseModel):
12
+ color_hex: typing.Optional[str] = pydantic.Field(default=None)
13
+ """
14
+ Border color as hex string (e.g., '#FF0000'). Use either color_hex or color_theme, not both.
15
+ """
16
+
17
+ color_theme: typing.Optional[ThemeColor] = pydantic.Field(default=None)
18
+ """
19
+ Border color as theme reference. Use either color_hex or color_theme, not both. Defaults to theme color 1 if neither is specified.
20
+ """
21
+
22
+ style: BorderStyle
23
+ width: int
24
+
25
+ if IS_PYDANTIC_V2:
26
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
27
+ else:
28
+
29
+ class Config:
30
+ frozen = True
31
+ smart_union = True
32
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ BorderStyle = typing.Union[
6
+ typing.Literal["dotted", "dashed", "solid", "solid_medium", "solid_thick", "double"], typing.Any
7
+ ]
@@ -0,0 +1,58 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .border_model import BorderModel
8
+
9
+
10
+ class BordersModel(UniversalBaseModel):
11
+ """
12
+ Border configuration for spreadsheet cells. Set individual borders (top, right, bottom, left) to apply borders around cells.
13
+
14
+ Common border patterns:
15
+ - All borders: Set all four sides (top, right, bottom, left) to create borders around every cell
16
+ - Outer border only: For a range A1:C3, only the perimeter cells get borders (first row gets top, last row gets bottom, etc.)
17
+ - Inner borders only: Only borders between cells, not on the outer edges
18
+ - Horizontal lines: Set only top and/or bottom borders
19
+ - Vertical lines: Set only left and/or right borders
20
+ - Single side: Set only one border (e.g., just bottom for underline effect)
21
+
22
+ Note: Borders are applied per-cell. Each cell's border properties control which edges of that specific cell have borders. Overlapping borders between adjacent cells will appear as a single line.
23
+
24
+ Examples:
25
+ - Box around range: Set all four borders on all cells in the range
26
+ - Table with grid: Set all four borders to create a complete grid
27
+ - Underline header: Set only bottom border on header row
28
+ - Separate sections: Set bottom border to divide content
29
+ """
30
+
31
+ bottom: typing.Optional[BorderModel] = pydantic.Field(default=None)
32
+ """
33
+ Bottom border of the cell
34
+ """
35
+
36
+ left: typing.Optional[BorderModel] = pydantic.Field(default=None)
37
+ """
38
+ Left border of the cell
39
+ """
40
+
41
+ right: typing.Optional[BorderModel] = pydantic.Field(default=None)
42
+ """
43
+ Right border of the cell
44
+ """
45
+
46
+ top: typing.Optional[BorderModel] = pydantic.Field(default=None)
47
+ """
48
+ Top border of the cell
49
+ """
50
+
51
+ if IS_PYDANTIC_V2:
52
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
53
+ else:
54
+
55
+ class Config:
56
+ frozen = True
57
+ smart_union = True
58
+ extra = pydantic.Extra.allow
@@ -0,0 +1,60 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ import typing_extensions
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .borders_model import BordersModel
10
+ from .cell_format_horizontal_alignment import CellFormatHorizontalAlignment
11
+ from .cell_format_vertical_alignment import CellFormatVerticalAlignment
12
+ from .number_format_model import NumberFormatModel
13
+ from .text_format_model import TextFormatModel
14
+ from .textrotation import Textrotation
15
+ from .theme_color import ThemeColor
16
+ from .wrap_strategy import WrapStrategy
17
+
18
+
19
+ class CellFormat(UniversalBaseModel):
20
+ background_color_hex: typing_extensions.Annotated[
21
+ typing.Optional[str], FieldMetadata(alias="backgroundColor_hex")
22
+ ] = pydantic.Field(default=None)
23
+ """
24
+ Background color as hex string (e.g., '#FF0000'). Use either backgroundColor_hex or backgroundColor_theme, not both.
25
+ """
26
+
27
+ background_color_theme: typing_extensions.Annotated[
28
+ typing.Optional[ThemeColor], FieldMetadata(alias="backgroundColor_theme")
29
+ ] = pydantic.Field(default=None)
30
+ """
31
+ Background color as theme reference. Use either backgroundColor_hex or backgroundColor_theme, not both.
32
+ """
33
+
34
+ borders: typing.Optional[BordersModel] = None
35
+ horizontal_alignment: typing_extensions.Annotated[
36
+ typing.Optional[CellFormatHorizontalAlignment], FieldMetadata(alias="horizontalAlignment")
37
+ ] = None
38
+ indent: typing.Optional[int] = None
39
+ number_format: typing_extensions.Annotated[
40
+ typing.Optional[NumberFormatModel], FieldMetadata(alias="numberFormat")
41
+ ] = None
42
+ text_format: typing_extensions.Annotated[typing.Optional[TextFormatModel], FieldMetadata(alias="textFormat")] = None
43
+ text_rotation: typing_extensions.Annotated[typing.Optional[Textrotation], FieldMetadata(alias="textRotation")] = (
44
+ None
45
+ )
46
+ vertical_alignment: typing_extensions.Annotated[
47
+ typing.Optional[CellFormatVerticalAlignment], FieldMetadata(alias="verticalAlignment")
48
+ ] = None
49
+ wrap_strategy: typing_extensions.Annotated[typing.Optional[WrapStrategy], FieldMetadata(alias="wrapStrategy")] = (
50
+ None
51
+ )
52
+
53
+ if IS_PYDANTIC_V2:
54
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
55
+ else:
56
+
57
+ class Config:
58
+ frozen = True
59
+ smart_union = True
60
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CellFormatHorizontalAlignment = typing.Union[typing.Literal["left", "right", "center"], typing.Any]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CellFormatVerticalAlignment = typing.Union[typing.Literal["top", "middle", "bottom"], typing.Any]
@@ -4,6 +4,7 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .conversation_message import ConversationMessage
7
8
 
8
9
 
9
10
  class ConversationAssetInfo(UniversalBaseModel):
@@ -36,12 +37,17 @@ class ConversationAssetInfo(UniversalBaseModel):
36
37
  User ID who created the conversation
37
38
  """
38
39
 
40
+ error: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
41
+ """
42
+ Error details if the conversation execution failed
43
+ """
44
+
39
45
  last_channel: typing.Optional[str] = pydantic.Field(default=None)
40
46
  """
41
47
  Last active channel for the conversation
42
48
  """
43
49
 
44
- last_message: typing.Optional[typing.Optional[typing.Any]] = pydantic.Field(default=None)
50
+ last_message: typing.Optional[ConversationMessage] = pydantic.Field(default=None)
45
51
  """
46
52
  Last message in the conversation
47
53
  """
@@ -60,7 +66,7 @@ class ConversationAssetInfo(UniversalBaseModel):
60
66
  List of linked project assets
61
67
  """
62
68
 
63
- messages: typing.Optional[typing.List[typing.Optional[typing.Any]]] = pydantic.Field(default=None)
69
+ messages: typing.Optional[typing.List[ConversationMessage]] = pydantic.Field(default=None)
64
70
  """
65
71
  Complete list of messages in the conversation from checkpoints
66
72
  """
@@ -0,0 +1,42 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .content import Content
8
+
9
+
10
+ class ConversationMessage(UniversalBaseModel):
11
+ """
12
+ Model representing a single conversation message.
13
+ """
14
+
15
+ additional_kwargs: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
16
+ """
17
+ Additional message metadata
18
+ """
19
+
20
+ content: Content = pydantic.Field()
21
+ """
22
+ Message content as text or structured content blocks
23
+ """
24
+
25
+ id: str = pydantic.Field()
26
+ """
27
+ Unique identifier for the message
28
+ """
29
+
30
+ role: str = pydantic.Field()
31
+ """
32
+ Role of the message sender (user, assistant, system)
33
+ """
34
+
35
+ if IS_PYDANTIC_V2:
36
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
37
+ else:
38
+
39
+ class Config:
40
+ frozen = True
41
+ smart_union = True
42
+ extra = pydantic.Extra.allow
@@ -0,0 +1,67 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .conversation_message import ConversationMessage
8
+
9
+
10
+ class ConversationResult(UniversalBaseModel):
11
+ """
12
+ Model representing the conversation result from task/AOP execution.
13
+ """
14
+
15
+ conversation_id: typing.Optional[str] = pydantic.Field(default=None)
16
+ """
17
+ ID of the conversation asset
18
+ """
19
+
20
+ created_at: typing.Optional[str] = pydantic.Field(default=None)
21
+ """
22
+ ISO timestamp when conversation was created
23
+ """
24
+
25
+ last_assistant_message: typing.Optional[ConversationMessage] = pydantic.Field(default=None)
26
+ """
27
+ The last message from the assistant
28
+ """
29
+
30
+ messages: typing.Optional[typing.List[ConversationMessage]] = pydantic.Field(default=None)
31
+ """
32
+ Complete list of messages in the conversation
33
+ """
34
+
35
+ messages_source: str = pydantic.Field()
36
+ """
37
+ Source of the messages (e.g., 'checkpoints')
38
+ """
39
+
40
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
41
+ """
42
+ Additional conversation metadata
43
+ """
44
+
45
+ num_messages: int = pydantic.Field()
46
+ """
47
+ Total number of messages in the conversation
48
+ """
49
+
50
+ title: typing.Optional[str] = pydantic.Field(default=None)
51
+ """
52
+ Title of the conversation
53
+ """
54
+
55
+ updated_at: typing.Optional[str] = pydantic.Field(default=None)
56
+ """
57
+ ISO timestamp when conversation was last updated
58
+ """
59
+
60
+ if IS_PYDANTIC_V2:
61
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
62
+ else:
63
+
64
+ class Config:
65
+ frozen = True
66
+ smart_union = True
67
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CreatableAssetType = typing.Union[typing.Literal["spreadsheet", "document", "folder"], typing.Any]