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.
- waldiez/__init__.py +1 -1
- waldiez/_version.py +1 -1
- waldiez/cli.py +19 -7
- waldiez/cli_extras/jupyter.py +3 -0
- waldiez/cli_extras/runner.py +3 -1
- waldiez/cli_extras/studio.py +3 -1
- waldiez/exporter.py +9 -3
- waldiez/exporting/agent/exporter.py +15 -16
- waldiez/exporting/agent/extras/captain_agent_extras.py +6 -6
- waldiez/exporting/agent/extras/doc_agent_extras.py +6 -6
- waldiez/exporting/agent/extras/group_manager_agent_extas.py +40 -24
- waldiez/exporting/agent/extras/group_member_extras.py +6 -5
- waldiez/exporting/agent/extras/handoffs/after_work.py +2 -1
- waldiez/exporting/agent/extras/handoffs/available.py +2 -1
- waldiez/exporting/agent/extras/handoffs/condition.py +3 -2
- waldiez/exporting/agent/extras/handoffs/handoff.py +2 -1
- waldiez/exporting/agent/extras/handoffs/target.py +7 -4
- waldiez/exporting/agent/extras/rag/chroma_extras.py +27 -19
- waldiez/exporting/agent/extras/rag/mongo_extras.py +8 -8
- waldiez/exporting/agent/extras/rag/pgvector_extras.py +5 -5
- waldiez/exporting/agent/extras/rag/qdrant_extras.py +5 -4
- waldiez/exporting/agent/extras/rag/vector_db_extras.py +1 -1
- waldiez/exporting/agent/extras/rag_user_proxy_agent_extras.py +5 -7
- waldiez/exporting/agent/extras/reasoning_agent_extras.py +3 -5
- waldiez/exporting/agent/termination.py +1 -0
- waldiez/exporting/chats/exporter.py +4 -4
- waldiez/exporting/chats/processor.py +1 -2
- waldiez/exporting/chats/utils/common.py +89 -48
- waldiez/exporting/chats/utils/group.py +9 -9
- waldiez/exporting/chats/utils/nested.py +7 -7
- waldiez/exporting/chats/utils/sequential.py +1 -1
- waldiez/exporting/chats/utils/single.py +2 -2
- waldiez/exporting/core/constants.py +3 -1
- waldiez/exporting/core/content.py +7 -7
- waldiez/exporting/core/context.py +5 -3
- waldiez/exporting/core/exporter.py +5 -3
- waldiez/exporting/core/exporters.py +2 -2
- waldiez/exporting/core/extras/agent_extras/captain_extras.py +2 -2
- waldiez/exporting/core/extras/agent_extras/group_manager_extras.py +2 -2
- waldiez/exporting/core/extras/agent_extras/rag_user_extras.py +2 -2
- waldiez/exporting/core/extras/agent_extras/standard_extras.py +3 -8
- waldiez/exporting/core/extras/base.py +7 -5
- waldiez/exporting/core/extras/flow_extras.py +4 -5
- waldiez/exporting/core/extras/model_extras.py +2 -2
- waldiez/exporting/core/extras/path_resolver.py +1 -2
- waldiez/exporting/core/extras/serializer.py +13 -11
- waldiez/exporting/core/protocols.py +6 -5
- waldiez/exporting/core/result.py +25 -28
- waldiez/exporting/core/types.py +11 -10
- waldiez/exporting/core/utils/llm_config.py +4 -4
- waldiez/exporting/core/validation.py +10 -11
- waldiez/exporting/flow/execution_generator.py +99 -10
- waldiez/exporting/flow/exporter.py +2 -2
- waldiez/exporting/flow/factory.py +2 -2
- waldiez/exporting/flow/file_generator.py +4 -2
- waldiez/exporting/flow/merger.py +5 -3
- waldiez/exporting/flow/orchestrator.py +72 -2
- waldiez/exporting/flow/utils/common.py +6 -6
- waldiez/exporting/flow/utils/importing.py +7 -8
- waldiez/exporting/flow/utils/linting.py +25 -9
- waldiez/exporting/flow/utils/logging.py +5 -77
- waldiez/exporting/models/exporter.py +8 -8
- waldiez/exporting/models/processor.py +5 -5
- waldiez/exporting/tools/exporter.py +2 -2
- waldiez/exporting/tools/processor.py +7 -4
- waldiez/io/__init__.py +11 -5
- waldiez/io/_ws.py +12 -6
- waldiez/io/models/constants.py +10 -10
- waldiez/io/models/content/audio.py +1 -0
- waldiez/io/models/content/base.py +20 -18
- waldiez/io/models/content/file.py +1 -0
- waldiez/io/models/content/image.py +1 -0
- waldiez/io/models/content/text.py +1 -0
- waldiez/io/models/content/video.py +1 -0
- waldiez/io/models/user_input.py +10 -5
- waldiez/io/models/user_response.py +17 -16
- waldiez/io/mqtt.py +18 -31
- waldiez/io/redis.py +18 -22
- waldiez/io/structured.py +122 -70
- waldiez/io/utils.py +19 -10
- waldiez/io/ws.py +7 -3
- waldiez/logger.py +16 -3
- waldiez/models/agents/__init__.py +3 -0
- waldiez/models/agents/agent/agent.py +25 -17
- waldiez/models/agents/agent/agent_data.py +25 -22
- waldiez/models/agents/agent/code_execution.py +9 -11
- waldiez/models/agents/agent/termination_message.py +10 -12
- waldiez/models/agents/agent/update_system_message.py +2 -4
- waldiez/models/agents/agents.py +8 -8
- waldiez/models/agents/assistant/assistant.py +6 -3
- waldiez/models/agents/assistant/assistant_data.py +2 -2
- waldiez/models/agents/captain/captain_agent.py +7 -4
- waldiez/models/agents/captain/captain_agent_data.py +5 -7
- waldiez/models/agents/doc_agent/doc_agent.py +7 -4
- waldiez/models/agents/doc_agent/doc_agent_data.py +9 -10
- waldiez/models/agents/doc_agent/rag_query_engine.py +10 -12
- waldiez/models/agents/extra_requirements.py +3 -3
- waldiez/models/agents/group_manager/group_manager.py +12 -7
- waldiez/models/agents/group_manager/group_manager_data.py +13 -12
- waldiez/models/agents/group_manager/speakers.py +17 -19
- waldiez/models/agents/rag_user_proxy/rag_user_proxy.py +7 -4
- waldiez/models/agents/rag_user_proxy/rag_user_proxy_data.py +4 -1
- waldiez/models/agents/rag_user_proxy/retrieve_config.py +69 -63
- waldiez/models/agents/rag_user_proxy/vector_db_config.py +19 -19
- waldiez/models/agents/reasoning/reasoning_agent.py +7 -4
- waldiez/models/agents/reasoning/reasoning_agent_data.py +3 -2
- waldiez/models/agents/reasoning/reasoning_agent_reason_config.py +8 -8
- waldiez/models/agents/user_proxy/user_proxy.py +6 -3
- waldiez/models/agents/user_proxy/user_proxy_data.py +1 -1
- waldiez/models/chat/chat.py +28 -20
- waldiez/models/chat/chat_data.py +22 -21
- waldiez/models/chat/chat_message.py +9 -9
- waldiez/models/chat/chat_nested.py +9 -9
- waldiez/models/chat/chat_summary.py +6 -6
- waldiez/models/common/__init__.py +2 -0
- waldiez/models/common/ag2_version.py +2 -0
- waldiez/models/common/base.py +2 -0
- waldiez/models/common/dict_utils.py +8 -6
- waldiez/models/common/handoff.py +20 -17
- waldiez/models/common/method_utils.py +9 -7
- waldiez/models/common/naming.py +49 -0
- waldiez/models/flow/flow.py +11 -6
- waldiez/models/flow/flow_data.py +23 -17
- waldiez/models/flow/info.py +3 -3
- waldiez/models/flow/naming.py +2 -1
- waldiez/models/model/_aws.py +11 -13
- waldiez/models/model/_llm.py +8 -0
- waldiez/models/model/_price.py +2 -4
- waldiez/models/model/extra_requirements.py +1 -3
- waldiez/models/model/model.py +2 -2
- waldiez/models/model/model_data.py +21 -21
- waldiez/models/tool/extra_requirements.py +2 -4
- waldiez/models/tool/predefined/_duckduckgo.py +1 -0
- waldiez/models/tool/predefined/_email.py +4 -0
- waldiez/models/tool/predefined/_google.py +1 -0
- waldiez/models/tool/predefined/_perplexity.py +2 -1
- waldiez/models/tool/predefined/_searxng.py +2 -1
- waldiez/models/tool/predefined/_tavily.py +1 -0
- waldiez/models/tool/predefined/_wikipedia.py +2 -1
- waldiez/models/tool/predefined/_youtube.py +1 -0
- waldiez/models/tool/tool.py +8 -5
- waldiez/models/tool/tool_data.py +2 -2
- waldiez/models/waldiez.py +152 -4
- waldiez/runner.py +11 -5
- waldiez/running/async_utils.py +192 -0
- waldiez/running/base_runner.py +155 -241
- waldiez/running/dir_utils.py +52 -0
- waldiez/running/environment.py +10 -44
- waldiez/running/events_mixin.py +252 -0
- waldiez/running/exceptions.py +20 -0
- waldiez/running/gen_seq_diagram.py +18 -15
- waldiez/running/io_utils.py +216 -0
- waldiez/running/protocol.py +11 -5
- waldiez/running/requirements_mixin.py +65 -0
- waldiez/running/results_mixin.py +926 -0
- waldiez/running/standard_runner.py +24 -27
- waldiez/running/step_by_step/breakpoints_mixin.py +503 -47
- waldiez/running/step_by_step/command_handler.py +154 -0
- waldiez/running/step_by_step/events_processor.py +379 -0
- waldiez/running/step_by_step/step_by_step_models.py +425 -41
- waldiez/running/step_by_step/step_by_step_runner.py +437 -382
- waldiez/running/subprocess_runner/__base__.py +13 -8
- waldiez/running/subprocess_runner/_async_runner.py +6 -4
- waldiez/running/subprocess_runner/_sync_runner.py +11 -6
- waldiez/running/subprocess_runner/runner.py +48 -23
- waldiez/running/timeline_processor.py +1 -1
- waldiez/utils/__init__.py +2 -0
- waldiez/utils/conflict_checker.py +4 -4
- waldiez/utils/python_manager.py +415 -0
- waldiez/ws/__init__.py +8 -7
- waldiez/ws/_file_handler.py +18 -20
- waldiez/ws/_mock.py +75 -0
- waldiez/ws/cli.py +58 -10
- waldiez/ws/client_manager.py +77 -53
- waldiez/ws/errors.py +3 -0
- waldiez/ws/models.py +61 -53
- waldiez/ws/reloader.py +33 -4
- waldiez/ws/server.py +121 -52
- waldiez/ws/session_manager.py +8 -9
- waldiez/ws/session_stats.py +1 -1
- waldiez/ws/utils.py +33 -5
- {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/METADATA +107 -109
- waldiez-0.6.1.dist-info/RECORD +254 -0
- waldiez/running/post_run.py +0 -180
- waldiez/running/pre_run.py +0 -159
- waldiez/running/run_results.py +0 -14
- waldiez/running/utils.py +0 -511
- waldiez-0.5.10.dist-info/RECORD +0 -248
- {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/WHEEL +0 -0
- {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/entry_points.txt +0 -0
- {waldiez-0.5.10.dist-info → waldiez-0.6.1.dist-info}/licenses/LICENSE +0 -0
- {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
|
-
#
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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(
|
|
225
|
+
results = await loaded_module.main(
|
|
229
226
|
on_event=self._a_on_event
|
|
230
227
|
)
|
|
231
228
|
self.print(MESSAGES["workflow_finished"])
|