swarms 7.6.1__py3-none-any.whl → 7.6.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. swarms/__init__.py +1 -0
  2. swarms/agents/__init__.py +4 -5
  3. swarms/agents/flexion_agent.py +2 -1
  4. swarms/agents/reasoning_agents.py +10 -0
  5. swarms/client/__init__.py +15 -0
  6. swarms/prompts/multi_agent_collab_prompt.py +313 -0
  7. swarms/structs/__init__.py +10 -17
  8. swarms/structs/agent.py +178 -262
  9. swarms/structs/base_swarm.py +0 -7
  10. swarms/structs/concurrent_workflow.py +2 -2
  11. swarms/structs/conversation.py +16 -2
  12. swarms/structs/de_hallucination_swarm.py +8 -4
  13. swarms/structs/dynamic_conversational_swarm.py +226 -0
  14. swarms/structs/groupchat.py +80 -84
  15. swarms/structs/hiearchical_swarm.py +1 -1
  16. swarms/structs/hybrid_hiearchical_peer_swarm.py +256 -0
  17. swarms/structs/majority_voting.py +1 -1
  18. swarms/structs/mixture_of_agents.py +1 -1
  19. swarms/structs/multi_agent_exec.py +63 -139
  20. swarms/structs/multi_agent_orchestrator.py +1 -1
  21. swarms/structs/output_types.py +3 -0
  22. swarms/structs/rearrange.py +66 -205
  23. swarms/structs/sequential_workflow.py +34 -47
  24. swarms/structs/swarm_router.py +3 -2
  25. swarms/telemetry/bootup.py +19 -38
  26. swarms/telemetry/main.py +62 -22
  27. swarms/tools/tool_schema_base_model.py +57 -0
  28. swarms/utils/auto_download_check_packages.py +2 -2
  29. swarms/utils/disable_logging.py +0 -17
  30. swarms/utils/history_output_formatter.py +8 -3
  31. swarms/utils/litellm_wrapper.py +117 -1
  32. {swarms-7.6.1.dist-info → swarms-7.6.4.dist-info}/METADATA +1 -5
  33. {swarms-7.6.1.dist-info → swarms-7.6.4.dist-info}/RECORD +37 -37
  34. swarms/structs/agent_security.py +0 -318
  35. swarms/structs/airflow_swarm.py +0 -430
  36. swarms/structs/output_type.py +0 -18
  37. swarms/utils/agent_ops_check.py +0 -26
  38. swarms/utils/pandas_utils.py +0 -92
  39. /swarms/{structs/swarms_api.py → client/main.py} +0 -0
  40. {swarms-7.6.1.dist-info → swarms-7.6.4.dist-info}/LICENSE +0 -0
  41. {swarms-7.6.1.dist-info → swarms-7.6.4.dist-info}/WHEEL +0 -0
  42. {swarms-7.6.1.dist-info → swarms-7.6.4.dist-info}/entry_points.txt +0 -0
swarms/telemetry/main.py CHANGED
@@ -1,11 +1,14 @@
1
+ import datetime
1
2
  import hashlib
2
- import os
3
3
  import platform
4
4
  import socket
5
5
  import subprocess
6
+ import threading
6
7
  import uuid
7
8
  from typing import Dict
8
9
 
10
+ import aiohttp
11
+ import httpx
9
12
  import pkg_resources
10
13
  import psutil
11
14
  import requests
@@ -263,9 +266,8 @@ def capture_system_data() -> Dict[str, str]:
263
266
  return {}
264
267
 
265
268
 
266
- def log_agent_data(data_dict: dict) -> dict | None:
269
+ def _log_agent_data(data_dict: dict) -> dict | None:
267
270
  """
268
- Silently logs agent data to the Swarms database with retry logic.
269
271
 
270
272
  Args:
271
273
  data_dict (dict): The dictionary containing the agent data to be logged.
@@ -274,29 +276,67 @@ def log_agent_data(data_dict: dict) -> dict | None:
274
276
  dict | None: The JSON response from the server if successful, otherwise None.
275
277
  """
276
278
  if not data_dict:
277
- return None # Immediately exit if the input is empty
279
+ return None
278
280
 
279
281
  url = "https://swarms.world/api/get-agents/log-agents"
280
282
  headers = {
281
283
  "Content-Type": "application/json",
282
- "Authorization": os.getenv("SWARMS_API_KEY"),
284
+ "Authorization": "sk-xxx", # replace with actual
285
+ }
286
+
287
+ payload = {
288
+ "data": data_dict,
289
+ "system_data": get_user_device_data(),
290
+ "timestamp": datetime.datetime.now(datetime.UTC).isoformat(),
283
291
  }
284
292
 
285
293
  try:
286
- response = requests.post(
287
- url, json=data_dict, headers=headers, timeout=10
288
- )
289
- if (
290
- response.ok and response.text.strip()
291
- ): # Check if response is valid and non-empty
292
- return (
293
- response.json()
294
- ) # Parse and return the JSON response
295
- except (
296
- requests.exceptions.RequestException,
297
- requests.exceptions.JSONDecodeError,
298
- ):
299
- return None # Return None if anything goes wrong
300
-
301
-
302
- # print(log_agent_data(get_user_device_data()))
294
+ with httpx.Client(http2=True, timeout=3.0) as client:
295
+ response = client.post(url, json=payload, headers=headers)
296
+ if response.status_code == 200 and response.content:
297
+ return response.json()
298
+ except Exception:
299
+ pass
300
+
301
+
302
+ def log_agent_data(data_dict: dict) -> None:
303
+ """Runs log_agent_data in a separate thread (detached from main thread)."""
304
+ threading.Thread(
305
+ target=_log_agent_data, args=(data_dict,), daemon=True
306
+ ).start()
307
+
308
+
309
+ async def async_log_agent_data(data_dict: dict) -> dict | None:
310
+ """
311
+
312
+ Args:
313
+ data_dict (dict): The dictionary containing the agent data to be logged.
314
+
315
+ Returns:
316
+ dict | None: The JSON response from the server if successful, otherwise None.
317
+ """
318
+ if not data_dict:
319
+ return None # Immediately exit if the input is empty
320
+
321
+ url = "https://swarms.world/api/get-agents/log-agents"
322
+ headers = {
323
+ "Content-Type": "application/json",
324
+ "Authorization": "sk-33979fd9a4e8e6b670090e4900a33dbe7452a15ccc705745f4eca2a70c88ea24",
325
+ }
326
+
327
+ data_input = {
328
+ "data": data_dict,
329
+ "system_data": get_user_device_data(),
330
+ "timestamp": datetime.datetime.now(datetime.UTC).isoformat(),
331
+ }
332
+
333
+ async with aiohttp.ClientSession() as session:
334
+ try:
335
+ async with session.post(
336
+ url, json=data_input, headers=headers, timeout=10
337
+ ) as response:
338
+ if response.ok and await response.text():
339
+ out = await response.json()
340
+ return out
341
+ except Exception:
342
+ pass
@@ -0,0 +1,57 @@
1
+ from typing import Any, Dict, List, Optional
2
+ from pydantic import BaseModel
3
+
4
+
5
+ class PropertySchema(BaseModel):
6
+ type: str
7
+ description: Optional[str] = None
8
+ enum: Optional[List[str]] = None
9
+ items: Optional[Dict[str, Any]] = None
10
+ properties: Optional[Dict[str, "PropertySchema"]] = None
11
+ required: Optional[List[str]] = None
12
+
13
+
14
+ class ParameterSchema(BaseModel):
15
+ type: str
16
+ properties: Dict[str, PropertySchema]
17
+ required: Optional[List[str]] = None
18
+
19
+
20
+ class FunctionDefinition(BaseModel):
21
+ name: str
22
+ description: str
23
+ parameters: ParameterSchema
24
+
25
+
26
+ class Tool(BaseModel):
27
+ type: str
28
+ function: FunctionDefinition
29
+
30
+
31
+ class ToolSet(BaseModel):
32
+ tools: List[Tool]
33
+
34
+
35
+ # model = ToolSet(
36
+ # tools=[
37
+ # Tool(
38
+ # type="function",
39
+ # function=FunctionDefinition(
40
+ # name="test",
41
+ # description="test",
42
+ # parameters=ParameterSchema(
43
+ # type="object",
44
+ # properties={
45
+ # "weather_tool": PropertySchema(
46
+ # type="string",
47
+ # description="Get the weather in a given location",
48
+ # )
49
+ # },
50
+ # required=["weather_tool"],
51
+ # ),
52
+ # ),
53
+ # ),
54
+ # ]
55
+ # )
56
+
57
+ # print(model.model_dump_json(indent=4))
@@ -146,5 +146,5 @@ def auto_check_and_download_package(
146
146
  return success
147
147
 
148
148
 
149
- if __name__ == "__main__":
150
- print(auto_check_and_download_package("torch"))
149
+ # if __name__ == "__main__":
150
+ # print(auto_check_and_download_package("torch"))
@@ -5,20 +5,6 @@ import warnings
5
5
  from threading import Thread
6
6
 
7
7
 
8
- def disable_langchain():
9
- """
10
- Disables the LangChain deprecation warning.
11
- """
12
- from langchain_core._api.deprecation import (
13
- LangChainDeprecationWarning,
14
- )
15
-
16
- # Ignore LangChainDeprecationWarning
17
- warnings.filterwarnings(
18
- "ignore", category=LangChainDeprecationWarning
19
- )
20
-
21
-
22
8
  def disable_logging():
23
9
  """
24
10
  Disables logging for specific modules and sets up file and stream handlers.
@@ -47,7 +33,6 @@ def disable_logging():
47
33
  "numexpr",
48
34
  "git",
49
35
  "wandb.docker.auth",
50
- "langchain",
51
36
  "distutils",
52
37
  "urllib3",
53
38
  "elasticsearch",
@@ -80,8 +65,6 @@ def disable_logging():
80
65
  stream_handler.setLevel(logging.ERROR)
81
66
  logging.getLogger().addHandler(stream_handler)
82
67
 
83
- disable_langchain()
84
-
85
68
 
86
69
  def set_logger_level(logger_name: str) -> None:
87
70
  """
@@ -1,3 +1,4 @@
1
+ import yaml
1
2
  from swarms.structs.conversation import Conversation
2
3
 
3
4
 
@@ -6,13 +7,17 @@ def history_output_formatter(
6
7
  ):
7
8
  if type == "list":
8
9
  return conversation.return_messages_as_list()
9
- elif type == "dict":
10
+ elif type == "dict" or type == "dictionary":
10
11
  return conversation.to_dict()
11
12
  elif type == "string" or type == "str":
12
13
  return conversation.get_str()
13
- elif type == "final":
14
- return conversation.get_final_message()
14
+ elif type == "final" or type == "last":
15
+ return conversation.get_final_message_content()
15
16
  elif type == "json":
16
17
  return conversation.to_json()
18
+ elif type == "all":
19
+ return conversation.get_str()
20
+ elif type == "yaml":
21
+ return yaml.safe_dump(conversation.to_dict(), sort_keys=False)
17
22
  else:
18
23
  raise ValueError(f"Invalid type: {type}")
@@ -1,3 +1,6 @@
1
+ import base64
2
+ import requests
3
+
1
4
  import asyncio
2
5
  from typing import List
3
6
 
@@ -24,6 +27,37 @@ except ImportError:
24
27
  litellm.ssl_verify = False
25
28
 
26
29
 
30
+ def get_audio_base64(audio_source: str) -> str:
31
+ """
32
+ Convert audio from a given source to a base64 encoded string.
33
+
34
+ This function handles both URLs and local file paths. If the audio source is a URL, it fetches the audio data
35
+ from the internet. If it is a local file path, it reads the audio data from the specified file.
36
+
37
+ Args:
38
+ audio_source (str): The source of the audio, which can be a URL or a local file path.
39
+
40
+ Returns:
41
+ str: A base64 encoded string representation of the audio data.
42
+
43
+ Raises:
44
+ requests.HTTPError: If the HTTP request to fetch audio data fails.
45
+ FileNotFoundError: If the local audio file does not exist.
46
+ """
47
+ # Handle URL
48
+ if audio_source.startswith(("http://", "https://")):
49
+ response = requests.get(audio_source)
50
+ response.raise_for_status()
51
+ audio_data = response.content
52
+ # Handle local file
53
+ else:
54
+ with open(audio_source, "rb") as file:
55
+ audio_data = file.read()
56
+
57
+ encoded_string = base64.b64encode(audio_data).decode("utf-8")
58
+ return encoded_string
59
+
60
+
27
61
  class LiteLLM:
28
62
  """
29
63
  This class represents a LiteLLM.
@@ -42,6 +76,7 @@ class LiteLLM:
42
76
  tools_list_dictionary: List[dict] = None,
43
77
  tool_choice: str = "auto",
44
78
  parallel_tool_calls: bool = False,
79
+ audio: str = None,
45
80
  *args,
46
81
  **kwargs,
47
82
  ):
@@ -65,6 +100,7 @@ class LiteLLM:
65
100
  self.tools_list_dictionary = tools_list_dictionary
66
101
  self.tool_choice = tool_choice
67
102
  self.parallel_tool_calls = parallel_tool_calls
103
+ self.modalities = ["text"]
68
104
 
69
105
  def _prepare_messages(self, task: str) -> list:
70
106
  """
@@ -87,7 +123,83 @@ class LiteLLM:
87
123
 
88
124
  return messages
89
125
 
90
- def run(self, task: str, *args, **kwargs):
126
+ def audio_processing(self, task: str, audio: str):
127
+ """
128
+ Process the audio for the given task.
129
+
130
+ Args:
131
+ task (str): The task to be processed.
132
+ audio (str): The path or identifier for the audio file.
133
+ """
134
+ self.modalities.append("audio")
135
+
136
+ encoded_string = get_audio_base64(audio)
137
+
138
+ # Append messages
139
+ self.messages.append(
140
+ {
141
+ "role": "user",
142
+ "content": [
143
+ {"type": "text", "text": task},
144
+ {
145
+ "type": "input_audio",
146
+ "input_audio": {
147
+ "data": encoded_string,
148
+ "format": "wav",
149
+ },
150
+ },
151
+ ],
152
+ }
153
+ )
154
+
155
+ def vision_processing(self, task: str, image: str):
156
+ """
157
+ Process the image for the given task.
158
+ """
159
+ self.modalities.append("vision")
160
+
161
+ # Append messages
162
+ self.messages.append(
163
+ {
164
+ "role": "user",
165
+ "content": [
166
+ {"type": "text", "text": task},
167
+ {
168
+ "type": "image_url",
169
+ "image_url": {
170
+ "url": image,
171
+ # "detail": "high"
172
+ # "format": "image",
173
+ },
174
+ },
175
+ ],
176
+ }
177
+ )
178
+
179
+ def handle_modalities(
180
+ self, task: str, audio: str = None, img: str = None
181
+ ):
182
+ """
183
+ Handle the modalities for the given task.
184
+ """
185
+ if audio is not None:
186
+ self.audio_processing(task=task, audio=audio)
187
+
188
+ if img is not None:
189
+ self.vision_processing(task=task, image=img)
190
+
191
+ if audio is not None and img is not None:
192
+ self.audio_processing(task=task, audio=audio)
193
+ self.vision_processing(task=task, image=img)
194
+
195
+ def run(
196
+ self,
197
+ task: str,
198
+ audio: str = None,
199
+ img: str = None,
200
+ *args,
201
+ **kwargs,
202
+ ):
91
203
  """
92
204
  Run the LLM model for the given task.
93
205
 
@@ -103,6 +215,8 @@ class LiteLLM:
103
215
 
104
216
  messages = self._prepare_messages(task)
105
217
 
218
+ self.handle_modalities(task=task, audio=audio, img=img)
219
+
106
220
  if self.tools_list_dictionary is not None:
107
221
  response = completion(
108
222
  model=self.model_name,
@@ -111,6 +225,7 @@ class LiteLLM:
111
225
  temperature=self.temperature,
112
226
  max_tokens=self.max_tokens,
113
227
  tools=self.tools_list_dictionary,
228
+ modalities=self.modalities,
114
229
  tool_choice=self.tool_choice,
115
230
  parallel_tool_calls=self.parallel_tool_calls,
116
231
  *args,
@@ -130,6 +245,7 @@ class LiteLLM:
130
245
  stream=self.stream,
131
246
  temperature=self.temperature,
132
247
  max_tokens=self.max_tokens,
248
+ modalities=self.modalities,
133
249
  *args,
134
250
  **kwargs,
135
251
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: swarms
3
- Version: 7.6.1
3
+ Version: 7.6.4
4
4
  Summary: Swarms - TGSC
5
5
  Home-page: https://github.com/kyegomez/swarms
6
6
  License: MIT
@@ -467,8 +467,6 @@ We provide vast array of features to save agent states using json, yaml, toml, u
467
467
  | `tokens_checks()` | Performs token checks for the agent. |
468
468
  | `print_dashboard()` | Prints the dashboard of the agent. |
469
469
  | `get_docs_from_doc_folders()` | Fetches all the documents from the doc folders. |
470
- | `activate_agentops()` | Activates agent operations. |
471
- | `check_end_session_agentops()` | Checks the end of the session for agent operations. |
472
470
 
473
471
 
474
472
 
@@ -520,8 +518,6 @@ agent.print_dashboard()
520
518
  agent.get_docs_from_doc_folders()
521
519
 
522
520
  # Activate agent ops
523
- agent.activate_agentops()
524
- agent.check_end_session_agentops()
525
521
 
526
522
  # Dump the model to a JSON file
527
523
  agent.model_dump_json()
@@ -1,16 +1,16 @@
1
- swarms/__init__.py,sha256=DDfir3E4H8z1PlQqpc2HzovJQtNvIAzye4Fs165J0o8,512
2
- swarms/agents/__init__.py,sha256=VHXOjvtKqNuSkZn4kH3o09jbrTM5dpK81R89ce8UxrM,1174
1
+ swarms/__init__.py,sha256=bc-57terLt5Uxlawsdq-ER6ukbVrxxWy8PEoG7VB5Ug,560
2
+ swarms/agents/__init__.py,sha256=ebUrX9rMccQokq5XthgnzGDMISn8EyQyOIOwVAlLs1E,1190
3
3
  swarms/agents/agent_judge.py,sha256=xT242CX5mV64cq2B-3RGkuEHiV5aD04P_Zq8_s64iMQ,3967
4
4
  swarms/agents/agent_print.py,sha256=SXqWA2ZzXwRFdv8hkuYwOPMTasvaGTG6U29413qRCAA,918
5
5
  swarms/agents/ape_agent.py,sha256=1kz_65LJgjLlY1yv2WLBeVMs7sP9BgEVWk0w1f67YLc,1563
6
6
  swarms/agents/auto_generate_swarm_config.py,sha256=7eJ873xS7PJmyreMaa5Uub8qFu-qIinuyMuogB2Ehjc,8474
7
7
  swarms/agents/consistency_agent.py,sha256=41h0yvnjzmKsE8-q4UsN0ckHP7WWmB5E_z64ec9QaJM,7414
8
8
  swarms/agents/create_agents_from_yaml.py,sha256=PgFIpuYZehxEl79BAK6TolSZwydDQzvGMAKhLsHuBbc,13008
9
- swarms/agents/flexion_agent.py,sha256=gVkQi5DDMLnYdyp2hkpgBnagDlMlKbnfnlWEaA8YrCo,21467
9
+ swarms/agents/flexion_agent.py,sha256=Agjq1rvTzboE8lT26-mcjp0tKQEjlUj_eVYsFjLIvN0,21468
10
10
  swarms/agents/gkp_agent.py,sha256=5Jms3zHQ2qwJ6-PHDh9X-cFtAlH4dSUoDgRqN-xZzog,21067
11
11
  swarms/agents/i_agent.py,sha256=_eKUcgPfiVqQpF5Q-Sv1tT-JZxIeNl9Fp7OrnjVUtz8,12276
12
12
  swarms/agents/openai_assistant.py,sha256=mTSEtj26J0mc5pCeWrmMY0EXzTRYQfyfw_BtOqtcCHc,11044
13
- swarms/agents/reasoning_agents.py,sha256=tDb7J6NPrkDtmjyeC8tyPqMDDmN3pqx-4wxtIuO7n48,5402
13
+ swarms/agents/reasoning_agents.py,sha256=tF7K710lj-VZQVc2VjqxMWGLNGMsEWRarXcJnXz1wkc,5741
14
14
  swarms/agents/reasoning_duo.py,sha256=s9SnXoproQaBrShLtiruGJituy8sJlZJATc5Vy_FdwI,3875
15
15
  swarms/agents/tool_agent.py,sha256=G7rhBACsHsGUMT4H9eF5aY7e3Gx-5jOmJkhCF1jm9mU,5087
16
16
  swarms/artifacts/__init__.py,sha256=M111xTw7IVVt8gLDwW7Kau5n1YdwkL3vbCJPVeEWktI,83
@@ -19,6 +19,8 @@ swarms/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  swarms/cli/create_agent.py,sha256=o2V6EDQN477MxUOm0wShlr4uNyPpPzqpJhGM5tiuWUU,1128
20
20
  swarms/cli/main.py,sha256=T9YsCrNIzvbQA8h5qlke-TbRP498Wu6R_KkAxRiabvs,15319
21
21
  swarms/cli/onboarding_process.py,sha256=3-2LKoLhjnaPbX9iiasqXPZZpqmwm-ZrXawH88M4BIU,6940
22
+ swarms/client/__init__.py,sha256=VASeCEYoZskTU3NOw5tQ22uc2_7gyK0oLsxG_WB20ys,268
23
+ swarms/client/main.py,sha256=f-RpvfKfRK2AaapkyPN2ihXJvIGN4JWB_A7pJu4WyiU,13735
22
24
  swarms/prompts/__init__.py,sha256=ZFcghAs4b0Rsjcc_DIFssiztZub5tJ66rxmJD2_tXpQ,747
23
25
  swarms/prompts/accountant_swarm_prompts.py,sha256=swceN1B0fZCOedd3-y3gjNOHDmR-3H5YK17ytp7tTDM,11320
24
26
  swarms/prompts/ag_prompt.py,sha256=_mydaflPh3kPpogqfObJ9UK5D8ySAGgtcO4BoNBN3LE,2658
@@ -44,6 +46,7 @@ swarms/prompts/idea2img.py,sha256=ZM-iD0ZFuqU2V1SY3V5Ds6ItTDd6JzQ4vpmz3faMzlM,88
44
46
  swarms/prompts/legal_agent_prompt.py,sha256=DhIroYuviqrU7cgKz6F8U2LNSBykLH57AZqoH5AfD0U,3346
45
47
  swarms/prompts/logistics.py,sha256=_XT_feYFgv-1IzHi5cPKuAp8xBjSX5KqwlPKh9xfK7E,4785
46
48
  swarms/prompts/meta_system_prompt.py,sha256=GOsWqtGfFezpKyg8c876Y-kCkWGI563iS2-0AaI__MI,3374
49
+ swarms/prompts/multi_agent_collab_prompt.py,sha256=kyGWhoy50j0IxUBvxWAEBMLbIE8UbNOqixqCNHH2oFs,12610
47
50
  swarms/prompts/multi_modal_autonomous_instruction_prompt.py,sha256=SHfaKs5Hj9sV4jgtVAFhv1N_N2e3jKwvdx_8G8-OdhM,10662
48
51
  swarms/prompts/multi_modal_prompts.py,sha256=yvE9_RAFTKU1QhN0rNOelrO7jn5fjDARpcKussbBc2c,3511
49
52
  swarms/prompts/multi_modal_visual_prompts.py,sha256=Apv5vqTzB7nBj7nnoMPO0fog3PL9KLrteEjYM_SjaEE,3225
@@ -78,50 +81,49 @@ swarms/schemas/__init__.py,sha256=EqqtVcpoptF1kfy19Wykp22ut4AA0z-yMQ5H9WB7ptA,18
78
81
  swarms/schemas/agent_input_schema.py,sha256=qhPyThMx2on91yG9mzNdP_08GpMh1IRDHDwFna29jPs,6345
79
82
  swarms/schemas/agent_step_schemas.py,sha256=a14gb58vR0xOwB_fwSJQbN6yb9HddEaT30E6hUrzEQA,2573
80
83
  swarms/schemas/base_schemas.py,sha256=UvBLVWg2qRen4tK5GJz50v42SiX95EQ5qK7hfyAHTEU,3267
81
- swarms/structs/__init__.py,sha256=m0O-UtgLjQxU2aQKkqsJW1d45fc-5F6EtnzAfLQILmE,4444
82
- swarms/structs/agent.py,sha256=tcGFYvQGdv-2VD9kaQvIKcdBxhv4H9WhWmEMzNcFeYc,96232
84
+ swarms/structs/__init__.py,sha256=LgAeWDQxbBpUyIYgvikgSdDoDPrvNryDKYTBfflmLMk,4352
85
+ swarms/structs/agent.py,sha256=JC48tv2Jn4hNGTBvBb5Lk-LiTwnyfBO81Doyv6EWbOA,92409
83
86
  swarms/structs/agent_builder.py,sha256=tYNpfO4_8cgfMHfgA5DAOWffHnt70p6CLt59esqfVCY,12133
84
87
  swarms/structs/agent_registry.py,sha256=il507cO1NF-d4ChyANVLuWrN8bXsEAi8_7bLJ_sTU6A,12112
85
88
  swarms/structs/agent_roles.py,sha256=8XEw6RjOOZelaZaWt4gXaYQm5WMLEhSO7W6Z8sQjmFg,582
86
89
  swarms/structs/agent_router.py,sha256=YZw5AaK2yTvxkOA7ouED_4MoYgn0XZggvo1wrglp-4E,13017
87
- swarms/structs/agent_security.py,sha256=uDQ6zoCm6mY2eMGSpjo-vidZrnLSdd-LTD75OpXDpKw,10618
88
90
  swarms/structs/agents_available.py,sha256=SedxDim-0IWgGsNwJZxRIUMfKyAFFXdvXSYeBNu0zGw,2804
89
- swarms/structs/airflow_swarm.py,sha256=3wekDOYx4eLLO68eVvSO89_sv5G-4-uMpXTmrhsHPuE,14250
90
91
  swarms/structs/async_workflow.py,sha256=7YWsLPyGY-1-mMxoIXWQ0FnYH6F227nxsS9PFAJoF9Q,26214
91
92
  swarms/structs/auto_swarm.py,sha256=AHWswlEWDL_i3V8IP362tx6pi_B2arlZhALykrkI5OA,8215
92
93
  swarms/structs/auto_swarm_builder.py,sha256=vPM5Kq59D_FvuWJB8hxgHuEvTXsxDxovlBnHGVQsM4o,10938
93
94
  swarms/structs/base_structure.py,sha256=GDu4QJQQmhU7IyuFJHIh9UVThACCva-L7uoMbVD9l4s,15901
94
- swarms/structs/base_swarm.py,sha256=_pggyl32BoEq-W2Cg-03h0z9xpPT_wXFjss4Yvysoxc,24033
95
+ swarms/structs/base_swarm.py,sha256=LSGJDPJdyUCcK6698mNtjxoC1OU3s_J2NxC2k_ccGUs,23779
95
96
  swarms/structs/base_workflow.py,sha256=DTfFwX3AdFYxACDYwUDqhsbcDZnITlg5TeEYyxmJBCc,11414
96
97
  swarms/structs/concat.py,sha256=utezSxNyh1mIwXgdf8-dJ803NDPyEy79WE8zJHuooGk,732
97
- swarms/structs/concurrent_workflow.py,sha256=8myerrLcOfEDGPlfp4xYbf79qBBAzxh80zrw1Dv7OXY,15525
98
- swarms/structs/conversation.py,sha256=7oh3x5XFyscnG1TAIMyL1BKJ4jC-unDEv-RFRVmxJO8,17966
98
+ swarms/structs/concurrent_workflow.py,sha256=d1_slbALpxrdEGzZffUSAcEbONW0kc7fyTpVZTBmzi4,15517
99
+ swarms/structs/conversation.py,sha256=h4A4l9Mcucw1v-N0mOA4keZ9vf-l3t-kBINZlk_CrOA,18392
99
100
  swarms/structs/csv_to_agent.py,sha256=ug9JqQFPguXeU9JQpSUXuVtOpHYdJhlpKJUJBovo694,9443
100
- swarms/structs/de_hallucination_swarm.py,sha256=Aa1kIJLmyXXrFl6qpmAq6mfkSaItQYD0MPgQ_e-nPvc,10305
101
+ swarms/structs/de_hallucination_swarm.py,sha256=9cC0rSSXGwYu6SRDwpeMbCcQ40C1WI1RE9SNapKRLOQ,10309
101
102
  swarms/structs/deep_research_swarm.py,sha256=h4jtrcuiAKMWMYo8I7oaq6eFn8cJpqHhml58EveNbZ4,16756
103
+ swarms/structs/dynamic_conversational_swarm.py,sha256=n_d1jDCzBwiGb0QjJpW_MlXxqEkhGEhC1ttaebH7f3Q,8098
102
104
  swarms/structs/graph_swarm.py,sha256=HPHlLWwdSPSe4o-I06ZOIgtBg72a06llEnv8-aglf3Q,20962
103
105
  swarms/structs/graph_workflow.py,sha256=TAaUG_J3898hhghPOp0WEAV3Zf0in6s48ZSVbSTX-vQ,8629
104
- swarms/structs/groupchat.py,sha256=oLaWLuZ0ObHVXN9k3K8CpLSDSZwnCHBgJHsdGmHqAS8,15906
105
- swarms/structs/hiearchical_swarm.py,sha256=-qepZLY7RLxHlT4dU-dMEWSKnfBHEVrFr6HRn8lGh1Q,35273
106
- swarms/structs/majority_voting.py,sha256=1-FQGMxDwg5mYeoP5rXTgiXEXF8Yc4vTc93ByGoInK4,10121
106
+ swarms/structs/groupchat.py,sha256=CivOw0QlpjugG8MIu5uGGVoA_0_oY6sBg0XlA08gViQ,15691
107
+ swarms/structs/hiearchical_swarm.py,sha256=XDEdy5kAISmWKraMR26VX47eCT4YgGTI2FNcBQzIvLE,35274
108
+ swarms/structs/hybrid_hiearchical_peer_swarm.py,sha256=wLdVc9gdfIUGzevWQbZN2Hvk54sjlmoTQO9RgUImD28,9216
109
+ swarms/structs/majority_voting.py,sha256=F_t_MOC3YCRyMw5N6qKdFThpaXZxwixRw592Ku5Uhto,10122
107
110
  swarms/structs/malt.py,sha256=0ZOuLfOzaJ4vAVOM6J1aZ3yWAiKxfMkNIBNp8pjsEqE,19392
108
111
  swarms/structs/matrix_swarm.py,sha256=qHuhOYrTyOv6ujHMe8PrQT-h-WmaCPCfX4ghv5L8UFI,9765
109
112
  swarms/structs/meme_agent_persona_generator.py,sha256=b3kKlumhsV4KV88-GS3CUnGO1UfKTU3fT8SAMj0ZlwQ,10645
110
- swarms/structs/mixture_of_agents.py,sha256=OGCTvyRQjHk9os4ZDYixdbDIIMeLMxfseeznS9rzdko,10574
113
+ swarms/structs/mixture_of_agents.py,sha256=G8_MVMrDd0-ZD_gJ5YZgtTCUjl7COha9Me-vOYMXsAE,10575
111
114
  swarms/structs/model_router.py,sha256=V5pZHYlxSmCvAA2Gsns7LaCz8dXtRi7pCvb-oLGHYIY,12739
112
115
  swarms/structs/multi_agent_collab.py,sha256=odh2NQRR23LidsphCxUfAke369lDdgL__w3Xovu9jkA,7731
113
- swarms/structs/multi_agent_exec.py,sha256=NbR-CnxxBuCa0Ll3Os9wfKdkIsQiCpqsTgFX9hWRefw,17421
114
- swarms/structs/multi_agent_orchestrator.py,sha256=MsCqBGrirhbdx4aZqY_1MRa9hRqt_ZF3HLmt7JCsINI,13399
116
+ swarms/structs/multi_agent_exec.py,sha256=Gxwr9mHADX3n29pdxor-dQDnKPSNdnicpCxBLmPwnLg,14344
117
+ swarms/structs/multi_agent_orchestrator.py,sha256=_trjXCW31ZeVR7N2hURLUPDZhYa-Wa3ADMk1wnNJdcQ,13400
115
118
  swarms/structs/octotools.py,sha256=GZo0qtFM69W7vvewk6_k09vicgw0c0_v7MiPvEZCagE,31406
116
119
  swarms/structs/omni_agent_types.py,sha256=RdKLfZ-lXDJrEa0aJT_Rfx9TypJQo8SISqKz4fnLkAk,230
117
- swarms/structs/output_type.py,sha256=56bALerdISngZ86Q-7LLlmHZw6edAFkea2bPlKdM_oE,279
118
- swarms/structs/output_types.py,sha256=i56WfkzUR6YgP1qINJ8t-By8OVS_sdbO64IvCmV-pbM,213
120
+ swarms/structs/output_types.py,sha256=F1jNbDLJrubRIUyheMGMahJfGikbWZ_yNmbE9QVIz9A,280
119
121
  swarms/structs/pulsar_swarm.py,sha256=4_L0GqPBgnA3AJajpNLgO4IAG6U36nIntFK9WNJScv8,15968
120
122
  swarms/structs/queue_swarm.py,sha256=8vcA-rh280midcdgfA5IwJzBmMgdn71nRH6KndWu-DA,6770
121
- swarms/structs/rearrange.py,sha256=KVBZVvoTd5vA7-kzpFHHpoQWzss0NZurCI1K-QR-MJc,28638
123
+ swarms/structs/rearrange.py,sha256=5u7HwTVVH414w9rhEQvLdltW1ACHjgwn-zS8-8JEXmA,22576
122
124
  swarms/structs/round_robin.py,sha256=MGk623KiN9uSxTMG6MY_BIAkvEDh1RPwyl5Min7GLOU,7573
123
125
  swarms/structs/safe_loading.py,sha256=gmYX8G9TsvAIp6OCvREBZt5mwSFc-p-t1rSnDBfhEmE,7124
124
- swarms/structs/sequential_workflow.py,sha256=B0obj_tawZjeHN6i6GWAbLFpLdJMemmpz7NutmHjOpY,8684
126
+ swarms/structs/sequential_workflow.py,sha256=5jxHP-a2CzdclSXIrVWkQKXBr01VzrgOBIexR9s8diw,8492
125
127
  swarms/structs/spreadsheet_swarm.py,sha256=ToX56QJjlm_nnC3MYppvKC_NTr9Zy_orkBzfxNLdwbA,14845
126
128
  swarms/structs/stopping_conditions.py,sha256=Z0Jx0U2feAfQfuVV_IJGgal62DoVsGPN8K6HkkqB_bM,484
127
129
  swarms/structs/swarm_arange.py,sha256=6fexCPsXRgdLbpY0p9rp_REipeXzsbv1_GOtD9B4HaI,15179
@@ -132,17 +134,16 @@ swarms/structs/swarm_load_balancer.py,sha256=pUCc5FEBcuJ_GmOFeTWBPfXlUdiTOjYcJqV
132
134
  swarms/structs/swarm_matcher.py,sha256=E2KwHHEJxmW-UfTeMPWZ6VCmYdQ_I9_fwrfJbxD02GY,23322
133
135
  swarms/structs/swarm_output_type.py,sha256=tW8Iqar1Jaf2Lzw66nAPc6MDk7-srQl5_XUKFvzoam4,755
134
136
  swarms/structs/swarm_registry.py,sha256=P0XRrqp1qBNyt0BycqPQljUzKv9jClaQMhtaBMinhYg,5578
135
- swarms/structs/swarm_router.py,sha256=BXdh4VR2U1E-hF0m26YJcgGSAhlsrIrGHJu6ZHym4FI,26802
137
+ swarms/structs/swarm_router.py,sha256=05G0weYMUUo-20xgSeUnwCaH1lf6p1epXllI_iXo18Y,26854
136
138
  swarms/structs/swarming_architectures.py,sha256=VvkSA9nQnF91V2C5-ALwSY1peZckeM1G4pPeQS7IVsE,13109
137
- swarms/structs/swarms_api.py,sha256=f-RpvfKfRK2AaapkyPN2ihXJvIGN4JWB_A7pJu4WyiU,13735
138
139
  swarms/structs/talk_hier.py,sha256=npyEuL52SCgQmMynIvGjfatNqOz4toq0EyhEtSNmQhQ,25649
139
140
  swarms/structs/tree_swarm.py,sha256=AnIxrt0KhWxAQN8uGjfCcOq-XCmsuTJiH8Ex4mXy8V8,12500
140
141
  swarms/structs/utils.py,sha256=Mo6wHQYOB8baWZUKnAJN5Dsgubpo81umNwJIEDitb2A,1873
141
142
  swarms/structs/various_alt_swarms.py,sha256=qdBuOF31UjatlKRu-9bxwyRQzIjohRhTv_63YoUeYEY,27866
142
143
  swarms/structs/workspace_manager.py,sha256=t0OgUP9dDU7xS6N3mAT2PbXvjHTsUK3nf2mxppcfZ70,5473
143
144
  swarms/telemetry/__init__.py,sha256=yibtkHEbQRPUv6ir1FhDHlAO_3nwKJPQH4LjzBC2AuQ,661
144
- swarms/telemetry/bootup.py,sha256=tBuhOb3m7o2q7nMjb2j9v2ib5Hx2E9Oya8yff5z4zIA,1655
145
- swarms/telemetry/main.py,sha256=xVdcKlfNONtNkOkcW7lLDCr3PseT_CaJc25sFCPSFKo,8287
145
+ swarms/telemetry/bootup.py,sha256=0leCNCy5rhzL19EsOsqHWSDI85KVcWO6_5hLDS0h4sY,1155
146
+ swarms/telemetry/main.py,sha256=QBQyO4JgIeMLGbdVPFaipIBasCMwuADB5wDNKQBEYDQ,9474
146
147
  swarms/tools/__init__.py,sha256=pqIMcRQr4gtoNdbyI1N5k4upkYSBMxACJbxfB9yrV4c,1493
147
148
  swarms/tools/base_tool.py,sha256=BiBCFHin8AyZO3FYOGA-n3M2o-F36xUeIBUiybnZYjI,15179
148
149
  swarms/tools/cohere_func_call_schema.py,sha256=XJ6_yBMXCrV9KjN7v9Bk1iFj69TRlGIWYKsUTA1oGiQ,600
@@ -159,23 +160,22 @@ swarms/tools/py_func_to_openai_func_str.py,sha256=W112Gu0CmAiHrNWnRMcnoGiVZEy2Fx
159
160
  swarms/tools/pydantic_to_json.py,sha256=-tjUBwKVnKUWWtEGfYGLEfJbIOCrSVF-p1e6kT4_Geg,3850
160
161
  swarms/tools/tool_parse_exec.py,sha256=FW5XzkuNEs2YrroybjKChbCzDvaCs7ypknSDpYhfkd4,8717
161
162
  swarms/tools/tool_registry.py,sha256=ULZmIKBTx9XRCJRD9hwXfY3iQw9v94arw-VV6jcuftY,7992
163
+ swarms/tools/tool_schema_base_model.py,sha256=0biTGIoibsPPP3fOrkC6WvNU5vXaalyccVKC1fpO_eg,1409
162
164
  swarms/tools/tool_utils.py,sha256=yXzzqG7Ytd8ybB8bsjNUNLaXIuIp9JbbpUKCiHxQqo8,2816
163
165
  swarms/utils/__init__.py,sha256=9qKE_11pxom74j3qExSm6Z_LwR5lrpC5YG17v22eLlo,975
164
- swarms/utils/agent_ops_check.py,sha256=08UomeSv1uw_oEDlum0yG-5SsKkxqPRbeIWeKC75b08,685
165
166
  swarms/utils/any_to_str.py,sha256=Qi4N9ed6LYnCs2AeFYo1zwEfYhOKUesGVFUmVUz54KI,2936
166
- swarms/utils/auto_download_check_packages.py,sha256=PnuK6cI359qb2nUDZePkNOmTGbZ5u3Odln7SPQ4O4x4,4576
167
+ swarms/utils/auto_download_check_packages.py,sha256=mqx3jCetfkTuxTdeGLx-gGMB1xWOU5vata8lTKXLatk,4580
167
168
  swarms/utils/calculate_func_metrics.py,sha256=Nb5r7rWf809m5F7mWIYXZ0H_WeyGr78A2UZD2GHtJkM,5007
168
169
  swarms/utils/data_to_text.py,sha256=1PUoWokylp7MOrGNk1cmO3cJlfskdAIiImGk9ECwsKU,3427
169
- swarms/utils/disable_logging.py,sha256=-YXBrTMTLlXWCW-MhuY4XI6Q8KeEfBUJ_gmRWs1X8s0,2832
170
+ swarms/utils/disable_logging.py,sha256=KKPKQVfQqLPFgj03uveOoyeHOTlfEJt-yfLc3SA53Rk,2470
170
171
  swarms/utils/file_processing.py,sha256=QjQCIPTcwicQlfy656BXBYpIzMR0s2343E7ftnok5Uo,4865
171
172
  swarms/utils/formatter.py,sha256=YykmcuWXkxvQ7a2Vq6OzWuqUDiIwro6VrtSt4ITbXcU,4194
172
173
  swarms/utils/function_caller_model.py,sha256=ZfgCMzOizNnuZipYLclTziECNHszH9p8RQcUq7VNr4Q,4156
173
- swarms/utils/history_output_formatter.py,sha256=TmYMMVsWmn8vtmXacuw8iujZnwdxaRnT8fGM8d9uJo8,558
174
+ swarms/utils/history_output_formatter.py,sha256=WHcd0xhSNRDKakXtkCjv0nW1NF-GM9SYcey3RrN5gl8,778
174
175
  swarms/utils/litellm_tokenizer.py,sha256=0AAj4NffBe2eHii_3_5SpQAhSiBbunJR8MzaBTIm7hg,484
175
- swarms/utils/litellm_wrapper.py,sha256=YmSwDPK97szRNrE81_9nTyh4q_VaVAJxH11VIwKUQb4,7778
176
+ swarms/utils/litellm_wrapper.py,sha256=cXZ6nUrHnGhpVgolgbpNsyKq1_TzupJs8vmw-_XtCRM,11255
176
177
  swarms/utils/loguru_logger.py,sha256=hIoSK3NHLpe7eAmjHRURrEYzNXYC2gbR7_Vv63Yaydk,685
177
178
  swarms/utils/markdown_message.py,sha256=RThHNnMf6ZLTlYK4vKn3yuewChaxWAYAWb0Xm_pTyIU,652
178
- swarms/utils/pandas_utils.py,sha256=AA0wNWM05CrNovW7x9aY63Zhw7CIGMERmxvjH2Q-Jjc,2567
179
179
  swarms/utils/parse_code.py,sha256=XFOLymbdP3HzMZuqsj7pwUyisvUmTm0ev9iThR_ambI,1987
180
180
  swarms/utils/pdf_to_text.py,sha256=nkySOS_sJ4Jf4RP5SoDpMB5WfjJ_GGc5z8gJfn2cxOM,1311
181
181
  swarms/utils/str_to_dict.py,sha256=T3Jsdjz87WIlkSo7jAW6BB80sv0Ns49WT1qXlOrdEoE,874
@@ -183,8 +183,8 @@ swarms/utils/swarm_reliability_checks.py,sha256=MsgUULt3HYg72D0HifZNmtCyJYpLA2UD
183
183
  swarms/utils/try_except_wrapper.py,sha256=appEGu9Afy3TmdkNNXUgQ9yU9lj2j0uNkIoW0JhVzzY,3917
184
184
  swarms/utils/visualizer.py,sha256=0ylohEk62MAS6iPRaDOV03m9qo2k5J56tWlKJk_46p4,16927
185
185
  swarms/utils/wrapper_clusterop.py,sha256=PMSCVM7ZT1vgj1D_MYAe835RR3SMLYxA-si2JS02yNQ,4220
186
- swarms-7.6.1.dist-info/LICENSE,sha256=jwRtEmTWjLrEsvFB6QFdYs2cEeZPRMdj-UMOFkPF8_0,11363
187
- swarms-7.6.1.dist-info/METADATA,sha256=H8okUgrlI17pc34FtFetrNNoh6EXsg53OJgXKNdngGQ,105115
188
- swarms-7.6.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
189
- swarms-7.6.1.dist-info/entry_points.txt,sha256=2K0rTtfO1X1WaO-waJlXIKw5Voa_EpAL_yU0HXE2Jgc,47
190
- swarms-7.6.1.dist-info/RECORD,,
186
+ swarms-7.6.4.dist-info/LICENSE,sha256=jwRtEmTWjLrEsvFB6QFdYs2cEeZPRMdj-UMOFkPF8_0,11363
187
+ swarms-7.6.4.dist-info/METADATA,sha256=FihAIDYyoPwxvfsXfvpCsMzdQMHvBZ7fXkp5v06DIUE,104909
188
+ swarms-7.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
189
+ swarms-7.6.4.dist-info/entry_points.txt,sha256=2K0rTtfO1X1WaO-waJlXIKw5Voa_EpAL_yU0HXE2Jgc,47
190
+ swarms-7.6.4.dist-info/RECORD,,