abacusai 1.4.65__tar.gz → 1.4.67__tar.gz

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 abacusai might be problematic. Click here for more details.

Files changed (321) hide show
  1. {abacusai-1.4.65 → abacusai-1.4.67}/PKG-INFO +1 -1
  2. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/__init__.py +4 -1
  3. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/ai_agents.py +6 -2
  4. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/enums.py +2 -0
  5. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/model.py +3 -1
  6. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_endpoint.py +6 -4
  7. abacusai-1.4.67/abacusai/audit_log.py +47 -0
  8. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/client.py +100 -9
  9. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment_conversation.py +16 -5
  10. abacusai-1.4.67/abacusai/document_retriever_version_logs.py +33 -0
  11. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_app_container.py +6 -4
  12. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hostname_info.py +6 -4
  13. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/image_gen_settings.py +6 -4
  14. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_client.py +8 -0
  15. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project.py +10 -0
  16. abacusai-1.4.67/abacusai/user_group_object_permission.py +41 -0
  17. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/video_gen_costs.py +5 -7
  18. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/video_gen_settings.py +6 -4
  19. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/PKG-INFO +1 -1
  20. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/SOURCES.txt +3 -0
  21. {abacusai-1.4.65 → abacusai-1.4.67}/setup.py +1 -1
  22. {abacusai-1.4.65 → abacusai-1.4.67}/LICENSE +0 -0
  23. {abacusai-1.4.65 → abacusai-1.4.67}/README.md +0 -0
  24. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/abacus_api.py +0 -0
  25. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/address.py +0 -0
  26. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent.py +0 -0
  27. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent_chat_message.py +0 -0
  28. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent_conversation.py +0 -0
  29. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent_data_document_info.py +0 -0
  30. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent_data_execution_result.py +0 -0
  31. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/agent_version.py +0 -0
  32. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/ai_building_task.py +0 -0
  33. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/algorithm.py +0 -0
  34. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/annotation.py +0 -0
  35. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/annotation_config.py +0 -0
  36. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/annotation_document.py +0 -0
  37. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/annotation_entry.py +0 -0
  38. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/annotations_status.py +0 -0
  39. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/__init__.py +0 -0
  40. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/abstract.py +0 -0
  41. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/ai_chat.py +0 -0
  42. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/batch_prediction.py +0 -0
  43. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/blob_input.py +0 -0
  44. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/connectors.py +0 -0
  45. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/dataset.py +0 -0
  46. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/dataset_application_connector.py +0 -0
  47. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/deployment.py +0 -0
  48. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/document_retriever.py +0 -0
  49. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/feature_group.py +0 -0
  50. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/monitor.py +0 -0
  51. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/monitor_alert.py +0 -0
  52. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/project.py +0 -0
  53. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/python_functions.py +0 -0
  54. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/refresh.py +0 -0
  55. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_class/segments.py +0 -0
  56. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_client_utils.py +0 -0
  57. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/api_key.py +0 -0
  58. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/app_user_group.py +0 -0
  59. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/app_user_group_sign_in_token.py +0 -0
  60. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/application_connector.py +0 -0
  61. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/audio_gen_settings.py +0 -0
  62. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/audio_url_result.py +0 -0
  63. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/batch_prediction.py +0 -0
  64. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/batch_prediction_version.py +0 -0
  65. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/batch_prediction_version_logs.py +0 -0
  66. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/bot_info.py +0 -0
  67. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/categorical_range_violation.py +0 -0
  68. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chat_message.py +0 -0
  69. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chat_session.py +0 -0
  70. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_computer.py +0 -0
  71. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_computer_status.py +0 -0
  72. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_memory.py +0 -0
  73. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_project.py +0 -0
  74. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_project_permissions.py +0 -0
  75. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_referral_invite.py +0 -0
  76. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/chatllm_task.py +0 -0
  77. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_agent_response.py +0 -0
  78. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_autocomplete_edit_prediction_response.py +0 -0
  79. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_autocomplete_response.py +0 -0
  80. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_bot.py +0 -0
  81. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_edit.py +0 -0
  82. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_edit_response.py +0 -0
  83. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_edits.py +0 -0
  84. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_embeddings.py +0 -0
  85. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_llm_changed_files.py +0 -0
  86. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_source.py +0 -0
  87. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_suggestion_validation_response.py +0 -0
  88. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/code_summary_response.py +0 -0
  89. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/codellm_embedding_constants.py +0 -0
  90. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/compute_point_info.py +0 -0
  91. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/concatenation_config.py +0 -0
  92. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/constants_autocomplete_response.py +0 -0
  93. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/cpu_gpu_memory_specs.py +0 -0
  94. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/cryptography.py +0 -0
  95. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_chat_instructions.py +0 -0
  96. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_domain.py +0 -0
  97. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_loss_function.py +0 -0
  98. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_metric.py +0 -0
  99. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_metric_version.py +0 -0
  100. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/custom_train_function_info.py +0 -0
  101. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/data_consistency_duplication.py +0 -0
  102. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/data_metrics.py +0 -0
  103. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/data_prep_logs.py +0 -0
  104. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/data_quality_results.py +0 -0
  105. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/data_upload_result.py +0 -0
  106. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/database_column_feature_mapping.py +0 -0
  107. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/database_connector.py +0 -0
  108. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/database_connector_column.py +0 -0
  109. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/database_connector_schema.py +0 -0
  110. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/dataset.py +0 -0
  111. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/dataset_column.py +0 -0
  112. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/dataset_version.py +0 -0
  113. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/dataset_version_logs.py +0 -0
  114. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/default_llm.py +0 -0
  115. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment.py +0 -0
  116. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment_auth_token.py +0 -0
  117. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment_conversation_event.py +0 -0
  118. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment_conversation_export.py +0 -0
  119. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/deployment_statistics.py +0 -0
  120. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/document_data.py +0 -0
  121. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/document_retriever.py +0 -0
  122. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/document_retriever_lookup_result.py +0 -0
  123. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/document_retriever_version.py +0 -0
  124. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/drift_distribution.py +0 -0
  125. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/drift_distributions.py +0 -0
  126. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda.py +0 -0
  127. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_chart_description.py +0 -0
  128. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_collinearity.py +0 -0
  129. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_data_consistency.py +0 -0
  130. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_feature_association.py +0 -0
  131. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_feature_collinearity.py +0 -0
  132. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_forecasting_analysis.py +0 -0
  133. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/eda_version.py +0 -0
  134. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/edit_image_models.py +0 -0
  135. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/embedding_feature_drift_distribution.py +0 -0
  136. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/entri_auth_token.py +0 -0
  137. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/execute_feature_group_operation.py +0 -0
  138. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/external_application.py +0 -0
  139. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/external_invite.py +0 -0
  140. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/extracted_fields.py +0 -0
  141. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature.py +0 -0
  142. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_distribution.py +0 -0
  143. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_drift_record.py +0 -0
  144. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_drift_summary.py +0 -0
  145. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group.py +0 -0
  146. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_document.py +0 -0
  147. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_export.py +0 -0
  148. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_export_config.py +0 -0
  149. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_export_download_url.py +0 -0
  150. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_lineage.py +0 -0
  151. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_refresh_export_config.py +0 -0
  152. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_row.py +0 -0
  153. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_row_process.py +0 -0
  154. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_row_process_logs.py +0 -0
  155. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_row_process_summary.py +0 -0
  156. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_template.py +0 -0
  157. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_template_variable_options.py +0 -0
  158. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_version.py +0 -0
  159. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_group_version_logs.py +0 -0
  160. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_importance.py +0 -0
  161. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_mapping.py +0 -0
  162. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/feature_performance_analysis.py +0 -0
  163. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/file_connector.py +0 -0
  164. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/file_connector_instructions.py +0 -0
  165. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/file_connector_verification.py +0 -0
  166. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/finetuned_pretrained_model.py +0 -0
  167. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/forecasting_analysis_graph_data.py +0 -0
  168. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/forecasting_monitor_item_analysis.py +0 -0
  169. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/forecasting_monitor_summary.py +0 -0
  170. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/fs_entry.py +0 -0
  171. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/function_logs.py +0 -0
  172. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/generated_pit_feature_config_option.py +0 -0
  173. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/global_context.py +0 -0
  174. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/graph_dashboard.py +0 -0
  175. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/holdout_analysis.py +0 -0
  176. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/holdout_analysis_version.py +0 -0
  177. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_app.py +0 -0
  178. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_app_file_read.py +0 -0
  179. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_artifact.py +0 -0
  180. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_database.py +0 -0
  181. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_database_snapshot.py +0 -0
  182. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hosted_model_token.py +0 -0
  183. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/hume_voice.py +0 -0
  184. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/image_gen_model.py +0 -0
  185. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/image_gen_model_options.py +0 -0
  186. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/indexing_config.py +0 -0
  187. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/inferred_database_column_to_feature_mappings.py +0 -0
  188. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/inferred_feature_mappings.py +0 -0
  189. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/item_statistics.py +0 -0
  190. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/lip_sync_gen_settings.py +0 -0
  191. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_app.py +0 -0
  192. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_artifact.py +0 -0
  193. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_code_block.py +0 -0
  194. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_execution_preview.py +0 -0
  195. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_execution_result.py +0 -0
  196. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_generated_code.py +0 -0
  197. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_input.py +0 -0
  198. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_parameters.py +0 -0
  199. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/llm_response.py +0 -0
  200. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/mcp_config.py +0 -0
  201. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/mcp_server.py +0 -0
  202. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/mcp_server_connection.py +0 -0
  203. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/mcp_server_query_result.py +0 -0
  204. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/memory_options.py +0 -0
  205. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/messaging_connector_response.py +0 -0
  206. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model.py +0 -0
  207. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_artifacts_export.py +0 -0
  208. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_blueprint_export.py +0 -0
  209. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_blueprint_stage.py +0 -0
  210. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_location.py +0 -0
  211. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_metrics.py +0 -0
  212. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor.py +0 -0
  213. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor_org_summary.py +0 -0
  214. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor_summary.py +0 -0
  215. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor_summary_from_org.py +0 -0
  216. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor_version.py +0 -0
  217. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_monitor_version_metric_data.py +0 -0
  218. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_training_type_for_deployment.py +0 -0
  219. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_upload.py +0 -0
  220. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_version.py +0 -0
  221. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/model_version_feature_group_schema.py +0 -0
  222. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/modification_lock_info.py +0 -0
  223. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/module.py +0 -0
  224. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/monitor_alert.py +0 -0
  225. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/monitor_alert_version.py +0 -0
  226. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/monitor_drift_and_distributions.py +0 -0
  227. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/natural_language_explanation.py +0 -0
  228. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/nested_feature.py +0 -0
  229. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/nested_feature_schema.py +0 -0
  230. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/news_search_result.py +0 -0
  231. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/nlp_chat_response.py +0 -0
  232. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/notebook_completion.py +0 -0
  233. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/notebook_template.py +0 -0
  234. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/null_violation.py +0 -0
  235. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/organization_external_application_settings.py +0 -0
  236. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/organization_group.py +0 -0
  237. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/organization_search_result.py +0 -0
  238. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/organization_secret.py +0 -0
  239. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/page_data.py +0 -0
  240. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline.py +0 -0
  241. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_reference.py +0 -0
  242. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_step.py +0 -0
  243. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_step_version.py +0 -0
  244. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_step_version_logs.py +0 -0
  245. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_step_version_reference.py +0 -0
  246. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_version.py +0 -0
  247. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/pipeline_version_logs.py +0 -0
  248. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/playground_text.py +0 -0
  249. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/point_in_time_feature.py +0 -0
  250. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/point_in_time_feature_info.py +0 -0
  251. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/point_in_time_group.py +0 -0
  252. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/point_in_time_group_feature.py +0 -0
  253. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_dataset.py +0 -0
  254. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_feature_group.py +0 -0
  255. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_input.py +0 -0
  256. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_log_record.py +0 -0
  257. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_operator.py +0 -0
  258. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/prediction_operator_version.py +0 -0
  259. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/presentation_export_result.py +0 -0
  260. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/problem_type.py +0 -0
  261. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project_config.py +0 -0
  262. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project_feature_group.py +0 -0
  263. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project_feature_group_schema.py +0 -0
  264. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project_feature_group_schema_version.py +0 -0
  265. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/project_validation.py +0 -0
  266. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/python_function.py +0 -0
  267. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/python_function_validator.py +0 -0
  268. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/python_plot_function.py +0 -0
  269. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/range_violation.py +0 -0
  270. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/realtime_monitor.py +0 -0
  271. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/refresh_pipeline_run.py +0 -0
  272. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/refresh_policy.py +0 -0
  273. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/refresh_schedule.py +0 -0
  274. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/regenerate_llm_external_application.py +0 -0
  275. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/resolved_feature_group_template.py +0 -0
  276. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/return_class.py +0 -0
  277. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/routing_action.py +0 -0
  278. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/schema.py +0 -0
  279. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/session_summary.py +0 -0
  280. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/session_transcript.py +0 -0
  281. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/session_transcripts.py +0 -0
  282. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/sftp_key.py +0 -0
  283. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/streaming_auth_token.py +0 -0
  284. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/streaming_client.py +0 -0
  285. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/streaming_connector.py +0 -0
  286. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/streaming_row_count.py +0 -0
  287. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/streaming_sample_code.py +0 -0
  288. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/sts_gen_settings.py +0 -0
  289. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/stt_gen_model.py +0 -0
  290. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/stt_gen_model_options.py +0 -0
  291. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/stt_gen_settings.py +0 -0
  292. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/template_node_details.py +0 -0
  293. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/test_point_predictions.py +0 -0
  294. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/tone_details.py +0 -0
  295. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/training_config_options.py +0 -0
  296. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/tts_gen_settings.py +0 -0
  297. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/twitter_search_result.py +0 -0
  298. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/unified_connector.py +0 -0
  299. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/upload.py +0 -0
  300. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/upload_part.py +0 -0
  301. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/use_case.py +0 -0
  302. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/use_case_requirements.py +0 -0
  303. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/user.py +0 -0
  304. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/user_exception.py +0 -0
  305. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/video_gen_model.py +0 -0
  306. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/video_gen_model_options.py +0 -0
  307. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/video_search_result.py +0 -0
  308. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/voice_gen_details.py +0 -0
  309. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/web_app_conversation.py +0 -0
  310. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/web_app_domain.py +0 -0
  311. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/web_page_response.py +0 -0
  312. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/web_search_response.py +0 -0
  313. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/web_search_result.py +0 -0
  314. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/webhook.py +0 -0
  315. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/workflow_graph_node_details.py +0 -0
  316. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai/workflow_node_template.py +0 -0
  317. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/dependency_links.txt +0 -0
  318. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/requires.txt +0 -0
  319. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/top_level.txt +0 -0
  320. {abacusai-1.4.65 → abacusai-1.4.67}/abacusai.egg-info/zip-safe +0 -0
  321. {abacusai-1.4.65 → abacusai-1.4.67}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: abacusai
3
- Version: 1.4.65
3
+ Version: 1.4.67
4
4
  Summary: Abacus.AI Python Client Library
5
5
  Home-page: https://github.com/abacusai/api-python
6
6
  Author: Abacus.AI
@@ -21,6 +21,7 @@ from .app_user_group_sign_in_token import AppUserGroupSignInToken
21
21
  from .application_connector import ApplicationConnector
22
22
  from .audio_gen_settings import AudioGenSettings
23
23
  from .audio_url_result import AudioUrlResult
24
+ from .audit_log import AuditLog
24
25
  from .batch_prediction import BatchPrediction
25
26
  from .batch_prediction_version import BatchPredictionVersion
26
27
  from .batch_prediction_version_logs import BatchPredictionVersionLogs
@@ -83,6 +84,7 @@ from .document_data import DocumentData
83
84
  from .document_retriever import DocumentRetriever
84
85
  from .document_retriever_lookup_result import DocumentRetrieverLookupResult
85
86
  from .document_retriever_version import DocumentRetrieverVersion
87
+ from .document_retriever_version_logs import DocumentRetrieverVersionLogs
86
88
  from .drift_distribution import DriftDistribution
87
89
  from .drift_distributions import DriftDistributions
88
90
  from .eda import Eda
@@ -266,6 +268,7 @@ from .use_case import UseCase
266
268
  from .use_case_requirements import UseCaseRequirements
267
269
  from .user import User
268
270
  from .user_exception import UserException
271
+ from .user_group_object_permission import UserGroupObjectPermission
269
272
  from .video_gen_costs import VideoGenCosts
270
273
  from .video_gen_model import VideoGenModel
271
274
  from .video_gen_model_options import VideoGenModelOptions
@@ -282,4 +285,4 @@ from .workflow_graph_node_details import WorkflowGraphNodeDetails
282
285
  from .workflow_node_template import WorkflowNodeTemplate
283
286
 
284
287
 
285
- __version__ = "1.4.65"
288
+ __version__ = "1.4.67"
@@ -9,11 +9,15 @@ from .abstract import ApiClass, get_clean_function_source_code_for_agent, valida
9
9
  MIN_AGENT_SLEEP_TIME = 300
10
10
 
11
11
 
12
- def validate_input_dict_param(dict_object, friendly_class_name, must_contain=[]):
12
+ def validate_input_dict_param(dict_object, friendly_class_name, must_contain=[], schema={}):
13
13
  if not isinstance(dict_object, dict):
14
14
  raise ValueError(friendly_class_name, 'Invalid argument. Provided argument should be a dictionary.')
15
15
  if any(field not in dict_object for field in must_contain):
16
16
  raise ValueError(friendly_class_name, f'One or more keys are missing in the argument provided. Must contain keys - {must_contain}.')
17
+ for key, value_type in schema.items():
18
+ value = dict_object.get(key)
19
+ if value and not isinstance(value, value_type):
20
+ raise ValueError(friendly_class_name, f'Invalid parameter "{key}". It should be of type {value_type.__name__}.')
17
21
 
18
22
 
19
23
  @dataclasses.dataclass
@@ -766,7 +770,7 @@ class WorkflowGraph(ApiClass):
766
770
 
767
771
  @classmethod
768
772
  def from_dict(cls, graph: dict):
769
- validate_input_dict_param(graph, friendly_class_name='workflow_graph')
773
+ validate_input_dict_param(graph, friendly_class_name='workflow_graph', schema={'nodes': list, 'edges': list, 'primary_start_node': str, 'common_source_code': str, 'specification_type': str})
770
774
  if graph.get('__return_filter'):
771
775
  for node in graph.get('nodes', []):
772
776
  node['__return_filter'] = True
@@ -224,6 +224,8 @@ class FileFormat(ApiEnum):
224
224
  WEBM = 'webm'
225
225
  WMV = 'wmv'
226
226
  MSG = 'msg'
227
+ TS = 'TS'
228
+ TSX = 'TSX'
227
229
 
228
230
 
229
231
  class ExperimentationMode(ApiEnum):
@@ -486,6 +486,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
486
486
  data_prompt_column_context (Dict[str, str]): Dict of 'table_name.column_name' and 'column_context' pairs to provide column context for some selected columns in the selected structured data table. This replaces the default auto-generated information about the column data.
487
487
  hide_sql_and_code (bool): When running data queries, this will hide the generated SQL and Code in the response.
488
488
  disable_data_summarization (bool): After executing a query summarize the reponse and reply back with only the table and query run.
489
+ disable_data_fetch_for_training (bool): Train using only table and column schema metadata without fetching sample data. This speeds up training but may result in less context for the model.
489
490
  data_columns_to_ignore (List[str]): Columns to ignore while encoding information about structured data tables in context for the LLM. A list of strings of format "<table_name>.<column_name>"
490
491
  search_score_cutoff (float): Minimum search score to consider a document as a valid search result.
491
492
  include_bm25_retrieval (bool): Combine BM25 search score with vector search using reciprocal rank fusion.
@@ -503,7 +504,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
503
504
  mask_pii (bool): Mask PII in the prompts and uploaded documents before sending it to the LLM. Only available for Enterprise users and will cause validation errors if set to True for ChatLLM Teams users.
504
505
  builtin_tools (List[SystemConnectorTool]): List of builtin system connector tools to use in the ChatLLM. Using builtin tools does not require enabling tool bar (enable_tool_bar flag).
505
506
  mcp_servers (List[str]): List of names of MCP servers to use in the ChatLLM. This should not be used with document_retrievers.
506
- agentic_loop_mode (bool): Force use of agentic loop that uses a series of tool calls when needed to respond.
507
+ agentic_loop_mode (bool): Enables use of agentic loop that uses a series of tool calls when needed to respond. If set to False, the agentic loop will not be used. If not set or set to Auto, the agentic loop will be automatically used based on certain conditions like presence of tools in the model.
507
508
  """
508
509
  document_retrievers: List[str] = dataclasses.field(default=None)
509
510
  num_completion_tokens: int = dataclasses.field(default=None)
@@ -525,6 +526,7 @@ class ChatLLMTrainingConfig(TrainingConfig):
525
526
  data_prompt_column_context: Dict[str, str] = dataclasses.field(default=None)
526
527
  hide_sql_and_code: bool = dataclasses.field(default=None)
527
528
  disable_data_summarization: bool = dataclasses.field(default=None)
529
+ disable_data_fetch_for_training: bool = dataclasses.field(default=None)
528
530
  data_columns_to_ignore: List[str] = dataclasses.field(default=None)
529
531
  search_score_cutoff: float = dataclasses.field(default=None)
530
532
  include_bm25_retrieval: bool = dataclasses.field(default=None)
@@ -14,9 +14,10 @@ class ApiEndpoint(AbstractApiClass):
14
14
  externalChatEndpoint (str): The URI that can be used to access the external chat
15
15
  dashboardEndpoint (str): The URI that the external chat will use to go back to the dashboard
16
16
  hostingDomain (str): The domain for hosted app deployments
17
+ publicHostingDomain (str): The domain for publicly hosted app deployments
17
18
  """
18
19
 
19
- def __init__(self, client, apiEndpoint=None, predictEndpoint=None, proxyEndpoint=None, llmEndpoint=None, externalChatEndpoint=None, dashboardEndpoint=None, hostingDomain=None):
20
+ def __init__(self, client, apiEndpoint=None, predictEndpoint=None, proxyEndpoint=None, llmEndpoint=None, externalChatEndpoint=None, dashboardEndpoint=None, hostingDomain=None, publicHostingDomain=None):
20
21
  super().__init__(client, None)
21
22
  self.api_endpoint = apiEndpoint
22
23
  self.predict_endpoint = predictEndpoint
@@ -25,11 +26,12 @@ class ApiEndpoint(AbstractApiClass):
25
26
  self.external_chat_endpoint = externalChatEndpoint
26
27
  self.dashboard_endpoint = dashboardEndpoint
27
28
  self.hosting_domain = hostingDomain
29
+ self.public_hosting_domain = publicHostingDomain
28
30
  self.deprecated_keys = {}
29
31
 
30
32
  def __repr__(self):
31
- repr_dict = {f'api_endpoint': repr(self.api_endpoint), f'predict_endpoint': repr(self.predict_endpoint), f'proxy_endpoint': repr(self.proxy_endpoint), f'llm_endpoint': repr(
32
- self.llm_endpoint), f'external_chat_endpoint': repr(self.external_chat_endpoint), f'dashboard_endpoint': repr(self.dashboard_endpoint), f'hosting_domain': repr(self.hosting_domain)}
33
+ repr_dict = {f'api_endpoint': repr(self.api_endpoint), f'predict_endpoint': repr(self.predict_endpoint), f'proxy_endpoint': repr(self.proxy_endpoint), f'llm_endpoint': repr(self.llm_endpoint), f'external_chat_endpoint': repr(
34
+ self.external_chat_endpoint), f'dashboard_endpoint': repr(self.dashboard_endpoint), f'hosting_domain': repr(self.hosting_domain), f'public_hosting_domain': repr(self.public_hosting_domain)}
33
35
  class_name = "ApiEndpoint"
34
36
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
35
37
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -43,5 +45,5 @@ class ApiEndpoint(AbstractApiClass):
43
45
  dict: The dict value representation of the class parameters
44
46
  """
45
47
  resp = {'api_endpoint': self.api_endpoint, 'predict_endpoint': self.predict_endpoint, 'proxy_endpoint': self.proxy_endpoint, 'llm_endpoint': self.llm_endpoint,
46
- 'external_chat_endpoint': self.external_chat_endpoint, 'dashboard_endpoint': self.dashboard_endpoint, 'hosting_domain': self.hosting_domain}
48
+ 'external_chat_endpoint': self.external_chat_endpoint, 'dashboard_endpoint': self.dashboard_endpoint, 'hosting_domain': self.hosting_domain, 'public_hosting_domain': self.public_hosting_domain}
47
49
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -0,0 +1,47 @@
1
+ from .return_class import AbstractApiClass
2
+
3
+
4
+ class AuditLog(AbstractApiClass):
5
+ """
6
+ An audit log entry
7
+
8
+ Args:
9
+ client (ApiClient): An authenticated API Client instance
10
+ createdAt (str): The timestamp when the audit log entry was created
11
+ userId (str): The hashed ID of the user who performed the action
12
+ objectId (str): The hashed ID of the object that was affected by the action
13
+ action (str): The action performed (create, modify, start, stop, delete, share, hide, credential_change, login)
14
+ source (str): The source of the action (api, ui, pipeline, cli, system)
15
+ refreshPolicyId (str): The hashed ID of the refresh policy if applicable
16
+ pipelineId (str): The hashed ID of the pipeline if applicable
17
+ """
18
+
19
+ def __init__(self, client, createdAt=None, userId=None, objectId=None, action=None, source=None, refreshPolicyId=None, pipelineId=None):
20
+ super().__init__(client, None)
21
+ self.created_at = createdAt
22
+ self.user_id = userId
23
+ self.object_id = objectId
24
+ self.action = action
25
+ self.source = source
26
+ self.refresh_policy_id = refreshPolicyId
27
+ self.pipeline_id = pipelineId
28
+ self.deprecated_keys = {}
29
+
30
+ def __repr__(self):
31
+ repr_dict = {f'created_at': repr(self.created_at), f'user_id': repr(self.user_id), f'object_id': repr(self.object_id), f'action': repr(
32
+ self.action), f'source': repr(self.source), f'refresh_policy_id': repr(self.refresh_policy_id), f'pipeline_id': repr(self.pipeline_id)}
33
+ class_name = "AuditLog"
34
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
35
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
36
+ return f"{class_name}({repr_str})"
37
+
38
+ def to_dict(self):
39
+ """
40
+ Get a dict representation of the parameters in this class
41
+
42
+ Returns:
43
+ dict: The dict value representation of the class parameters
44
+ """
45
+ resp = {'created_at': self.created_at, 'user_id': self.user_id, 'object_id': self.object_id, 'action': self.action,
46
+ 'source': self.source, 'refresh_policy_id': self.refresh_policy_id, 'pipeline_id': self.pipeline_id}
47
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -180,6 +180,7 @@ from .upload_part import UploadPart
180
180
  from .use_case import UseCase
181
181
  from .use_case_requirements import UseCaseRequirements
182
182
  from .user import User
183
+ from .user_group_object_permission import UserGroupObjectPermission
183
184
  from .web_page_response import WebPageResponse
184
185
  from .web_search_response import WebSearchResponse
185
186
  from .webhook import Webhook
@@ -218,17 +219,20 @@ async def sse_asynchronous_generator(endpoint: str, headers: dict, body: dict):
218
219
  async with aiohttp.request('POST', endpoint, json=body, headers=headers, timeout=aiohttp.ClientTimeout(total=0)) as response:
219
220
  async for line in response.content:
220
221
  if line:
221
- streamed_responses = line.decode('utf-8').split('\n\n')
222
+ streamed_responses = line.decode('utf-8').split('\n')
222
223
  for resp in streamed_responses:
223
224
  if resp:
224
225
  resp = resp.strip()
225
226
  if resp:
226
- resp = json.loads(resp)
227
- resp = {snake_case(
228
- key): value for key, value in resp.items()}
229
- if 'ping' in resp:
230
- continue
231
- yield resp
227
+ try:
228
+ resp = json.loads(resp)
229
+ resp = {snake_case(
230
+ key): value for key, value in resp.items()}
231
+ if 'ping' in resp:
232
+ continue
233
+ yield resp
234
+ except Exception:
235
+ pass
232
236
 
233
237
 
234
238
  def _requests_retry_session(retries=5, backoff_factor=0.1, status_forcelist=(502, 503, 504), session=None, retry_500: bool = False):
@@ -663,7 +667,7 @@ class BaseApiClient:
663
667
  client_options (ClientOptions): Optional API client configurations
664
668
  skip_version_check (bool): If true, will skip checking the server's current API version on initializing the client
665
669
  """
666
- client_version = '1.4.65'
670
+ client_version = '1.4.67'
667
671
 
668
672
  def __init__(self, api_key: str = None, server: str = None, client_options: ClientOptions = None, skip_version_check: bool = False, include_tb: bool = False):
669
673
  self.api_key = api_key
@@ -2777,6 +2781,14 @@ class ReadOnlyClient(BaseApiClient):
2777
2781
  DeploymentConversation: The deployment conversation."""
2778
2782
  return self._proxy_request('getDeploymentConversation', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'externalSessionId': external_session_id, 'deploymentId': deployment_id, 'filterIntermediateConversationEvents': filter_intermediate_conversation_events, 'getUnusedDocumentUploads': get_unused_document_uploads, 'start': start, 'limit': limit, 'includeAllVersions': include_all_versions}, parse_type=DeploymentConversation, is_sync=True)
2779
2783
 
2784
+ def get_deployment_conversation_file(self, deployment_conversation_id: str, file_path: str) -> io.BytesIO:
2785
+ """Gets a deployment conversation file.
2786
+
2787
+ Args:
2788
+ deployment_conversation_id (str): Unique ID of the conversation.
2789
+ file_path (str): The path of the file to get."""
2790
+ return self._proxy_request('getDeploymentConversationFile', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'filePath': file_path}, is_sync=True, streamable_response=True)
2791
+
2780
2792
  def list_deployment_conversations(self, deployment_id: str = None, external_application_id: str = None, conversation_type: Union[DeploymentConversationType, str] = None, fetch_last_llm_info: bool = False, limit: int = None, search: str = None) -> List[DeploymentConversation]:
2781
2793
  """Lists all conversations for the given deployment and current user.
2782
2794
 
@@ -2803,6 +2815,16 @@ class ReadOnlyClient(BaseApiClient):
2803
2815
  DeploymentConversationExport: The deployment conversation html export."""
2804
2816
  return self._proxy_request('exportDeploymentConversation', 'GET', query_params={'deploymentConversationId': deployment_conversation_id, 'externalSessionId': external_session_id}, parse_type=DeploymentConversationExport, is_sync=True)
2805
2817
 
2818
+ def list_user_group_object_permissions(self) -> List[UserGroupObjectPermission]:
2819
+ """List all user groups permissions associated with the objects in the organization.
2820
+
2821
+ If no associated user groups, the object is public among developers and admins.
2822
+
2823
+
2824
+ Returns:
2825
+ list[UserGroupObjectPermission]: List of user group object permissions in the organization."""
2826
+ return self._call_api('listUserGroupObjectPermissions', 'GET', query_params={}, parse_type=UserGroupObjectPermission)
2827
+
2806
2828
  def get_app_user_group(self, user_group_id: str) -> AppUserGroup:
2807
2829
  """Gets an App User Group.
2808
2830
 
@@ -2813,6 +2835,16 @@ class ReadOnlyClient(BaseApiClient):
2813
2835
  AppUserGroup: The App User Group."""
2814
2836
  return self._call_api('getAppUserGroup', 'GET', query_params={'userGroupId': user_group_id}, parse_type=AppUserGroup)
2815
2837
 
2838
+ def get_app_user_group_from_name(self, name: str = None) -> AppUserGroup:
2839
+ """Gets an App User Group by name.
2840
+
2841
+ Args:
2842
+ name (str): The name of the app user group to retrieve.
2843
+
2844
+ Returns:
2845
+ AppUserGroup: The app user group with the specified name."""
2846
+ return self._call_api('getAppUserGroupFromName', 'GET', query_params={'name': name}, parse_type=AppUserGroup)
2847
+
2816
2848
  def describe_external_application(self, external_application_id: str) -> ExternalApplication:
2817
2849
  """Describes an External Application.
2818
2850
 
@@ -5037,6 +5069,19 @@ class ApiClient(ReadOnlyClient):
5037
5069
  Project: This object represents the newly created project."""
5038
5070
  return self._call_api('createProject', 'POST', query_params={}, body={'name': name, 'useCase': use_case}, parse_type=Project)
5039
5071
 
5072
+ def list_projects_dashboard(self, updated_filter: int = None, limit: int = 50, since_project_id: str = None, search: str = None, starred: bool = None, tag: str = None, tags: list = None) -> dict:
5073
+ """Retrieves a list of projects for dashboard display with filtering and pagination support.
5074
+
5075
+ Args:
5076
+ updated_filter (int): Unix timestamp to filter projects updated after this time.
5077
+ limit (int): The maximum number of projects to return (default: 50).
5078
+ since_project_id (str): The ID of the project after which the list starts for pagination.
5079
+ search (str): Search term to filter projects by name, creator email, or use case.
5080
+ starred (bool): Filter by starred status (True for starred, False for non-starred).
5081
+ tag (str): Filter by a single tag (deprecated, use tags instead).
5082
+ tags (list): List of tags to filter projects by."""
5083
+ return self._call_api('listProjectsDashboard', 'POST', query_params={}, body={'updatedFilter': updated_filter, 'limit': limit, 'sinceProjectId': since_project_id, 'search': search, 'starred': starred, 'tag': tag, 'tags': tags})
5084
+
5040
5085
  def rename_project(self, project_id: str, name: str):
5041
5086
  """This method renames a project after it is created.
5042
5087
 
@@ -5136,6 +5181,15 @@ class ApiClient(ReadOnlyClient):
5136
5181
  list[Feature]: A list of objects that describes the resulting feature group's schema after the feature's featureMapping is set."""
5137
5182
  return self._call_api('setFeatureMapping', 'POST', query_params={}, body={'projectId': project_id, 'featureGroupId': feature_group_id, 'featureName': feature_name, 'featureMapping': feature_mapping, 'nestedColumnName': nested_column_name}, parse_type=Feature)
5138
5183
 
5184
+ def add_project_scope_for_user(self, project_id: str, email: str, scope: list):
5185
+ """Add a user to a project.
5186
+
5187
+ Args:
5188
+ project_id (str): The project's id.
5189
+ email (str): The user's email.
5190
+ scope (list): The list of project scopes."""
5191
+ return self._call_api('addProjectScopeForUser', 'POST', query_params={}, body={'projectId': project_id, 'email': email, 'scope': scope})
5192
+
5139
5193
  def add_annotation(self, annotation: dict, feature_group_id: str, feature_name: str, doc_id: str = None, feature_group_row_identifier: str = None, annotation_source: str = 'ui', status: str = None, comments: dict = None, project_id: str = None, save_metadata: bool = False, pages: list = None) -> AnnotationEntry:
5140
5194
  """Add an annotation entry to the database.
5141
5195
 
@@ -7659,6 +7713,14 @@ class ApiClient(ReadOnlyClient):
7659
7713
  deployment_id, deployment_token) if deployment_token else None
7660
7714
  return self._call_api('getConversationResponseWithBinaryData', 'POST', query_params={'deploymentId': deployment_id, 'deploymentToken': deployment_token}, data={'message': json.dumps(message) if (message is not None and not isinstance(message, str)) else message, 'deploymentConversationId': json.dumps(deployment_conversation_id) if (deployment_conversation_id is not None and not isinstance(deployment_conversation_id, str)) else deployment_conversation_id, 'externalSessionId': json.dumps(external_session_id) if (external_session_id is not None and not isinstance(external_session_id, str)) else external_session_id, 'llmName': json.dumps(llm_name) if (llm_name is not None and not isinstance(llm_name, str)) else llm_name, 'numCompletionTokens': json.dumps(num_completion_tokens) if (num_completion_tokens is not None and not isinstance(num_completion_tokens, str)) else num_completion_tokens, 'systemMessage': json.dumps(system_message) if (system_message is not None and not isinstance(system_message, str)) else system_message, 'temperature': json.dumps(temperature) if (temperature is not None and not isinstance(temperature, str)) else temperature, 'filterKeyValues': json.dumps(filter_key_values) if (filter_key_values is not None and not isinstance(filter_key_values, str)) else filter_key_values, 'searchScoreCutoff': json.dumps(search_score_cutoff) if (search_score_cutoff is not None and not isinstance(search_score_cutoff, str)) else search_score_cutoff, 'chatConfig': json.dumps(chat_config) if (chat_config is not None and not isinstance(chat_config, str)) else chat_config}, files=attachments, server_override=prediction_url)
7661
7715
 
7716
+ def get_deep_agent_response(self, message: str, deployment_conversation_id: str = None) -> Dict:
7717
+ """Return a DeepAgent response with generated files if any, based on the input message.
7718
+
7719
+ Args:
7720
+ message (str): The user's message/task for DeepAgent to complete
7721
+ deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
7722
+ return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
7723
+
7662
7724
  def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
7663
7725
  """Return the most relevant search results to the search query from the uploaded documents.
7664
7726
 
@@ -8894,6 +8956,35 @@ class ApiClient(ReadOnlyClient):
8894
8956
  deployment_id (str): The deployment this conversation belongs to. This is required if not logged in."""
8895
8957
  return self._proxy_request('renameDeploymentConversation', 'POST', query_params={'deploymentId': deployment_id}, body={'deploymentConversationId': deployment_conversation_id, 'name': name}, is_sync=True)
8896
8958
 
8959
+ def add_user_group_object_permission(self, object_id: str, user_group_id: str, object_type: str, permission: str = 'ALL'):
8960
+ """Add user group object permission for any object type.
8961
+
8962
+ Args:
8963
+ object_id (str): The ID of the object (dataset_id, project_id, external_connection_id, feature_group_id, etc.)
8964
+ user_group_id (str): The ID of the user group
8965
+ object_type (str): The type of object ('dataset', 'project', 'external_connection', 'feature_group')
8966
+ permission (str): The permission to grant (default: 'ALL')"""
8967
+ return self._call_api('addUserGroupObjectPermission', 'POST', query_params={}, body={'objectId': object_id, 'userGroupId': user_group_id, 'objectType': object_type, 'permission': permission})
8968
+
8969
+ def update_user_group_object_permission(self, object_id: str, user_group_id: str, object_type: str, permission: str = 'ALL'):
8970
+ """Update user group object permission for any object type.
8971
+
8972
+ Args:
8973
+ object_id (str): The ID of the object (dataset_id, project_id, external_connection_id, feature_group_id, etc.)
8974
+ user_group_id (str): The ID of the user group
8975
+ object_type (str): The type of object ('dataset', 'project', 'external_connection', 'feature_group')
8976
+ permission (str): The permission to grant (default: 'ALL')"""
8977
+ return self._call_api('updateUserGroupObjectPermission', 'POST', query_params={}, body={'objectId': object_id, 'userGroupId': user_group_id, 'objectType': object_type, 'permission': permission})
8978
+
8979
+ def remove_user_group_object_permission(self, object_id: str, user_group_id: str, object_type: str):
8980
+ """Remove user group object permission for any object type.
8981
+
8982
+ Args:
8983
+ object_id (str): The ID of the object (dataset_id, project_id, external_connection_id, feature_group_id, etc.)
8984
+ user_group_id (str): The ID of the user group
8985
+ object_type (str): The type of object ('dataset', 'project', 'external_connection', 'feature_group')"""
8986
+ return self._call_api('removeUserGroupObjectPermission', 'POST', query_params={}, body={'objectId': object_id, 'userGroupId': user_group_id, 'objectType': object_type})
8987
+
8897
8988
  def create_app_user_group(self, name: str) -> AppUserGroup:
8898
8989
  """Creates a new App User Group. This User Group is used to have permissions to access the external chatbots.
8899
8990
 
@@ -9076,7 +9167,7 @@ class ApiClient(ReadOnlyClient):
9076
9167
 
9077
9168
  Returns:
9078
9169
  LlmResponse: The response from the model, raw text and parsed components."""
9079
- return self._proxy_request('EvaluatePrompt', 'POST', query_params={}, body={'prompt': prompt, 'systemMessage': system_message, 'llmName': llm_name, 'maxTokens': max_tokens, 'temperature': temperature, 'messages': messages, 'responseType': response_type, 'jsonResponseSchema': json_response_schema, 'stopSequences': stop_sequences, 'topP': top_p}, parse_type=LlmResponse)
9170
+ return self._proxy_request('evaluatePrompt', 'POST', query_params={}, body={'prompt': prompt, 'systemMessage': system_message, 'llmName': llm_name, 'maxTokens': max_tokens, 'temperature': temperature, 'messages': messages, 'responseType': response_type, 'jsonResponseSchema': json_response_schema, 'stopSequences': stop_sequences, 'topP': top_p}, parse_type=LlmResponse, is_sync=True)
9080
9171
 
9081
9172
  def render_feature_groups_for_llm(self, feature_group_ids: List, token_budget: int = None, include_definition: bool = True) -> List[LlmInput]:
9082
9173
  """Encode feature groups as language model inputs.
@@ -37,12 +37,13 @@ class DeploymentConversation(AbstractApiClass):
37
37
  daemonTaskId (str): The daemon task id associated with the deployment conversation.
38
38
  parentDeploymentConversationId (str): The parent deployment conversation id associated with the deployment conversation.
39
39
  introMessage (str): The intro message for the deployment conversation.
40
- previewInfo (dict): App preview info
40
+ previewInfo (dict): App preview info.
41
+ latestContext (dict): dict containing a list of important segments for pagination in deepagent.
41
42
  history (DeploymentConversationEvent): The history of the deployment conversation.
42
43
  hostedArtifacts (HostedArtifact): Artifacts that have been deployed by this conversation.
43
44
  """
44
45
 
45
- 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, history={}, hostedArtifacts={}):
46
+ 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, history={}, hostedArtifacts={}):
46
47
  super().__init__(client, deploymentConversationId)
47
48
  self.deployment_conversation_id = deploymentConversationId
48
49
  self.name = name
@@ -73,6 +74,7 @@ class DeploymentConversation(AbstractApiClass):
73
74
  self.parent_deployment_conversation_id = parentDeploymentConversationId
74
75
  self.intro_message = introMessage
75
76
  self.preview_info = previewInfo
77
+ self.latest_context = latestContext
76
78
  self.history = client._build_class(
77
79
  DeploymentConversationEvent, history)
78
80
  self.hosted_artifacts = client._build_class(
@@ -80,8 +82,8 @@ class DeploymentConversation(AbstractApiClass):
80
82
  self.deprecated_keys = {}
81
83
 
82
84
  def __repr__(self):
83
- 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(
84
- self.conversation_type), f'metadata': repr(self.metadata), f'llm_display_name': repr(self.llm_display_name), f'llm_bot_icon': repr(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'history': repr(self.history), f'hosted_artifacts': repr(self.hosted_artifacts)}
85
+ 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(
86
+ self.metadata), f'llm_display_name': repr(self.llm_display_name), f'llm_bot_icon': repr(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'history': repr(self.history), f'hosted_artifacts': repr(self.hosted_artifacts)}
85
87
  class_name = "DeploymentConversation"
86
88
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
87
89
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -95,7 +97,7 @@ class DeploymentConversation(AbstractApiClass):
95
97
  dict: The dict value representation of the class parameters
96
98
  """
97
99
  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,
98
- 'llm_display_name': self.llm_display_name, 'llm_bot_icon': self.llm_bot_icon, '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, 'history': self._get_attribute_as_dict(self.history), 'hosted_artifacts': self._get_attribute_as_dict(self.hosted_artifacts)}
100
+ 'llm_display_name': self.llm_display_name, 'llm_bot_icon': self.llm_bot_icon, '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, 'history': self._get_attribute_as_dict(self.history), 'hosted_artifacts': self._get_attribute_as_dict(self.hosted_artifacts)}
99
101
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
100
102
 
101
103
  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):
@@ -116,6 +118,15 @@ class DeploymentConversation(AbstractApiClass):
116
118
  """
117
119
  return self.client.get_deployment_conversation(self.deployment_conversation_id, external_session_id, deployment_id, filter_intermediate_conversation_events, get_unused_document_uploads, start, limit, include_all_versions)
118
120
 
121
+ def get_file(self, file_path: str):
122
+ """
123
+ Gets a deployment conversation file.
124
+
125
+ Args:
126
+ file_path (str): The path of the file to get.
127
+ """
128
+ return self.client.get_deployment_conversation_file(self.deployment_conversation_id, file_path)
129
+
119
130
  def delete(self, deployment_id: str = None):
120
131
  """
121
132
  Delete a Deployment Conversation.
@@ -0,0 +1,33 @@
1
+ from .return_class import AbstractApiClass
2
+
3
+
4
+ class DocumentRetrieverVersionLogs(AbstractApiClass):
5
+ """
6
+ Logs from document retriever version.
7
+
8
+ Args:
9
+ client (ApiClient): An authenticated API Client instance
10
+ logs (list[str]): List of logs from document retriever version.
11
+ """
12
+
13
+ def __init__(self, client, logs=None):
14
+ super().__init__(client, None)
15
+ self.logs = logs
16
+ self.deprecated_keys = {}
17
+
18
+ def __repr__(self):
19
+ repr_dict = {f'logs': repr(self.logs)}
20
+ class_name = "DocumentRetrieverVersionLogs"
21
+ repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
22
+ ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
23
+ return f"{class_name}({repr_str})"
24
+
25
+ def to_dict(self):
26
+ """
27
+ Get a dict representation of the parameters in this class
28
+
29
+ Returns:
30
+ dict: The dict value representation of the class parameters
31
+ """
32
+ resp = {'logs': self.logs}
33
+ return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -23,6 +23,7 @@ class HostedAppContainer(AbstractApiClass):
23
23
  lifecycle (str): Container lifecycle status (PENDING/DEPLOYING/ACTIVE/FAILED/STOPPED/DELETING)
24
24
  status (str): Container status (RUNNING/STOPPED/DEPLOYING/FAILED)
25
25
  deployedStatus (str): Deployment status (PENDING/ACTIVE/STOPPED/NOT_DEPLOYED)
26
+ accessLevel (str): Access Level (PUBLIC/PRIVATE/DEDICATED)
26
27
  hostname (str): Hostname of the deployed app
27
28
  llmArtifactId (id): The ID of the LLM artifact
28
29
  artifactType (str): The type of the artifact
@@ -33,7 +34,7 @@ class HostedAppContainer(AbstractApiClass):
33
34
  parentConversationId (id): The ID of the parent conversation
34
35
  """
35
36
 
36
- def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
37
+ def __init__(self, client, hostedAppContainerId=None, hostedAppId=None, deploymentConversationId=None, hostedAppVersion=None, name=None, createdAt=None, updatedAt=None, containerImage=None, route=None, appConfig=None, isDev=None, isDeployable=None, isPreviewAvailable=None, lifecycle=None, status=None, deployedStatus=None, accessLevel=None, hostname=None, llmArtifactId=None, artifactType=None, deployedLlmArtifactId=None, hasDatabase=None, hasStorage=None, webAppProjectId=None, parentConversationId=None):
37
38
  super().__init__(client, hostedAppContainerId)
38
39
  self.hosted_app_container_id = hostedAppContainerId
39
40
  self.hosted_app_id = hostedAppId
@@ -51,6 +52,7 @@ class HostedAppContainer(AbstractApiClass):
51
52
  self.lifecycle = lifecycle
52
53
  self.status = status
53
54
  self.deployed_status = deployedStatus
55
+ self.access_level = accessLevel
54
56
  self.hostname = hostname
55
57
  self.llm_artifact_id = llmArtifactId
56
58
  self.artifact_type = artifactType
@@ -63,7 +65,7 @@ class HostedAppContainer(AbstractApiClass):
63
65
 
64
66
  def __repr__(self):
65
67
  repr_dict = {f'hosted_app_container_id': repr(self.hosted_app_container_id), f'hosted_app_id': repr(self.hosted_app_id), f'deployment_conversation_id': repr(self.deployment_conversation_id), f'hosted_app_version': repr(self.hosted_app_version), f'name': repr(self.name), f'created_at': repr(self.created_at), f'updated_at': repr(self.updated_at), f'container_image': repr(self.container_image), f'route': repr(self.route), f'app_config': repr(self.app_config), f'is_dev': repr(self.is_dev), f'is_deployable': repr(self.is_deployable), f'is_preview_available': repr(
66
- self.is_preview_available), f'lifecycle': repr(self.lifecycle), f'status': repr(self.status), f'deployed_status': repr(self.deployed_status), f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'artifact_type': repr(self.artifact_type), f'deployed_llm_artifact_id': repr(self.deployed_llm_artifact_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'web_app_project_id': repr(self.web_app_project_id), f'parent_conversation_id': repr(self.parent_conversation_id)}
68
+ self.is_preview_available), f'lifecycle': repr(self.lifecycle), f'status': repr(self.status), f'deployed_status': repr(self.deployed_status), f'access_level': repr(self.access_level), f'hostname': repr(self.hostname), f'llm_artifact_id': repr(self.llm_artifact_id), f'artifact_type': repr(self.artifact_type), f'deployed_llm_artifact_id': repr(self.deployed_llm_artifact_id), f'has_database': repr(self.has_database), f'has_storage': repr(self.has_storage), f'web_app_project_id': repr(self.web_app_project_id), f'parent_conversation_id': repr(self.parent_conversation_id)}
67
69
  class_name = "HostedAppContainer"
68
70
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
69
71
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -76,6 +78,6 @@ class HostedAppContainer(AbstractApiClass):
76
78
  Returns:
77
79
  dict: The dict value representation of the class parameters
78
80
  """
79
- resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable,
80
- 'is_preview_available': self.is_preview_available, 'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
81
+ resp = {'hosted_app_container_id': self.hosted_app_container_id, 'hosted_app_id': self.hosted_app_id, 'deployment_conversation_id': self.deployment_conversation_id, 'hosted_app_version': self.hosted_app_version, 'name': self.name, 'created_at': self.created_at, 'updated_at': self.updated_at, 'container_image': self.container_image, 'route': self.route, 'app_config': self.app_config, 'is_dev': self.is_dev, 'is_deployable': self.is_deployable, 'is_preview_available': self.is_preview_available,
82
+ 'lifecycle': self.lifecycle, 'status': self.status, 'deployed_status': self.deployed_status, 'access_level': self.access_level, 'hostname': self.hostname, 'llm_artifact_id': self.llm_artifact_id, 'artifact_type': self.artifact_type, 'deployed_llm_artifact_id': self.deployed_llm_artifact_id, 'has_database': self.has_database, 'has_storage': self.has_storage, 'web_app_project_id': self.web_app_project_id, 'parent_conversation_id': self.parent_conversation_id}
81
83
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -10,20 +10,22 @@ class HostnameInfo(AbstractApiClass):
10
10
  isRootDomain (bool): Whether the hostname is a root domain
11
11
  registrar (str): The registrar of the domain
12
12
  suggestedFlow (str): Suggested flow for the domain
13
+ isCnameSupported (bool): Whether CNAME is supported for the domain
13
14
  isAutomaticFlowAvailable (bool): Whether entri is supported for the domain
14
15
  """
15
16
 
16
- def __init__(self, client, isRootDomain=None, registrar=None, suggestedFlow=None, isAutomaticFlowAvailable=None):
17
+ def __init__(self, client, isRootDomain=None, registrar=None, suggestedFlow=None, isCnameSupported=None, isAutomaticFlowAvailable=None):
17
18
  super().__init__(client, None)
18
19
  self.is_root_domain = isRootDomain
19
20
  self.registrar = registrar
20
21
  self.suggested_flow = suggestedFlow
22
+ self.is_cname_supported = isCnameSupported
21
23
  self.is_automatic_flow_available = isAutomaticFlowAvailable
22
24
  self.deprecated_keys = {}
23
25
 
24
26
  def __repr__(self):
25
27
  repr_dict = {f'is_root_domain': repr(self.is_root_domain), f'registrar': repr(self.registrar), f'suggested_flow': repr(
26
- self.suggested_flow), f'is_automatic_flow_available': repr(self.is_automatic_flow_available)}
28
+ self.suggested_flow), f'is_cname_supported': repr(self.is_cname_supported), f'is_automatic_flow_available': repr(self.is_automatic_flow_available)}
27
29
  class_name = "HostnameInfo"
28
30
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
29
31
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -36,6 +38,6 @@ class HostnameInfo(AbstractApiClass):
36
38
  Returns:
37
39
  dict: The dict value representation of the class parameters
38
40
  """
39
- resp = {'is_root_domain': self.is_root_domain, 'registrar': self.registrar,
40
- 'suggested_flow': self.suggested_flow, 'is_automatic_flow_available': self.is_automatic_flow_available}
41
+ resp = {'is_root_domain': self.is_root_domain, 'registrar': self.registrar, 'suggested_flow': self.suggested_flow,
42
+ 'is_cname_supported': self.is_cname_supported, 'is_automatic_flow_available': self.is_automatic_flow_available}
41
43
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -9,18 +9,20 @@ class ImageGenSettings(AbstractApiClass):
9
9
  Args:
10
10
  client (ApiClient): An authenticated API Client instance
11
11
  settings (dict): The settings for each model.
12
+ warnings (dict): The warnings for each model.
12
13
  model (ImageGenModel): Dropdown for models available for image generation.
13
14
  """
14
15
 
15
- def __init__(self, client, settings=None, model={}):
16
+ def __init__(self, client, settings=None, warnings=None, model={}):
16
17
  super().__init__(client, None)
17
18
  self.settings = settings
19
+ self.warnings = warnings
18
20
  self.model = client._build_class(ImageGenModel, model)
19
21
  self.deprecated_keys = {}
20
22
 
21
23
  def __repr__(self):
22
- repr_dict = {f'settings': repr(
23
- self.settings), f'model': repr(self.model)}
24
+ repr_dict = {f'settings': repr(self.settings), f'warnings': repr(
25
+ self.warnings), f'model': repr(self.model)}
24
26
  class_name = "ImageGenSettings"
25
27
  repr_str = ',\n '.join([f'{key}={value}' for key, value in repr_dict.items(
26
28
  ) if getattr(self, key, None) is not None and key not in self.deprecated_keys])
@@ -33,6 +35,6 @@ class ImageGenSettings(AbstractApiClass):
33
35
  Returns:
34
36
  dict: The dict value representation of the class parameters
35
37
  """
36
- resp = {'settings': self.settings,
38
+ resp = {'settings': self.settings, 'warnings': self.warnings,
37
39
  'model': self._get_attribute_as_dict(self.model)}
38
40
  return {key: value for key, value in resp.items() if value is not None and key not in self.deprecated_keys}
@@ -425,6 +425,14 @@ class PredictionClient(BaseApiClient):
425
425
  deployment_id, deployment_token) if deployment_token else None
426
426
  return self._call_api('getConversationResponseWithBinaryData', 'POST', query_params={'deploymentId': deployment_id, 'deploymentToken': deployment_token}, data={'message': json.dumps(message) if (message is not None and not isinstance(message, str)) else message, 'deploymentConversationId': json.dumps(deployment_conversation_id) if (deployment_conversation_id is not None and not isinstance(deployment_conversation_id, str)) else deployment_conversation_id, 'externalSessionId': json.dumps(external_session_id) if (external_session_id is not None and not isinstance(external_session_id, str)) else external_session_id, 'llmName': json.dumps(llm_name) if (llm_name is not None and not isinstance(llm_name, str)) else llm_name, 'numCompletionTokens': json.dumps(num_completion_tokens) if (num_completion_tokens is not None and not isinstance(num_completion_tokens, str)) else num_completion_tokens, 'systemMessage': json.dumps(system_message) if (system_message is not None and not isinstance(system_message, str)) else system_message, 'temperature': json.dumps(temperature) if (temperature is not None and not isinstance(temperature, str)) else temperature, 'filterKeyValues': json.dumps(filter_key_values) if (filter_key_values is not None and not isinstance(filter_key_values, str)) else filter_key_values, 'searchScoreCutoff': json.dumps(search_score_cutoff) if (search_score_cutoff is not None and not isinstance(search_score_cutoff, str)) else search_score_cutoff, 'chatConfig': json.dumps(chat_config) if (chat_config is not None and not isinstance(chat_config, str)) else chat_config}, files=attachments, server_override=prediction_url)
427
427
 
428
+ def get_deep_agent_response(self, message: str, deployment_conversation_id: str = None) -> Dict:
429
+ """Return a DeepAgent response with generated files if any, based on the input message.
430
+
431
+ Args:
432
+ message (str): The user's message/task for DeepAgent to complete
433
+ deployment_conversation_id (str): The unique identifier of a deployment conversation to continue. If not specified, a new one will be created."""
434
+ return self._proxy_request('getDeepAgentResponse', 'POST', query_params={}, body={'message': message, 'deploymentConversationId': deployment_conversation_id}, is_sync=True)
435
+
428
436
  def get_search_results(self, deployment_token: str, deployment_id: str, query_data: dict, num: int = 15) -> Dict:
429
437
  """Return the most relevant search results to the search query from the uploaded documents.
430
438