pygpt-net 2.6.56__py3-none-any.whl → 2.6.57__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 (206) hide show
  1. pygpt_net/CHANGELOG.txt +6 -0
  2. pygpt_net/__init__.py +1 -1
  3. pygpt_net/config.py +44 -0
  4. pygpt_net/controller/chat/remote_tools.py +5 -3
  5. pygpt_net/controller/ui/mode.py +5 -3
  6. pygpt_net/core/models/models.py +2 -1
  7. pygpt_net/core/plugins/plugins.py +60 -0
  8. pygpt_net/data/config/config.json +3 -2
  9. pygpt_net/data/config/models.json +2 -2
  10. pygpt_net/data/config/settings.json +14 -0
  11. pygpt_net/data/locale/locale.de.ini +3 -1
  12. pygpt_net/data/locale/locale.en.ini +8 -7
  13. pygpt_net/data/locale/locale.es.ini +2 -0
  14. pygpt_net/data/locale/locale.fr.ini +2 -0
  15. pygpt_net/data/locale/locale.it.ini +2 -0
  16. pygpt_net/data/locale/locale.pl.ini +3 -1
  17. pygpt_net/data/locale/locale.uk.ini +3 -1
  18. pygpt_net/data/locale/locale.zh.ini +2 -0
  19. pygpt_net/data/locale/plugin.agent.de.ini +0 -0
  20. pygpt_net/data/locale/plugin.agent.en.ini +0 -0
  21. pygpt_net/data/locale/plugin.agent.es.ini +0 -0
  22. pygpt_net/data/locale/plugin.agent.fr.ini +0 -0
  23. pygpt_net/data/locale/plugin.agent.it.ini +0 -0
  24. pygpt_net/data/locale/plugin.agent.pl.ini +0 -0
  25. pygpt_net/data/locale/plugin.agent.uk.ini +0 -0
  26. pygpt_net/data/locale/plugin.agent.zh.ini +0 -0
  27. pygpt_net/data/locale/plugin.audio_input.de.ini +0 -0
  28. pygpt_net/data/locale/plugin.audio_input.en.ini +0 -0
  29. pygpt_net/data/locale/plugin.audio_input.es.ini +0 -0
  30. pygpt_net/data/locale/plugin.audio_input.fr.ini +0 -0
  31. pygpt_net/data/locale/plugin.audio_input.it.ini +0 -0
  32. pygpt_net/data/locale/plugin.audio_input.pl.ini +0 -0
  33. pygpt_net/data/locale/plugin.audio_input.uk.ini +0 -0
  34. pygpt_net/data/locale/plugin.audio_input.zh.ini +0 -0
  35. pygpt_net/data/locale/plugin.audio_output.de.ini +0 -0
  36. pygpt_net/data/locale/plugin.audio_output.en.ini +0 -0
  37. pygpt_net/data/locale/plugin.audio_output.es.ini +0 -0
  38. pygpt_net/data/locale/plugin.audio_output.fr.ini +0 -0
  39. pygpt_net/data/locale/plugin.audio_output.it.ini +0 -0
  40. pygpt_net/data/locale/plugin.audio_output.pl.ini +0 -0
  41. pygpt_net/data/locale/plugin.audio_output.uk.ini +0 -0
  42. pygpt_net/data/locale/plugin.audio_output.zh.ini +0 -0
  43. pygpt_net/data/locale/plugin.cmd_api.de.ini +0 -0
  44. pygpt_net/data/locale/plugin.cmd_api.en.ini +0 -0
  45. pygpt_net/data/locale/plugin.cmd_api.es.ini +0 -0
  46. pygpt_net/data/locale/plugin.cmd_api.fr.ini +0 -0
  47. pygpt_net/data/locale/plugin.cmd_api.it.ini +0 -0
  48. pygpt_net/data/locale/plugin.cmd_api.pl.ini +0 -0
  49. pygpt_net/data/locale/plugin.cmd_api.uk.ini +0 -0
  50. pygpt_net/data/locale/plugin.cmd_api.zh.ini +0 -0
  51. pygpt_net/data/locale/plugin.cmd_code_interpreter.de.ini +0 -0
  52. pygpt_net/data/locale/plugin.cmd_code_interpreter.en.ini +0 -0
  53. pygpt_net/data/locale/plugin.cmd_code_interpreter.es.ini +0 -0
  54. pygpt_net/data/locale/plugin.cmd_code_interpreter.fr.ini +0 -0
  55. pygpt_net/data/locale/plugin.cmd_code_interpreter.it.ini +0 -0
  56. pygpt_net/data/locale/plugin.cmd_code_interpreter.pl.ini +0 -0
  57. pygpt_net/data/locale/plugin.cmd_code_interpreter.uk.ini +0 -0
  58. pygpt_net/data/locale/plugin.cmd_code_interpreter.zh.ini +0 -0
  59. pygpt_net/data/locale/plugin.cmd_custom.de.ini +0 -0
  60. pygpt_net/data/locale/plugin.cmd_custom.en.ini +0 -0
  61. pygpt_net/data/locale/plugin.cmd_custom.es.ini +0 -0
  62. pygpt_net/data/locale/plugin.cmd_custom.fr.ini +0 -0
  63. pygpt_net/data/locale/plugin.cmd_custom.it.ini +0 -0
  64. pygpt_net/data/locale/plugin.cmd_custom.pl.ini +0 -0
  65. pygpt_net/data/locale/plugin.cmd_custom.uk.ini +0 -0
  66. pygpt_net/data/locale/plugin.cmd_custom.zh.ini +0 -0
  67. pygpt_net/data/locale/plugin.cmd_files.de.ini +0 -0
  68. pygpt_net/data/locale/plugin.cmd_files.en.ini +0 -0
  69. pygpt_net/data/locale/plugin.cmd_files.es.ini +0 -0
  70. pygpt_net/data/locale/plugin.cmd_files.fr.ini +0 -0
  71. pygpt_net/data/locale/plugin.cmd_files.it.ini +0 -0
  72. pygpt_net/data/locale/plugin.cmd_files.pl.ini +0 -0
  73. pygpt_net/data/locale/plugin.cmd_files.uk.ini +0 -0
  74. pygpt_net/data/locale/plugin.cmd_files.zh.ini +0 -0
  75. pygpt_net/data/locale/plugin.cmd_history.de.ini +0 -0
  76. pygpt_net/data/locale/plugin.cmd_history.en.ini +0 -0
  77. pygpt_net/data/locale/plugin.cmd_history.es.ini +0 -0
  78. pygpt_net/data/locale/plugin.cmd_history.fr.ini +0 -0
  79. pygpt_net/data/locale/plugin.cmd_history.it.ini +0 -0
  80. pygpt_net/data/locale/plugin.cmd_history.pl.ini +0 -0
  81. pygpt_net/data/locale/plugin.cmd_history.uk.ini +0 -0
  82. pygpt_net/data/locale/plugin.cmd_history.zh.ini +0 -0
  83. pygpt_net/data/locale/plugin.cmd_mouse_control.de.ini +0 -0
  84. pygpt_net/data/locale/plugin.cmd_mouse_control.en.ini +0 -0
  85. pygpt_net/data/locale/plugin.cmd_mouse_control.es.ini +0 -0
  86. pygpt_net/data/locale/plugin.cmd_mouse_control.fr.ini +0 -0
  87. pygpt_net/data/locale/plugin.cmd_mouse_control.it.ini +0 -0
  88. pygpt_net/data/locale/plugin.cmd_mouse_control.pl.ini +0 -0
  89. pygpt_net/data/locale/plugin.cmd_mouse_control.uk.ini +0 -0
  90. pygpt_net/data/locale/plugin.cmd_mouse_control.zh.ini +0 -0
  91. pygpt_net/data/locale/plugin.cmd_serial.de.ini +0 -0
  92. pygpt_net/data/locale/plugin.cmd_serial.en.ini +0 -0
  93. pygpt_net/data/locale/plugin.cmd_serial.es.ini +0 -0
  94. pygpt_net/data/locale/plugin.cmd_serial.fr.ini +0 -0
  95. pygpt_net/data/locale/plugin.cmd_serial.it.ini +0 -0
  96. pygpt_net/data/locale/plugin.cmd_serial.pl.ini +0 -0
  97. pygpt_net/data/locale/plugin.cmd_serial.uk.ini +0 -0
  98. pygpt_net/data/locale/plugin.cmd_serial.zh.ini +0 -0
  99. pygpt_net/data/locale/plugin.cmd_system.de.ini +0 -0
  100. pygpt_net/data/locale/plugin.cmd_system.en.ini +0 -0
  101. pygpt_net/data/locale/plugin.cmd_system.es.ini +0 -0
  102. pygpt_net/data/locale/plugin.cmd_system.fr.ini +0 -0
  103. pygpt_net/data/locale/plugin.cmd_system.it.ini +0 -0
  104. pygpt_net/data/locale/plugin.cmd_system.pl.ini +0 -0
  105. pygpt_net/data/locale/plugin.cmd_system.uk.ini +0 -0
  106. pygpt_net/data/locale/plugin.cmd_system.zh.ini +0 -0
  107. pygpt_net/data/locale/plugin.cmd_web.de.ini +0 -0
  108. pygpt_net/data/locale/plugin.cmd_web.en.ini +0 -0
  109. pygpt_net/data/locale/plugin.cmd_web.es.ini +0 -0
  110. pygpt_net/data/locale/plugin.cmd_web.fr.ini +0 -0
  111. pygpt_net/data/locale/plugin.cmd_web.it.ini +0 -0
  112. pygpt_net/data/locale/plugin.cmd_web.pl.ini +0 -0
  113. pygpt_net/data/locale/plugin.cmd_web.uk.ini +0 -0
  114. pygpt_net/data/locale/plugin.cmd_web.zh.ini +0 -0
  115. pygpt_net/data/locale/plugin.crontab.de.ini +0 -0
  116. pygpt_net/data/locale/plugin.crontab.en.ini +0 -0
  117. pygpt_net/data/locale/plugin.crontab.es.ini +0 -0
  118. pygpt_net/data/locale/plugin.crontab.fr.ini +0 -0
  119. pygpt_net/data/locale/plugin.crontab.it.ini +0 -0
  120. pygpt_net/data/locale/plugin.crontab.pl.ini +0 -0
  121. pygpt_net/data/locale/plugin.crontab.uk.ini +0 -0
  122. pygpt_net/data/locale/plugin.crontab.zh.ini +0 -0
  123. pygpt_net/data/locale/plugin.experts.de.ini +0 -0
  124. pygpt_net/data/locale/plugin.experts.en.ini +0 -0
  125. pygpt_net/data/locale/plugin.experts.es.ini +0 -0
  126. pygpt_net/data/locale/plugin.experts.fr.ini +0 -0
  127. pygpt_net/data/locale/plugin.experts.it.ini +0 -0
  128. pygpt_net/data/locale/plugin.experts.pl.ini +0 -0
  129. pygpt_net/data/locale/plugin.experts.uk.ini +0 -0
  130. pygpt_net/data/locale/plugin.experts.zh.ini +0 -0
  131. pygpt_net/data/locale/plugin.extra_prompt.de.ini +0 -0
  132. pygpt_net/data/locale/plugin.extra_prompt.en.ini +0 -0
  133. pygpt_net/data/locale/plugin.extra_prompt.es.ini +0 -0
  134. pygpt_net/data/locale/plugin.extra_prompt.fr.ini +0 -0
  135. pygpt_net/data/locale/plugin.extra_prompt.it.ini +0 -0
  136. pygpt_net/data/locale/plugin.extra_prompt.pl.ini +0 -0
  137. pygpt_net/data/locale/plugin.extra_prompt.uk.ini +0 -0
  138. pygpt_net/data/locale/plugin.extra_prompt.zh.ini +0 -0
  139. pygpt_net/data/locale/plugin.idx_llama_index.de.ini +0 -0
  140. pygpt_net/data/locale/plugin.idx_llama_index.en.ini +0 -0
  141. pygpt_net/data/locale/plugin.idx_llama_index.es.ini +0 -0
  142. pygpt_net/data/locale/plugin.idx_llama_index.fr.ini +0 -0
  143. pygpt_net/data/locale/plugin.idx_llama_index.it.ini +0 -0
  144. pygpt_net/data/locale/plugin.idx_llama_index.pl.ini +0 -0
  145. pygpt_net/data/locale/plugin.idx_llama_index.uk.ini +0 -0
  146. pygpt_net/data/locale/plugin.idx_llama_index.zh.ini +0 -0
  147. pygpt_net/data/locale/plugin.mailer.en.ini +0 -0
  148. pygpt_net/data/locale/plugin.mcp.en.ini +0 -0
  149. pygpt_net/data/locale/plugin.openai_dalle.de.ini +0 -0
  150. pygpt_net/data/locale/plugin.openai_dalle.en.ini +0 -0
  151. pygpt_net/data/locale/plugin.openai_dalle.es.ini +0 -0
  152. pygpt_net/data/locale/plugin.openai_dalle.fr.ini +0 -0
  153. pygpt_net/data/locale/plugin.openai_dalle.it.ini +0 -0
  154. pygpt_net/data/locale/plugin.openai_dalle.pl.ini +0 -0
  155. pygpt_net/data/locale/plugin.openai_dalle.uk.ini +0 -0
  156. pygpt_net/data/locale/plugin.openai_dalle.zh.ini +0 -0
  157. pygpt_net/data/locale/plugin.openai_vision.de.ini +0 -0
  158. pygpt_net/data/locale/plugin.openai_vision.en.ini +0 -0
  159. pygpt_net/data/locale/plugin.openai_vision.es.ini +0 -0
  160. pygpt_net/data/locale/plugin.openai_vision.fr.ini +0 -0
  161. pygpt_net/data/locale/plugin.openai_vision.it.ini +0 -0
  162. pygpt_net/data/locale/plugin.openai_vision.pl.ini +0 -0
  163. pygpt_net/data/locale/plugin.openai_vision.uk.ini +0 -0
  164. pygpt_net/data/locale/plugin.openai_vision.zh.ini +0 -0
  165. pygpt_net/data/locale/plugin.osm.en.ini +24 -24
  166. pygpt_net/data/locale/plugin.real_time.de.ini +0 -0
  167. pygpt_net/data/locale/plugin.real_time.en.ini +0 -0
  168. pygpt_net/data/locale/plugin.real_time.es.ini +0 -0
  169. pygpt_net/data/locale/plugin.real_time.fr.ini +0 -0
  170. pygpt_net/data/locale/plugin.real_time.it.ini +0 -0
  171. pygpt_net/data/locale/plugin.real_time.pl.ini +0 -0
  172. pygpt_net/data/locale/plugin.real_time.uk.ini +0 -0
  173. pygpt_net/data/locale/plugin.real_time.zh.ini +0 -0
  174. pygpt_net/data/locale/plugin.voice_control.de.ini +0 -0
  175. pygpt_net/data/locale/plugin.voice_control.en.ini +0 -0
  176. pygpt_net/data/locale/plugin.voice_control.es.ini +0 -0
  177. pygpt_net/data/locale/plugin.voice_control.fr.ini +0 -0
  178. pygpt_net/data/locale/plugin.voice_control.it.ini +0 -0
  179. pygpt_net/data/locale/plugin.voice_control.pl.ini +0 -0
  180. pygpt_net/data/locale/plugin.voice_control.uk.ini +0 -0
  181. pygpt_net/data/locale/plugin.voice_control.zh.ini +0 -0
  182. pygpt_net/data/locale/plugin.wolfram.en.ini +9 -9
  183. pygpt_net/plugin/cmd_web/config.py +17 -17
  184. pygpt_net/plugin/cmd_web/worker.py +325 -171
  185. pygpt_net/provider/api/x_ai/__init__.py +2 -0
  186. pygpt_net/provider/core/config/patch.py +15 -0
  187. pygpt_net/provider/core/config/patches/patch_before_2_6_42.py +1 -0
  188. pygpt_net/provider/llms/anthropic.py +4 -0
  189. pygpt_net/provider/llms/base.py +2 -0
  190. pygpt_net/provider/llms/deepseek_api.py +2 -0
  191. pygpt_net/provider/llms/google.py +2 -0
  192. pygpt_net/provider/llms/hugging_face_api.py +4 -0
  193. pygpt_net/provider/llms/hugging_face_router.py +2 -0
  194. pygpt_net/provider/llms/mistral.py +4 -0
  195. pygpt_net/provider/llms/perplexity.py +2 -0
  196. pygpt_net/provider/llms/x_ai.py +2 -0
  197. pygpt_net/ui/layout/chat/output.py +5 -5
  198. pygpt_net/ui/widget/dialog/base.py +4 -1
  199. pygpt_net/ui/widget/textarea/html.py +1 -0
  200. pygpt_net/ui/widget/textarea/input.py +19 -3
  201. pygpt_net/ui/widget/textarea/web.py +2 -1
  202. {pygpt_net-2.6.56.dist-info → pygpt_net-2.6.57.dist-info}/METADATA +10 -2
  203. {pygpt_net-2.6.56.dist-info → pygpt_net-2.6.57.dist-info}/RECORD +44 -44
  204. {pygpt_net-2.6.56.dist-info → pygpt_net-2.6.57.dist-info}/LICENSE +0 -0
  205. {pygpt_net-2.6.56.dist-info → pygpt_net-2.6.57.dist-info}/WHEEL +0 -0
  206. {pygpt_net-2.6.56.dist-info → pygpt_net-2.6.57.dist-info}/entry_points.txt +0 -0
pygpt_net/CHANGELOG.txt CHANGED
@@ -1,3 +1,9 @@
1
+ 2.6.57 (2025-09-22)
2
+
3
+ - Changed: The web search icon has been moved to the input area.
4
+ - Improved: The local web search plugin has been enhanced to retrieve multiple URLs at once.
5
+ - Added: Use proxy switch in Settings.
6
+
1
7
  2.6.56 (2025-09-22)
2
8
 
3
9
  - Optimized: Memory usage and performance in streaming and rendering large contexts.
pygpt_net/__init__.py CHANGED
@@ -13,7 +13,7 @@ __author__ = "Marcin Szczygliński"
13
13
  __copyright__ = "Copyright 2025, Marcin Szczygliński"
14
14
  __credits__ = ["Marcin Szczygliński"]
15
15
  __license__ = "MIT"
16
- __version__ = "2.6.56"
16
+ __version__ = "2.6.57"
17
17
  __build__ = "2025-09-22"
18
18
  __maintainer__ = "Marcin Szczygliński"
19
19
  __github__ = "https://github.com/szczyglis-dev/py-gpt"
pygpt_net/config.py CHANGED
@@ -208,6 +208,50 @@ class Config:
208
208
  workdir = "/data"
209
209
  return workdir
210
210
 
211
+ def remove_plugin_config(self, plugin: str, key: str = None) -> bool:
212
+ """
213
+ Remove plugin config or specific key
214
+
215
+ :param plugin: plugin name
216
+ :param key: key name (optional)
217
+ :return: True if removed
218
+ """
219
+ try:
220
+ if plugin not in self.data['plugins']:
221
+ return False
222
+ if key is None:
223
+ del self.data['plugins'][plugin]
224
+ self.window.core.plugins.remove_plugin_param_from_presets(plugin)
225
+ return True
226
+ if plugin in self.data['plugins'] \
227
+ and key in self.data['plugins'][plugin]:
228
+ del self.data['plugins'][plugin][key]
229
+ self.window.core.plugins.remove_plugin_param_from_presets(plugin, key)
230
+ return True
231
+ except Exception as e:
232
+ print(f"Error removing plugin config: {e}")
233
+ return False
234
+
235
+ def update_plugin_config(self, plugin: str, key: str, value: any) -> bool:
236
+ """
237
+ Update plugin config key with value
238
+
239
+ :param plugin: plugin name
240
+ :param key: key name
241
+ :param value: value
242
+ :return: True if updated
243
+ """
244
+ try:
245
+ if 'plugins' not in self.data:
246
+ self.data['plugins'] = {}
247
+ if plugin not in self.data['plugins']:
248
+ self.data['plugins'][plugin] = {}
249
+ self.data['plugins'][plugin][key] = value
250
+ return True
251
+ except Exception as e:
252
+ print(f"Error updating plugin config: {e}")
253
+ return False
254
+
211
255
  def get_app_path(self) -> str:
212
256
  """
213
257
  Return app data path
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.09.17 20:00:00 #
9
+ # Updated Date: 2025.09.22 12:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from typing import Union
@@ -87,9 +87,11 @@ class RemoteTools:
87
87
  """
88
88
  state = self.enabled_global["web_search"]
89
89
  if state:
90
- self.window.ui.nodes['icon.remote_tool.web'].set_icon(":/icons/web_on.svg")
90
+ self.window.ui.nodes['input'].set_icon_state("web", True)
91
+ # self.window.ui.nodes['icon.remote_tool.web'].set_icon(":/icons/web_on.svg")
91
92
  else:
92
- self.window.ui.nodes['icon.remote_tool.web'].set_icon(":/icons/web_off.svg")
93
+ self.window.ui.nodes['input'].set_icon_state("web", False)
94
+ # self.window.ui.nodes['icon.remote_tool.web'].set_icon(":/icons/web_off.svg")
93
95
 
94
96
  def toggle(self, tool_name: str):
95
97
  """
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2025.09.17 20:00:00 #
9
+ # Updated Date: 2025.09.22 12:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from pygpt_net.core.types import (
@@ -197,9 +197,11 @@ class Mode:
197
197
 
198
198
  # remote tools icon visibility
199
199
  if not is_image and not is_completion:
200
- ui_nodes['icon.remote_tool.web'].setVisible(True)
200
+ self.window.ui.nodes['input'].set_icon_visible("web", True)
201
+ # ui_nodes['icon.remote_tool.web'].setVisible(True)
201
202
  else:
202
- ui_nodes['icon.remote_tool.web'].setVisible(False)
203
+ self.window.ui.nodes['input'].set_icon_visible("web", False)
204
+ # ui_nodes['icon.remote_tool.web'].setVisible(False)
203
205
 
204
206
  ui_tabs['input'].setTabVisible(2, is_assistant)
205
207
  ui_tabs['input'].setTabVisible(3, (not is_assistant) and (not is_image))
@@ -475,7 +475,8 @@ class Models:
475
475
 
476
476
  if cfg.has('api_proxy'):
477
477
  proxy = cfg.get('api_proxy')
478
- if proxy:
478
+ if proxy and cfg.get('api_proxy.enabled', False):
479
+ args["api_proxy"] = proxy
479
480
  transport = SyncProxyTransport.from_url(proxy)
480
481
  args["http_client"] = DefaultHttpxClient(transport=transport)
481
482
 
@@ -357,6 +357,66 @@ class Plugins:
357
357
  """Load presets"""
358
358
  self.presets = self.provider.load()
359
359
 
360
+ def remove_plugin_param_from_presets(self, plugin_id: str, param: str = None) -> bool:
361
+ """
362
+ Remove plugin param from all presets
363
+
364
+ :param plugin_id: plugin id
365
+ :param param: param key
366
+ :return: True if updated
367
+ """
368
+ updated = False
369
+ if self.presets is None:
370
+ self.load_presets()
371
+
372
+ if self.presets is None:
373
+ return False
374
+
375
+ if param is None:
376
+ # remove all params for plugin
377
+ for _preset_id, preset in self.presets.items():
378
+ preset_config = preset["config"]
379
+ if plugin_id in preset_config:
380
+ preset_config.pop(plugin_id)
381
+ updated = True
382
+ if updated:
383
+ self.save_presets()
384
+ return updated
385
+
386
+ for _preset_id, preset in self.presets.items():
387
+ preset_config = preset["config"]
388
+ if plugin_id in preset_config and param in preset_config[plugin_id]:
389
+ preset_config[plugin_id].pop(param)
390
+ updated = True
391
+ if updated:
392
+ self.save_presets()
393
+ return updated
394
+
395
+ def update_param_in_presets(self, plugin_id: str, param: str, value: Any) -> bool:
396
+ """
397
+ Update plugin param in all presets
398
+
399
+ :param plugin_id: plugin id
400
+ :param param: param key
401
+ :param value: param value
402
+ :return: True if updated
403
+ """
404
+ updated = False
405
+ if self.presets is None:
406
+ self.load_presets()
407
+
408
+ if self.presets is None:
409
+ return False
410
+
411
+ for _preset_id, preset in self.presets.items():
412
+ preset_config = preset["config"]
413
+ if plugin_id in preset_config and param in preset_config[plugin_id]:
414
+ preset_config[plugin_id][param] = value
415
+ updated = True
416
+ if updated:
417
+ self.save_presets()
418
+ return updated
419
+
360
420
  def get_presets(self) -> Dict[str, Any]:
361
421
  """
362
422
  Return all presets
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.56",
4
- "app.version": "2.6.56",
3
+ "version": "2.6.57",
4
+ "app.version": "2.6.57",
5
5
  "updated_at": "2025-09-22T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
@@ -96,6 +96,7 @@
96
96
  "api_native_google.use_vertex": false,
97
97
  "api_native_xai": true,
98
98
  "api_proxy": "",
99
+ "api_proxy.enabled": false,
99
100
  "api_use_responses": true,
100
101
  "api_use_responses_llama": true,
101
102
  "app.env": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.56",
4
- "app.version": "2.6.56",
3
+ "version": "2.6.57",
4
+ "app.version": "2.6.57",
5
5
  "updated_at": "2025-09-22T00:00:00"
6
6
  },
7
7
  "items": {
@@ -579,6 +579,20 @@
579
579
  "step": 1,
580
580
  "advanced": false
581
581
  },
582
+ "api_proxy.enabled": {
583
+ "section": "general",
584
+ "type": "bool",
585
+ "slider": false,
586
+ "label": "settings.api_proxy.enabled",
587
+ "description": "settings.api_proxy.enabled.desc",
588
+ "value": true,
589
+ "min": null,
590
+ "max": null,
591
+ "multiplier": null,
592
+ "step": null,
593
+ "secret": false,
594
+ "advanced": false
595
+ },
582
596
  "api_proxy": {
583
597
  "section": "general",
584
598
  "type": "text",
@@ -1106,8 +1106,10 @@ settings.api_key.perplexity = Perplexity API-SCHLÜSSEL
1106
1106
  settings.api_key.perplexity.desc = Erforderlich für die Perplexity API.
1107
1107
  settings.api_key.xai = xAI API-SCHLÜSSEL
1108
1108
  settings.api_key.xai.desc = Erforderlich für die xAI API und Grok-Modelle.
1109
- settings.api_proxy = Proxy-Adresse
1109
+ settings.api_proxy = Proxy verwenden
1110
+ settings.api_proxy.enabled = Proxy-Adresse
1110
1111
  settings.api_proxy.desc = Optional, Proxy für API SDK, z.B. http://proxy.example.com oder socks5://user:pass@host:port
1112
+ settings.api_proxy.enabled.desc = Aktivieren Sie diese Option, um einen Proxy für Verbindungen zu APIs zu verwenden
1111
1113
  settings.api_use_responses = Verwenden Sie die Responses API im Chat-Modus
1112
1114
  settings.api_use_responses.desc = Verwenden Sie die Responses API anstelle der ChatCompletions API im Chat-Modus
1113
1115
  settings.api_use_responses_llama = Verwenden Sie die Responses API im Chat mit Dateien Modus (LlamaIndex)
@@ -72,6 +72,10 @@ action.use.read_cmd = Ask for reading this file...
72
72
  action.video.open = Open video or audio...
73
73
  action.video.play = Play video or audio...
74
74
  action.video.transcribe = Transcribe audio...
75
+ agent.builder.confirm.clear.msg = Do you really want to clear the graph?
76
+ agent.builder.confirm.clear.title = Clear
77
+ agent.builder.confirm.delete.msg = Do you really want to delete the agent?
78
+ agent.builder.title = Agent Builder
75
79
  agent.coder.additional.label = Additional prompt
76
80
  agent.coder.additional.prompt.desc = Additional prompt for agent (will be added to the base prompt)
77
81
  agent.coder.base.label = Base prompt
@@ -776,6 +780,7 @@ menu.config.save = Save config
776
780
  menu.config.settings = Settings...
777
781
  menu.debug = Debug
778
782
  menu.debug.agent = Agent...
783
+ menu.debug.agent_builder = Agent Builder
779
784
  menu.debug.app.log = View log file (app.log)
780
785
  menu.debug.assistants = Assistants...
781
786
  menu.debug.attachments = Files / attachments...
@@ -830,6 +835,7 @@ menu.theme.style = Style...
830
835
  menu.theme.syntax = Code syntax highlight...
831
836
  menu.theme.tooltips = Show tooltips
832
837
  menu.tools = Tools
838
+ menu.tools.agent.builder = Agent Builder
833
839
  menu.tools.audio.transcribe = Transcribe Audio/Video Files
834
840
  menu.tools.html_canvas = HTML/JS Canvas
835
841
  menu.tools.image.viewer = Image Viewer
@@ -1143,7 +1149,9 @@ settings.api_native_google.use_vertex.desc = Enable to use VertexAI in Google Ge
1143
1149
  settings.api_native_xai = Use native API SDK
1144
1150
  settings.api_native_xai.desc = Use native xAI SDK instead of compatible OpenAI client
1145
1151
  settings.api_proxy = Proxy address
1152
+ settings.api_proxy.enabled = Use proxy
1146
1153
  settings.api_proxy.desc = Optional, proxy for API SDKs, e.g. http://proxy.example.com or socks5://user:pass@host:port
1154
+ settings.api_proxy.enabled.desc = Enable this option to use a proxy for connections to APIs
1147
1155
  settings.api_use_responses = Use Responses API in Chat mode
1148
1156
  settings.api_use_responses.desc = Use Responses API instead of ChatCompletions API in Chat mode
1149
1157
  settings.api_use_responses_llama = Use Responses API in Chat with Files mode (LlamaIndex)
@@ -1652,10 +1660,3 @@ vision.capture.manual.captured.success = Image captured from the camera:
1652
1660
  vision.capture.name.prefix = Camera capture:
1653
1661
  vision.capture.options.title = Video capture
1654
1662
  vision.checkbox.tooltip = If checked, the vision model is active. It will be automatically activated upon image upload. You can deactivate it in real-time.
1655
-
1656
- menu.tools.agent.builder = Agent Builder
1657
- agent.builder.title = Agent Builder
1658
- agent.builder.confirm.clear.title = Clear
1659
- agent.builder.confirm.clear.msg = Do you really want to clear the graph?
1660
- agent.builder.confirm.delete.msg = Do you really want to delete the agent?
1661
- menu.debug.agent_builder = Agent Builder
@@ -1108,7 +1108,9 @@ settings.api_key.perplexity.desc = Requerido para la API Perplexity.
1108
1108
  settings.api_key.xai = CLAVE API xAI
1109
1109
  settings.api_key.xai.desc = Requerido para la API xAI y modelos Grok.
1110
1110
  settings.api_proxy = Dirección proxy
1111
+ settings.api_proxy.enabled = Usar proxy
1111
1112
  settings.api_proxy.desc = Opcional, proxy para API SDK, por ej. http://proxy.example.com o socks5://user:pass@host:port
1113
+ settings.api_proxy.enabled.desc = Habilita esta opción para usar un proxy para las conexiones a las API
1112
1114
  settings.api_use_responses = Usar API de Respuestas en modo Chat
1113
1115
  settings.api_use_responses.desc = Usar API de Respuestas en lugar de ChatCompletions API en modo Chat
1114
1116
  settings.api_use_responses_llama = Usar Responses API en modo Chat con Archivos (LlamaIndex)
@@ -1107,7 +1107,9 @@ settings.api_key.perplexity.desc = Requis pour l'API Perplexity.
1107
1107
  settings.api_key.xai = Clé API xAI
1108
1108
  settings.api_key.xai.desc = Requis pour l'API xAI et les modèles Grok.
1109
1109
  settings.api_proxy = Adresse proxy
1110
+ settings.api_proxy.enabled = Utiliser un proxy
1110
1111
  settings.api_proxy.desc = Optionnel, proxy pour l'API SDK, par ex. http://proxy.example.com ou socks5://user:pass@host:port
1112
+ settings.api_proxy.enabled.desc = Activez cette option pour utiliser un proxy pour les connexions aux API
1111
1113
  settings.api_use_responses = Utiliser l'API Responses en mode chat
1112
1114
  settings.api_use_responses.desc = Utiliser l'API Responses au lieu de l'API ChatCompletions en mode chat
1113
1115
  settings.api_use_responses_llama = Utiliser Responses API en mode Chat avec des Fichiers (LlamaIndex)
@@ -1107,7 +1107,9 @@ settings.api_key.perplexity.desc = Necessario per l'API Perplexity.
1107
1107
  settings.api_key.xai = Chiave API xAI
1108
1108
  settings.api_key.xai.desc = Necessario per l'API xAI e i modelli Grok.
1109
1109
  settings.api_proxy = Indirizzo proxy
1110
+ settings.api_proxy.enabled = Usa proxy
1110
1111
  settings.api_proxy.desc = Opzionale, proxy per l'API SDK, es. http://proxy.example.com o socks5://user:pass@host:port
1112
+ settings.api_proxy.enabled.desc = Abilita questa opzione per utilizzare un proxy per le connessioni alle API
1111
1113
  settings.api_use_responses = Utilizzare l'API delle Risposte in modalità chat
1112
1114
  settings.api_use_responses.desc = Utilizzare l'API delle Risposte invece dell'API ChatCompletions in modalità chat
1113
1115
  settings.api_use_responses_llama = Usa il Responses API in modalità Chat con File (LlamaIndex)
@@ -678,7 +678,7 @@ html_canvas.btn.edit = Edytuj kod źródłowy
678
678
  html_canvas.clear.confirm = Wyczyścić wynik płótna HTML?
679
679
  icon.audio.input = Włącz/wyłącz wejście audio
680
680
  icon.audio.output = Włącz/wyłącz wyjście audio
681
- icon.remote_tool.web = Wyszukiwanie w sieci (narzędzie zdalne, nie lokalne)
681
+ icon.remote_tool.web = Wyszukiwanie w sieci (narzędzie zdalne, nie lokalne)
682
682
  icon.video.capture = Włącz/wyłącz przechwytywanie wideo z kamery
683
683
  idx.btn.clear = Wyczyść indeks
684
684
  idx.btn.index_all = Indeksuj wszystko
@@ -1108,7 +1108,9 @@ settings.api_key.perplexity.desc = Wymagane do Perplexity API.
1108
1108
  settings.api_key.xai = Klucz API xAI
1109
1109
  settings.api_key.xai.desc = Wymagane do xAI API i modeli Grok.
1110
1110
  settings.api_proxy = Adres proxy
1111
+ settings.api_proxy.enabled = Użyj proxy
1111
1112
  settings.api_proxy.desc = Opcjonalnie, proxy dla API SDK, np. http://proxy.example.com lub socks5://user:pass@host:port
1113
+ settings.api_proxy.enabled.desc = Włącz tę opcję, aby używać proxy do połączeń z API
1112
1114
  settings.api_use_responses = Używaj Responses API w trybie czatu
1113
1115
  settings.api_use_responses.desc = Używaj Responses API zamiast ChatCompletions API w trybie czatu
1114
1116
  settings.api_use_responses_llama = Używaj Responses API w trybie Chat z Plikami (LlamaIndex)
@@ -1106,8 +1106,10 @@ settings.api_key.perplexity = КЛЮЧ API Perplexity
1106
1106
  settings.api_key.perplexity.desc = Обов'язковий для Perplexity API.
1107
1107
  settings.api_key.xai = КЛЮЧ API xAI
1108
1108
  settings.api_key.xai.desc = Обов'язковий для xAI API та моделей Grok.
1109
- settings.api_proxy = Проксі-адреса
1109
+ settings.api_proxy = Використовувати проксі
1110
+ settings.api_proxy.enabled = Проксі-адреса
1110
1111
  settings.api_proxy.desc = Опціонально, проксі для API SDK, наприклад, http://proxy.example.com або socks5://user:pass@host:port
1112
+ settings.api_proxy.enabled.desc = Увімкніть цю опцію, щоб використовувати проксі для підключень до API
1111
1113
  settings.api_use_responses = Використовувати API відповідей у режимі чату
1112
1114
  settings.api_use_responses.desc = Використовувати API відповідей замість API ChatCompletions у режимі чату
1113
1115
  settings.api_use_responses_llama = Використовувати Responses API в режимі Чат з Файлами (LlamaIndex)
@@ -1107,7 +1107,9 @@ settings.api_key.perplexity.desc = Perplexity API 所需。
1107
1107
  settings.api_key.xai = xAI API 密钥
1108
1108
  settings.api_key.xai.desc = xAI API 和 Grok 模型所需。
1109
1109
  settings.api_proxy = 代理地址
1110
+ settings.api_proxy.enabled = 使用代理
1110
1111
  settings.api_proxy.desc = 可选,用于 API SDK 的代理,例如 http://proxy.example.com 或 socks5://user:pass@host:port
1112
+ settings.api_proxy.enabled.desc = 启用此选项以使用代理进行 API 连接
1111
1113
  settings.api_use_responses = 在聊天模式中使用 Responses API
1112
1114
  settings.api_use_responses.desc = 在聊天模式中使用 Responses API 而不是 ChatCompletions API
1113
1115
  settings.api_use_responses_llama = 在Chat with Files模式(LlamaIndex)下使用Responses API
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes