waldiez 0.5.10__py3-none-any.whl → 0.6.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of waldiez might be problematic. Click here for more details.

Files changed (192) hide show
  1. waldiez/__init__.py +1 -1
  2. waldiez/_version.py +1 -1
  3. waldiez/cli.py +19 -7
  4. waldiez/cli_extras/jupyter.py +3 -0
  5. waldiez/cli_extras/runner.py +3 -1
  6. waldiez/cli_extras/studio.py +3 -1
  7. waldiez/exporter.py +9 -3
  8. waldiez/exporting/agent/exporter.py +15 -16
  9. waldiez/exporting/agent/extras/captain_agent_extras.py +6 -6
  10. waldiez/exporting/agent/extras/doc_agent_extras.py +6 -6
  11. waldiez/exporting/agent/extras/group_manager_agent_extas.py +40 -24
  12. waldiez/exporting/agent/extras/group_member_extras.py +6 -5
  13. waldiez/exporting/agent/extras/handoffs/after_work.py +2 -1
  14. waldiez/exporting/agent/extras/handoffs/available.py +2 -1
  15. waldiez/exporting/agent/extras/handoffs/condition.py +3 -2
  16. waldiez/exporting/agent/extras/handoffs/handoff.py +2 -1
  17. waldiez/exporting/agent/extras/handoffs/target.py +7 -4
  18. waldiez/exporting/agent/extras/rag/chroma_extras.py +27 -19
  19. waldiez/exporting/agent/extras/rag/mongo_extras.py +8 -8
  20. waldiez/exporting/agent/extras/rag/pgvector_extras.py +5 -5
  21. waldiez/exporting/agent/extras/rag/qdrant_extras.py +5 -4
  22. waldiez/exporting/agent/extras/rag/vector_db_extras.py +1 -1
  23. waldiez/exporting/agent/extras/rag_user_proxy_agent_extras.py +5 -7
  24. waldiez/exporting/agent/extras/reasoning_agent_extras.py +3 -5
  25. waldiez/exporting/agent/termination.py +1 -0
  26. waldiez/exporting/chats/exporter.py +4 -4
  27. waldiez/exporting/chats/processor.py +1 -2
  28. waldiez/exporting/chats/utils/common.py +89 -48
  29. waldiez/exporting/chats/utils/group.py +9 -9
  30. waldiez/exporting/chats/utils/nested.py +7 -7
  31. waldiez/exporting/chats/utils/sequential.py +1 -1
  32. waldiez/exporting/chats/utils/single.py +2 -2
  33. waldiez/exporting/core/constants.py +3 -1
  34. waldiez/exporting/core/content.py +7 -7
  35. waldiez/exporting/core/context.py +5 -3
  36. waldiez/exporting/core/exporter.py +5 -3
  37. waldiez/exporting/core/exporters.py +2 -2
  38. waldiez/exporting/core/extras/agent_extras/captain_extras.py +2 -2
  39. waldiez/exporting/core/extras/agent_extras/group_manager_extras.py +2 -2
  40. waldiez/exporting/core/extras/agent_extras/rag_user_extras.py +2 -2
  41. waldiez/exporting/core/extras/agent_extras/standard_extras.py +3 -8
  42. waldiez/exporting/core/extras/base.py +7 -5
  43. waldiez/exporting/core/extras/flow_extras.py +4 -5
  44. waldiez/exporting/core/extras/model_extras.py +2 -2
  45. waldiez/exporting/core/extras/path_resolver.py +1 -2
  46. waldiez/exporting/core/extras/serializer.py +13 -11
  47. waldiez/exporting/core/protocols.py +6 -5
  48. waldiez/exporting/core/result.py +25 -28
  49. waldiez/exporting/core/types.py +11 -10
  50. waldiez/exporting/core/utils/llm_config.py +4 -4
  51. waldiez/exporting/core/validation.py +10 -11
  52. waldiez/exporting/flow/execution_generator.py +99 -10
  53. waldiez/exporting/flow/exporter.py +2 -2
  54. waldiez/exporting/flow/factory.py +2 -2
  55. waldiez/exporting/flow/file_generator.py +4 -2
  56. waldiez/exporting/flow/merger.py +5 -3
  57. waldiez/exporting/flow/orchestrator.py +72 -2
  58. waldiez/exporting/flow/utils/common.py +6 -6
  59. waldiez/exporting/flow/utils/importing.py +7 -8
  60. waldiez/exporting/flow/utils/linting.py +25 -9
  61. waldiez/exporting/flow/utils/logging.py +5 -77
  62. waldiez/exporting/models/exporter.py +8 -8
  63. waldiez/exporting/models/processor.py +5 -5
  64. waldiez/exporting/tools/exporter.py +2 -2
  65. waldiez/exporting/tools/processor.py +7 -4
  66. waldiez/io/__init__.py +11 -5
  67. waldiez/io/_ws.py +12 -6
  68. waldiez/io/models/constants.py +10 -10
  69. waldiez/io/models/content/audio.py +1 -0
  70. waldiez/io/models/content/base.py +20 -18
  71. waldiez/io/models/content/file.py +1 -0
  72. waldiez/io/models/content/image.py +1 -0
  73. waldiez/io/models/content/text.py +1 -0
  74. waldiez/io/models/content/video.py +1 -0
  75. waldiez/io/models/user_input.py +10 -5
  76. waldiez/io/models/user_response.py +17 -16
  77. waldiez/io/mqtt.py +18 -31
  78. waldiez/io/redis.py +18 -22
  79. waldiez/io/structured.py +122 -70
  80. waldiez/io/utils.py +19 -10
  81. waldiez/io/ws.py +7 -3
  82. waldiez/logger.py +16 -3
  83. waldiez/models/agents/__init__.py +3 -0
  84. waldiez/models/agents/agent/agent.py +25 -17
  85. waldiez/models/agents/agent/agent_data.py +25 -22
  86. waldiez/models/agents/agent/code_execution.py +9 -11
  87. waldiez/models/agents/agent/termination_message.py +10 -12
  88. waldiez/models/agents/agent/update_system_message.py +2 -4
  89. waldiez/models/agents/agents.py +8 -8
  90. waldiez/models/agents/assistant/assistant.py +6 -3
  91. waldiez/models/agents/assistant/assistant_data.py +2 -2
  92. waldiez/models/agents/captain/captain_agent.py +7 -4
  93. waldiez/models/agents/captain/captain_agent_data.py +5 -7
  94. waldiez/models/agents/doc_agent/doc_agent.py +7 -4
  95. waldiez/models/agents/doc_agent/doc_agent_data.py +9 -10
  96. waldiez/models/agents/doc_agent/rag_query_engine.py +10 -12
  97. waldiez/models/agents/extra_requirements.py +3 -3
  98. waldiez/models/agents/group_manager/group_manager.py +12 -7
  99. waldiez/models/agents/group_manager/group_manager_data.py +13 -12
  100. waldiez/models/agents/group_manager/speakers.py +17 -19
  101. waldiez/models/agents/rag_user_proxy/rag_user_proxy.py +7 -4
  102. waldiez/models/agents/rag_user_proxy/rag_user_proxy_data.py +4 -1
  103. waldiez/models/agents/rag_user_proxy/retrieve_config.py +69 -63
  104. waldiez/models/agents/rag_user_proxy/vector_db_config.py +19 -19
  105. waldiez/models/agents/reasoning/reasoning_agent.py +7 -4
  106. waldiez/models/agents/reasoning/reasoning_agent_data.py +3 -2
  107. waldiez/models/agents/reasoning/reasoning_agent_reason_config.py +8 -8
  108. waldiez/models/agents/user_proxy/user_proxy.py +6 -3
  109. waldiez/models/agents/user_proxy/user_proxy_data.py +1 -1
  110. waldiez/models/chat/chat.py +28 -20
  111. waldiez/models/chat/chat_data.py +22 -21
  112. waldiez/models/chat/chat_message.py +9 -9
  113. waldiez/models/chat/chat_nested.py +9 -9
  114. waldiez/models/chat/chat_summary.py +6 -6
  115. waldiez/models/common/__init__.py +2 -0
  116. waldiez/models/common/ag2_version.py +2 -0
  117. waldiez/models/common/base.py +2 -0
  118. waldiez/models/common/dict_utils.py +8 -6
  119. waldiez/models/common/handoff.py +20 -17
  120. waldiez/models/common/method_utils.py +9 -7
  121. waldiez/models/common/naming.py +49 -0
  122. waldiez/models/flow/flow.py +11 -6
  123. waldiez/models/flow/flow_data.py +23 -17
  124. waldiez/models/flow/info.py +3 -3
  125. waldiez/models/flow/naming.py +2 -1
  126. waldiez/models/model/_aws.py +11 -13
  127. waldiez/models/model/_llm.py +8 -0
  128. waldiez/models/model/_price.py +2 -4
  129. waldiez/models/model/extra_requirements.py +1 -3
  130. waldiez/models/model/model.py +2 -2
  131. waldiez/models/model/model_data.py +21 -21
  132. waldiez/models/tool/extra_requirements.py +2 -4
  133. waldiez/models/tool/predefined/_duckduckgo.py +1 -0
  134. waldiez/models/tool/predefined/_email.py +4 -0
  135. waldiez/models/tool/predefined/_google.py +1 -0
  136. waldiez/models/tool/predefined/_perplexity.py +2 -1
  137. waldiez/models/tool/predefined/_searxng.py +2 -1
  138. waldiez/models/tool/predefined/_tavily.py +1 -0
  139. waldiez/models/tool/predefined/_wikipedia.py +2 -1
  140. waldiez/models/tool/predefined/_youtube.py +1 -0
  141. waldiez/models/tool/tool.py +8 -5
  142. waldiez/models/tool/tool_data.py +2 -2
  143. waldiez/models/waldiez.py +152 -4
  144. waldiez/runner.py +11 -5
  145. waldiez/running/async_utils.py +192 -0
  146. waldiez/running/base_runner.py +155 -241
  147. waldiez/running/dir_utils.py +52 -0
  148. waldiez/running/environment.py +10 -44
  149. waldiez/running/events_mixin.py +252 -0
  150. waldiez/running/exceptions.py +20 -0
  151. waldiez/running/gen_seq_diagram.py +18 -15
  152. waldiez/running/io_utils.py +216 -0
  153. waldiez/running/protocol.py +11 -5
  154. waldiez/running/requirements_mixin.py +65 -0
  155. waldiez/running/results_mixin.py +926 -0
  156. waldiez/running/standard_runner.py +24 -27
  157. waldiez/running/step_by_step/breakpoints_mixin.py +503 -47
  158. waldiez/running/step_by_step/command_handler.py +154 -0
  159. waldiez/running/step_by_step/events_processor.py +379 -0
  160. waldiez/running/step_by_step/step_by_step_models.py +425 -41
  161. waldiez/running/step_by_step/step_by_step_runner.py +437 -382
  162. waldiez/running/subprocess_runner/__base__.py +13 -8
  163. waldiez/running/subprocess_runner/_async_runner.py +6 -4
  164. waldiez/running/subprocess_runner/_sync_runner.py +11 -6
  165. waldiez/running/subprocess_runner/runner.py +48 -23
  166. waldiez/running/timeline_processor.py +1 -1
  167. waldiez/utils/__init__.py +2 -0
  168. waldiez/utils/conflict_checker.py +4 -4
  169. waldiez/utils/python_manager.py +415 -0
  170. waldiez/ws/__init__.py +8 -7
  171. waldiez/ws/_file_handler.py +18 -20
  172. waldiez/ws/_mock.py +75 -0
  173. waldiez/ws/cli.py +58 -10
  174. waldiez/ws/client_manager.py +77 -53
  175. waldiez/ws/errors.py +3 -0
  176. waldiez/ws/models.py +61 -53
  177. waldiez/ws/reloader.py +33 -4
  178. waldiez/ws/server.py +121 -52
  179. waldiez/ws/session_manager.py +8 -9
  180. waldiez/ws/session_stats.py +1 -1
  181. waldiez/ws/utils.py +33 -5
  182. {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/METADATA +107 -109
  183. waldiez-0.6.1.dist-info/RECORD +254 -0
  184. waldiez/running/post_run.py +0 -180
  185. waldiez/running/pre_run.py +0 -159
  186. waldiez/running/run_results.py +0 -14
  187. waldiez/running/utils.py +0 -511
  188. waldiez-0.5.10.dist-info/RECORD +0 -248
  189. {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/WHEEL +0 -0
  190. {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/entry_points.txt +0 -0
  191. {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/licenses/LICENSE +0 -0
  192. {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/licenses/NOTICE.md +0 -0
@@ -2,7 +2,8 @@
2
2
  # Copyright (c) 2024 - 2025 Waldiez and contributors.
3
3
 
4
4
  # pyright: reportUnknownMemberType=false, reportAttributeAccessIssue=false
5
- # pylint: disable=duplicate-code
5
+ # pyright: reportMissingTypeStubs=false, reportDeprecated=false
6
+ # pylint: disable=duplicate-code,too-few-public-methods
6
7
  """Run a waldiez flow.
7
8
 
8
9
  The flow is first converted to an autogen flow with agents, chats, and tools.
@@ -16,12 +17,16 @@ import traceback
16
17
  from pathlib import Path
17
18
  from typing import TYPE_CHECKING, Any, Union
18
19
 
20
+ from typing_extensions import override
21
+
19
22
  from waldiez.models.waldiez import Waldiez
20
- from waldiez.running.run_results import WaldiezRunResults
21
23
 
22
24
  from .base_runner import WaldiezBaseRunner
25
+ from .events_mixin import EventsMixin
26
+ from .results_mixin import WaldiezRunResults
23
27
 
24
28
  if TYPE_CHECKING:
29
+ from autogen.agentchat import ConversableAgent # type: ignore
25
30
  from autogen.events import BaseEvent # type: ignore
26
31
  from autogen.messages import BaseMessage # type: ignore
27
32
 
@@ -59,21 +64,8 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
59
64
  self._event_count = 0
60
65
  self._processed_events = 0
61
66
 
62
- # pylint: disable=no-self-use
63
- # noinspection PyMethodMayBeStatic
64
- def print(self, *args: Any, **kwargs: Any) -> None:
65
- """Print.
66
-
67
- Parameters
68
- ----------
69
- *args : Any
70
- Positional arguments to print.
71
- **kwargs : Any
72
- Keyword arguments to print.
73
- """
74
- WaldiezBaseRunner._print(*args, **kwargs)
75
-
76
67
  # pylint: disable=unused-argument
68
+ @override
77
69
  def _run(
78
70
  self,
79
71
  temp_dir: Path,
@@ -109,9 +101,9 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
109
101
  )
110
102
  else:
111
103
  stream = IOStream.get_default()
112
- WaldiezBaseRunner._print = stream.print
113
- WaldiezBaseRunner._input = stream.input
114
- WaldiezBaseRunner._send = stream.send
104
+ EventsMixin.set_print_function(stream.print)
105
+ EventsMixin.set_input_function(stream.input)
106
+ EventsMixin.set_send_function(stream.send)
115
107
  self.print(MESSAGES["workflow_starting"])
116
108
  self.print(self.waldiez.info.model_dump_json())
117
109
  results = loaded_module.main(
@@ -134,6 +126,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
134
126
  def _on_event(
135
127
  self,
136
128
  event: Union["BaseEvent", "BaseMessage"],
129
+ agents: list["ConversableAgent"],
137
130
  ) -> bool:
138
131
  """Process an event from the workflow."""
139
132
  self._event_count += 1
@@ -143,7 +136,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
143
136
  )
144
137
  return False
145
138
  try:
146
- WaldiezBaseRunner.process_event(event)
139
+ EventsMixin.process_event(event, agents)
147
140
  self._processed_events += 1
148
141
  except SystemExit: # pragma: no cover
149
142
  self.log.debug("Execution stopped by user (sync)")
@@ -160,6 +153,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
160
153
  async def _a_on_event(
161
154
  self,
162
155
  event: Union["BaseEvent", "BaseMessage"],
156
+ agents: list["ConversableAgent"],
163
157
  ) -> bool:
164
158
  """Process an event from the workflow asynchronously."""
165
159
  self._event_count += 1
@@ -169,7 +163,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
169
163
  )
170
164
  return False
171
165
  try:
172
- await WaldiezBaseRunner.a_process_event(event)
166
+ await EventsMixin.a_process_event(event, agents)
173
167
  self._processed_events += 1
174
168
  except SystemExit: # pragma: no cover
175
169
  self.log.debug("Execution stopped by user (async)")
@@ -184,6 +178,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
184
178
  return not self._stop_requested.is_set()
185
179
 
186
180
  # pylint: disable=too-complex
181
+ @override
187
182
  async def _a_run(
188
183
  self,
189
184
  temp_dir: Path,
@@ -200,7 +195,7 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
200
195
  # fmt: on
201
196
  """Execute the workflow in an async context."""
202
197
  # pylint: disable=import-outside-toplevel
203
- from autogen.io import IOStream # pyright: ignore
198
+ from autogen.io import IOStream
204
199
 
205
200
  from waldiez.io import StructuredIOStream
206
201
 
@@ -209,23 +204,25 @@ class WaldiezStandardRunner(WaldiezBaseRunner):
209
204
  try:
210
205
  loaded_module = self._load_module(output_file, temp_dir)
211
206
  if self._stop_requested.is_set(): # pragma: no cover
212
- self.log.debug(
207
+ msg = (
213
208
  "Execution stopped before AG2 "
214
209
  "workflow event processing (async)"
215
210
  )
211
+ self.log.debug(msg)
216
212
  return []
213
+ # noinspection DuplicatedCode
217
214
  if self.structured_io:
218
215
  stream = StructuredIOStream(
219
216
  uploads_root=uploads_root, is_async=True
220
217
  )
221
218
  else:
222
219
  stream = IOStream.get_default()
223
- WaldiezBaseRunner._print = stream.print
224
- WaldiezBaseRunner._input = stream.input
225
- WaldiezBaseRunner._send = stream.send
220
+ EventsMixin.set_print_function(stream.print)
221
+ EventsMixin.set_input_function(stream.input)
222
+ EventsMixin.set_send_function(stream.send)
226
223
  self.print(MESSAGES["workflow_starting"])
227
224
  self.print(self.waldiez.info.model_dump_json())
228
- results = await loaded_module.main( # pyright: ignore
225
+ results = await loaded_module.main(
229
226
  on_event=self._a_on_event
230
227
  )
231
228
  self.print(MESSAGES["workflow_finished"])