smallestai 3.1.0__tar.gz → 4.2.2__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.
Files changed (192) hide show
  1. {smallestai-3.1.0/smallestai.egg-info → smallestai-4.2.2}/PKG-INFO +16 -5
  2. {smallestai-3.1.0 → smallestai-4.2.2}/README.md +3 -3
  3. {smallestai-3.1.0 → smallestai-4.2.2}/pyproject.toml +30 -10
  4. smallestai-4.2.2/smallestai/__init__.py +85 -0
  5. smallestai-4.2.2/smallestai/atoms/__init__.py +319 -0
  6. smallestai-4.2.2/smallestai/atoms/agent/clients/__init__.py +21 -0
  7. smallestai-4.2.2/smallestai/atoms/agent/clients/base.py +41 -0
  8. smallestai-4.2.2/smallestai/atoms/agent/clients/openai.py +327 -0
  9. smallestai-4.2.2/smallestai/atoms/agent/clients/types.py +62 -0
  10. smallestai-4.2.2/smallestai/atoms/agent/context.py +16 -0
  11. smallestai-4.2.2/smallestai/atoms/agent/events.py +262 -0
  12. smallestai-4.2.2/smallestai/atoms/agent/nodes/__init__.py +9 -0
  13. smallestai-4.2.2/smallestai/atoms/agent/nodes/background_agent.py +57 -0
  14. smallestai-4.2.2/smallestai/atoms/agent/nodes/base.py +196 -0
  15. smallestai-4.2.2/smallestai/atoms/agent/nodes/output_agent.py +148 -0
  16. smallestai-4.2.2/smallestai/atoms/agent/server.py +163 -0
  17. smallestai-4.2.2/smallestai/atoms/agent/session.py +438 -0
  18. smallestai-4.2.2/smallestai/atoms/agent/task_manager.py +232 -0
  19. smallestai-4.2.2/smallestai/atoms/agent/tools/__init__.py +21 -0
  20. smallestai-4.2.2/smallestai/atoms/agent/tools/decorator.py +130 -0
  21. smallestai-4.2.2/smallestai/atoms/agent/tools/registry.py +267 -0
  22. smallestai-4.2.2/smallestai/atoms/agent/tools/schema.py +181 -0
  23. smallestai-4.2.2/smallestai/atoms/agent/type.py +56 -0
  24. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/__init__.py +0 -1
  25. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/agent_templates_api.py +26 -26
  26. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/agents_api.py +1316 -190
  27. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/calls_api.py +29 -29
  28. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/campaigns_api.py +165 -165
  29. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/knowledge_base_api.py +290 -290
  30. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/logs_api.py +13 -13
  31. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/organization_api.py +13 -13
  32. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api/user_api.py +13 -13
  33. smallestai-4.2.2/smallestai/atoms/atoms_client.py +1096 -0
  34. smallestai-4.2.2/smallestai/atoms/audience.py +175 -0
  35. smallestai-4.2.2/smallestai/atoms/call.py +126 -0
  36. smallestai-4.2.2/smallestai/atoms/campaign.py +128 -0
  37. smallestai-4.2.2/smallestai/atoms/kb.py +165 -0
  38. smallestai-4.2.2/smallestai/atoms/models/__init__.py +132 -0
  39. smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_delete200_response.py +89 -0
  40. smallestai-3.1.0/smallestai/atoms/models/get_agent_templates200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_get200_response.py +7 -7
  41. smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_get404_response.py +89 -0
  42. smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_post201_response.py +89 -0
  43. smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_post400_response.py +89 -0
  44. smallestai-4.2.2/smallestai/atoms/models/agent_agent_id_webhook_subscriptions_post_request.py +97 -0
  45. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/agent_dto.py +8 -6
  46. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/agent_dto_language.py +17 -3
  47. smallestai-4.2.2/smallestai/atoms/models/agent_dto_language_switching.py +95 -0
  48. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/agent_dto_synthesizer.py +1 -1
  49. smallestai-3.1.0/smallestai/atoms/models/create_agent_from_template200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_from_template_post200_response.py +4 -4
  50. smallestai-3.1.0/smallestai/atoms/models/get_agents200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_get200_response.py +7 -7
  51. smallestai-3.1.0/smallestai/atoms/models/get_agents200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/agent_get200_response_data.py +9 -13
  52. smallestai-3.1.0/smallestai/atoms/models/delete_agent200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_delete200_response.py +4 -4
  53. smallestai-3.1.0/smallestai/atoms/models/get_agent_by_id200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_get200_response.py +4 -4
  54. smallestai-3.1.0/smallestai/atoms/models/update_agent200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch200_response.py +4 -4
  55. smallestai-3.1.0/smallestai/atoms/models/update_agent_request.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request.py +17 -15
  56. smallestai-3.1.0/smallestai/atoms/models/update_agent_request_language.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_language.py +14 -10
  57. smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_language_switching.py +96 -0
  58. smallestai-3.1.0/smallestai/atoms/models/update_agent_request_synthesizer.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_synthesizer.py +6 -6
  59. smallestai-3.1.0/smallestai/atoms/models/update_agent_request_synthesizer_voice_config.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_synthesizer_voice_config.py +27 -27
  60. smallestai-3.1.0/smallestai/atoms/models/update_agent_request_synthesizer_voice_config_one_of.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_synthesizer_voice_config_one_of.py +4 -4
  61. smallestai-3.1.0/smallestai/atoms/models/update_agent_request_synthesizer_voice_config_one_of1.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_patch_request_synthesizer_voice_config_one_of1.py +4 -4
  62. smallestai-3.1.0/smallestai/atoms/models/get_campaign_by_id200_response.py → smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response.py +7 -7
  63. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data.py +105 -0
  64. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_edges_inner.py +127 -0
  65. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_edges_inner_data.py +91 -0
  66. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_edges_inner_marker_end.py +91 -0
  67. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_nodes_inner.py +114 -0
  68. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_nodes_inner_data.py +115 -0
  69. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_nodes_inner_data_variables.py +97 -0
  70. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_nodes_inner_data_variables_data_inner.py +91 -0
  71. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get200_response_data_nodes_inner_position.py +89 -0
  72. smallestai-4.2.2/smallestai/atoms/models/agent_id_workflow_get404_response.py +89 -0
  73. smallestai-4.2.2/smallestai/atoms/models/agent_template_get200_response.py +97 -0
  74. smallestai-3.1.0/smallestai/atoms/models/get_agent_templates200_response_data_inner.py → smallestai-4.2.2/smallestai/atoms/models/agent_template_get200_response_data_inner.py +6 -6
  75. smallestai-3.1.0/smallestai/atoms/models/get_campaigns200_response.py → smallestai-4.2.2/smallestai/atoms/models/audience_get200_response.py +7 -7
  76. smallestai-3.1.0/smallestai/atoms/models/create_campaign201_response_data.py → smallestai-4.2.2/smallestai/atoms/models/audience_get200_response_data_inner.py +16 -18
  77. smallestai-4.2.2/smallestai/atoms/models/audience_id_delete200_response.py +89 -0
  78. smallestai-4.2.2/smallestai/atoms/models/audience_id_delete400_response.py +89 -0
  79. smallestai-3.1.0/smallestai/atoms/models/get_current_user200_response.py → smallestai-4.2.2/smallestai/atoms/models/audience_id_get200_response.py +7 -7
  80. smallestai-4.2.2/smallestai/atoms/models/audience_id_get400_response.py +89 -0
  81. smallestai-4.2.2/smallestai/atoms/models/audience_id_get403_response.py +89 -0
  82. smallestai-4.2.2/smallestai/atoms/models/audience_id_get404_response.py +89 -0
  83. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_delete200_response.py +93 -0
  84. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_delete200_response_data.py +87 -0
  85. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_delete_request.py +87 -0
  86. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_get200_response.py +93 -0
  87. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_get200_response_data.py +101 -0
  88. smallestai-3.1.0/smallestai/atoms/models/get_campaigns200_response_data_inner_audience.py → smallestai-4.2.2/smallestai/atoms/models/audience_id_members_get200_response_data_members_inner.py +8 -8
  89. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_get400_response.py +89 -0
  90. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_get500_response.py +89 -0
  91. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post200_response.py +97 -0
  92. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post200_response_data_inner.py +93 -0
  93. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post200_response_data_inner_data.py +89 -0
  94. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post400_response.py +89 -0
  95. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post403_response.py +89 -0
  96. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_post_request.py +87 -0
  97. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_search_get200_response.py +93 -0
  98. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_search_get200_response_data.py +101 -0
  99. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_search_get200_response_data_search_info.py +103 -0
  100. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_search_get400_response.py +89 -0
  101. smallestai-4.2.2/smallestai/atoms/models/audience_id_members_search_get500_response.py +89 -0
  102. smallestai-3.1.0/smallestai/atoms/models/create_campaign201_response.py → smallestai-4.2.2/smallestai/atoms/models/audience_post200_response.py +7 -7
  103. smallestai-4.2.2/smallestai/atoms/models/audience_post200_response_data.py +104 -0
  104. smallestai-4.2.2/smallestai/atoms/models/audience_post400_response.py +89 -0
  105. smallestai-4.2.2/smallestai/atoms/models/campaign_get200_response.py +93 -0
  106. smallestai-4.2.2/smallestai/atoms/models/campaign_get200_response_data.py +87 -0
  107. smallestai-3.1.0/smallestai/atoms/models/get_campaigns_request.py → smallestai-4.2.2/smallestai/atoms/models/campaign_get_request.py +4 -4
  108. smallestai-4.2.2/smallestai/atoms/models/campaign_id_get200_response.py +93 -0
  109. smallestai-3.1.0/smallestai/atoms/models/get_campaign_by_id200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/campaign_id_get200_response_data.py +4 -4
  110. smallestai-4.2.2/smallestai/atoms/models/campaign_post201_response.py +89 -0
  111. smallestai-3.1.0/smallestai/atoms/models/create_campaign_request.py → smallestai-4.2.2/smallestai/atoms/models/campaign_post_request.py +4 -4
  112. smallestai-3.1.0/smallestai/atoms/models/start_outbound_call200_response.py → smallestai-4.2.2/smallestai/atoms/models/conversation_id_get200_response.py +7 -7
  113. smallestai-3.1.0/smallestai/atoms/models/get_conversation_logs200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/conversation_id_get200_response_data.py +4 -4
  114. smallestai-4.2.2/smallestai/atoms/models/conversation_outbound_post200_response.py +93 -0
  115. smallestai-3.1.0/smallestai/atoms/models/start_outbound_call200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/conversation_outbound_post200_response_data.py +4 -4
  116. smallestai-3.1.0/smallestai/atoms/models/start_outbound_call_request.py → smallestai-4.2.2/smallestai/atoms/models/conversation_outbound_post_request.py +4 -4
  117. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/create_agent_request.py +10 -6
  118. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/create_agent_request_language.py +11 -7
  119. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/create_agent_request_language_synthesizer_voice_config.py +24 -24
  120. smallestai-3.1.0/smallestai/atoms/models/knowledge_base_dto.py → smallestai-4.2.2/smallestai/atoms/models/knowledge_base.py +15 -8
  121. smallestai-3.1.0/smallestai/atoms/models/knowledge_base_item_dto.py → smallestai-4.2.2/smallestai/atoms/models/knowledge_base_item.py +19 -17
  122. smallestai-3.1.0/smallestai/atoms/models/get_knowledge_bases200_response.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_get200_response.py +7 -7
  123. smallestai-3.1.0/smallestai/atoms/models/get_knowledge_base_by_id200_response.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_id_get200_response.py +7 -7
  124. smallestai-3.1.0/smallestai/atoms/models/get_knowledge_base_items200_response.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_id_items_get200_response.py +7 -7
  125. smallestai-3.1.0/smallestai/atoms/models/upload_text_to_knowledge_base_request.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_id_items_upload_text_post_request.py +4 -4
  126. smallestai-3.1.0/smallestai/atoms/models/create_knowledge_base201_response.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_post201_response.py +4 -4
  127. smallestai-3.1.0/smallestai/atoms/models/create_knowledge_base_request.py → smallestai-4.2.2/smallestai/atoms/models/knowledgebase_post_request.py +4 -4
  128. smallestai-3.1.0/smallestai/atoms/models/get_organization200_response.py → smallestai-4.2.2/smallestai/atoms/models/organization_get200_response.py +7 -7
  129. smallestai-3.1.0/smallestai/atoms/models/get_organization200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/organization_get200_response_data.py +10 -10
  130. smallestai-3.1.0/smallestai/atoms/models/get_organization200_response_data_members_inner.py → smallestai-4.2.2/smallestai/atoms/models/organization_get200_response_data_members_inner.py +4 -4
  131. smallestai-3.1.0/smallestai/atoms/models/get_organization200_response_data_subscription.py → smallestai-4.2.2/smallestai/atoms/models/organization_get200_response_data_subscription.py +4 -4
  132. smallestai-4.2.2/smallestai/atoms/models/product_phone_numbers_get200_response.py +97 -0
  133. smallestai-4.2.2/smallestai/atoms/models/product_phone_numbers_get200_response_data_inner.py +100 -0
  134. smallestai-4.2.2/smallestai/atoms/models/product_phone_numbers_get200_response_data_inner_attributes.py +89 -0
  135. smallestai-4.2.2/smallestai/atoms/models/user_get200_response.py +93 -0
  136. smallestai-3.1.0/smallestai/atoms/models/get_current_user200_response_data.py → smallestai-4.2.2/smallestai/atoms/models/user_get200_response_data.py +4 -4
  137. smallestai-4.2.2/smallestai/atoms/models/webhook.py +124 -0
  138. smallestai-3.1.0/smallestai/atoms/models/get_campaigns200_response_data_inner_agent.py → smallestai-4.2.2/smallestai/atoms/models/webhook_agent.py +8 -6
  139. smallestai-4.2.2/smallestai/atoms/models/webhook_event.py +98 -0
  140. smallestai-4.2.2/smallestai/atoms/models/webhook_get200_response.py +93 -0
  141. smallestai-4.2.2/smallestai/atoms/models/webhook_get200_response_data.py +140 -0
  142. smallestai-4.2.2/smallestai/atoms/models/webhook_id_delete404_response.py +89 -0
  143. smallestai-4.2.2/smallestai/atoms/models/webhook_post201_response.py +89 -0
  144. smallestai-4.2.2/smallestai/atoms/models/webhook_post_request.py +99 -0
  145. smallestai-4.2.2/smallestai/atoms/models/webhook_post_request_events_inner.py +99 -0
  146. smallestai-4.2.2/smallestai/atoms/models/webhook_subscription.py +108 -0
  147. smallestai-4.2.2/smallestai/atoms/models/webhook_subscription_populated.py +112 -0
  148. smallestai-4.2.2/smallestai/cli/agent.py +454 -0
  149. smallestai-4.2.2/smallestai/cli/auth.py +43 -0
  150. smallestai-4.2.2/smallestai/cli/lib/atoms.py +337 -0
  151. smallestai-4.2.2/smallestai/cli/lib/auth.py +48 -0
  152. smallestai-4.2.2/smallestai/cli/lib/chat.py +603 -0
  153. smallestai-4.2.2/smallestai/cli/lib/project_config.py +39 -0
  154. smallestai-4.2.2/smallestai/cli/main.py +32 -0
  155. smallestai-4.2.2/smallestai/cli/utils.py +185 -0
  156. smallestai-4.2.2/smallestai/waves/__init__.py +5 -0
  157. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/waves/async_waves_client.py +100 -74
  158. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/waves/exceptions.py +4 -4
  159. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/waves/models.py +8 -0
  160. smallestai-4.2.2/smallestai/waves/stream_tts.py +207 -0
  161. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/waves/utils.py +23 -51
  162. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/waves/waves_client.py +86 -77
  163. {smallestai-3.1.0 → smallestai-4.2.2/smallestai.egg-info}/PKG-INFO +16 -5
  164. smallestai-4.2.2/smallestai.egg-info/SOURCES.txt +181 -0
  165. smallestai-4.2.2/smallestai.egg-info/entry_points.txt +2 -0
  166. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai.egg-info/requires.txt +13 -2
  167. smallestai-3.1.0/smallestai/__init__.py +0 -95
  168. smallestai-3.1.0/smallestai/atoms/__init__.py +0 -182
  169. smallestai-3.1.0/smallestai/atoms/atoms_client.py +0 -560
  170. smallestai-3.1.0/smallestai/atoms/models/__init__.py +0 -72
  171. smallestai-3.1.0/smallestai/atoms/models/get_campaigns200_response_data_inner.py +0 -118
  172. smallestai-3.1.0/smallestai/atoms/models/get_conversation_logs200_response.py +0 -93
  173. smallestai-3.1.0/smallestai/waves/__init__.py +0 -5
  174. smallestai-3.1.0/smallestai/waves/stream_tts.py +0 -272
  175. smallestai-3.1.0/smallestai.egg-info/SOURCES.txt +0 -90
  176. {smallestai-3.1.0 → smallestai-4.2.2}/LICENSE +0 -0
  177. {smallestai-3.1.0 → smallestai-4.2.2}/setup.cfg +0 -0
  178. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api_client.py +0 -0
  179. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/api_response.py +0 -0
  180. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/configuration.py +0 -0
  181. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/exceptions.py +0 -0
  182. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/agent_dto_synthesizer_voice_config.py +0 -0
  183. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/api_response.py +0 -0
  184. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/bad_request_error_response.py +0 -0
  185. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/create_agent_from_template_request.py +0 -0
  186. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/create_agent_request_language_synthesizer.py +0 -0
  187. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/internal_server_error_response.py +0 -0
  188. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/models/unauthorized_error_reponse.py +0 -0
  189. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/py.typed +0 -0
  190. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai/atoms/rest.py +0 -0
  191. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai.egg-info/dependency_links.txt +0 -0
  192. {smallestai-3.1.0 → smallestai-4.2.2}/smallestai.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smallestai
3
- Version: 3.1.0
3
+ Version: 4.2.2
4
4
  Summary: Official Python client for the Smallest AI API
5
5
  Author-email: Smallest <support@smallest.ai>
6
6
  License: MIT
@@ -16,18 +16,29 @@ Requires-Dist: aiohttp
16
16
  Requires-Dist: aiofiles
17
17
  Requires-Dist: requests
18
18
  Requires-Dist: pydub
19
+ Requires-Dist: websocket-client
19
20
  Requires-Dist: urllib3<3.0.0,>=1.25.3
20
21
  Requires-Dist: python-dateutil>=2.8.2
21
22
  Requires-Dist: pydantic>=2
22
23
  Requires-Dist: typing-extensions>=4.7.1
23
24
  Requires-Dist: audioop-lts; python_version >= "3.13"
25
+ Requires-Dist: loguru>=0.7.0
26
+ Requires-Dist: fastapi>=0.115.0
27
+ Requires-Dist: httpx>=0.28.1
28
+ Requires-Dist: python-dotenv>=1.2.1
29
+ Requires-Dist: questionary>=2.1.1
30
+ Requires-Dist: rich>=14.2.0
31
+ Requires-Dist: tomli>=2.3.0
32
+ Requires-Dist: tomli-w>=1.2.0
33
+ Requires-Dist: typer>=0.20.0
34
+ Requires-Dist: uvicorn>=0.32.0
35
+ Requires-Dist: websockets>=14.0
36
+ Requires-Dist: openai>=2.14.0
24
37
  Provides-Extra: test
25
38
  Requires-Dist: jiwer; extra == "test"
26
- Requires-Dist: httpx; extra == "test"
27
39
  Requires-Dist: pytest>=7.2.1; extra == "test"
28
40
  Requires-Dist: pytest-asyncio; extra == "test"
29
41
  Requires-Dist: deepgram-sdk; extra == "test"
30
- Requires-Dist: python-dotenv; extra == "test"
31
42
  Requires-Dist: pytest-cov>=2.8.1; extra == "test"
32
43
  Requires-Dist: tox>=3.9.0; extra == "test"
33
44
  Requires-Dist: flake8>=4.0.0; extra == "test"
@@ -58,7 +69,7 @@ Smallest AI offers an end to end Voice AI suite for developers trying to build r
58
69
 
59
70
  With this sdk, you can easily interact with both Waves and Atoms from any Python 3.9+ application, by utilising WavesClient and AtomsClient classes respectively. Currently, the WavesClient supports direct synthesis and the ability to synthesize streamed LLM output, both synchronously and asynchronously. AtomsClient provides a simpler way of interacting with all our API's to develop and run agentic workflows.
60
71
 
61
- To learn how to use our API's, check out our documentation for [Atoms](https://atoms-docs.smallest.ai/introduction) and [Waves](https://waves-docs.smallest.ai/content/introduction/)
72
+ To learn how to use our API's, check out our documentation for [Atoms](https://atoms-docs.smallest.ai/introduction) and [Waves](https://waves-docs.smallest.ai/content/introduction/introduction)
62
73
 
63
74
  ## Table of Contents
64
75
 
@@ -141,7 +152,7 @@ def main():
141
152
  "similarity": 0,
142
153
  "enhancement": 1
143
154
  },
144
- "slmModel": "electron-v1",
155
+ "slmModel": "electron",
145
156
  }
146
157
  ).data
147
158
 
@@ -21,7 +21,7 @@ Smallest AI offers an end to end Voice AI suite for developers trying to build r
21
21
 
22
22
  With this sdk, you can easily interact with both Waves and Atoms from any Python 3.9+ application, by utilising WavesClient and AtomsClient classes respectively. Currently, the WavesClient supports direct synthesis and the ability to synthesize streamed LLM output, both synchronously and asynchronously. AtomsClient provides a simpler way of interacting with all our API's to develop and run agentic workflows.
23
23
 
24
- To learn how to use our API's, check out our documentation for [Atoms](https://atoms-docs.smallest.ai/introduction) and [Waves](https://waves-docs.smallest.ai/content/introduction/)
24
+ To learn how to use our API's, check out our documentation for [Atoms](https://atoms-docs.smallest.ai/introduction) and [Waves](https://waves-docs.smallest.ai/content/introduction/introduction)
25
25
 
26
26
  ## Table of Contents
27
27
 
@@ -104,7 +104,7 @@ def main():
104
104
  "similarity": 0,
105
105
  "enhancement": 1
106
106
  },
107
- "slmModel": "electron-v1",
107
+ "slmModel": "electron",
108
108
  }
109
109
  ).data
110
110
 
@@ -497,4 +497,4 @@ When implementing audio streaming with chunks of synthesized speech, WAV headers
497
497
  2. Add a single WAV header only when:
498
498
  - Saving the complete stream to a file
499
499
  - Initializing the audio playback system
500
- - Converting the stream to a standard audio format
500
+ - Converting the stream to a standard audio format
@@ -1,44 +1,60 @@
1
1
  [project]
2
2
  name = "smallestai"
3
- version = "3.1.0"
3
+ version = "4.2.2"
4
4
  description = "Official Python client for the Smallest AI API"
5
- authors = [
6
- {name = "Smallest", email = "support@smallest.ai"},
7
- ]
5
+ authors = [{ name = "Smallest", email = "support@smallest.ai" }]
8
6
  readme = "README.md"
9
- license = {text = "MIT"}
7
+ license = { text = "MIT" }
10
8
  requires-python = ">=3.9"
11
9
  classifiers = [
12
10
  "Intended Audience :: Developers",
13
11
  "License :: OSI Approved :: MIT License",
14
12
  "Programming Language :: Python :: 3",
15
13
  ]
16
- keywords = ["smallest", "smallest.ai", "tts", "text-to-speech", "waves", "atoms"]
14
+ keywords = [
15
+ "smallest",
16
+ "smallest.ai",
17
+ "tts",
18
+ "text-to-speech",
19
+ "waves",
20
+ "atoms",
21
+ ]
17
22
  dependencies = [
18
23
  "aiohttp",
19
24
  "aiofiles",
20
25
  "requests",
21
26
  "pydub",
27
+ "websocket-client",
22
28
  "urllib3 >= 1.25.3, < 3.0.0",
23
29
  "python-dateutil >= 2.8.2",
24
30
  "pydantic >= 2",
25
31
  "typing-extensions >= 4.7.1",
26
- "audioop-lts; python_version >= '3.13'"
32
+ "audioop-lts; python_version >= '3.13'",
33
+ "loguru >= 0.7.0",
34
+ "fastapi>=0.115.0",
35
+ "httpx>=0.28.1",
36
+ "python-dotenv>=1.2.1",
37
+ "questionary>=2.1.1",
38
+ "rich>=14.2.0",
39
+ "tomli>=2.3.0",
40
+ "tomli-w>=1.2.0",
41
+ "typer>=0.20.0",
42
+ "uvicorn>=0.32.0",
43
+ "websockets>=14.0",
44
+ "openai>=2.14.0",
27
45
  ]
28
46
 
29
47
  [project.optional-dependencies]
30
48
  test = [
31
49
  "jiwer",
32
- "httpx",
33
50
  "pytest >= 7.2.1",
34
51
  "pytest-asyncio",
35
52
  "deepgram-sdk",
36
- "python-dotenv",
37
53
  "pytest-cov >= 2.8.1",
38
54
  "tox >= 3.9.0",
39
55
  "flake8 >= 4.0.0",
40
56
  "types-python-dateutil >= 2.8.19.14",
41
- "mypy >= 1.5"
57
+ "mypy >= 1.5",
42
58
  ]
43
59
 
44
60
  [project.urls]
@@ -51,3 +67,7 @@ build-backend = "setuptools.build_meta"
51
67
  [tool.setuptools.packages.find]
52
68
  where = ["."]
53
69
  include = ["smallest*"]
70
+
71
+
72
+ [project.scripts]
73
+ smallestai = "smallestai.cli.main:main"
@@ -0,0 +1,85 @@
1
+ """
2
+ SmallestAI Python SDK
3
+
4
+ This package provides access to both the Atoms API (agent management)
5
+ and Waves API components.
6
+ """
7
+
8
+ from smallestai.atoms import (
9
+ AgentTemplatesApi,
10
+ AgentsApi,
11
+ CallsApi,
12
+ CampaignsApi,
13
+ KnowledgeBaseApi,
14
+ LogsApi,
15
+ OrganizationApi,
16
+ UserApi,
17
+ ApiResponse,
18
+ ApiClient,
19
+ Configuration,
20
+ OpenApiException,
21
+ ApiTypeError,
22
+ ApiValueError,
23
+ ApiKeyError,
24
+ ApiAttributeError,
25
+ ApiException,
26
+ AgentDTO,
27
+ AgentDTOLanguage,
28
+ AgentDTOSynthesizer,
29
+ AgentDTOSynthesizerVoiceConfig,
30
+ BadRequestErrorResponse,
31
+ AgentFromTemplatePost200Response,
32
+ CreateAgentFromTemplateRequest,
33
+ CreateAgentRequest,
34
+ CreateAgentRequestLanguage,
35
+ CreateAgentRequestLanguageSynthesizer,
36
+ CreateAgentRequestLanguageSynthesizerVoiceConfig,
37
+ CampaignPost201Response,
38
+ CampaignPostRequest,
39
+ CampaignGetRequest,
40
+ AgentIdDelete200Response,
41
+ AgentIdGet200Response,
42
+ AgentTemplateGet200Response,
43
+ AgentTemplateGet200ResponseDataInner,
44
+ AgentGet200Response,
45
+ CampaignIdGet200Response,
46
+ CampaignGet200Response,
47
+ ConversationIdGet200Response,
48
+ ConversationIdGet200ResponseData,
49
+ UserGet200Response,
50
+ UserGet200ResponseData,
51
+ KnowledgebaseIdGet200Response,
52
+ KnowledgebasePost201Response,
53
+ KnowledgebasePostRequest,
54
+ KnowledgebaseIdItemsUploadTextPostRequest,
55
+ OrganizationGet200Response,
56
+ OrganizationGet200ResponseData,
57
+ OrganizationGet200ResponseDataMembersInner,
58
+ OrganizationGet200ResponseDataSubscription,
59
+ InternalServerErrorResponse,
60
+ ConversationOutboundPost200Response,
61
+ ConversationOutboundPost200ResponseData,
62
+ ConversationOutboundPostRequest,
63
+ UnauthorizedErrorReponse,
64
+ AgentIdPatch200Response,
65
+ AgentIdPatchRequest,
66
+ AgentIdPatchRequestLanguage,
67
+ AgentIdPatchRequestSynthesizer,
68
+ AgentIdPatchRequestSynthesizerVoiceConfig,
69
+ AgentIdPatchRequestSynthesizerVoiceConfigOneOf,
70
+ AgentIdPatchRequestSynthesizerVoiceConfigOneOf1,
71
+ AtomsClient
72
+ )
73
+
74
+ from smallestai.waves import (
75
+ WavesClient,
76
+ AsyncWavesClient,
77
+ WavesStreamingTTS
78
+ )
79
+
80
+ from smallestai.atoms import __all__ as atoms_all
81
+ from smallestai.waves import __all__ as waves_all
82
+
83
+ __all__ = atoms_all + waves_all
84
+
85
+ __version__ = "4.0.1"
@@ -0,0 +1,319 @@
1
+ # coding: utf-8
2
+
3
+ # flake8: noqa
4
+
5
+ """
6
+ Agent Management API
7
+
8
+ API for managing agents, their templates, and call logs
9
+
10
+ The version of the OpenAPI document: 1.0.0
11
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
12
+
13
+ Do not edit the class manually.
14
+ """ # noqa: E501
15
+
16
+
17
+ # import apis into sdk package
18
+ from smallestai.atoms.api.agent_templates_api import AgentTemplatesApi
19
+ from smallestai.atoms.api.agents_api import AgentsApi
20
+ from smallestai.atoms.api.calls_api import CallsApi
21
+ from smallestai.atoms.api.campaigns_api import CampaignsApi
22
+ from smallestai.atoms.api.knowledge_base_api import KnowledgeBaseApi
23
+ from smallestai.atoms.api.logs_api import LogsApi
24
+ from smallestai.atoms.api.organization_api import OrganizationApi
25
+ from smallestai.atoms.api.user_api import UserApi
26
+
27
+ # import ApiClient
28
+ from smallestai.atoms.api_response import ApiResponse
29
+ from smallestai.atoms.api_client import ApiClient
30
+ from smallestai.atoms.configuration import Configuration
31
+ from smallestai.atoms.exceptions import OpenApiException
32
+ from smallestai.atoms.exceptions import ApiTypeError
33
+ from smallestai.atoms.exceptions import ApiValueError
34
+ from smallestai.atoms.exceptions import ApiKeyError
35
+ from smallestai.atoms.exceptions import ApiAttributeError
36
+ from smallestai.atoms.exceptions import ApiException
37
+ from smallestai.atoms.atoms_client import AtomsClient
38
+
39
+ # import models into sdk package
40
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_delete200_response import AgentAgentIdWebhookSubscriptionsDelete200Response
41
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_get200_response import AgentAgentIdWebhookSubscriptionsGet200Response
42
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_get404_response import AgentAgentIdWebhookSubscriptionsGet404Response
43
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_post201_response import AgentAgentIdWebhookSubscriptionsPost201Response
44
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_post400_response import AgentAgentIdWebhookSubscriptionsPost400Response
45
+ from smallestai.atoms.models.agent_agent_id_webhook_subscriptions_post_request import AgentAgentIdWebhookSubscriptionsPostRequest
46
+ from smallestai.atoms.models.agent_dto import AgentDTO
47
+ from smallestai.atoms.models.agent_dto_language import AgentDTOLanguage
48
+ from smallestai.atoms.models.agent_dto_synthesizer import AgentDTOSynthesizer
49
+ from smallestai.atoms.models.agent_dto_synthesizer_voice_config import AgentDTOSynthesizerVoiceConfig
50
+ from smallestai.atoms.models.agent_from_template_post200_response import AgentFromTemplatePost200Response
51
+ from smallestai.atoms.models.agent_get200_response import AgentGet200Response
52
+ from smallestai.atoms.models.agent_id_delete200_response import AgentIdDelete200Response
53
+ from smallestai.atoms.models.agent_id_get200_response import AgentIdGet200Response
54
+ from smallestai.atoms.models.agent_id_patch200_response import AgentIdPatch200Response
55
+ from smallestai.atoms.models.agent_id_patch_request import AgentIdPatchRequest
56
+ from smallestai.atoms.models.agent_id_patch_request_language import AgentIdPatchRequestLanguage
57
+ from smallestai.atoms.models.agent_id_patch_request_synthesizer import AgentIdPatchRequestSynthesizer
58
+ from smallestai.atoms.models.agent_id_patch_request_synthesizer_voice_config import AgentIdPatchRequestSynthesizerVoiceConfig
59
+ from smallestai.atoms.models.agent_id_patch_request_synthesizer_voice_config_one_of import AgentIdPatchRequestSynthesizerVoiceConfigOneOf
60
+ from smallestai.atoms.models.agent_id_patch_request_synthesizer_voice_config_one_of1 import AgentIdPatchRequestSynthesizerVoiceConfigOneOf1
61
+ from smallestai.atoms.models.agent_id_workflow_get200_response import AgentIdWorkflowGet200Response
62
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data import AgentIdWorkflowGet200ResponseData
63
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_edges_inner import AgentIdWorkflowGet200ResponseDataEdgesInner
64
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_edges_inner_data import AgentIdWorkflowGet200ResponseDataEdgesInnerData
65
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_edges_inner_marker_end import AgentIdWorkflowGet200ResponseDataEdgesInnerMarkerEnd
66
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_nodes_inner import AgentIdWorkflowGet200ResponseDataNodesInner
67
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_nodes_inner_data import AgentIdWorkflowGet200ResponseDataNodesInnerData
68
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_nodes_inner_data_variables import AgentIdWorkflowGet200ResponseDataNodesInnerDataVariables
69
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_nodes_inner_data_variables_data_inner import AgentIdWorkflowGet200ResponseDataNodesInnerDataVariablesDataInner
70
+ from smallestai.atoms.models.agent_id_workflow_get200_response_data_nodes_inner_position import AgentIdWorkflowGet200ResponseDataNodesInnerPosition
71
+ from smallestai.atoms.models.agent_id_workflow_get404_response import AgentIdWorkflowGet404Response
72
+ from smallestai.atoms.models.agent_template_get200_response import AgentTemplateGet200Response
73
+ from smallestai.atoms.models.agent_template_get200_response_data_inner import AgentTemplateGet200ResponseDataInner
74
+ from smallestai.atoms.models.api_response import ApiResponse
75
+ from smallestai.atoms.models.audience_get200_response import AudienceGet200Response
76
+ from smallestai.atoms.models.audience_get200_response_data_inner import AudienceGet200ResponseDataInner
77
+ from smallestai.atoms.models.audience_id_delete200_response import AudienceIdDelete200Response
78
+ from smallestai.atoms.models.audience_id_delete400_response import AudienceIdDelete400Response
79
+ from smallestai.atoms.models.audience_id_get200_response import AudienceIdGet200Response
80
+ from smallestai.atoms.models.audience_id_get400_response import AudienceIdGet400Response
81
+ from smallestai.atoms.models.audience_id_get403_response import AudienceIdGet403Response
82
+ from smallestai.atoms.models.audience_id_get404_response import AudienceIdGet404Response
83
+ from smallestai.atoms.models.audience_id_members_delete200_response import AudienceIdMembersDelete200Response
84
+ from smallestai.atoms.models.audience_id_members_delete200_response_data import AudienceIdMembersDelete200ResponseData
85
+ from smallestai.atoms.models.audience_id_members_delete_request import AudienceIdMembersDeleteRequest
86
+ from smallestai.atoms.models.audience_id_members_get200_response import AudienceIdMembersGet200Response
87
+ from smallestai.atoms.models.audience_id_members_get200_response_data import AudienceIdMembersGet200ResponseData
88
+ from smallestai.atoms.models.audience_id_members_get200_response_data_members_inner import AudienceIdMembersGet200ResponseDataMembersInner
89
+ from smallestai.atoms.models.audience_id_members_get400_response import AudienceIdMembersGet400Response
90
+ from smallestai.atoms.models.audience_id_members_get500_response import AudienceIdMembersGet500Response
91
+ from smallestai.atoms.models.audience_id_members_post200_response import AudienceIdMembersPost200Response
92
+ from smallestai.atoms.models.audience_id_members_post200_response_data_inner import AudienceIdMembersPost200ResponseDataInner
93
+ from smallestai.atoms.models.audience_id_members_post200_response_data_inner_data import AudienceIdMembersPost200ResponseDataInnerData
94
+ from smallestai.atoms.models.audience_id_members_post400_response import AudienceIdMembersPost400Response
95
+ from smallestai.atoms.models.audience_id_members_post403_response import AudienceIdMembersPost403Response
96
+ from smallestai.atoms.models.audience_id_members_post_request import AudienceIdMembersPostRequest
97
+ from smallestai.atoms.models.audience_id_members_search_get200_response import AudienceIdMembersSearchGet200Response
98
+ from smallestai.atoms.models.audience_id_members_search_get200_response_data import AudienceIdMembersSearchGet200ResponseData
99
+ from smallestai.atoms.models.audience_id_members_search_get200_response_data_search_info import AudienceIdMembersSearchGet200ResponseDataSearchInfo
100
+ from smallestai.atoms.models.audience_id_members_search_get400_response import AudienceIdMembersSearchGet400Response
101
+ from smallestai.atoms.models.audience_id_members_search_get500_response import AudienceIdMembersSearchGet500Response
102
+ from smallestai.atoms.models.audience_post200_response import AudiencePost200Response
103
+ from smallestai.atoms.models.audience_post200_response_data import AudiencePost200ResponseData
104
+ from smallestai.atoms.models.audience_post400_response import AudiencePost400Response
105
+ from smallestai.atoms.models.bad_request_error_response import BadRequestErrorResponse
106
+ from smallestai.atoms.models.campaign_get200_response import CampaignGet200Response
107
+ from smallestai.atoms.models.campaign_get200_response_data import CampaignGet200ResponseData
108
+ from smallestai.atoms.models.campaign_get_request import CampaignGetRequest
109
+ from smallestai.atoms.models.campaign_id_get200_response import CampaignIdGet200Response
110
+ from smallestai.atoms.models.campaign_post201_response import CampaignPost201Response
111
+ from smallestai.atoms.models.campaign_post_request import CampaignPostRequest
112
+ from smallestai.atoms.models.conversation_id_get200_response import ConversationIdGet200Response
113
+ from smallestai.atoms.models.conversation_id_get200_response_data import ConversationIdGet200ResponseData
114
+ from smallestai.atoms.models.conversation_outbound_post200_response import ConversationOutboundPost200Response
115
+ from smallestai.atoms.models.conversation_outbound_post200_response_data import ConversationOutboundPost200ResponseData
116
+ from smallestai.atoms.models.conversation_outbound_post_request import ConversationOutboundPostRequest
117
+ from smallestai.atoms.models.create_agent_from_template_request import CreateAgentFromTemplateRequest
118
+ from smallestai.atoms.models.create_agent_request import CreateAgentRequest
119
+ from smallestai.atoms.models.create_agent_request_language import CreateAgentRequestLanguage
120
+ from smallestai.atoms.models.create_agent_request_language_synthesizer import CreateAgentRequestLanguageSynthesizer
121
+ from smallestai.atoms.models.create_agent_request_language_synthesizer_voice_config import CreateAgentRequestLanguageSynthesizerVoiceConfig
122
+ from smallestai.atoms.models.internal_server_error_response import InternalServerErrorResponse
123
+ from smallestai.atoms.models.knowledge_base import KnowledgeBase
124
+ from smallestai.atoms.models.knowledge_base_item import KnowledgeBaseItem
125
+ from smallestai.atoms.models.knowledgebase_get200_response import KnowledgebaseGet200Response
126
+ from smallestai.atoms.models.knowledgebase_id_get200_response import KnowledgebaseIdGet200Response
127
+ from smallestai.atoms.models.knowledgebase_id_items_get200_response import KnowledgebaseIdItemsGet200Response
128
+ from smallestai.atoms.models.knowledgebase_id_items_upload_text_post_request import KnowledgebaseIdItemsUploadTextPostRequest
129
+ from smallestai.atoms.models.knowledgebase_post201_response import KnowledgebasePost201Response
130
+ from smallestai.atoms.models.knowledgebase_post_request import KnowledgebasePostRequest
131
+ from smallestai.atoms.models.organization_get200_response import OrganizationGet200Response
132
+ from smallestai.atoms.models.organization_get200_response_data import OrganizationGet200ResponseData
133
+ from smallestai.atoms.models.organization_get200_response_data_members_inner import OrganizationGet200ResponseDataMembersInner
134
+ from smallestai.atoms.models.organization_get200_response_data_subscription import OrganizationGet200ResponseDataSubscription
135
+ from smallestai.atoms.models.product_phone_numbers_get200_response import ProductPhoneNumbersGet200Response
136
+ from smallestai.atoms.models.product_phone_numbers_get200_response_data_inner import ProductPhoneNumbersGet200ResponseDataInner
137
+ from smallestai.atoms.models.product_phone_numbers_get200_response_data_inner_attributes import ProductPhoneNumbersGet200ResponseDataInnerAttributes
138
+ from smallestai.atoms.models.unauthorized_error_reponse import UnauthorizedErrorReponse
139
+ from smallestai.atoms.models.user_get200_response import UserGet200Response
140
+ from smallestai.atoms.models.user_get200_response_data import UserGet200ResponseData
141
+ from smallestai.atoms.models.webhook import Webhook
142
+ from smallestai.atoms.models.webhook_agent import WebhookAgent
143
+ from smallestai.atoms.models.webhook_event import WebhookEvent
144
+ from smallestai.atoms.models.webhook_get200_response import WebhookGet200Response
145
+ from smallestai.atoms.models.webhook_get200_response_data import WebhookGet200ResponseData
146
+ from smallestai.atoms.models.webhook_id_delete404_response import WebhookIdDelete404Response
147
+ from smallestai.atoms.models.webhook_post201_response import WebhookPost201Response
148
+ from smallestai.atoms.models.webhook_post_request import WebhookPostRequest
149
+ from smallestai.atoms.models.webhook_post_request_events_inner import WebhookPostRequestEventsInner
150
+ from smallestai.atoms.models.webhook_subscription import WebhookSubscription
151
+ from smallestai.atoms.models.webhook_subscription_populated import WebhookSubscriptionPopulated
152
+
153
+ # Modular Classes
154
+ from smallestai.atoms.call import Call
155
+ from smallestai.atoms.audience import Audience
156
+ from smallestai.atoms.campaign import Campaign
157
+ from smallestai.atoms.kb import KB
158
+
159
+ __all__ = [
160
+ # API Classes
161
+ "AgentTemplatesApi",
162
+ "AgentsApi",
163
+ "CallsApi",
164
+ "CampaignsApi",
165
+ "KnowledgeBaseApi",
166
+ "LogsApi",
167
+ "OrganizationApi",
168
+ "UserApi",
169
+
170
+ # Core Classes
171
+ "ApiResponse",
172
+ "ApiClient",
173
+ "Configuration",
174
+ "Configuration",
175
+ "AtomsClient",
176
+ "Call",
177
+ "Audience",
178
+ "Campaign",
179
+ "KB",
180
+
181
+ # Exceptions
182
+ "OpenApiException",
183
+ "ApiTypeError",
184
+ "ApiValueError",
185
+ "ApiKeyError",
186
+ "ApiAttributeError",
187
+ "ApiException",
188
+
189
+ # Agent Models
190
+ "AgentDTO",
191
+ "AgentDTOLanguage",
192
+ "AgentDTOSynthesizer",
193
+ "AgentDTOSynthesizerVoiceConfig",
194
+ "AgentFromTemplatePost200Response",
195
+ "AgentGet200Response",
196
+ "AgentIdDelete200Response",
197
+ "AgentIdGet200Response",
198
+ "AgentIdPatch200Response",
199
+ "AgentIdPatchRequest",
200
+ "AgentIdPatchRequestLanguage",
201
+ "AgentIdPatchRequestSynthesizer",
202
+ "AgentIdPatchRequestSynthesizerVoiceConfig",
203
+ "AgentIdPatchRequestSynthesizerVoiceConfigOneOf",
204
+ "AgentIdPatchRequestSynthesizerVoiceConfigOneOf1",
205
+ "AgentIdWorkflowGet200Response",
206
+ "AgentIdWorkflowGet200ResponseData",
207
+ "AgentIdWorkflowGet200ResponseDataEdgesInner",
208
+ "AgentIdWorkflowGet200ResponseDataEdgesInnerData",
209
+ "AgentIdWorkflowGet200ResponseDataEdgesInnerMarkerEnd",
210
+ "AgentIdWorkflowGet200ResponseDataNodesInner",
211
+ "AgentIdWorkflowGet200ResponseDataNodesInnerData",
212
+ "AgentIdWorkflowGet200ResponseDataNodesInnerDataVariables",
213
+ "AgentIdWorkflowGet200ResponseDataNodesInnerDataVariablesDataInner",
214
+ "AgentIdWorkflowGet200ResponseDataNodesInnerPosition",
215
+ "AgentIdWorkflowGet404Response",
216
+ "AgentTemplateGet200Response",
217
+ "AgentTemplateGet200ResponseDataInner",
218
+ "CreateAgentFromTemplateRequest",
219
+ "CreateAgentRequest",
220
+ "CreateAgentRequestLanguage",
221
+ "CreateAgentRequestLanguageSynthesizer",
222
+ "CreateAgentRequestLanguageSynthesizerVoiceConfig",
223
+
224
+ # Webhook Models
225
+ "AgentAgentIdWebhookSubscriptionsDelete200Response",
226
+ "AgentAgentIdWebhookSubscriptionsGet200Response",
227
+ "AgentAgentIdWebhookSubscriptionsGet404Response",
228
+ "AgentAgentIdWebhookSubscriptionsPost201Response",
229
+ "AgentAgentIdWebhookSubscriptionsPost400Response",
230
+ "AgentAgentIdWebhookSubscriptionsPostRequest",
231
+ "Webhook",
232
+ "WebhookAgent",
233
+ "WebhookEvent",
234
+ "WebhookGet200Response",
235
+ "WebhookGet200ResponseData",
236
+ "WebhookIdDelete404Response",
237
+ "WebhookPost201Response",
238
+ "WebhookPostRequest",
239
+ "WebhookPostRequestEventsInner",
240
+ "WebhookSubscription",
241
+ "WebhookSubscriptionPopulated",
242
+
243
+ # Audience Models
244
+ "AudienceGet200Response",
245
+ "AudienceGet200ResponseDataInner",
246
+ "AudienceIdDelete200Response",
247
+ "AudienceIdDelete400Response",
248
+ "AudienceIdGet200Response",
249
+ "AudienceIdGet400Response",
250
+ "AudienceIdGet403Response",
251
+ "AudienceIdGet404Response",
252
+ "AudienceIdMembersDelete200Response",
253
+ "AudienceIdMembersDelete200ResponseData",
254
+ "AudienceIdMembersDeleteRequest",
255
+ "AudienceIdMembersGet200Response",
256
+ "AudienceIdMembersGet200ResponseData",
257
+ "AudienceIdMembersGet200ResponseDataMembersInner",
258
+ "AudienceIdMembersGet400Response",
259
+ "AudienceIdMembersGet500Response",
260
+ "AudienceIdMembersPost200Response",
261
+ "AudienceIdMembersPost200ResponseDataInner",
262
+ "AudienceIdMembersPost200ResponseDataInnerData",
263
+ "AudienceIdMembersPost400Response",
264
+ "AudienceIdMembersPost403Response",
265
+ "AudienceIdMembersPostRequest",
266
+ "AudienceIdMembersSearchGet200Response",
267
+ "AudienceIdMembersSearchGet200ResponseData",
268
+ "AudienceIdMembersSearchGet200ResponseDataSearchInfo",
269
+ "AudienceIdMembersSearchGet400Response",
270
+ "AudienceIdMembersSearchGet500Response",
271
+ "AudiencePost200Response",
272
+ "AudiencePost200ResponseData",
273
+ "AudiencePost400Response",
274
+
275
+ # Campaign Models
276
+ "CampaignGet200Response",
277
+ "CampaignGet200ResponseData",
278
+ "CampaignGetRequest",
279
+ "CampaignIdGet200Response",
280
+ "CampaignPost201Response",
281
+ "CampaignPostRequest",
282
+
283
+ # Conversation Models
284
+ "ConversationIdGet200Response",
285
+ "ConversationIdGet200ResponseData",
286
+ "ConversationOutboundPost200Response",
287
+ "ConversationOutboundPost200ResponseData",
288
+ "ConversationOutboundPostRequest",
289
+
290
+ # Knowledge Base Models
291
+ "KnowledgeBase",
292
+ "KnowledgeBaseItem",
293
+ "KnowledgebaseGet200Response",
294
+ "KnowledgebaseIdGet200Response",
295
+ "KnowledgebaseIdItemsGet200Response",
296
+ "KnowledgebaseIdItemsUploadTextPostRequest",
297
+ "KnowledgebasePost201Response",
298
+ "KnowledgebasePostRequest",
299
+
300
+ # Organization Models
301
+ "OrganizationGet200Response",
302
+ "OrganizationGet200ResponseData",
303
+ "OrganizationGet200ResponseDataMembersInner",
304
+ "OrganizationGet200ResponseDataSubscription",
305
+
306
+ # Phone Numbers Models
307
+ "ProductPhoneNumbersGet200Response",
308
+ "ProductPhoneNumbersGet200ResponseDataInner",
309
+ "ProductPhoneNumbersGet200ResponseDataInnerAttributes",
310
+
311
+ # User Models
312
+ "UserGet200Response",
313
+ "UserGet200ResponseData",
314
+
315
+ # Error Response Models
316
+ "BadRequestErrorResponse",
317
+ "InternalServerErrorResponse",
318
+ "UnauthorizedErrorReponse",
319
+ ]
@@ -0,0 +1,21 @@
1
+ """
2
+ LLM clients for atoms-sdk.
3
+
4
+ Standalone clients that can be used in any node for making LLM API calls.
5
+ """
6
+
7
+ from smallestai.atoms.agent.clients.openai import OpenAIClient
8
+ from smallestai.atoms.agent.clients.types import (
9
+ ChatChunk,
10
+ ChatResponse,
11
+ ToolCall,
12
+ ToolResult,
13
+ )
14
+
15
+ __all__ = [
16
+ "OpenAIClient",
17
+ "ChatChunk",
18
+ "ChatResponse",
19
+ "ToolCall",
20
+ "ToolResult",
21
+ ]
@@ -0,0 +1,41 @@
1
+ """
2
+ Base client interface for LLM providers.
3
+
4
+ Defines the common interface that all LLM clients should implement.
5
+ """
6
+
7
+ from abc import ABC, abstractmethod
8
+ from typing import Any, AsyncIterator, Dict, List, Optional, Union
9
+
10
+ from smallestai.atoms.agent.clients.types import ChatChunk, ChatResponse
11
+
12
+
13
+ class BaseLLMClient(ABC):
14
+ """Base interface for LLM clients."""
15
+
16
+ @abstractmethod
17
+ async def chat(
18
+ self,
19
+ messages: List[Dict[str, Any]],
20
+ stream: bool = False,
21
+ tools: Optional[List[Dict[str, Any]]] = None,
22
+ **kwargs: Any,
23
+ ) -> Union[ChatResponse, AsyncIterator[ChatChunk]]:
24
+ """
25
+ Make a chat completion request.
26
+
27
+ Args:
28
+ messages: Chat messages in OpenAI format
29
+ stream: Whether to stream response
30
+ tools: Tool/function definitions
31
+ **kwargs: Provider-specific parameters
32
+
33
+ Returns:
34
+ ChatResponse for non-streaming, AsyncIterator[ChatChunk] for streaming
35
+ """
36
+ pass
37
+
38
+ @abstractmethod
39
+ async def aclose(self):
40
+ """Close client and cleanup resources."""
41
+ pass