pygpt-net 2.6.59__py3-none-any.whl → 2.6.60__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 (61) hide show
  1. pygpt_net/CHANGELOG.txt +4 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/app.py +9 -5
  4. pygpt_net/controller/__init__.py +1 -0
  5. pygpt_net/controller/presets/editor.py +442 -39
  6. pygpt_net/core/agents/custom/__init__.py +275 -0
  7. pygpt_net/core/agents/custom/debug.py +64 -0
  8. pygpt_net/core/agents/custom/factory.py +109 -0
  9. pygpt_net/core/agents/custom/graph.py +71 -0
  10. pygpt_net/core/agents/custom/llama_index/__init__.py +10 -0
  11. pygpt_net/core/agents/custom/llama_index/factory.py +89 -0
  12. pygpt_net/core/agents/custom/llama_index/router_streamer.py +106 -0
  13. pygpt_net/core/agents/custom/llama_index/runner.py +529 -0
  14. pygpt_net/core/agents/custom/llama_index/stream.py +56 -0
  15. pygpt_net/core/agents/custom/llama_index/utils.py +242 -0
  16. pygpt_net/core/agents/custom/logging.py +50 -0
  17. pygpt_net/core/agents/custom/memory.py +51 -0
  18. pygpt_net/core/agents/custom/router.py +116 -0
  19. pygpt_net/core/agents/custom/router_streamer.py +187 -0
  20. pygpt_net/core/agents/custom/runner.py +454 -0
  21. pygpt_net/core/agents/custom/schema.py +125 -0
  22. pygpt_net/core/agents/custom/utils.py +181 -0
  23. pygpt_net/core/agents/provider.py +72 -7
  24. pygpt_net/core/agents/runner.py +7 -4
  25. pygpt_net/core/agents/runners/helpers.py +1 -1
  26. pygpt_net/core/agents/runners/llama_workflow.py +3 -0
  27. pygpt_net/core/agents/runners/openai_workflow.py +8 -1
  28. pygpt_net/{ui/widget/builder → core/node_editor}/__init__.py +2 -2
  29. pygpt_net/core/{builder → node_editor}/graph.py +11 -218
  30. pygpt_net/core/node_editor/models.py +111 -0
  31. pygpt_net/core/node_editor/types.py +76 -0
  32. pygpt_net/core/node_editor/utils.py +17 -0
  33. pygpt_net/core/render/web/renderer.py +10 -8
  34. pygpt_net/data/config/config.json +3 -3
  35. pygpt_net/data/config/models.json +3 -3
  36. pygpt_net/data/locale/locale.en.ini +4 -4
  37. pygpt_net/item/agent.py +5 -1
  38. pygpt_net/item/preset.py +19 -1
  39. pygpt_net/provider/agents/base.py +33 -2
  40. pygpt_net/provider/agents/llama_index/flow_from_schema.py +92 -0
  41. pygpt_net/provider/agents/openai/flow_from_schema.py +96 -0
  42. pygpt_net/provider/core/agent/json_file.py +11 -5
  43. pygpt_net/tools/agent_builder/tool.py +217 -52
  44. pygpt_net/tools/agent_builder/ui/dialogs.py +119 -24
  45. pygpt_net/tools/agent_builder/ui/list.py +37 -10
  46. pygpt_net/ui/dialog/preset.py +16 -1
  47. pygpt_net/ui/main.py +1 -1
  48. pygpt_net/{core/builder → ui/widget/node_editor}/__init__.py +2 -2
  49. pygpt_net/ui/widget/node_editor/command.py +373 -0
  50. pygpt_net/ui/widget/node_editor/editor.py +2038 -0
  51. pygpt_net/ui/widget/node_editor/item.py +492 -0
  52. pygpt_net/ui/widget/node_editor/node.py +1205 -0
  53. pygpt_net/ui/widget/node_editor/utils.py +17 -0
  54. pygpt_net/ui/widget/node_editor/view.py +247 -0
  55. {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/METADATA +72 -2
  56. {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/RECORD +59 -33
  57. pygpt_net/core/agents/custom.py +0 -150
  58. pygpt_net/ui/widget/builder/editor.py +0 -2001
  59. {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/LICENSE +0 -0
  60. {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/WHEEL +0 -0
  61. {pygpt_net-2.6.59.dist-info → pygpt_net-2.6.60.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # ================================================== #
4
+ # This file is a part of PYGPT package #
5
+ # Website: https://pygpt.net #
6
+ # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
+ # MIT License #
8
+ # Created By : Marcin Szczygliński #
9
+ # Updated Date: 2025.09.24 00:00:00 #
10
+ # ================================================== #
11
+
12
+ # Safety: check C++ pointer validity to avoid calling methods on deleted Qt objects
13
+ try:
14
+ from shiboken6 import isValid as _qt_is_valid
15
+ except Exception:
16
+ def _qt_is_valid(obj) -> bool:
17
+ return obj is not None
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # ================================================== #
4
+ # This file is a part of PYGPT package #
5
+ # Website: https://pygpt.net #
6
+ # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
+ # MIT License #
8
+ # Created By : Marcin Szczygliński #
9
+ # Updated Date: 2025.09.24 00:00:00 #
10
+ # ================================================== #
11
+
12
+ from __future__ import annotations
13
+ from typing import Optional, Tuple
14
+
15
+ from PySide6.QtCore import Qt, QPointF, QRectF, QObject, Signal
16
+ from PySide6.QtGui import QColor, QPainter, QPen, QTransform
17
+ from PySide6.QtWidgets import QWidget, QGraphicsView, QGraphicsScene
18
+
19
+
20
+ # ------------------------ Graphics View / Scene ------------------------
21
+
22
+ class NodeGraphicsView(QGraphicsView):
23
+ """Zoomable, pannable view with a grid background.
24
+
25
+ The view renders a lightweight grid and supports:
26
+ - Ctrl + Mouse Wheel zooming
27
+ - Middle Mouse Button panning
28
+ - Rubber band selection
29
+
30
+ Notes:
31
+ - Space-panning is intentionally disabled to not conflict with typing in editors.
32
+ - All keyboard shortcuts (e.g., Delete) are handled at the NodeEditor level.
33
+
34
+ Args:
35
+ scene: Shared QGraphicsScene instance for the editor.
36
+ parent: Optional parent widget.
37
+ """
38
+ def __init__(self, scene: QGraphicsScene, parent: Optional[QWidget] = None):
39
+ super().__init__(scene, parent)
40
+ self.setRenderHints(self.renderHints() |
41
+ QPainter.Antialiasing | QPainter.TextAntialiasing | QPainter.SmoothPixmapTransform)
42
+ self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
43
+ self.setDragMode(QGraphicsView.RubberBandDrag)
44
+ self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
45
+ a = QGraphicsView.AnchorViewCenter
46
+ self.setResizeAnchor(a)
47
+ self.setFocusPolicy(Qt.StrongFocus)
48
+
49
+ self._zoom = 1.0
50
+ self._zoom_step = 1.15
51
+ self._min_zoom = 0.2
52
+ self._max_zoom = 3.0
53
+
54
+ self._panning = False
55
+ self._last_pan_pos = None
56
+
57
+ def drawBackground(self, painter: QPainter, rect: QRectF):
58
+ """Draw the checker grid in the background.
59
+
60
+ The grid spacing is fixed (20 px). Colors are read from the owning NodeEditor
61
+ instance if available, which allows dynamic theming.
62
+
63
+ Args:
64
+ painter: Active QPainter provided by Qt.
65
+ rect: The exposed background rect to be filled.
66
+ """
67
+ parent_editor = self.parent() # NodeEditor
68
+ color_back = getattr(parent_editor, "_grid_back_color", QColor(35, 35, 38))
69
+ color_pen = getattr(parent_editor, "_grid_pen_color", QColor(55, 55, 60))
70
+ painter.fillRect(rect, color_back)
71
+ pen = QPen(color_pen)
72
+ pen.setWidthF(1.0)
73
+ painter.setPen(pen)
74
+ grid = 20
75
+ left = int(rect.left()) - (int(rect.left()) % grid)
76
+ top = int(rect.top()) - (int(rect.top()) % grid)
77
+ x = left
78
+ while x < rect.right():
79
+ painter.drawLine(x, rect.top(), x, rect.bottom())
80
+ x += grid
81
+ y = top
82
+ while y < rect.bottom():
83
+ painter.drawLine(rect.left(), y, rect.right(), y)
84
+ y += grid
85
+
86
+ def keyPressEvent(self, e):
87
+ """Pass-through: the view does not handle special keys.
88
+
89
+ ESC and other keys are intentionally left for the host application/editor.
90
+ """
91
+ super().keyPressEvent(e)
92
+
93
+ def keyReleaseEvent(self, e):
94
+ """Pass-through for key release."""
95
+ super().keyReleaseEvent(e)
96
+
97
+ def wheelEvent(self, e):
98
+ """Handle Ctrl + Wheel zoom. Otherwise, default wheel behavior (scroll)."""
99
+ if e.modifiers() & Qt.ControlModifier:
100
+ self._apply_zoom(self._zoom_step if e.angleDelta().y() > 0 else 1.0 / self._zoom_step)
101
+ e.accept()
102
+ return
103
+ super().wheelEvent(e)
104
+
105
+ def mousePressEvent(self, e):
106
+ """Start panning with Middle Mouse Button; otherwise defer to base implementation."""
107
+ if e.button() == Qt.MiddleButton:
108
+ self._panning = True
109
+ self._last_pan_pos = e.position()
110
+ self.setCursor(Qt.ClosedHandCursor)
111
+ e.accept()
112
+ return
113
+ super().mousePressEvent(e)
114
+
115
+ def mouseMoveEvent(self, e):
116
+ """While panning, translate scrollbars. Otherwise defer."""
117
+ if self._panning and self._last_pan_pos is not None:
118
+ delta = e.position() - self._last_pan_pos
119
+ self._last_pan_pos = e.position()
120
+ self.horizontalScrollBar().setValue(self.horizontalScrollBar().value() - int(delta.x()))
121
+ self.verticalScrollBar().setValue(self.verticalScrollBar().value() - int(delta.y()))
122
+ e.accept()
123
+ return
124
+ super().mouseMoveEvent(e)
125
+
126
+ def mouseReleaseEvent(self, e):
127
+ """Stop panning on Middle Mouse Button release; otherwise defer."""
128
+ if self._panning and e.button() == Qt.MiddleButton:
129
+ self._panning = False
130
+ self.setCursor(Qt.ArrowCursor)
131
+ e.accept()
132
+ return
133
+ super().mouseReleaseEvent(e)
134
+
135
+ def zoom_in(self):
136
+ """Programmatically zoom in by a predefined step."""
137
+ self._apply_zoom(self._zoom_step)
138
+
139
+ def zoom_out(self):
140
+ """Programmatically zoom out by a predefined step."""
141
+ self._apply_zoom(1.0 / self._zoom_step)
142
+
143
+ def _apply_zoom(self, factor: float):
144
+ """Apply zoom scaling factor within configured bounds.
145
+
146
+ Args:
147
+ factor: Multiplicative factor to apply to the current zoom.
148
+
149
+ Notes:
150
+ The method clamps the result to [_min_zoom, _max_zoom] to prevent
151
+ excessive zooming.
152
+ """
153
+ new_zoom = self._zoom * factor
154
+ if not (self._min_zoom <= new_zoom <= self._max_zoom):
155
+ return
156
+ self._zoom = new_zoom
157
+ self.scale(factor, factor)
158
+
159
+ def zoom_value(self) -> float:
160
+ """Return the current zoom factor."""
161
+ return float(self._zoom)
162
+
163
+ def set_zoom_value(self, zoom: float, keep_center: bool = False):
164
+ """Set an absolute zoom factor and optionally keep the current viewport center."""
165
+ if zoom is None:
166
+ return
167
+ z = max(self._min_zoom, min(self._max_zoom, float(zoom)))
168
+ center_scene = None
169
+ if keep_center and self.viewport() is not None and self.viewport().rect().isValid():
170
+ center_scene = self.mapToScene(self.viewport().rect().center())
171
+
172
+ # Reset and apply new transform to avoid cumulative floating errors
173
+ self.resetTransform()
174
+ self._zoom = 1.0
175
+ if abs(z - 1.0) > 1e-9:
176
+ self.scale(z, z)
177
+ self._zoom = z
178
+
179
+ if keep_center and center_scene is not None:
180
+ self.centerOn(center_scene)
181
+
182
+ def get_scroll_values(self) -> Tuple[int, int]:
183
+ """Return (horizontal, vertical) scrollbar values."""
184
+ h = self.horizontalScrollBar().value() if self.horizontalScrollBar() else 0
185
+ v = self.verticalScrollBar().value() if self.verticalScrollBar() else 0
186
+ return int(h), int(v)
187
+
188
+ def set_scroll_values(self, h: int, v: int):
189
+ """Set horizontal and vertical scrollbar values."""
190
+ if self.horizontalScrollBar():
191
+ self.horizontalScrollBar().setValue(int(h))
192
+ if self.verticalScrollBar():
193
+ self.verticalScrollBar().setValue(int(v))
194
+
195
+ def view_state(self) -> dict:
196
+ """Return a serializable view state: zoom and scrollbars."""
197
+ h, v = self.get_scroll_values()
198
+ return {"zoom": float(self._zoom), "h": h, "v": v}
199
+
200
+ def set_view_state(self, state: dict):
201
+ """Apply a view state previously produced by view_state()."""
202
+ if not isinstance(state, dict):
203
+ return
204
+ z = state.get("zoom") or state.get("scale")
205
+ if z is not None:
206
+ try:
207
+ self.set_zoom_value(float(z), keep_center=False)
208
+ except Exception:
209
+ pass
210
+ h = state.get("h") or state.get("hScroll") or state.get("x")
211
+ v = state.get("v") or state.get("vScroll") or state.get("y")
212
+ try:
213
+ if h is not None:
214
+ self.set_scroll_values(int(h), int(v if v is not None else 0))
215
+ elif v is not None:
216
+ # set vertical if only v present
217
+ self.set_scroll_values(self.get_scroll_values()[0], int(v))
218
+ except Exception:
219
+ pass
220
+
221
+
222
+ class NodeGraphicsScene(QGraphicsScene):
223
+ """Graphics scene extended with custom context menu emission."""
224
+ sceneContextRequested = Signal(QPointF)
225
+
226
+ def __init__(self, parent: Optional[QObject] = None):
227
+ """Initialize the scene and set a very large scene rect.
228
+
229
+ Using a large default rect avoids sudden scene rect changes while panning/zooming.
230
+ """
231
+ super().__init__(parent)
232
+ self.setSceneRect(-5000, -5000, 10000, 10000)
233
+
234
+ def contextMenuEvent(self, event):
235
+ """Emit a scene-level context menu request when clicking empty space.
236
+
237
+ If the click is not on any item, the signal sceneContextRequested is emitted with
238
+ the scene position. Otherwise, default handling is used (propagating to items).
239
+ """
240
+ transform = self.views()[0].transform() if self.views() else QTransform()
241
+ item = self.itemAt(event.scenePos(), transform)
242
+ if item is None:
243
+ self.sceneContextRequested.emit(event.scenePos())
244
+ event.accept()
245
+ return
246
+ super().contextMenuEvent(event)
247
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.59
3
+ Version: 2.6.60
4
4
  Summary: Desktop AI Assistant powered by: OpenAI GPT-5, GPT-4, o1, o3, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, MCP, internet access, file handling, command execution and more.
5
5
  License: MIT
6
6
  Keywords: ai,api,api key,app,assistant,bielik,chat,chatbot,chatgpt,claude,dall-e,deepseek,desktop,gemini,gpt,gpt-3.5,gpt-4,gpt-4-vision,gpt-4o,gpt-5,gpt-oss,gpt3.5,gpt4,grok,langchain,llama-index,llama3,mistral,o1,o3,ollama,openai,presets,py-gpt,py_gpt,pygpt,pyside,qt,text completion,tts,ui,vision,whisper
@@ -117,7 +117,7 @@ Description-Content-Type: text/markdown
117
117
 
118
118
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
119
119
 
120
- Release: **2.6.59** | build: **2025-09-23** | Python: **>=3.10, <3.14**
120
+ Release: **2.6.60** | build: **2025-09-25** | Python: **>=3.10, <3.14**
121
121
 
122
122
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
123
123
  >
@@ -180,6 +180,7 @@ You can download compiled 64-bit versions for Windows and Linux here: https://py
180
180
  - Provides an intuitive operation and interface.
181
181
  - Includes a notepad.
182
182
  - Includes simple painter / drawing tool.
183
+ - Includes an node-based Agents Builder.
183
184
  - Supports multiple languages.
184
185
  - Requires no previous knowledge of using AI models.
185
186
  - Simplifies image generation using image models like `DALL-E` and `Imagen`.
@@ -2088,6 +2089,7 @@ PyGPT features several useful tools, including:
2088
2089
  - HTML/JS Canvas (built-in HTML renderer)
2089
2090
  - Translator
2090
2091
  - Web Browser (Chromium)
2092
+ - Agents Builder (beta)
2091
2093
 
2092
2094
  ![v2_tool_menu](https://github.com/szczyglis-dev/py-gpt/raw/master/docs/source/images/v2_tool_menu.png)
2093
2095
 
@@ -2165,6 +2167,70 @@ Enables translation between multiple languages using an AI model.
2165
2167
 
2166
2168
  A built-in web browser based on Chromium, allowing you to open webpages directly within the app. **SECURITY NOTICE:** For your protection, avoid using the built-in browser for sensitive or critical tasks. It is intended for basic use only.
2167
2169
 
2170
+ # Agents Builder (beta)
2171
+
2172
+ To launch the Agent Editor, navigate to:
2173
+
2174
+ `Tools -> Agents Builder`
2175
+
2176
+ ![nodes](https://github.com/szczyglis-dev/py-gpt/raw/master/docs/source/images/nodes.png)
2177
+
2178
+ This tool allows you to create workflows for agents using a node editor, without writing any code. You can add a new agent type, and it will appear in the list of presets.
2179
+
2180
+ To add a new element, right-click on the editor grid and select `Add` to insert a new node.
2181
+
2182
+ **Types of Nodes:**
2183
+
2184
+ - **Flow/Start**: The starting point for agents (user input).
2185
+ - **Flow/Agent**: A single agent with customizable default parameters, such as system instructions and tool usage. These settings can be overridden in the preset.
2186
+ - **Flow/Memory**: Shared memory between agents (shared Context).
2187
+ - **Flow/End**: The endpoint, returning control to the user.
2188
+
2189
+ Agents with connected shared memory share it among themselves. Agents without shared memory only receive the latest output from the previous agent.
2190
+
2191
+ The first agent in the sequence always receives the full context passed by the user.
2192
+
2193
+ Connecting agents and memory is done using node connections via slots. To connect slots, simply drag from the input port to the output port (Ctrl + mouse button removes a connection).
2194
+
2195
+ **Node Editor Navigation:**
2196
+
2197
+ - **Right-click**: Add node, undo, redo, clear
2198
+ - **Middle-click + drag**: Pan view
2199
+ - **Ctrl + Mouse wheel**: Zoom
2200
+ - **Left-click a port**: Create connection
2201
+ - **Ctrl + Left-click a port**: Rewire or detach connection
2202
+ - **Right-click or DELETE a node/connection**: Remove node/connection
2203
+
2204
+ **Tip:** Enable agent debugging in `Settings -> Debug -> Log Agents usage to console` to log the full workflow to the console.
2205
+
2206
+ Agents built using this tool are compatible with both OpenAI Agents and LlamaIndex.
2207
+
2208
+ **Notes:**
2209
+
2210
+ Routing and system instruction: for every agent that has more than one connection leading to the next agent, a routing instruction is automatically injected just before your system prompt:
2211
+
2212
+ ```
2213
+ You are a routing-capable agent in a multi-agent flow.
2214
+ Your id is: <current_id>, name: <agent_name>.
2215
+ You MUST respond ONLY with a single JSON object and nothing else.
2216
+ Schema:
2217
+ {
2218
+ "route": "<ID of the next agent from allowed_routes OR the string 'end'>",
2219
+ "content": "<final response text for the user (or tool result)>"
2220
+ }
2221
+ Rules:
2222
+ - allowed_routes: [<allowed>]
2223
+ - If you want to finish the flow, set route to "end".
2224
+ - content must contain the user-facing answer (you may include structured data as JSON or Markdown inside content).
2225
+ - Do NOT add any commentary outside of the JSON. No leading or trailing text.
2226
+ - If using tools, still return the final JSON with tool results summarized in content.
2227
+ - Human-friendly route names: <friendly>
2228
+
2229
+ <here begins your system instruction>
2230
+ ```
2231
+
2232
+ **INFO:** Agents Builder is in beta.
2233
+
2168
2234
 
2169
2235
  # Token usage calculation
2170
2236
 
@@ -3658,6 +3724,10 @@ may consume additional tokens that are not displayed in the main window.
3658
3724
 
3659
3725
  ## Recent changes:
3660
3726
 
3727
+ **2.6.60 (2025-09-25)**
3728
+
3729
+ - Added a new tool: Agents Builder - allowing visual design of agent workflows using nodes - available in Tools -> Agents Builder (beta).
3730
+
3661
3731
  **2.6.59 (2025-09-23)**
3662
3732
 
3663
3733
  - LlamaIndex has been upgraded to v0.13.6.
@@ -1,10 +1,10 @@
1
- pygpt_net/CHANGELOG.txt,sha256=qwRlkyMm-QUdbfmCLpVh6iAilkSzmzkztS-lXKpOpTA,108342
1
+ pygpt_net/CHANGELOG.txt,sha256=alDVWf6Sf6ONpTwD1j8LG4JR3rpiKnCszZFeLf1LQHk,108502
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=8RcdihUE5GuEBcR_Tw1bcPEAo9kr63F4OJnjWemt0ks,1373
4
- pygpt_net/app.py,sha256=bxXu6DO2hYVP5Fqq4jA-rQ2jN3edyp73dsgEGTsJxb0,23001
3
+ pygpt_net/__init__.py,sha256=Hys_e5hziFZkUxaE_F5rHQxBwwSPLXDZw3QIwvgt6h0,1373
4
+ pygpt_net/app.py,sha256=4rPvsX2wFIWFzfhHSejh6VyKLawuJ38Pm4dQClXF0iI,23127
5
5
  pygpt_net/app_core.py,sha256=PwBOV9wZLtr-O6SxBiazABhYXMHH8kZ6OgbvSv2OiZA,3827
6
6
  pygpt_net/config.py,sha256=3CA7xXPKQsdRie1CY8_b5-Kk1taWMciUP9CesXRQNNY,18302
7
- pygpt_net/controller/__init__.py,sha256=k6_danw2VOQ4YNT-tH0mnfgK4SCL5B2Hyhug6TI1LgY,6100
7
+ pygpt_net/controller/__init__.py,sha256=X3LX0CrGWK-hqHx5NO5-WUkiDwS0Tqde3MPGt6RbFrM,6152
8
8
  pygpt_net/controller/access/__init__.py,sha256=_XZxGy5U93JGU49GbIB9E_I26_uRV_Zbz18lcp7u23A,510
9
9
  pygpt_net/controller/access/access.py,sha256=nPttwQf6RZHJAlXZ-3fnlcplwXxcJWp8ciq3FMsSssI,3974
10
10
  pygpt_net/controller/access/control.py,sha256=MhtgCBB2eIpr358qB5uzBkGX8EkT48u84dhZqyuXDss,17182
@@ -126,7 +126,7 @@ pygpt_net/controller/plugins/plugins.py,sha256=2y__KawXRKCKD-UR4yFnwJxo9bERfOUFB
126
126
  pygpt_net/controller/plugins/presets.py,sha256=8EsEwpU2MjWMQu1kcY4JTcyqqN8pjBrcxA2uW2tFU_A,11674
127
127
  pygpt_net/controller/plugins/settings.py,sha256=7eHGbn1DDCnLJfOGIqfdIPrIyi_QMkTmjyruaGZwSnw,6107
128
128
  pygpt_net/controller/presets/__init__.py,sha256=Bb9_aAvGxQcKCW2fvG5CAJ6ZUwNYN3GaCf3BXB9eGfI,511
129
- pygpt_net/controller/presets/editor.py,sha256=AHVo4gkiRQl5QUndC8D-CQ4GEAiq7zk3dGnvJ53Om3o,39115
129
+ pygpt_net/controller/presets/editor.py,sha256=CASqSJnXIr4bEi3Pg51OPhhztscJNYNEJYMr35z5xBE,56570
130
130
  pygpt_net/controller/presets/experts.py,sha256=dfPKmAPO-7gaUD2ILs3lR005ir32G5vV-Sa5TGEHwOU,5820
131
131
  pygpt_net/controller/presets/presets.py,sha256=RwCQeWKEWmV8PdVak9S6pVFCml2Gz0GjCoS23DRv_O4,22154
132
132
  pygpt_net/controller/realtime/__init__.py,sha256=MhvJb5wBqcpX6uylof01qEDRdU3SepTD88sU2lXNtIQ,519
@@ -160,22 +160,38 @@ pygpt_net/core/access/voice.py,sha256=xUnvvdSWG2I5ezpfxEHcmYdgAD-ArtsiqUo0CeHTx4
160
160
  pygpt_net/core/agents/__init__.py,sha256=JOb-fSWSQFdQTCQvlQmTfcjnZfHtGxwBF1csYQqy4DU,516
161
161
  pygpt_net/core/agents/agents.py,sha256=Q2LeixLPbH5JMJIK3-miWcKscTTHC6kxxcqgvd9Wi6o,1114
162
162
  pygpt_net/core/agents/bridge.py,sha256=KhCbMTZNigNlgOhXEMN1kqWGNUhkEdjFdiHBBVTAr2g,1553
163
- pygpt_net/core/agents/custom.py,sha256=1q-BW-wFnijSx8F0MXHxEnPkTGtZQwEXyURn0jZmdl0,4092
163
+ pygpt_net/core/agents/custom/__init__.py,sha256=Bo-0ZyoQ0FXJWm8DOi3sqO9Xf9ErJOpJ06QvhUjoCG4,8564
164
+ pygpt_net/core/agents/custom/debug.py,sha256=2_ByivZWxuS4VwwXgNQr10T07PVKWA4IJptx5gyIsCU,2351
165
+ pygpt_net/core/agents/custom/factory.py,sha256=vJZcCTJjhDxmErU8NKj-A9OExbLypUlRESk3UguVJYo,3621
166
+ pygpt_net/core/agents/custom/graph.py,sha256=IlUNpdYFctAe913s9TNEI277WfH9TmgFUihU8WAjs2s,2650
167
+ pygpt_net/core/agents/custom/llama_index/__init__.py,sha256=ffFdq3JICFBMNig4ifymqJdBkdoLWbp0fVzsbbmrkgs,487
168
+ pygpt_net/core/agents/custom/llama_index/factory.py,sha256=400PQJhyPYOy_p3q2lF81FVTsCxcbh4jcu-Z6C8t2x4,3144
169
+ pygpt_net/core/agents/custom/llama_index/router_streamer.py,sha256=kpo_XM6iTvZFvGSyKptWhOKzlbh8wy3uWsuHKejPsYI,3224
170
+ pygpt_net/core/agents/custom/llama_index/runner.py,sha256=44_7ggs5nOZZ-mqS22yUjHzBUtiWrjbYNRGQ_JCYWUM,23579
171
+ pygpt_net/core/agents/custom/llama_index/stream.py,sha256=94Cd_2J20LHkFFZOXSkh6LQWGtfXiU8-FrbJz4NAfrQ,1708
172
+ pygpt_net/core/agents/custom/llama_index/utils.py,sha256=JobIU7aBrnt6cFxqJSK7n-AXzjZwa7wDY4_geXMsah0,8173
173
+ pygpt_net/core/agents/custom/logging.py,sha256=xDjJCRK3xhgc5FhtI-QZOlSevf4NlatBjsGnjApF-h0,1825
174
+ pygpt_net/core/agents/custom/memory.py,sha256=Qc2CUc1sYVjK5GTYrYGxGcdRYb-HThklYIMQ2Of-1yE,1877
175
+ pygpt_net/core/agents/custom/router.py,sha256=b1djqhF-0MLa4svH_0IfwTwGaRw2gaPkRZ3wuuq0Uko,4424
176
+ pygpt_net/core/agents/custom/router_streamer.py,sha256=AttgufIMw8Yqc2Ef0CvPLoiPwpApzsCGyaHsB1ZnVCk,6205
177
+ pygpt_net/core/agents/custom/runner.py,sha256=vSK0W7LIcCG7PTQKMlyRp7gy5czYM_IyCrllH-B7ycY,20031
178
+ pygpt_net/core/agents/custom/schema.py,sha256=gVvbptuPSbwEyhCBoOaP9BtInXf6g0CmXeVDjEDrhtk,3999
179
+ pygpt_net/core/agents/custom/utils.py,sha256=seDZhM9udSN9m_av_247Z_WK-GgoaaP_tX-4lZm6EB4,5847
164
180
  pygpt_net/core/agents/legacy.py,sha256=OiiiK0zrTfNbWu2dKukg_Ro0vTZyiHlHHCTn1hU0bWg,1733
165
181
  pygpt_net/core/agents/memory.py,sha256=9Jz9kT-xT8QPpGeXEpWopJUGBLLHu6Ys_-fRrg6BWDg,5210
166
182
  pygpt_net/core/agents/observer/__init__.py,sha256=qVIBJKpGbc0k7PTESAwAR7SbN-pbkBMJUTzeliCAaJU,651
167
183
  pygpt_net/core/agents/observer/evaluation.py,sha256=AEcXfoMNNER1yRu5WeVnQypC53QPJMRXh4QlPzJzEYM,8115
168
- pygpt_net/core/agents/provider.py,sha256=jQd4ULnesQROKmi7srYpA3qwiS7p9UubQjnawUKQgnk,3360
169
- pygpt_net/core/agents/runner.py,sha256=mJHCMsXoycapqFOZWdi81s-INgZv5MS0MAm3oC_P-kk,12372
184
+ pygpt_net/core/agents/provider.py,sha256=e4FCF_6syvo7HdatHeVV21g0Kw6F1mTrnGwnQH97y-A,5971
185
+ pygpt_net/core/agents/runner.py,sha256=n5Oih4HbkWlU2hv6AupvPySEVSz3Ye5iL3866RVYdbc,12618
170
186
  pygpt_net/core/agents/runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
187
  pygpt_net/core/agents/runners/base.py,sha256=XjheBYhBZan51r3vkUh5uf00sYiRj8btZUeUP1jpqlA,5687
172
- pygpt_net/core/agents/runners/helpers.py,sha256=0iQQlSg_pJfxY_gQEWImnyAVkTUQYYSW67Z9DS7oUYw,8305
188
+ pygpt_net/core/agents/runners/helpers.py,sha256=MLBcDo59ACH5_HzQUZ3PzPwvZYzlEjYa9FOSdqiJqn0,8327
173
189
  pygpt_net/core/agents/runners/llama_assistant.py,sha256=a_Abkc8u1S8vr6lUIDRrzTM9sQnEvyZA8nZxXaYp05w,2492
174
190
  pygpt_net/core/agents/runners/llama_plan.py,sha256=CC3WPG9KUxd_dRjPZROOrmPQrWQ_u8C0nRx0TCzi9bE,13391
175
191
  pygpt_net/core/agents/runners/llama_steps.py,sha256=1SBLp5t4TUsxpYIUtSSnBy5Sd2AxheDlv2AXimls-Vg,7328
176
- pygpt_net/core/agents/runners/llama_workflow.py,sha256=rWCUge9IBxvOITceqxd6rrgzg-3RDyo28oJBorsjwyc,12717
192
+ pygpt_net/core/agents/runners/llama_workflow.py,sha256=NeBbna8tfhBFnOvCz9rRfWV8ovXztVxiwq-jq1ghCvI,12833
177
193
  pygpt_net/core/agents/runners/loop.py,sha256=7Vu50yidu2HSOifOX6bhbyTEHBS5An4GmGUBMYdHOco,7273
178
- pygpt_net/core/agents/runners/openai_workflow.py,sha256=9jajowBjD_LKmd417e5kkl9h1xDnSgjrRE_cjJyPNdQ,8780
194
+ pygpt_net/core/agents/runners/openai_workflow.py,sha256=uKv6wvceORbnkeOze7GvZ3qmEl78ibjonNAyKKynFw0,9012
179
195
  pygpt_net/core/agents/tools.py,sha256=UW5-3q-cPpmx_FlDyuF2qymbgIJRmkklNmng3IokEUM,22116
180
196
  pygpt_net/core/assistants/__init__.py,sha256=FujLn0ia5S3-7nX-Td_0S5Zqiw6Yublh58c4Di7rRgY,514
181
197
  pygpt_net/core/assistants/assistants.py,sha256=JVseBSjDJh9vJYjxoZVwU93EFTBJk_rUtRh_Ml550H0,4391
@@ -211,8 +227,6 @@ pygpt_net/core/bridge/__init__.py,sha256=RCrT3CuP8-Gf_APr5mBXyNcRigrfHcgS-SYVVP_
211
227
  pygpt_net/core/bridge/bridge.py,sha256=1pTbVza_CZMdrnXiRxq9sDROeJtMNofBMMkFzA1VQOE,10496
212
228
  pygpt_net/core/bridge/context.py,sha256=YBqeR5PgV0x5KK5otN-DYQNSqQtVaNddtRLDwSSLC2Y,7154
213
229
  pygpt_net/core/bridge/worker.py,sha256=RukudDq6IAxcg2w-wfQmu7Ia-YTT3NPgAybr1OMpxF4,8498
214
- pygpt_net/core/builder/__init__.py,sha256=x-1fJoeSQsNwPgs600_uvLDXT8XHvCtaoEah9bm_PDs,578
215
- pygpt_net/core/builder/graph.py,sha256=mhpg5LUBP0aVlxYZw6DzXpTLNmf3__1gRULQo_2hCXc,19002
216
230
  pygpt_net/core/calendar/__init__.py,sha256=AyzoNqYgxV35CMEzoi_SCSsQh4ehg_Wu_2nsK3xsbyg,512
217
231
  pygpt_net/core/calendar/calendar.py,sha256=mHWU8jPTYWqxd-35tIHM6GuKaFWzmB6Up7lq8ewV2_U,7224
218
232
  pygpt_net/core/camera/__init__.py,sha256=cny2EajFmwkFdo_pUkErJY4BhpyHp1kJVDcTCOOvkjY,510
@@ -313,6 +327,11 @@ pygpt_net/core/models/models.py,sha256=S5Liz5wnrfrvm5gMf4gHrtesrUhQ2yIZEUWOK-omV
313
327
  pygpt_net/core/models/ollama.py,sha256=MiCt1Nzd3VHjnj7a0CmGjqUkPuD7401obd7G7KQIZzU,3189
314
328
  pygpt_net/core/modes/__init__.py,sha256=dKpce7VTQCzmSfNBT1WHd_zKzXRthRs7ZKqHQSEtftc,509
315
329
  pygpt_net/core/modes/modes.py,sha256=tlVP9OnQqwOIrv0qt-OMwivslcHEC3WY1X-0r-o0lqI,3067
330
+ pygpt_net/core/node_editor/__init__.py,sha256=4rnR6TdYCl9M0U914MNsvOoE8CRiRnKfx819xBypbxo,517
331
+ pygpt_net/core/node_editor/graph.py,sha256=8bQvSQNqYqN8hdWNrpjyUK-l78mE8WGnx6fR5DBo0Ow,11791
332
+ pygpt_net/core/node_editor/models.py,sha256=WHzCr4rd9rx5zvKcODuyMCe97NsYGJfaFVO2WFx4a_4,3366
333
+ pygpt_net/core/node_editor/types.py,sha256=dHqjQHmD0bWowdo2EZWCmieVB3sptnshs7I9x0Kh_Jc,2959
334
+ pygpt_net/core/node_editor/utils.py,sha256=FLnHXHQ6W2ZPYz39e5WqVY7SkBLoqVtPFGVNbPBj3FI,595
316
335
  pygpt_net/core/notepad/__init__.py,sha256=Uro9_4CfihHzn92I2Ar0q0t-MAGkikUMrY5kGAuLlSw,511
317
336
  pygpt_net/core/notepad/notepad.py,sha256=zYE7BRERDOxROMMfjTwS6M5Vk08DXxXqHdKi1aX33i0,4243
318
337
  pygpt_net/core/platforms/__init__.py,sha256=NRmTzf4xFxcYseYs1mgCPZA0YUH2v0Aufq4CG1_mKDE,513
@@ -359,7 +378,7 @@ pygpt_net/core/render/web/debug.py,sha256=784RYXF6inn_bkRtYD1_FllQSyk67JmxKGWPiA
359
378
  pygpt_net/core/render/web/helpers.py,sha256=8-JkbEOOLoCEAkylJWr8yk3aIliQBMyqcatsyW99VWY,7340
360
379
  pygpt_net/core/render/web/parser.py,sha256=pDFc9Tf8P-jvrDilXyT1fukcQHbixHRJ9Dn9hF10Gko,12892
361
380
  pygpt_net/core/render/web/pid.py,sha256=F33x_OtrHL9BDMXx_JUbfo8-DOiN4vo1Tv4rrRVADTo,4343
362
- pygpt_net/core/render/web/renderer.py,sha256=2cvNHNaWsXTpiXvIy1hVXsG0MHEkPEEJVP-w-nxPrt8,68606
381
+ pygpt_net/core/render/web/renderer.py,sha256=n5ov53m-JA5cKBRXtprf_9FuPQpy_9hKGaNwlFeWRhk,68793
363
382
  pygpt_net/core/render/web/syntax_highlight.py,sha256=QSLGF5cJL_Xeqej7_TYwY_5C2w9enXV_cMEuaJ3C43U,2005
364
383
  pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJi2iPI4,512
365
384
  pygpt_net/core/settings/settings.py,sha256=Ix06y-gJ3q7NJDf55XAWBBYulBLpinBqzYqsytH_9mo,8686
@@ -400,8 +419,8 @@ pygpt_net/css_rc.py,sha256=PX6g9z5BsD-DXISuR2oq3jHcjiKfcJ4HsgcHez6wGMc,27762
400
419
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
401
420
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
402
421
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
403
- pygpt_net/data/config/config.json,sha256=Mq1eyAAIz2B_Pggzdv1HqZh9mvItw8QuktP7pN35I3o,30943
404
- pygpt_net/data/config/models.json,sha256=x8xOaiX4Uo9S0jiAnWFMoW2u1K9oE_bpsvCWpHANwXM,118192
422
+ pygpt_net/data/config/config.json,sha256=knoJ0lpwKQ9vJig3HZjnxVWRmRZPQIk5RaSXHV3Z3Mc,30943
423
+ pygpt_net/data/config/models.json,sha256=KTO74tFW3mhfsxAqPRo493yMZ2rsyTvWmNYKP6PSU6s,118192
405
424
  pygpt_net/data/config/modes.json,sha256=IpjLOm428_vs6Ma9U-YQTNKJNtZw-qyM1lwhh73xl1w,2111
406
425
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
407
426
  pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
@@ -1707,7 +1726,7 @@ pygpt_net/data/js/markdown-it/markdown-it-katex.min.js,sha256=-wMst2a9i8Borapa9_
1707
1726
  pygpt_net/data/js/markdown-it/markdown-it.min.js,sha256=OMcKHnypGrQOLZ5uYBKYUacX7Rx9Ssu91Bv5UDeRz2g,123618
1708
1727
  pygpt_net/data/languages.csv,sha256=fvtER6vnTXFHQslCh-e0xCfZDQ-ijgW4GYpOJG4U7LY,8289
1709
1728
  pygpt_net/data/locale/locale.de.ini,sha256=ZX_31ZDOgqG2X7YN7eTeZF3Y2TyZ93aoZ3OjtHgy4xg,106996
1710
- pygpt_net/data/locale/locale.en.ini,sha256=vYyGtlakNgRqPFowZjj-7LHCR4TnladEJUnvymP6F94,101122
1729
+ pygpt_net/data/locale/locale.en.ini,sha256=h8OklvRMKWNfK_ruTojQIvCXJ9KxMARrX8hc_sXl0qI,101145
1711
1730
  pygpt_net/data/locale/locale.es.ini,sha256=3gyUk0kFo76eThhttbT2U0HS8uF19VQVE3Oueb8MwVk,107621
1712
1731
  pygpt_net/data/locale/locale.fr.ini,sha256=GLqZn8nLwOYEM09WBoLO61UyjZbL2_OVxWp3GDsge6Y,110394
1713
1732
  pygpt_net/data/locale/locale.it.ini,sha256=warvdCX_vdt7w5qWvdrSWF7pxNL1xPREaUvksTnHJIc,105292
@@ -1903,7 +1922,7 @@ pygpt_net/fonts_rc.py,sha256=iBYh-MsobIYZJDrsY6BSpaC51vKaJ7yiNpyU1FbfY9M,3236175
1903
1922
  pygpt_net/icons.qrc,sha256=xLApyj7e7MOwvugDMiFL_bqm5IYqAOEmHEUWy-flzcQ,9729
1904
1923
  pygpt_net/icons_rc.py,sha256=o6QKV61aBU7SxHUV1YhsUyVcnDWwWe7eiIh-SlYc7Fg,98200
1905
1924
  pygpt_net/item/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
1906
- pygpt_net/item/agent.py,sha256=2H2QJHez-GCJRINb3zZZryZn8wiUHTU_MGkCsb3USp8,1517
1925
+ pygpt_net/item/agent.py,sha256=1nClOB1g4vZE6py6J9tMVBQHv8E6vPxbkwBNoyuBAvw,1650
1907
1926
  pygpt_net/item/assistant.py,sha256=FYIbh48J3aOC9IXaopFYqbzQ5vWG_hvWW76UFnUjvGM,11484
1908
1927
  pygpt_net/item/attachment.py,sha256=nsyvOnTS_gimcdzwJNI7bC-1KSrSu66XkMtaNwg2IYk,2970
1909
1928
  pygpt_net/item/builder_layout.py,sha256=u_VxSs_JrbVArVL7x6vMXmHNChmSpeCeqAoNjvJb9CA,1509
@@ -1913,7 +1932,7 @@ pygpt_net/item/index.py,sha256=NTDBgNjiyaixTFJu_1oBqoVajf92c2U1Oa3BKQ11poU,1920
1913
1932
  pygpt_net/item/mode.py,sha256=0uPU7ciqVLaEcijUA-D73ABMoLUFtgPytdXUuwqtews,688
1914
1933
  pygpt_net/item/model.py,sha256=1s6aRxLs7Y8bgpVef7Yv7_ERmvjePjwNQLrZ0p7KHhU,10152
1915
1934
  pygpt_net/item/notepad.py,sha256=7v3A3HJjew0IoFM65Li0xfoSEdJzfEUZM1IH1ND0Bxw,1805
1916
- pygpt_net/item/preset.py,sha256=9VeMlWjUvRKYyVu1XPxaZOFZvL-N_ThXZR_M38TbpWA,8523
1935
+ pygpt_net/item/preset.py,sha256=nkLoyfHoZnjoqKKynDo0alJDb_o8BFxTZRYk7_2uQss,8991
1917
1936
  pygpt_net/item/prompt.py,sha256=xequZDTEv4eKjmC5OLqZnNrbyy0YA4LHe0k2RpPiBw0,1745
1918
1937
  pygpt_net/js.qrc,sha256=0ur8_O4TeD2NEmj2gPb7z1XKH5PRxgDo3H8awPPb7zg,2001
1919
1938
  pygpt_net/js_rc.py,sha256=9a5ssTYXTM6vVa2A0ZWbtM8hK34Expblqe4gD4F1nBk,2789149
@@ -2086,9 +2105,10 @@ pygpt_net/plugin/wolfram/plugin.py,sha256=_DD0Y6oWTwPpcAFinwklLJjmRnK-6yJI7eBzu5
2086
2105
  pygpt_net/plugin/wolfram/worker.py,sha256=gu5HjeqwOi2F_HdlR0mqx1wZszKIsfzalfiLrGHCZVI,23048
2087
2106
  pygpt_net/provider/__init__.py,sha256=lOkgAiuNUqkAl_QrIG3ZsUznIZeJYtokgzEnDB8gRic,488
2088
2107
  pygpt_net/provider/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2089
- pygpt_net/provider/agents/base.py,sha256=reCwWTHGm0ejW2hvClpd2SjLiKIiUUYNjxoQ608DpJI,3763
2108
+ pygpt_net/provider/agents/base.py,sha256=2Bjt-4yyj1OZkN6Qh_QS_W5Iq0SwcTC7Nt3VFDesEIk,4540
2090
2109
  pygpt_net/provider/agents/llama_index/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2091
2110
  pygpt_net/provider/agents/llama_index/codeact_workflow.py,sha256=NmJy2y4i0Hu7daGVSS9fVzeV3TbVeG01s8phEKnyg7c,3556
2111
+ pygpt_net/provider/agents/llama_index/flow_from_schema.py,sha256=ovOW2VqWmbdH1tyMF9Gc2V6ARi10v5letetc_HEKweg,4085
2092
2112
  pygpt_net/provider/agents/llama_index/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2093
2113
  pygpt_net/provider/agents/llama_index/legacy/openai.py,sha256=j3Od0FPIh1NyMh-jb3CaocxuCUi_4b4CijEqaPA2PeQ,1644
2094
2114
  pygpt_net/provider/agents/llama_index/legacy/openai_assistant.py,sha256=ZjxhMvltzDNGCmzCCS64wWYK6Z5Zn2V8CJBv12skyk4,3956
@@ -2120,6 +2140,7 @@ pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py,sha256
2120
2140
  pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py,sha256=loW8ujW7NrWZkCdfYCD7t3GO5HXYzRk85Afs9-lNBEE,1823
2121
2141
  pygpt_net/provider/agents/openai/bots/research_bot/manager.py,sha256=n3BJiEogkfPvWsbA7ieHWnMoLve5koQ1ihAKO5ty7jk,7310
2122
2142
  pygpt_net/provider/agents/openai/evolve.py,sha256=hBsYIokVCWLWB0syHoLQqWgEiEfR9JhmiiaETjQMx1c,22976
2143
+ pygpt_net/provider/agents/openai/flow_from_schema.py,sha256=Ih8HMsjGBVLqQ0khLHR_VHkEs56hKfab0cfYc03MYDE,3986
2123
2144
  pygpt_net/provider/agents/openai/supervisor.py,sha256=cUsVns-ZZ7kK78SNcHRt3UgfePjB6NWCOrauSfn_BnI,13229
2124
2145
  pygpt_net/provider/api/__init__.py,sha256=Daaev4XktvnciogLCfXcuokzrBUrbeoeRfU7usY5Svw,933
2125
2146
  pygpt_net/provider/api/anthropic/__init__.py,sha256=IVWpeh5TxGug3kMCkYMkyC27wdjjZeDjlp0U3kW3SvM,7583
@@ -2191,7 +2212,7 @@ pygpt_net/provider/audio_output/openai_tts.py,sha256=7A2FybS2HBlGRPdFWgsXxlr4KI_
2191
2212
  pygpt_net/provider/core/__init__.py,sha256=YHQ86AUqjoP79N5vRqOmK-6FUDLQhCl_0y6Z4Tun3dU,488
2192
2213
  pygpt_net/provider/core/agent/__init__.py,sha256=jwPZQU-LLHDmWMicfBT5a0XVuVBbM0AxRNojnirp1UY,487
2193
2214
  pygpt_net/provider/core/agent/base.py,sha256=oPlxc3Smo3BTaJPgDO4bq7NGIQjODekI06md_oAUkoA,1306
2194
- pygpt_net/provider/core/agent/json_file.py,sha256=FQHXMkMPhMwOH-TLJJypJ26wH5RFnPHiiSaln6WgQFw,5618
2215
+ pygpt_net/provider/core/agent/json_file.py,sha256=ZLKmlVHEahop3GElmvUx3rf4FZU7bvsgQ49lJQvwuTE,5883
2195
2216
  pygpt_net/provider/core/assistant/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2196
2217
  pygpt_net/provider/core/assistant/base.py,sha256=zFJs4LxnBvUBri9-FgOYjv1wyfDFEzEu9H01GcTYL0s,1251
2197
2218
  pygpt_net/provider/core/assistant/json_file.py,sha256=uNnxBEWWbShrjzrhYKfgVQRLQcoLGIHzEkTYCmTfD_A,6530
@@ -2382,10 +2403,10 @@ pygpt_net/provider/web/google_custom_search.py,sha256=T99QIkkh21QhsFbtNr3XXBZ4_k
2382
2403
  pygpt_net/provider/web/microsoft_bing.py,sha256=Y4VoI7eJFfHFDN1g7zYT3cI1xwLrPEDdozqoLeh3BqQ,4199
2383
2404
  pygpt_net/tools/__init__.py,sha256=MdlCuI4chc1hFf402oIFfEebiksgtPT_95ddpYSYTVM,4520
2384
2405
  pygpt_net/tools/agent_builder/__init__.py,sha256=BMAd560SEU0GcVRUDaWWLiLoU2SYdAWDABhs7xrORwI,508
2385
- pygpt_net/tools/agent_builder/tool.py,sha256=UlRaWPmoKmMNw-4lwbXJ3Qy_c_LldK8VPZx2mvcxuw4,9032
2406
+ pygpt_net/tools/agent_builder/tool.py,sha256=W8ECARY7z_9aJeTeSta8ga5BOuSWj6gGuucp2YrzfHg,15613
2386
2407
  pygpt_net/tools/agent_builder/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2387
- pygpt_net/tools/agent_builder/ui/dialogs.py,sha256=aDRSgtiec5pCkodzfEi-D77m9Ks1Gn0Yfhb71uTq5w4,5040
2388
- pygpt_net/tools/agent_builder/ui/list.py,sha256=PnRHPBfZUry4fzY4mnV7VV8LHQhLu_KCfM5Gk30TgNo,6941
2408
+ pygpt_net/tools/agent_builder/ui/dialogs.py,sha256=KXGMgRAzcK77NNaRcLFVBVen0iEWK1xyEIFQo_cGQGw,8583
2409
+ pygpt_net/tools/agent_builder/ui/list.py,sha256=XU_6QiiZ4AlddBu9ecahRoMrxUKTzk-3UEV6ly-Dpyg,7922
2389
2410
  pygpt_net/tools/audio_transcriber/__init__.py,sha256=BQLr8Kg670xPAyv_qoRA_EjWq5WZclqoc4OpTk5V11k,508
2390
2411
  pygpt_net/tools/audio_transcriber/tool.py,sha256=Qzyd3lnzSjm40LoF9Isz-Yvc-Ex3WmEUFi5H0mjcTfo,9836
2391
2412
  pygpt_net/tools/audio_transcriber/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2459,7 +2480,7 @@ pygpt_net/ui/dialog/logger.py,sha256=OGFKlAyeMgNQI4a-VW9bDXSrcsPtEC6rLhtdu11lsJc
2459
2480
  pygpt_net/ui/dialog/models.py,sha256=WnVvv1pFwTTXmK3uM9bNX59GMccDGxvKhAYxJXW88fs,19717
2460
2481
  pygpt_net/ui/dialog/models_importer.py,sha256=14kxf7KkOdTP-tcgTN5OphNZajlivDPTDKBosebuyog,4505
2461
2482
  pygpt_net/ui/dialog/plugins.py,sha256=88TsvYWHdmR5hepld6ouSEa4BDhewAQ-JFE7RWGSdy8,20287
2462
- pygpt_net/ui/dialog/preset.py,sha256=G-nGxu0OUCrFUFLpT8XCJL9rWBCG6eEKNciQbLBB39s,17196
2483
+ pygpt_net/ui/dialog/preset.py,sha256=DfnTsNpqtJRln-zCEM_Da11hYQ8v24mPw5gCzp-Xqt0,18008
2463
2484
  pygpt_net/ui/dialog/preset_plugins.py,sha256=ynqc0aWjU7MTL4jxcVKaRH_tC9uzeWJCUzUjI74ADb0,3796
2464
2485
  pygpt_net/ui/dialog/profile.py,sha256=Xk9NNQmr1A5pRUxdedu7ePEBq5OYhLT8UInuRWYBktU,4105
2465
2486
  pygpt_net/ui/dialog/rename.py,sha256=Spb7cUVq1ivy3Zg28SBACJ7p_GwJ1gm82Oz9Ld_a_FU,973
@@ -2506,7 +2527,7 @@ pygpt_net/ui/layout/toolbox/split.py,sha256=Hs9hZPciLXCRV_izoayrBlJSCuTGumdNki6z
2506
2527
  pygpt_net/ui/layout/toolbox/toolbox.py,sha256=VHzyzm7LjcAN30h111SEP6fdXwi84DYyf8CE1X3pdt8,2799
2507
2528
  pygpt_net/ui/layout/toolbox/video.py,sha256=JyDVkJIh1m6RSbJFGQqIBKrsQgbfx2O08ybJ7bEZyWg,1477
2508
2529
  pygpt_net/ui/layout/toolbox/vision.py,sha256=E6-lLfU3vrWdlprayr6gxFs7F7AGkn4OIrFXrQ9p5XA,2035
2509
- pygpt_net/ui/main.py,sha256=5cYps7APUbiyzQAs3-rweO4vDKcJpWIhshy89v_AzJ0,14194
2530
+ pygpt_net/ui/main.py,sha256=WfCWnf7OiPbFazwMyhH4yWUdomU2N12sy7i4K5Sa9zI,14259
2510
2531
  pygpt_net/ui/menu/__init__.py,sha256=wAIKG9wLWfYv6tpXCTXptWb_XKoCc-4lYWLDvV1bVYk,508
2511
2532
  pygpt_net/ui/menu/about.py,sha256=BtelbYhpXJGgsoEwsPuw61wVuGkzogpY3FVvWtd09HE,4619
2512
2533
  pygpt_net/ui/menu/audio.py,sha256=3vQhMq8vk_h7yb_Gk2dZMRviFR2PExgR_ynpgOkyl-g,4226
@@ -2528,8 +2549,6 @@ pygpt_net/ui/widget/audio/bar.py,sha256=1TnNx5x4sXx-Iu4zPtwID7DGf97TH3OABG8BKyiC
2528
2549
  pygpt_net/ui/widget/audio/input.py,sha256=t9VAhP15HkSOvNV2crI3Kg6AgrQDj-wSQiiYTMlvK60,1721
2529
2550
  pygpt_net/ui/widget/audio/input_button.py,sha256=QDfA8WBskY0pkN8EMXZ97017Sj11t4p9b_jCz4Q6aRY,4498
2530
2551
  pygpt_net/ui/widget/audio/output.py,sha256=UxkiCnVT9DNFeByDGTFW_CK0LW8xSvhEK1zygtHvx4k,1586
2531
- pygpt_net/ui/widget/builder/__init__.py,sha256=veIDrPtqCZNLdgtSD5cFCF3OLra9bRce1gBdpmK7sKU,519
2532
- pygpt_net/ui/widget/builder/editor.py,sha256=WYzR6GtOq1JhSFvMfPQSwifIhquT6NnBZNZAGHlPQlo,83881
2533
2552
  pygpt_net/ui/widget/calendar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2534
2553
  pygpt_net/ui/widget/calendar/select.py,sha256=iQgD7djD9ZTD8csje3DVZhQu0onIn5Ai5Nse08FcV7Q,10667
2535
2554
  pygpt_net/ui/widget/dialog/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
@@ -2598,6 +2617,13 @@ pygpt_net/ui/widget/lists/preset_plugins.py,sha256=3ONjBKPv2buTdgtO6BLSaW-z-Cui4
2598
2617
  pygpt_net/ui/widget/lists/profile.py,sha256=d8VE9i35MVjZkNFJ-VuHJZeTiMwnF64pYP8-A7zCmv8,4406
2599
2618
  pygpt_net/ui/widget/lists/settings.py,sha256=ZMOPvpu_h3NMQ2WTb5SfoAmSmBTW_lbtm7M-oAp1zA8,1052
2600
2619
  pygpt_net/ui/widget/lists/uploaded.py,sha256=yVIqySvkcXKZICIB3SwKx1Q-oTEupjLOzhopj9-O5h0,4356
2620
+ pygpt_net/ui/widget/node_editor/__init__.py,sha256=zq9BnwcUk-wFRVNCb4tt-6S1c7aqLARjLpDOtpneyqg,519
2621
+ pygpt_net/ui/widget/node_editor/command.py,sha256=jAMLUYyWDs5dZ4rChBGHHMh-IDrta2DjW5OOwOAKck8,15217
2622
+ pygpt_net/ui/widget/node_editor/editor.py,sha256=WWyQNEApYAvxszB5ORzIMwu_nGZUkOylpRIIYYmP_dA,90711
2623
+ pygpt_net/ui/widget/node_editor/item.py,sha256=FIYtM-2hktmFaaJiD14ttPpUCZTjgADhAk7vZevRpg0,19786
2624
+ pygpt_net/ui/widget/node_editor/node.py,sha256=3G2mDE3lH_tnRFX6oon7-TC1Nz6WW6djQ6xYNYSG6aY,49516
2625
+ pygpt_net/ui/widget/node_editor/utils.py,sha256=mD46jTdJ3gB7TyCSIx2CnUsBPBBE3ucm1TUHH9qfJjA,711
2626
+ pygpt_net/ui/widget/node_editor/view.py,sha256=aOJnNlnmN8vBphGmMKSHXSWVcgqllhfDZVF11xbrdJI,9641
2601
2627
  pygpt_net/ui/widget/option/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2602
2628
  pygpt_net/ui/widget/option/checkbox.py,sha256=duzgGPOVbHFnWILVEu5gDUa6sHeDOvQaaj9IsY-HbU8,3954
2603
2629
  pygpt_net/ui/widget/option/checkbox_list.py,sha256=j3lks2qPaZZdfZEV9EbN5kH8gEquVZFUDF_rq7uxjn0,5770
@@ -2633,8 +2659,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=CDpsjv8OorG1mO0NoXp-otgx1YHZES9DilZ_w
2633
2659
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2634
2660
  pygpt_net/ui/widget/vision/camera.py,sha256=v1qEncaZr5pXocO5Cpk_lsgfCMvfFigdJmzsYfzvCl0,1877
2635
2661
  pygpt_net/utils.py,sha256=m0fkJ06JaUKvTbxZQgdY-mpYt7ReZZhq1D90a2ANOQ0,10832
2636
- pygpt_net-2.6.59.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2637
- pygpt_net-2.6.59.dist-info/METADATA,sha256=IUhugvRhpfjtsdDE0TsyvNEkvt9LPpvV03S6ywR7Xm0,167736
2638
- pygpt_net-2.6.59.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2639
- pygpt_net-2.6.59.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2640
- pygpt_net-2.6.59.dist-info/RECORD,,
2662
+ pygpt_net-2.6.60.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2663
+ pygpt_net-2.6.60.dist-info/METADATA,sha256=FXViUrzMB6qSCr2cFMI9GWBUdxwNQzhJWjqsr6xkwtI,170764
2664
+ pygpt_net-2.6.60.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2665
+ pygpt_net-2.6.60.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2666
+ pygpt_net-2.6.60.dist-info/RECORD,,