Skip to content

Commit ce03065

Browse files
committed
Version 1.4.88
1 parent af382f4 commit ce03065

28 files changed

Lines changed: 1175 additions & 49 deletions

File tree

abacusai/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,4 +305,4 @@
305305
from .workflow_node_template import WorkflowNodeTemplate
306306

307307

308-
__version__ = "1.4.87"
308+
__version__ = "1.4.88"

abacusai/api_class/enums.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,8 @@ class LLMName(ApiEnum):
555555
OPENAI_GPT5_1 = 'OPENAI_GPT5_1'
556556
OPENAI_GPT5_2 = 'OPENAI_GPT5_2'
557557
OPENAI_GPT5_4 = 'OPENAI_GPT5_4'
558+
OPENAI_GPT5_4_NANO = 'OPENAI_GPT5_4_NANO'
559+
OPENAI_GPT5_4_MINI = 'OPENAI_GPT5_4_MINI'
558560
CLAUDE_V3_HAIKU = 'CLAUDE_V3_HAIKU'
559561
CLAUDE_V3_OPUS = 'CLAUDE_V3_OPUS'
560562
CLAUDE_V3_5_HAIKU = 'CLAUDE_V3_5_HAIKU'
@@ -580,6 +582,7 @@ class LLMName(ApiEnum):
580582
XAI_GROK_3 = 'XAI_GROK_3'
581583
XAI_GROK_3_MINI = 'XAI_GROK_3_MINI'
582584
XAI_GROK_4 = 'XAI_GROK_4'
585+
XAI_GROK_4_2 = 'XAI_GROK_4_2'
583586
LLAMA4_MAVERICK = 'LLAMA4_MAVERICK'
584587
LLAMA3_1_405B = 'LLAMA3_1_405B'
585588
LLAMA3_1_70B = 'LLAMA3_1_70B'
@@ -597,6 +600,7 @@ class LLMName(ApiEnum):
597600
QWEN3_CODER = 'QWEN3_CODER'
598601
DEEPSEEK_V3_1 = 'DEEPSEEK_V3_1'
599602
DEEPSEEK_R1 = 'DEEPSEEK_R1'
603+
MINIMAX_M2_7 = 'MINIMAX_M2_7'
600604

601605

602606
class MonitorAlertType(ApiEnum):
@@ -838,6 +842,7 @@ class DeploymentConversationType(ApiEnum):
838842
AGENT_CONTROLLER = 'AGENT_CONTROLLER'
839843
CODE_LLM = 'CODE_LLM'
840844
CODE_LLM_AGENT = 'CODE_LLM_AGENT'
845+
CODE_LLM_COWORK = 'CODE_LLM_COWORK'
841846
CHAT_LLM_TASK = 'CHAT_LLM_TASK'
842847
COMPUTER_AGENT = 'COMPUTER_AGENT'
843848
SEARCH_LLM = 'SEARCH_LLM'
@@ -846,6 +851,17 @@ class DeploymentConversationType(ApiEnum):
846851
SUPER_AGENT = 'SUPER_AGENT'
847852
CODE_LLM_NON_INTERACTIVE = 'CODE_LLM_NON_INTERACTIVE'
848853
BROWSER_EXTENSION = 'BROWSER_EXTENSION'
854+
OFFICE = 'OFFICE'
855+
856+
857+
class DeploymentConversationAgentType(ApiEnum):
858+
META_AGENT = 'META_AGENT'
859+
860+
861+
class AgentLifecycle(ApiEnum):
862+
PENDING = 'PENDING'
863+
STOPPED = 'STOPPED'
864+
COMPLETED = 'COMPLETED'
849865

850866

851867
class AgentClientType(ApiEnum):

abacusai/batch_prediction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self, client, batchPredictionId=None, createdAt=None, name=None, de
8484
BatchPredictionArgs, globalPredictionArgs)
8585
self.batch_prediction_args = client._build_class(getattr(
8686
api_class, batchPredictionArgsType, BatchPredictionArgs) if batchPredictionArgsType else BatchPredictionArgs, batchPredictionArgs)
87-
self.deprecated_keys = {'global_prediction_args', 'explanations'}
87+
self.deprecated_keys = {'explanations', 'global_prediction_args'}
8888

8989
def __repr__(self):
9090
repr_dict = {f'batch_prediction_id': repr(self.batch_prediction_id), f'created_at': repr(self.created_at), f'name': repr(self.name), f'deployment_id': repr(self.deployment_id), f'file_connector_output_location': repr(self.file_connector_output_location), f'database_connector_id': repr(self.database_connector_id), f'database_output_configuration': repr(self.database_output_configuration), f'file_output_format': repr(self.file_output_format), f'connector_type': repr(self.connector_type), f'legacy_input_location': repr(self.legacy_input_location), f'output_feature_group_id': repr(self.output_feature_group_id), f'feature_group_table_name': repr(self.feature_group_table_name), f'output_feature_group_table_name': repr(self.output_feature_group_table_name), f'summary_feature_group_table_name': repr(self.summary_feature_group_table_name), f'csv_input_prefix': repr(

abacusai/batch_prediction_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def __init__(self, client, batchPredictionVersion=None, batchPredictionId=None,
100100
BatchPredictionArgs, globalPredictionArgs)
101101
self.batch_prediction_args = client._build_class(getattr(
102102
api_class, batchPredictionArgsType, BatchPredictionArgs) if batchPredictionArgsType else BatchPredictionArgs, batchPredictionArgs)
103-
self.deprecated_keys = {'global_prediction_args', 'explanations'}
103+
self.deprecated_keys = {'explanations', 'global_prediction_args'}
104104

105105
def __repr__(self):
106106
repr_dict = {f'batch_prediction_version': repr(self.batch_prediction_version), f'batch_prediction_id': repr(self.batch_prediction_id), f'status': repr(self.status), f'drift_monitor_status': repr(self.drift_monitor_status), f'deployment_id': repr(self.deployment_id), f'model_id': repr(self.model_id), f'model_version': repr(self.model_version), f'predictions_started_at': repr(self.predictions_started_at), f'predictions_completed_at': repr(self.predictions_completed_at), f'database_output_error': repr(self.database_output_error), f'total_predictions': repr(self.total_predictions), f'failed_predictions': repr(self.failed_predictions), f'database_connector_id': repr(self.database_connector_id), f'database_output_configuration': repr(self.database_output_configuration), f'file_connector_output_location': repr(self.file_connector_output_location), f'file_output_format': repr(self.file_output_format), f'connector_type': repr(self.connector_type), f'legacy_input_location': repr(self.legacy_input_location), f'error': repr(self.error), f'drift_monitor_error': repr(self.drift_monitor_error), f'monitor_warnings': repr(self.monitor_warnings), f'csv_input_prefix': repr(

abacusai/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ class BaseApiClient:
716716
client_options (ClientOptions): Optional API client configurations
717717
skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
718718
"""
719-
client_version = '1.4.87'
719+
client_version = '1.4.88'
720720

721721
def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
722722
self.api_key = api_key

abacusai/code_bot.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class CodeBot(AbstractApiClass):
99
client (ApiClient): An authenticated API Client instance
1010
llmName (str): The name of the LLM.
1111
name (str): The name of the bot.
12+
coworkName (str): The display name of the bot in CoWork. Only available for select bots.
1213
imageUploadSupported (bool): Whether the LLM supports image upload.
1314
codeAgentSupported (bool): Whether the LLM supports code agent.
1415
codeEditSupported (bool): Whether the LLM supports code edit.
@@ -20,10 +21,11 @@ class CodeBot(AbstractApiClass):
2021
apiKeyUrl (str): The URL to get the API key.
2122
"""
2223

23-
def __init__(self, client, llmName=None, name=None, imageUploadSupported=None, codeAgentSupported=None, codeEditSupported=None, isPremium=None, llmBotIcon=None, provider=None, isUserApiKeyAllowed=None, isRateLimited=None, apiKeyUrl=None):
24+
def __init__(self, client, llmName=None, name=None, coworkName=None, imageUploadSupported=None, codeAgentSupported=None, codeEditSupported=None, isPremium=None, llmBotIcon=None, provider=None, isUserApiKeyAllowed=None, isRateLimited=None, apiKeyUrl=None):
2425
super().__init__(client, None)
2526
self.llm_name = llmName
2627
self.name = name
28+
self.cowork_name = coworkName
2729
self.image_upload_supported = imageUploadSupported
2830
self.code_agent_supported = codeAgentSupported
2931
self.code_edit_supported = codeEditSupported
@@ -36,8 +38,8 @@ def __init__(self, client, llmName=None, name=None, imageUploadSupported=None, c
3638
self.deprecated_keys = {}
3739

3840
def __repr__(self):
39-
repr_dict = {f'llm_name': repr(self.llm_name), f'name': repr(self.name), f'image_upload_supported': repr(self.image_upload_supported), f'code_agent_supported': repr(self.code_agent_supported), f'code_edit_supported': repr(self.code_edit_supported), f'is_premium': repr(
40-
self.is_premium), f'llm_bot_icon': repr(self.llm_bot_icon), f'provider': repr(self.provider), f'is_user_api_key_allowed': repr(self.is_user_api_key_allowed), f'is_rate_limited': repr(self.is_rate_limited), f'api_key_url': repr(self.api_key_url)}
41+
repr_dict = {f'llm_name': repr(self.llm_name), f'name': repr(self.name), f'cowork_name': repr(self.cowork_name), f'image_upload_supported': repr(self.image_upload_supported), f'code_agent_supported': repr(self.code_agent_supported), f'code_edit_supported': repr(
42+
self.code_edit_supported), f'is_premium': repr(self.is_premium), f'llm_bot_icon': repr(self.llm_bot_icon), f'provider': repr(self.provider), f'is_user_api_key_allowed': repr(self.is_user_api_key_allowed), f'is_rate_limited': repr(self.is_rate_limited), f'api_key_url': repr(self.api_key_url)}
4143
class_name = "CodeBot"
4244
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
4345
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -50,6 +52,6 @@ def to_dict(self):
5052
Returns:
5153
dict: The dict value representation of the class parameters
5254
"""
53-
resp = {'llm_name': self.llm_name, 'name': self.name, 'image_upload_supported': self.image_upload_supported, 'code_agent_supported': self.code_agent_supported, 'code_edit_supported': self.code_edit_supported,
55+
resp = {'llm_name': self.llm_name, 'name': self.name, 'cowork_name': self.cowork_name, 'image_upload_supported': self.image_upload_supported, 'code_agent_supported': self.code_agent_supported, 'code_edit_supported': self.code_edit_supported,
5456
'is_premium': self.is_premium, 'llm_bot_icon': self.llm_bot_icon, 'provider': self.provider, 'is_user_api_key_allowed': self.is_user_api_key_allowed, 'is_rate_limited': self.is_rate_limited, 'api_key_url': self.api_key_url}
5557
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}

abacusai/deployment_conversation.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,14 @@ class DeploymentConversation(AbstractApiClass):
4242
latestContext (dict): dict containing a list of important segments for pagination in deepagent.
4343
shareType (str): The sharing status of the deployment conversation (PUBLIC or PRIVATE).
4444
pushNotificationsEnabled (bool): Whether push notifications are enabled for the deployment conversation.
45+
platform (str): The platform the conversation was created from (WEB, IOS, ANDROID).
46+
agentType (str): The type of agent for the deployment conversation (e.g., META_AGENT).
4547
history (DeploymentConversationEvent): The history of the deployment conversation.
4648
hostedArtifacts (HostedArtifact): Artifacts that have been deployed by this conversation.
4749
mobileBuildInfo (MobileBuildInfo): List of mobile app builds with type, build URL, status, and IDs.
4850
"""
4951

50-
def __init__(self, client, deploymentConversationId=None, name=None, deploymentId=None, ownerUserId=None, ownerOrgId=None, createdAt=None, lastEventCreatedAt=None, hasHistory=None, externalSessionId=None, regenerateAttempt=None, externalApplicationId=None, unusedDocumentUploadIds=None, humanizeInstructions=None, conversationWarning=None, conversationType=None, metadata=None, llmDisplayName=None, llmBotIcon=None, searchSuggestions=None, chatllmTaskId=None, conversationStatus=None, computerStatus=None, filesystemStatus=None, totalEvents=None, contestNames=None, daemonTaskId=None, parentDeploymentConversationId=None, introMessage=None, previewInfo=None, latestContext=None, shareType=None, pushNotificationsEnabled=None, history={}, hostedArtifacts={}, mobileBuildInfo={}):
52+
def __init__(self, client, deploymentConversationId=None, name=None, deploymentId=None, ownerUserId=None, ownerOrgId=None, createdAt=None, lastEventCreatedAt=None, hasHistory=None, externalSessionId=None, regenerateAttempt=None, externalApplicationId=None, unusedDocumentUploadIds=None, humanizeInstructions=None, conversationWarning=None, conversationType=None, metadata=None, llmDisplayName=None, llmBotIcon=None, searchSuggestions=None, chatllmTaskId=None, conversationStatus=None, computerStatus=None, filesystemStatus=None, totalEvents=None, contestNames=None, daemonTaskId=None, parentDeploymentConversationId=None, introMessage=None, previewInfo=None, latestContext=None, shareType=None, pushNotificationsEnabled=None, platform=None, agentType=None, history={}, hostedArtifacts={}, mobileBuildInfo={}):
5153
super().__init__(client, deploymentConversationId)
5254
self.deployment_conversation_id = deploymentConversationId
5355
self.name = name
@@ -81,6 +83,8 @@ def __init__(self, client, deploymentConversationId=None, name=None, deploymentI
8183
self.latest_context = latestContext
8284
self.share_type = shareType
8385
self.push_notifications_enabled = pushNotificationsEnabled
86+
self.platform = platform
87+
self.agent_type = agentType
8488
self.history = client._build_class(
8589
DeploymentConversationEvent, history)
8690
self.hosted_artifacts = client._build_class(
@@ -91,7 +95,7 @@ def __init__(self, client, deploymentConversationId=None, name=None, deploymentI
9195

9296
def __repr__(self):
9397
repr_dict = {f'deployment_conversation_id': repr(self.deployment_conversation_id), f'name': repr(self.name), f'deployment_id': repr(self.deployment_id), f'owner_user_id': repr(self.owner_user_id), f'owner_org_id': repr(self.owner_org_id), f'created_at': repr(self.created_at), f'last_event_created_at': repr(self.last_event_created_at), f'has_history': repr(self.has_history), f'external_session_id': repr(self.external_session_id), f'regenerate_attempt': repr(self.regenerate_attempt), f'external_application_id': repr(self.external_application_id), f'unused_document_upload_ids': repr(self.unused_document_upload_ids), f'humanize_instructions': repr(self.humanize_instructions), f'conversation_warning': repr(self.conversation_warning), f'conversation_type': repr(self.conversation_type), f'metadata': repr(self.metadata), f'llm_display_name': repr(self.llm_display_name), f'llm_bot_icon': repr(
94-
self.llm_bot_icon), f'search_suggestions': repr(self.search_suggestions), f'chatllm_task_id': repr(self.chatllm_task_id), f'conversation_status': repr(self.conversation_status), f'computer_status': repr(self.computer_status), f'filesystem_status': repr(self.filesystem_status), f'total_events': repr(self.total_events), f'contest_names': repr(self.contest_names), f'daemon_task_id': repr(self.daemon_task_id), f'parent_deployment_conversation_id': repr(self.parent_deployment_conversation_id), f'intro_message': repr(self.intro_message), f'preview_info': repr(self.preview_info), f'latest_context': repr(self.latest_context), f'share_type': repr(self.share_type), f'push_notifications_enabled': repr(self.push_notifications_enabled), f'history': repr(self.history), f'hosted_artifacts': repr(self.hosted_artifacts), f'mobile_build_info': repr(self.mobile_build_info)}
98+
self.llm_bot_icon), f'search_suggestions': repr(self.search_suggestions), f'chatllm_task_id': repr(self.chatllm_task_id), f'conversation_status': repr(self.conversation_status), f'computer_status': repr(self.computer_status), f'filesystem_status': repr(self.filesystem_status), f'total_events': repr(self.total_events), f'contest_names': repr(self.contest_names), f'daemon_task_id': repr(self.daemon_task_id), f'parent_deployment_conversation_id': repr(self.parent_deployment_conversation_id), f'intro_message': repr(self.intro_message), f'preview_info': repr(self.preview_info), f'latest_context': repr(self.latest_context), f'share_type': repr(self.share_type), f'push_notifications_enabled': repr(self.push_notifications_enabled), f'platform': repr(self.platform), f'agent_type': repr(self.agent_type), f'history': repr(self.history), f'hosted_artifacts': repr(self.hosted_artifacts), f'mobile_build_info': repr(self.mobile_build_info)}
9599
class_name = "DeploymentConversation"
96100
repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
97101
) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -104,8 +108,8 @@ def to_dict(self):
104108
Returns:
105109
dict: The dict value representation of the class parameters
106110
"""
107-
resp = {'deployment_conversation_id': self.deployment_conversation_id, 'name': self.name, 'deployment_id': self.deployment_id, 'owner_user_id': self.owner_user_id, 'owner_org_id': self.owner_org_id, 'created_at': self.created_at, 'last_event_created_at': self.last_event_created_at, 'has_history': self.has_history, 'external_session_id': self.external_session_id, 'regenerate_attempt': self.regenerate_attempt, 'external_application_id': self.external_application_id, 'unused_document_upload_ids': self.unused_document_upload_ids, 'humanize_instructions': self.humanize_instructions, 'conversation_warning': self.conversation_warning, 'conversation_type': self.conversation_type, 'metadata': self.metadata, 'llm_display_name': self.llm_display_name, 'llm_bot_icon': self.llm_bot_icon,
108-
'search_suggestions': self.search_suggestions, 'chatllm_task_id': self.chatllm_task_id, 'conversation_status': self.conversation_status, 'computer_status': self.computer_status, 'filesystem_status': self.filesystem_status, 'total_events': self.total_events, 'contest_names': self.contest_names, 'daemon_task_id': self.daemon_task_id, 'parent_deployment_conversation_id': self.parent_deployment_conversation_id, 'intro_message': self.intro_message, 'preview_info': self.preview_info, 'latest_context': self.latest_context, 'share_type': self.share_type, 'push_notifications_enabled': self.push_notifications_enabled, 'history': self._get_attribute_as_dict(self.history), 'hosted_artifacts': self._get_attribute_as_dict(self.hosted_artifacts), 'mobile_build_info': self._get_attribute_as_dict(self.mobile_build_info)}
111+
resp = {'deployment_conversation_id': self.deployment_conversation_id, 'name': self.name, 'deployment_id': self.deployment_id, 'owner_user_id': self.owner_user_id, 'owner_org_id': self.owner_org_id, 'created_at': self.created_at, 'last_event_created_at': self.last_event_created_at, 'has_history': self.has_history, 'external_session_id': self.external_session_id, 'regenerate_attempt': self.regenerate_attempt, 'external_application_id': self.external_application_id, 'unused_document_upload_ids': self.unused_document_upload_ids, 'humanize_instructions': self.humanize_instructions, 'conversation_warning': self.conversation_warning, 'conversation_type': self.conversation_type, 'metadata': self.metadata, 'llm_display_name': self.llm_display_name, 'llm_bot_icon': self.llm_bot_icon, 'search_suggestions': self.search_suggestions,
112+
'chatllm_task_id': self.chatllm_task_id, 'conversation_status': self.conversation_status, 'computer_status': self.computer_status, 'filesystem_status': self.filesystem_status, 'total_events': self.total_events, 'contest_names': self.contest_names, 'daemon_task_id': self.daemon_task_id, 'parent_deployment_conversation_id': self.parent_deployment_conversation_id, 'intro_message': self.intro_message, 'preview_info': self.preview_info, 'latest_context': self.latest_context, 'share_type': self.share_type, 'push_notifications_enabled': self.push_notifications_enabled, 'platform': self.platform, 'agent_type': self.agent_type, 'history': self._get_attribute_as_dict(self.history), 'hosted_artifacts': self._get_attribute_as_dict(self.hosted_artifacts), 'mobile_build_info': self._get_attribute_as_dict(self.mobile_build_info)}
109113
return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
110114

111115
def get(self, external_session_id: str = None, deployment_id: str = None, filter_intermediate_conversation_events: bool = True, get_unused_document_uploads: bool = False, start: int = None, limit: int = None, include_all_versions: bool = False):

0 commit comments

Comments
 (0)