pygpt-net 2.6.54__py3-none-any.whl → 2.6.56__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 (371) hide show
  1. pygpt_net/CHANGELOG.txt +11 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/app.py +26 -22
  4. pygpt_net/controller/audio/audio.py +0 -0
  5. pygpt_net/controller/calendar/calendar.py +0 -0
  6. pygpt_net/controller/calendar/note.py +0 -0
  7. pygpt_net/controller/chat/chat.py +0 -0
  8. pygpt_net/controller/chat/handler/openai_stream.py +2 -1
  9. pygpt_net/controller/chat/handler/worker.py +0 -0
  10. pygpt_net/controller/chat/remote_tools.py +0 -0
  11. pygpt_net/controller/chat/render.py +0 -0
  12. pygpt_net/controller/chat/text.py +0 -0
  13. pygpt_net/controller/ctx/common.py +0 -0
  14. pygpt_net/controller/debug/debug.py +26 -2
  15. pygpt_net/controller/debug/fixtures.py +1 -1
  16. pygpt_net/controller/dialogs/confirm.py +15 -1
  17. pygpt_net/controller/dialogs/debug.py +2 -0
  18. pygpt_net/controller/lang/mapping.py +0 -0
  19. pygpt_net/controller/launcher/launcher.py +0 -0
  20. pygpt_net/controller/mode/mode.py +0 -0
  21. pygpt_net/controller/presets/presets.py +0 -0
  22. pygpt_net/controller/realtime/realtime.py +0 -0
  23. pygpt_net/controller/theme/theme.py +0 -0
  24. pygpt_net/controller/ui/mode.py +0 -0
  25. pygpt_net/controller/ui/tabs.py +0 -0
  26. pygpt_net/core/agents/agents.py +3 -1
  27. pygpt_net/core/agents/custom.py +150 -0
  28. pygpt_net/core/agents/provider.py +0 -0
  29. pygpt_net/core/builder/__init__.py +12 -0
  30. pygpt_net/core/builder/graph.py +478 -0
  31. pygpt_net/core/calendar/calendar.py +0 -0
  32. pygpt_net/core/ctx/ctx.py +2 -1
  33. pygpt_net/core/ctx/output.py +0 -0
  34. pygpt_net/core/debug/agent.py +0 -0
  35. pygpt_net/core/debug/agent_builder.py +29 -0
  36. pygpt_net/core/debug/console/console.py +0 -0
  37. pygpt_net/core/debug/db.py +0 -0
  38. pygpt_net/core/debug/debug.py +0 -0
  39. pygpt_net/core/debug/events.py +0 -0
  40. pygpt_net/core/debug/indexes.py +0 -0
  41. pygpt_net/core/debug/kernel.py +0 -0
  42. pygpt_net/core/debug/tabs.py +0 -0
  43. pygpt_net/core/filesystem/filesystem.py +0 -0
  44. pygpt_net/core/fixtures/__init__ +0 -0
  45. pygpt_net/core/fixtures/stream/__init__.py +0 -0
  46. pygpt_net/core/fixtures/stream/generator.py +0 -0
  47. pygpt_net/core/models/models.py +0 -0
  48. pygpt_net/core/render/plain/pid.py +0 -0
  49. pygpt_net/core/render/plain/renderer.py +26 -4
  50. pygpt_net/core/render/web/body.py +46 -4
  51. pygpt_net/core/render/web/debug.py +0 -0
  52. pygpt_net/core/render/web/helpers.py +0 -0
  53. pygpt_net/core/render/web/pid.py +0 -0
  54. pygpt_net/core/render/web/renderer.py +15 -20
  55. pygpt_net/core/tabs/tab.py +0 -0
  56. pygpt_net/core/tabs/tabs.py +0 -0
  57. pygpt_net/core/text/utils.py +0 -0
  58. pygpt_net/css.qrc +0 -0
  59. pygpt_net/css_rc.py +0 -0
  60. pygpt_net/data/config/config.json +7 -7
  61. pygpt_net/data/config/models.json +3 -3
  62. pygpt_net/data/css/web-blocks.css +9 -0
  63. pygpt_net/data/css/web-blocks.dark.css +6 -0
  64. pygpt_net/data/css/web-blocks.darkest.css +6 -0
  65. pygpt_net/data/css/web-chatgpt.css +14 -6
  66. pygpt_net/data/css/web-chatgpt.dark.css +6 -0
  67. pygpt_net/data/css/web-chatgpt.darkest.css +6 -0
  68. pygpt_net/data/css/web-chatgpt.light.css +6 -0
  69. pygpt_net/data/css/web-chatgpt_wide.css +14 -6
  70. pygpt_net/data/css/web-chatgpt_wide.dark.css +6 -0
  71. pygpt_net/data/css/web-chatgpt_wide.darkest.css +6 -0
  72. pygpt_net/data/css/web-chatgpt_wide.light.css +6 -0
  73. pygpt_net/data/fixtures/fake_stream.txt +14 -1
  74. pygpt_net/data/icons/case.svg +0 -0
  75. pygpt_net/data/icons/chat1.svg +0 -0
  76. pygpt_net/data/icons/chat2.svg +0 -0
  77. pygpt_net/data/icons/chat3.svg +0 -0
  78. pygpt_net/data/icons/chat4.svg +0 -0
  79. pygpt_net/data/icons/fit.svg +0 -0
  80. pygpt_net/data/icons/note1.svg +0 -0
  81. pygpt_net/data/icons/note2.svg +0 -0
  82. pygpt_net/data/icons/note3.svg +0 -0
  83. pygpt_net/data/icons/stt.svg +0 -0
  84. pygpt_net/data/icons/translate.svg +0 -0
  85. pygpt_net/data/icons/tts.svg +0 -0
  86. pygpt_net/data/icons/url.svg +0 -0
  87. pygpt_net/data/icons/vision.svg +0 -0
  88. pygpt_net/data/icons/web_off.svg +0 -0
  89. pygpt_net/data/icons/web_on.svg +0 -0
  90. pygpt_net/data/js/app/async.js +166 -0
  91. pygpt_net/data/js/app/bridge.js +88 -0
  92. pygpt_net/data/js/app/common.js +212 -0
  93. pygpt_net/data/js/app/config.js +223 -0
  94. pygpt_net/data/js/app/custom.js +961 -0
  95. pygpt_net/data/js/app/data.js +84 -0
  96. pygpt_net/data/js/app/dom.js +322 -0
  97. pygpt_net/data/js/app/events.js +400 -0
  98. pygpt_net/data/js/app/highlight.js +542 -0
  99. pygpt_net/data/js/app/logger.js +305 -0
  100. pygpt_net/data/js/app/markdown.js +1137 -0
  101. pygpt_net/data/js/app/math.js +167 -0
  102. pygpt_net/data/js/app/nodes.js +395 -0
  103. pygpt_net/data/js/app/queue.js +260 -0
  104. pygpt_net/data/js/app/raf.js +250 -0
  105. pygpt_net/data/js/app/runtime.js +582 -0
  106. pygpt_net/data/js/app/scroll.js +433 -0
  107. pygpt_net/data/js/app/stream.js +2708 -0
  108. pygpt_net/data/js/app/template.js +287 -0
  109. pygpt_net/data/js/app/tool.js +87 -0
  110. pygpt_net/data/js/app/ui.js +86 -0
  111. pygpt_net/data/js/app/user.js +380 -0
  112. pygpt_net/data/js/app/utils.js +64 -0
  113. pygpt_net/data/js/app.min.js +880 -0
  114. pygpt_net/data/js/markdown-it/markdown-it-katex.min.js +1 -1
  115. pygpt_net/data/js/markdown-it/markdown-it.min.js +0 -0
  116. pygpt_net/data/locale/locale.de.ini +0 -0
  117. pygpt_net/data/locale/locale.en.ini +7 -0
  118. pygpt_net/data/locale/locale.es.ini +0 -0
  119. pygpt_net/data/locale/locale.fr.ini +0 -0
  120. pygpt_net/data/locale/locale.it.ini +0 -0
  121. pygpt_net/data/locale/locale.pl.ini +0 -0
  122. pygpt_net/data/locale/locale.uk.ini +0 -0
  123. pygpt_net/data/locale/locale.zh.ini +0 -0
  124. pygpt_net/data/locale/plugin.agent.de.ini +0 -0
  125. pygpt_net/data/locale/plugin.agent.en.ini +0 -0
  126. pygpt_net/data/locale/plugin.agent.es.ini +0 -0
  127. pygpt_net/data/locale/plugin.agent.fr.ini +0 -0
  128. pygpt_net/data/locale/plugin.agent.it.ini +0 -0
  129. pygpt_net/data/locale/plugin.agent.pl.ini +0 -0
  130. pygpt_net/data/locale/plugin.agent.uk.ini +0 -0
  131. pygpt_net/data/locale/plugin.agent.zh.ini +0 -0
  132. pygpt_net/data/locale/plugin.audio_input.de.ini +0 -0
  133. pygpt_net/data/locale/plugin.audio_input.en.ini +0 -0
  134. pygpt_net/data/locale/plugin.audio_input.es.ini +0 -0
  135. pygpt_net/data/locale/plugin.audio_input.fr.ini +0 -0
  136. pygpt_net/data/locale/plugin.audio_input.it.ini +0 -0
  137. pygpt_net/data/locale/plugin.audio_input.pl.ini +0 -0
  138. pygpt_net/data/locale/plugin.audio_input.uk.ini +0 -0
  139. pygpt_net/data/locale/plugin.audio_input.zh.ini +0 -0
  140. pygpt_net/data/locale/plugin.audio_output.de.ini +0 -0
  141. pygpt_net/data/locale/plugin.audio_output.en.ini +0 -0
  142. pygpt_net/data/locale/plugin.audio_output.es.ini +0 -0
  143. pygpt_net/data/locale/plugin.audio_output.fr.ini +0 -0
  144. pygpt_net/data/locale/plugin.audio_output.it.ini +0 -0
  145. pygpt_net/data/locale/plugin.audio_output.pl.ini +0 -0
  146. pygpt_net/data/locale/plugin.audio_output.uk.ini +0 -0
  147. pygpt_net/data/locale/plugin.audio_output.zh.ini +0 -0
  148. pygpt_net/data/locale/plugin.cmd_api.de.ini +0 -0
  149. pygpt_net/data/locale/plugin.cmd_api.en.ini +0 -0
  150. pygpt_net/data/locale/plugin.cmd_api.es.ini +0 -0
  151. pygpt_net/data/locale/plugin.cmd_api.fr.ini +0 -0
  152. pygpt_net/data/locale/plugin.cmd_api.it.ini +0 -0
  153. pygpt_net/data/locale/plugin.cmd_api.pl.ini +0 -0
  154. pygpt_net/data/locale/plugin.cmd_api.uk.ini +0 -0
  155. pygpt_net/data/locale/plugin.cmd_api.zh.ini +0 -0
  156. pygpt_net/data/locale/plugin.cmd_code_interpreter.de.ini +0 -0
  157. pygpt_net/data/locale/plugin.cmd_code_interpreter.en.ini +0 -0
  158. pygpt_net/data/locale/plugin.cmd_code_interpreter.es.ini +0 -0
  159. pygpt_net/data/locale/plugin.cmd_code_interpreter.fr.ini +0 -0
  160. pygpt_net/data/locale/plugin.cmd_code_interpreter.it.ini +0 -0
  161. pygpt_net/data/locale/plugin.cmd_code_interpreter.pl.ini +0 -0
  162. pygpt_net/data/locale/plugin.cmd_code_interpreter.uk.ini +0 -0
  163. pygpt_net/data/locale/plugin.cmd_code_interpreter.zh.ini +0 -0
  164. pygpt_net/data/locale/plugin.cmd_custom.de.ini +0 -0
  165. pygpt_net/data/locale/plugin.cmd_custom.en.ini +0 -0
  166. pygpt_net/data/locale/plugin.cmd_custom.es.ini +0 -0
  167. pygpt_net/data/locale/plugin.cmd_custom.fr.ini +0 -0
  168. pygpt_net/data/locale/plugin.cmd_custom.it.ini +0 -0
  169. pygpt_net/data/locale/plugin.cmd_custom.pl.ini +0 -0
  170. pygpt_net/data/locale/plugin.cmd_custom.uk.ini +0 -0
  171. pygpt_net/data/locale/plugin.cmd_custom.zh.ini +0 -0
  172. pygpt_net/data/locale/plugin.cmd_files.de.ini +0 -0
  173. pygpt_net/data/locale/plugin.cmd_files.en.ini +0 -0
  174. pygpt_net/data/locale/plugin.cmd_files.es.ini +0 -0
  175. pygpt_net/data/locale/plugin.cmd_files.fr.ini +0 -0
  176. pygpt_net/data/locale/plugin.cmd_files.it.ini +0 -0
  177. pygpt_net/data/locale/plugin.cmd_files.pl.ini +0 -0
  178. pygpt_net/data/locale/plugin.cmd_files.uk.ini +0 -0
  179. pygpt_net/data/locale/plugin.cmd_files.zh.ini +0 -0
  180. pygpt_net/data/locale/plugin.cmd_history.de.ini +0 -0
  181. pygpt_net/data/locale/plugin.cmd_history.en.ini +0 -0
  182. pygpt_net/data/locale/plugin.cmd_history.es.ini +0 -0
  183. pygpt_net/data/locale/plugin.cmd_history.fr.ini +0 -0
  184. pygpt_net/data/locale/plugin.cmd_history.it.ini +0 -0
  185. pygpt_net/data/locale/plugin.cmd_history.pl.ini +0 -0
  186. pygpt_net/data/locale/plugin.cmd_history.uk.ini +0 -0
  187. pygpt_net/data/locale/plugin.cmd_history.zh.ini +0 -0
  188. pygpt_net/data/locale/plugin.cmd_mouse_control.de.ini +0 -0
  189. pygpt_net/data/locale/plugin.cmd_mouse_control.en.ini +0 -0
  190. pygpt_net/data/locale/plugin.cmd_mouse_control.es.ini +0 -0
  191. pygpt_net/data/locale/plugin.cmd_mouse_control.fr.ini +0 -0
  192. pygpt_net/data/locale/plugin.cmd_mouse_control.it.ini +0 -0
  193. pygpt_net/data/locale/plugin.cmd_mouse_control.pl.ini +0 -0
  194. pygpt_net/data/locale/plugin.cmd_mouse_control.uk.ini +0 -0
  195. pygpt_net/data/locale/plugin.cmd_mouse_control.zh.ini +0 -0
  196. pygpt_net/data/locale/plugin.cmd_serial.de.ini +0 -0
  197. pygpt_net/data/locale/plugin.cmd_serial.en.ini +0 -0
  198. pygpt_net/data/locale/plugin.cmd_serial.es.ini +0 -0
  199. pygpt_net/data/locale/plugin.cmd_serial.fr.ini +0 -0
  200. pygpt_net/data/locale/plugin.cmd_serial.it.ini +0 -0
  201. pygpt_net/data/locale/plugin.cmd_serial.pl.ini +0 -0
  202. pygpt_net/data/locale/plugin.cmd_serial.uk.ini +0 -0
  203. pygpt_net/data/locale/plugin.cmd_serial.zh.ini +0 -0
  204. pygpt_net/data/locale/plugin.cmd_system.de.ini +0 -0
  205. pygpt_net/data/locale/plugin.cmd_system.en.ini +0 -0
  206. pygpt_net/data/locale/plugin.cmd_system.es.ini +0 -0
  207. pygpt_net/data/locale/plugin.cmd_system.fr.ini +0 -0
  208. pygpt_net/data/locale/plugin.cmd_system.it.ini +0 -0
  209. pygpt_net/data/locale/plugin.cmd_system.pl.ini +0 -0
  210. pygpt_net/data/locale/plugin.cmd_system.uk.ini +0 -0
  211. pygpt_net/data/locale/plugin.cmd_system.zh.ini +0 -0
  212. pygpt_net/data/locale/plugin.cmd_web.de.ini +0 -0
  213. pygpt_net/data/locale/plugin.cmd_web.en.ini +0 -0
  214. pygpt_net/data/locale/plugin.cmd_web.es.ini +0 -0
  215. pygpt_net/data/locale/plugin.cmd_web.fr.ini +0 -0
  216. pygpt_net/data/locale/plugin.cmd_web.it.ini +0 -0
  217. pygpt_net/data/locale/plugin.cmd_web.pl.ini +0 -0
  218. pygpt_net/data/locale/plugin.cmd_web.uk.ini +0 -0
  219. pygpt_net/data/locale/plugin.cmd_web.zh.ini +0 -0
  220. pygpt_net/data/locale/plugin.crontab.de.ini +0 -0
  221. pygpt_net/data/locale/plugin.crontab.en.ini +0 -0
  222. pygpt_net/data/locale/plugin.crontab.es.ini +0 -0
  223. pygpt_net/data/locale/plugin.crontab.fr.ini +0 -0
  224. pygpt_net/data/locale/plugin.crontab.it.ini +0 -0
  225. pygpt_net/data/locale/plugin.crontab.pl.ini +0 -0
  226. pygpt_net/data/locale/plugin.crontab.uk.ini +0 -0
  227. pygpt_net/data/locale/plugin.crontab.zh.ini +0 -0
  228. pygpt_net/data/locale/plugin.experts.de.ini +0 -0
  229. pygpt_net/data/locale/plugin.experts.en.ini +0 -0
  230. pygpt_net/data/locale/plugin.experts.es.ini +0 -0
  231. pygpt_net/data/locale/plugin.experts.fr.ini +0 -0
  232. pygpt_net/data/locale/plugin.experts.it.ini +0 -0
  233. pygpt_net/data/locale/plugin.experts.pl.ini +0 -0
  234. pygpt_net/data/locale/plugin.experts.uk.ini +0 -0
  235. pygpt_net/data/locale/plugin.experts.zh.ini +0 -0
  236. pygpt_net/data/locale/plugin.extra_prompt.de.ini +0 -0
  237. pygpt_net/data/locale/plugin.extra_prompt.en.ini +0 -0
  238. pygpt_net/data/locale/plugin.extra_prompt.es.ini +0 -0
  239. pygpt_net/data/locale/plugin.extra_prompt.fr.ini +0 -0
  240. pygpt_net/data/locale/plugin.extra_prompt.it.ini +0 -0
  241. pygpt_net/data/locale/plugin.extra_prompt.pl.ini +0 -0
  242. pygpt_net/data/locale/plugin.extra_prompt.uk.ini +0 -0
  243. pygpt_net/data/locale/plugin.extra_prompt.zh.ini +0 -0
  244. pygpt_net/data/locale/plugin.idx_llama_index.de.ini +0 -0
  245. pygpt_net/data/locale/plugin.idx_llama_index.en.ini +0 -0
  246. pygpt_net/data/locale/plugin.idx_llama_index.es.ini +0 -0
  247. pygpt_net/data/locale/plugin.idx_llama_index.fr.ini +0 -0
  248. pygpt_net/data/locale/plugin.idx_llama_index.it.ini +0 -0
  249. pygpt_net/data/locale/plugin.idx_llama_index.pl.ini +0 -0
  250. pygpt_net/data/locale/plugin.idx_llama_index.uk.ini +0 -0
  251. pygpt_net/data/locale/plugin.idx_llama_index.zh.ini +0 -0
  252. pygpt_net/data/locale/plugin.mailer.en.ini +0 -0
  253. pygpt_net/data/locale/plugin.mcp.en.ini +0 -0
  254. pygpt_net/data/locale/plugin.openai_dalle.de.ini +0 -0
  255. pygpt_net/data/locale/plugin.openai_dalle.en.ini +0 -0
  256. pygpt_net/data/locale/plugin.openai_dalle.es.ini +0 -0
  257. pygpt_net/data/locale/plugin.openai_dalle.fr.ini +0 -0
  258. pygpt_net/data/locale/plugin.openai_dalle.it.ini +0 -0
  259. pygpt_net/data/locale/plugin.openai_dalle.pl.ini +0 -0
  260. pygpt_net/data/locale/plugin.openai_dalle.uk.ini +0 -0
  261. pygpt_net/data/locale/plugin.openai_dalle.zh.ini +0 -0
  262. pygpt_net/data/locale/plugin.openai_vision.de.ini +0 -0
  263. pygpt_net/data/locale/plugin.openai_vision.en.ini +0 -0
  264. pygpt_net/data/locale/plugin.openai_vision.es.ini +0 -0
  265. pygpt_net/data/locale/plugin.openai_vision.fr.ini +0 -0
  266. pygpt_net/data/locale/plugin.openai_vision.it.ini +0 -0
  267. pygpt_net/data/locale/plugin.openai_vision.pl.ini +0 -0
  268. pygpt_net/data/locale/plugin.openai_vision.uk.ini +0 -0
  269. pygpt_net/data/locale/plugin.openai_vision.zh.ini +0 -0
  270. pygpt_net/data/locale/plugin.osm.en.ini +0 -0
  271. pygpt_net/data/locale/plugin.real_time.de.ini +0 -0
  272. pygpt_net/data/locale/plugin.real_time.en.ini +0 -0
  273. pygpt_net/data/locale/plugin.real_time.es.ini +0 -0
  274. pygpt_net/data/locale/plugin.real_time.fr.ini +0 -0
  275. pygpt_net/data/locale/plugin.real_time.it.ini +0 -0
  276. pygpt_net/data/locale/plugin.real_time.pl.ini +0 -0
  277. pygpt_net/data/locale/plugin.real_time.uk.ini +0 -0
  278. pygpt_net/data/locale/plugin.real_time.zh.ini +0 -0
  279. pygpt_net/data/locale/plugin.voice_control.de.ini +0 -0
  280. pygpt_net/data/locale/plugin.voice_control.en.ini +0 -0
  281. pygpt_net/data/locale/plugin.voice_control.es.ini +0 -0
  282. pygpt_net/data/locale/plugin.voice_control.fr.ini +0 -0
  283. pygpt_net/data/locale/plugin.voice_control.it.ini +0 -0
  284. pygpt_net/data/locale/plugin.voice_control.pl.ini +0 -0
  285. pygpt_net/data/locale/plugin.voice_control.uk.ini +0 -0
  286. pygpt_net/data/locale/plugin.voice_control.zh.ini +0 -0
  287. pygpt_net/data/locale/plugin.wolfram.en.ini +0 -0
  288. pygpt_net/fonts.qrc +0 -0
  289. pygpt_net/fonts_rc.py +0 -0
  290. pygpt_net/icons.qrc +0 -0
  291. pygpt_net/icons_rc.py +0 -0
  292. pygpt_net/item/agent.py +62 -0
  293. pygpt_net/item/builder_layout.py +62 -0
  294. pygpt_net/js.qrc +24 -1
  295. pygpt_net/js_rc.py +51394 -33687
  296. pygpt_net/plugin/base/worker.py +0 -0
  297. pygpt_net/plugin/mcp/__init__.py +0 -0
  298. pygpt_net/plugin/mcp/config.py +0 -0
  299. pygpt_net/plugin/mcp/plugin.py +0 -0
  300. pygpt_net/plugin/mcp/worker.py +0 -0
  301. pygpt_net/plugin/osm/__init__.py +0 -0
  302. pygpt_net/plugin/osm/config.py +0 -0
  303. pygpt_net/plugin/osm/plugin.py +0 -0
  304. pygpt_net/plugin/osm/worker.py +0 -0
  305. pygpt_net/plugin/wolfram/__init__.py +0 -0
  306. pygpt_net/plugin/wolfram/config.py +0 -0
  307. pygpt_net/plugin/wolfram/plugin.py +0 -0
  308. pygpt_net/plugin/wolfram/worker.py +0 -0
  309. pygpt_net/provider/api/anthropic/tools.py +0 -0
  310. pygpt_net/provider/api/google/__init__.py +0 -0
  311. pygpt_net/provider/api/google/video.py +0 -0
  312. pygpt_net/provider/api/openai/agents/experts.py +0 -0
  313. pygpt_net/provider/api/openai/agents/remote_tools.py +0 -0
  314. pygpt_net/provider/api/openai/remote_tools.py +0 -0
  315. pygpt_net/provider/api/openai/responses.py +0 -0
  316. pygpt_net/provider/api/x_ai/__init__.py +0 -0
  317. pygpt_net/provider/api/x_ai/remote.py +0 -0
  318. pygpt_net/provider/core/agent/__init__.py +10 -0
  319. pygpt_net/provider/core/agent/base.py +51 -0
  320. pygpt_net/provider/core/agent/json_file.py +200 -0
  321. pygpt_net/provider/core/config/patch.py +18 -0
  322. pygpt_net/provider/core/config/patches/__init__.py +0 -0
  323. pygpt_net/provider/core/config/patches/patch_before_2_6_42.py +0 -0
  324. pygpt_net/provider/core/ctx/db_sqlite/storage.py +0 -0
  325. pygpt_net/provider/core/model/patches/__init__.py +0 -0
  326. pygpt_net/provider/core/model/patches/patch_before_2_6_42.py +0 -0
  327. pygpt_net/provider/core/preset/patch.py +0 -0
  328. pygpt_net/provider/core/preset/patches/__init__.py +0 -0
  329. pygpt_net/provider/core/preset/patches/patch_before_2_6_42.py +0 -0
  330. pygpt_net/provider/llms/base.py +0 -0
  331. pygpt_net/provider/llms/deepseek_api.py +0 -0
  332. pygpt_net/provider/llms/google.py +0 -0
  333. pygpt_net/provider/llms/hugging_face_api.py +0 -0
  334. pygpt_net/provider/llms/hugging_face_embedding.py +0 -0
  335. pygpt_net/provider/llms/hugging_face_router.py +0 -0
  336. pygpt_net/provider/llms/local.py +0 -0
  337. pygpt_net/provider/llms/mistral.py +0 -0
  338. pygpt_net/provider/llms/open_router.py +0 -0
  339. pygpt_net/provider/llms/perplexity.py +0 -0
  340. pygpt_net/provider/llms/utils.py +0 -0
  341. pygpt_net/provider/llms/voyage.py +0 -0
  342. pygpt_net/provider/llms/x_ai.py +0 -0
  343. pygpt_net/tools/agent_builder/__init__.py +12 -0
  344. pygpt_net/tools/agent_builder/tool.py +292 -0
  345. pygpt_net/tools/agent_builder/ui/__init__.py +0 -0
  346. pygpt_net/tools/agent_builder/ui/dialogs.py +152 -0
  347. pygpt_net/tools/agent_builder/ui/list.py +228 -0
  348. pygpt_net/tools/code_interpreter/ui/html.py +0 -0
  349. pygpt_net/tools/code_interpreter/ui/widgets.py +0 -0
  350. pygpt_net/tools/html_canvas/tool.py +23 -6
  351. pygpt_net/tools/html_canvas/ui/widgets.py +224 -2
  352. pygpt_net/ui/layout/chat/chat.py +0 -0
  353. pygpt_net/ui/main.py +10 -9
  354. pygpt_net/ui/menu/debug.py +39 -1
  355. pygpt_net/ui/widget/builder/__init__.py +12 -0
  356. pygpt_net/ui/widget/builder/editor.py +2001 -0
  357. pygpt_net/ui/widget/draw/painter.py +0 -0
  358. pygpt_net/ui/widget/element/labels.py +9 -4
  359. pygpt_net/ui/widget/lists/db.py +0 -0
  360. pygpt_net/ui/widget/lists/debug.py +0 -0
  361. pygpt_net/ui/widget/tabs/body.py +0 -0
  362. pygpt_net/ui/widget/textarea/input.py +17 -8
  363. pygpt_net/ui/widget/textarea/output.py +21 -1
  364. pygpt_net/ui/widget/textarea/web.py +29 -2
  365. pygpt_net/utils.py +40 -0
  366. {pygpt_net-2.6.54.dist-info → pygpt_net-2.6.56.dist-info}/METADATA +13 -2
  367. {pygpt_net-2.6.54.dist-info → pygpt_net-2.6.56.dist-info}/RECORD +86 -47
  368. pygpt_net/data/js/app.js +0 -5869
  369. {pygpt_net-2.6.54.dist-info → pygpt_net-2.6.56.dist-info}/LICENSE +0 -0
  370. {pygpt_net-2.6.54.dist-info → pygpt_net-2.6.56.dist-info}/WHEEL +0 -0
  371. {pygpt_net-2.6.54.dist-info → pygpt_net-2.6.56.dist-info}/entry_points.txt +0 -0
File without changes
@@ -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.16 22:00:00 #
9
+ # Updated Date: 2025.09.19 00:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  from PySide6.QtCore import Qt, QTimer, QRect, Signal, QUrl, QEvent
@@ -124,15 +124,16 @@ class CmdLabel(QLineEdit):
124
124
  class IconLabel(QLabel):
125
125
  clicked = Signal()
126
126
 
127
- def __init__(self, icon: str, window=None):
127
+ def __init__(self, icon: str, window=None, hover=True):
128
128
  super().__init__("", window)
129
129
  self.window = window
130
130
  self.setWordWrap(True)
131
131
  self.setAlignment(Qt.AlignRight)
132
132
  self.setProperty('class', 'label-chat-status')
133
133
  self.setContentsMargins(0, 0, 0, 0)
134
- self.setMouseTracking(True)
135
-
134
+ self.hover = hover
135
+ if hover:
136
+ self.setMouseTracking(True)
136
137
  self.original_pixmap = None
137
138
  self.hover_pixmap = None
138
139
  self.set_icon(icon)
@@ -181,6 +182,8 @@ class IconLabel(QLabel):
181
182
  return recolored
182
183
 
183
184
  def enterEvent(self, event: QEvent):
185
+ if not self.hover:
186
+ return
184
187
  self.setCursor(Qt.PointingHandCursor)
185
188
  self.hover_pixmap = self.create_hover_icon(self.original_pixmap)
186
189
  if self.hover_pixmap is not None and not self.hover_pixmap.isNull():
@@ -190,6 +193,8 @@ class IconLabel(QLabel):
190
193
  super().enterEvent(event)
191
194
 
192
195
  def leaveEvent(self, event: QEvent):
196
+ if not self.hover:
197
+ return
193
198
  self.unsetCursor()
194
199
  self.setPixmap(self.original_pixmap)
195
200
  super().leaveEvent(event)
File without changes
File without changes
File without changes
@@ -106,8 +106,15 @@ class ChatInput(QTextEdit):
106
106
  self._auto_timer.setSingleShot(True)
107
107
  self._auto_timer.timeout.connect(self._auto_resize_tick)
108
108
 
109
- # Trigger auto-resize on text changes (tokens update stays intact)
110
- self.textChanged.connect(self._schedule_auto_resize)
109
+ self._tokens_timer = QTimer(self)
110
+ self._tokens_timer.setSingleShot(True)
111
+ self._tokens_timer.setInterval(1500)
112
+ self._tokens_timer.timeout.connect(self.window.controller.ui.update_tokens)
113
+ self.textChanged.connect(self._on_text_changed_tokens)
114
+
115
+ def _on_text_changed_tokens(self):
116
+ """Schedule token count update with debounce."""
117
+ self._tokens_timer.start()
111
118
 
112
119
  def _apply_text_top_padding(self):
113
120
  """Apply extra top padding inside the text area by using viewport margins."""
@@ -214,27 +221,29 @@ class ChatInput(QTextEdit):
214
221
  def keyPressEvent(self, event):
215
222
  """
216
223
  Key press event
217
-
218
- :param event: key event
219
224
  """
220
225
  handled = False
221
226
  key = event.key()
227
+
222
228
  if key in (Qt.Key_Return, Qt.Key_Enter):
223
229
  mode = self.window.core.config.get('send_mode')
224
230
  if mode > 0:
225
- modifiers = event.modifiers()
231
+ mods = event.modifiers()
232
+ has_shift_or_ctrl = bool(mods & (Qt.ShiftModifier | Qt.ControlModifier))
233
+
226
234
  if mode == 2:
227
- if modifiers == Qt.ShiftModifier or modifiers == Qt.ControlModifier:
235
+ if has_shift_or_ctrl:
228
236
  self.window.controller.chat.input.send_input()
229
237
  handled = True
230
238
  else:
231
- if modifiers != Qt.ShiftModifier and modifiers != Qt.ControlModifier:
239
+ if not has_shift_or_ctrl:
232
240
  self.window.controller.chat.input.send_input()
233
241
  handled = True
242
+
234
243
  self.setFocus()
235
- # Collapse to minimum after sending
236
244
  if handled:
237
245
  QTimer.singleShot(0, self.collapse_to_min)
246
+
238
247
  elif key == Qt.Key_Escape and self.window.controller.ctx.extra.is_editing():
239
248
  self.window.controller.ctx.extra.edit_cancel()
240
249
  handled = True
@@ -45,6 +45,9 @@ class ChatOutput(QTextBrowser):
45
45
  self.tab = None
46
46
  self.installEventFilter(self)
47
47
  self.setProperty('class', 'layout-output-plain')
48
+ self._auto_scroll = True
49
+ self._auto_scroll_margin = None
50
+ self.verticalScrollBar().valueChanged.connect(self._on_vsb_value_changed)
48
51
 
49
52
  def on_delete(self):
50
53
  """Clean up on delete"""
@@ -197,4 +200,21 @@ class ChatOutput(QTextBrowser):
197
200
  :param e: focus event
198
201
  """
199
202
  super().focusInEvent(e)
200
- self.window.controller.finder.focus_in(self.finder)
203
+ self.window.controller.finder.focus_in(self.finder)
204
+
205
+ def _calc_auto_scroll_margin(self) -> int:
206
+ vsb = self.verticalScrollBar()
207
+ ps = vsb.pageStep()
208
+ if ps <= 0:
209
+ return 2
210
+ return max(2, min(64, ps // 10))
211
+
212
+ def _on_vsb_value_changed(self, value: int):
213
+ self._auto_scroll = self.was_at_bottom()
214
+
215
+ def was_at_bottom(self) -> bool:
216
+ vsb = self.verticalScrollBar()
217
+ return (vsb.maximum() - vsb.value()) <= self._calc_auto_scroll_margin()
218
+
219
+ def is_auto_scroll_enabled(self) -> bool:
220
+ return self._auto_scroll
@@ -14,7 +14,7 @@ from PySide6.QtWebChannel import QWebChannel
14
14
  from PySide6.QtWebEngineCore import QWebEngineSettings, QWebEnginePage, QWebEngineProfile
15
15
  from PySide6.QtWebEngineWidgets import QWebEngineView
16
16
  from PySide6.QtGui import QAction, QIcon
17
- from PySide6.QtWidgets import QMenu
17
+ from PySide6.QtWidgets import QMenu, QDialog, QVBoxLayout
18
18
 
19
19
  from pygpt_net.core.events import RenderEvent
20
20
  from pygpt_net.item.ctx import CtxMeta
@@ -87,6 +87,33 @@ class ChatWebOutput(QWebEngineView):
87
87
  pass
88
88
  # self.window.core.debug.log(e)
89
89
 
90
+ def show_devtools(self, modal: bool = False, title: str = "DevTools"):
91
+ """Show DevTools window"""
92
+ if getattr(self, "_devtools_dlg", None) is None:
93
+ dlg = QDialog(self.window)
94
+ dlg.setWindowTitle(title)
95
+ dlg.setModal(modal)
96
+ dlg.setAttribute(Qt.WA_DeleteOnClose, True)
97
+ dlg.resize(1100, 750)
98
+
99
+ layout = QVBoxLayout(dlg)
100
+ view = QWebEngineView(dlg)
101
+ layout.addWidget(view)
102
+
103
+ profile = self.page().profile()
104
+ view.setPage(QWebEnginePage(profile, view))
105
+
106
+ self.page().setDevToolsPage(view.page())
107
+
108
+ dlg.destroyed.connect(lambda: setattr(self, "_devtools_dlg", None))
109
+
110
+ self._devtools_dlg = dlg
111
+ self._devtools_view = view
112
+
113
+ self._devtools_dlg.show()
114
+ self._devtools_dlg.raise_()
115
+ self._devtools_dlg.activateWindow()
116
+
90
117
  def unload(self):
91
118
  """Unload the current page and free resources"""
92
119
  try:
@@ -503,7 +530,7 @@ class CustomWebEnginePage(QWebEnginePage):
503
530
  return super().acceptNavigationRequest(url, _type, isMainFrame)
504
531
 
505
532
  def javaScriptConsoleMessage(self, level, message, line_number, source_id):
506
- # print("[JS CONSOLE] Line", line_number, ":", message)
533
+ print("[JS CONSOLE] Line", line_number, ":", message)
507
534
  self.signals.js_message.emit(line_number, message, source_id) # handled in debug controller
508
535
 
509
536
  def cleanup(self):
pygpt_net/utils.py CHANGED
@@ -78,6 +78,46 @@ def sizeof_fmt(num: Any, suffix: str = 'B'):
78
78
  num /= 1024.0
79
79
  return f"{num:.1f} Yi{suffix}".replace('.', ',')
80
80
 
81
+ def set_env(key: str, value: Any, append: bool = False, allow_overwrite: bool = False):
82
+ """
83
+ Setup environment flag / variable
84
+
85
+ :param key: env key
86
+ :param value: env value
87
+ :param append: append to existing value
88
+ :param allow_overwrite: allow overwrite value before setting
89
+ """
90
+ if allow_overwrite and key in os.environ:
91
+ return
92
+ if append:
93
+ if key in os.environ and os.environ[key]:
94
+ os.environ[key] = f"{os.environ[key]} {value}"
95
+ else:
96
+ os.environ[key] = str(value)
97
+ else:
98
+ os.environ[key] = str(value)
99
+
100
+ def has_env(key: str) -> bool:
101
+ """
102
+ Check if environment variable is set
103
+
104
+ :param key: env key
105
+ :return: True if env variable is set
106
+ """
107
+ return key in os.environ and os.environ[key] != ""
108
+
109
+ def get_env(key: str, default: Any = None) -> Any:
110
+ """
111
+ Get environment variable
112
+
113
+ :param key: env key
114
+ :param default: default value if env variable is not set
115
+ :return: env variable value or default
116
+ """
117
+ if key in os.environ and os.environ[key]:
118
+ return os.environ[key]
119
+ return default
120
+
81
121
 
82
122
  @contextmanager
83
123
  def freeze_updates(widget):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.54
3
+ Version: 2.6.56
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
@@ -119,7 +119,7 @@ Description-Content-Type: text/markdown
119
119
 
120
120
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
121
121
 
122
- Release: **2.6.54** | build: **2025-09-18** | Python: **>=3.10, <3.14**
122
+ Release: **2.6.56** | build: **2025-09-22** | Python: **>=3.10, <3.14**
123
123
 
124
124
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
125
125
  >
@@ -3646,6 +3646,17 @@ may consume additional tokens that are not displayed in the main window.
3646
3646
 
3647
3647
  ## Recent changes:
3648
3648
 
3649
+ **2.6.56 (2025-09-22)**
3650
+
3651
+ - Optimized: Memory usage and performance in streaming and rendering large contexts.
3652
+ - Added: Copy to clipboard functionality in user messages.
3653
+ - Added: Manual scroll in plain-text mode.
3654
+
3655
+ **2.6.55 (2025-09-18)**
3656
+
3657
+ - Fixed: Unnecessary context loading from the database.
3658
+ - Optimized: Token count in the input field.
3659
+
3649
3660
  **2.6.54 (2025-09-18)**
3650
3661
 
3651
3662
  - Added: Remote tools (like web search) are now also available in the Chat with Files and Agents (LlamaIndex) modes.
@@ -1,7 +1,7 @@
1
- pygpt_net/CHANGELOG.txt,sha256=tPwc-NzGHVHf4rD1kHYkx2HOCFe-EmvpWuUKP-nfSj8,107533
1
+ pygpt_net/CHANGELOG.txt,sha256=QQEO5vUgJw6iGQDRR1YvjWmkvWR4pB-_aJYiwINhCgA,107865
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=qPZCOW4Qc194HFhZorIsMeF1Dq-DS-346plWmtcAOOA,1373
4
- pygpt_net/app.py,sha256=Wo4BiC2j6kovUFaIgc6AF4eC1M58_vYLDuKcdMFEjQc,22236
3
+ pygpt_net/__init__.py,sha256=Ci4H2LHaPTjudKKvV6m-V64sS94PDp0u4X6CHPOyAeU,1373
4
+ pygpt_net/app.py,sha256=Ov0Qc2rFcjQb--Y8D10C3AHlWMXjNcW748iLTCSV7xk,22759
5
5
  pygpt_net/app_core.py,sha256=PwBOV9wZLtr-O6SxBiazABhYXMHH8kZ6OgbvSv2OiZA,3827
6
6
  pygpt_net/config.py,sha256=SCps_FfwdrynVAgpn37Ci1qTN8BFC05IGl9sYIi9e0w,16720
7
7
  pygpt_net/controller/__init__.py,sha256=k6_danw2VOQ4YNT-tH0mnfgK4SCL5B2Hyhug6TI1LgY,6100
@@ -44,7 +44,7 @@ pygpt_net/controller/chat/handler/anthropic_stream.py,sha256=dfzZVVW0d0Vjy8mKya2
44
44
  pygpt_net/controller/chat/handler/google_stream.py,sha256=uKbNui93DYVc7Vh0nHs_NJxs6UV2x1BVYsu20KL_L60,6810
45
45
  pygpt_net/controller/chat/handler/langchain_stream.py,sha256=bEV9FT9K6vVBAVrB73sMhGcVzlt_OFAdT2HNzwxgR2I,810
46
46
  pygpt_net/controller/chat/handler/llamaindex_stream.py,sha256=UPx7N4TeY1XZoKJOR7NdiyitD6xW9z-MygRG20AdzVQ,1851
47
- pygpt_net/controller/chat/handler/openai_stream.py,sha256=xXZ0CiMmoe-MlIJGakFLHD-S2ibYPvSfioEHXW7PFFs,9117
47
+ pygpt_net/controller/chat/handler/openai_stream.py,sha256=2b2qSU4WzTQR0mU3SwK-NUUYWXQvitVO03owMoi6E5g,9173
48
48
  pygpt_net/controller/chat/handler/utils.py,sha256=5B5fxQtLHv_WXU9clGHU_UTcKw1wd-94XL5GqeW7wOY,7235
49
49
  pygpt_net/controller/chat/handler/worker.py,sha256=qlCd6oCFs3iBMRvOKaD_Yhh9Ii-jhEsMbdMRt72UPTw,20317
50
50
  pygpt_net/controller/chat/handler/xai_stream.py,sha256=OVgQA-Za1y73C_BhHbUggth7HdLehSIl5jnG-_7GmKI,4303
@@ -77,11 +77,11 @@ pygpt_net/controller/ctx/ctx.py,sha256=ntRXdiot678SGHlc9NPG43UTq8xohEXssxcCuRjKZ
77
77
  pygpt_net/controller/ctx/extra.py,sha256=0r-G6Tlm9WPDkLRmgPDlgyRr_XLfCJntnUGlYPJiXVw,8598
78
78
  pygpt_net/controller/ctx/summarizer.py,sha256=UNsq-JTARblGNT97uSMpZEVzdUuDJ8YA2j2dw9R2X3o,3079
79
79
  pygpt_net/controller/debug/__init__.py,sha256=dOJGTICjvTtrPIEDOsxCzcOHsfu8AFPLpSKbdN0q0KI,509
80
- pygpt_net/controller/debug/debug.py,sha256=Bn8DIGjlHJ_Nm2CtYDtn1IHbsqJsami8lgrw2CY9Rrs,8990
81
- pygpt_net/controller/debug/fixtures.py,sha256=D0u3CM9KjFXnWPpZ09iUIlQLTEJd-6eGijNKRK0aweU,2735
80
+ pygpt_net/controller/debug/debug.py,sha256=5n-WC44niTEw2wMx7vqQu10j6M12xUYR0LrLChJ6H98,9684
81
+ pygpt_net/controller/debug/fixtures.py,sha256=Wvp_xaB9ukfcHAHhxYW5uCLn2G_47JDhYdWFZBL6hmc,2749
82
82
  pygpt_net/controller/dialogs/__init__.py,sha256=jI2WisG3lzbeyf__1Y7g7wWrxlr1QnYBDDt4t_3eeYk,513
83
- pygpt_net/controller/dialogs/confirm.py,sha256=PgVOJS31quY24Fs9XhFplcMnKweKbAxGWDKSjlBgLJU,16860
84
- pygpt_net/controller/dialogs/debug.py,sha256=e-2k06IqL2zhj9R4ESkCPbqIKZQcBKIzNsYAKb1zNkE,6040
83
+ pygpt_net/controller/dialogs/confirm.py,sha256=ILMj4DtlI-dA_fZmugande6XnTW892WoAM0ni_oIFkE,17429
84
+ pygpt_net/controller/dialogs/debug.py,sha256=TZN5dvw21dtpgE0uCQ0-djRYsrL9eEFGlZQGuSCV3G4,6166
85
85
  pygpt_net/controller/dialogs/dialogs.py,sha256=sJHyZxkAn9QKTegUqx_xETesN2ecMBkrtf-VsCubr2w,1008
86
86
  pygpt_net/controller/dialogs/info.py,sha256=mjQdj6cbTB09aIul5FChsnJsQoeqsRUQpKc3rP7lFeM,3757
87
87
  pygpt_net/controller/files/__init__.py,sha256=4dJY1HOUTQ6GPAvvUQmTNwTRJKoShyCP8Lo8j2dD0ec,509
@@ -158,8 +158,9 @@ pygpt_net/core/access/helpers.py,sha256=z-MFnXpx1VDehsMYmq0tpqjHIKZsXuJbbQRtVltz
158
158
  pygpt_net/core/access/shortcuts.py,sha256=kidMRTjD-zD_VdvOqKVITp9TxMAmPS31JhkNrDCtvBg,4562
159
159
  pygpt_net/core/access/voice.py,sha256=xUnvvdSWG2I5ezpfxEHcmYdgAD-ArtsiqUo0CeHTx4U,11921
160
160
  pygpt_net/core/agents/__init__.py,sha256=JOb-fSWSQFdQTCQvlQmTfcjnZfHtGxwBF1csYQqy4DU,516
161
- pygpt_net/core/agents/agents.py,sha256=sXP4AgrXW07Ap0w3ycVG4j-GxAZbp7aVKpRv4HMTWfM,1050
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
164
  pygpt_net/core/agents/legacy.py,sha256=OiiiK0zrTfNbWu2dKukg_Ro0vTZyiHlHHCTn1hU0bWg,1733
164
165
  pygpt_net/core/agents/memory.py,sha256=9Jz9kT-xT8QPpGeXEpWopJUGBLLHu6Ys_-fRrg6BWDg,5210
165
166
  pygpt_net/core/agents/observer/__init__.py,sha256=qVIBJKpGbc0k7PTESAwAR7SbN-pbkBMJUTzeliCAaJU,651
@@ -210,6 +211,8 @@ pygpt_net/core/bridge/__init__.py,sha256=RCrT3CuP8-Gf_APr5mBXyNcRigrfHcgS-SYVVP_
210
211
  pygpt_net/core/bridge/bridge.py,sha256=1pTbVza_CZMdrnXiRxq9sDROeJtMNofBMMkFzA1VQOE,10496
211
212
  pygpt_net/core/bridge/context.py,sha256=YBqeR5PgV0x5KK5otN-DYQNSqQtVaNddtRLDwSSLC2Y,7154
212
213
  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
213
216
  pygpt_net/core/calendar/__init__.py,sha256=AyzoNqYgxV35CMEzoi_SCSsQh4ehg_Wu_2nsK3xsbyg,512
214
217
  pygpt_net/core/calendar/calendar.py,sha256=mHWU8jPTYWqxd-35tIHM6GuKaFWzmB6Up7lq8ewV2_U,7224
215
218
  pygpt_net/core/camera/__init__.py,sha256=cny2EajFmwkFdo_pUkErJY4BhpyHp1kJVDcTCOOvkjY,510
@@ -224,7 +227,7 @@ pygpt_net/core/command/command.py,sha256=Ix8Y_T8Ayn2a86tZdVGcFJ5VEoSW2IkcU-_Aog5
224
227
  pygpt_net/core/ctx/__init__.py,sha256=hsqzIDxcwIIjF-7Zr5SkkhQV9LLmIYndQ_dohK20bg0,507
225
228
  pygpt_net/core/ctx/bag.py,sha256=j_10HBqkswdz5vW140SuGvJRf7E7J7hQyz6DCVe5D44,1570
226
229
  pygpt_net/core/ctx/container.py,sha256=5nlgM_8laH0igUASILD5zIiK3YhB-BA9pTKI0jVqHeQ,4938
227
- pygpt_net/core/ctx/ctx.py,sha256=nl-xYi8u6bmqRCX51wwd6bXcd2FaOH1pdaSVJcgH9kM,43530
230
+ pygpt_net/core/ctx/ctx.py,sha256=9_23I84VHWEX32ydxKIC5Nb5w_z7Oidf7-0jMDP31KI,43548
228
231
  pygpt_net/core/ctx/idx.py,sha256=3Zi-48OWlU80si-Z7mVjnsc7TYATXK9g1dM0M5sXsV4,8167
229
232
  pygpt_net/core/ctx/output.py,sha256=6llpijYvZPPyn12ibhw0QpNpWaZijDMCB7rAahE2iD4,8928
230
233
  pygpt_net/core/ctx/reply.py,sha256=nm-TzBoIDE9GrYyNjtIT7DvJVf8duAS2fVMeInHNEH4,2324
@@ -233,6 +236,7 @@ pygpt_net/core/db/database.py,sha256=H9tCfmnFH-h6cU13bqT8bpeU5SHR6UAu9np50__pdMY
233
236
  pygpt_net/core/db/viewer.py,sha256=V8B4HE2Jf0ejmhw_p63TNQiUIoIeJ-6LFpmgHA8EeoI,8657
234
237
  pygpt_net/core/debug/__init__.py,sha256=HDYwiKeh5TOxxxpecj6FXqIwwdZIh9FytCgC2vl3ZMY,509
235
238
  pygpt_net/core/debug/agent.py,sha256=pqhN6G9jpGN22McftuDg3ncD6sLJqNFd-rVANBo3lVY,1771
239
+ pygpt_net/core/debug/agent_builder.py,sha256=K0xkTO6CFx3Un5QkbMKOFpUigMAsQK3pmIRkKt5gc4I,970
236
240
  pygpt_net/core/debug/assistants.py,sha256=w0XMcmKsZpfrhTcV9y6M6AtpoHlyJKcg2vlk3H1xPks,2449
237
241
  pygpt_net/core/debug/attachments.py,sha256=JjVvoz0d-VeYrd57Ippua0x8YA9nY_F-2xMnGv_D-zM,1718
238
242
  pygpt_net/core/debug/config.py,sha256=nRLnpPCZydGZA7pcwGe1OswkgAR7xZTOwAtEW8p28eY,1982
@@ -348,14 +352,14 @@ pygpt_net/core/render/plain/__init__.py,sha256=19xPDIYeoDn3Sf1tpcvXtxLaaKkjs0nDQ
348
352
  pygpt_net/core/render/plain/body.py,sha256=qupyjx_P5DG_82qV0xf5LJ9Fr9y5w2sseVwu6dPG8xE,3866
349
353
  pygpt_net/core/render/plain/helpers.py,sha256=tWbdJZBfjnuHLAUDVYLTfv3Vt-h7XN1tg65JENDrMLw,1420
350
354
  pygpt_net/core/render/plain/pid.py,sha256=uM7KSWBkZGTFSRzIE30coT6Pl6aOaZORnPYkPy8dsC8,1537
351
- pygpt_net/core/render/plain/renderer.py,sha256=CA0pkTvzgO50vJlrkAkfMBvg60ffiEvDCyVkONKYkL4,16063
355
+ pygpt_net/core/render/plain/renderer.py,sha256=AxYE3X8TuF36HEpsqM_z7u7PNoG8u44lhSgXxv6g_Lo,17431
352
356
  pygpt_net/core/render/web/__init__.py,sha256=istp5dsn6EkLEP7lOBeDb8RjodUcWZqjcEvTroaTT-w,489
353
- pygpt_net/core/render/web/body.py,sha256=NOfRinlwwk0j20mEQTp-Ayu7EvEbON2BZCnsL-ZZ9LA,29055
357
+ pygpt_net/core/render/web/body.py,sha256=53q9TasA8yl92YVu9V6KXAD7CDh2zceRXDhGQ1l4iEc,31729
354
358
  pygpt_net/core/render/web/debug.py,sha256=784RYXF6inn_bkRtYD1_FllQSyk67JmxKGWPiAyscKw,7138
355
359
  pygpt_net/core/render/web/helpers.py,sha256=8-JkbEOOLoCEAkylJWr8yk3aIliQBMyqcatsyW99VWY,7340
356
360
  pygpt_net/core/render/web/parser.py,sha256=pDFc9Tf8P-jvrDilXyT1fukcQHbixHRJ9Dn9hF10Gko,12892
357
361
  pygpt_net/core/render/web/pid.py,sha256=F33x_OtrHL9BDMXx_JUbfo8-DOiN4vo1Tv4rrRVADTo,4343
358
- pygpt_net/core/render/web/renderer.py,sha256=9GO0rFIfDZ1B432DZqIrdimUSY7pP6td0USR8Fv-hIY,68889
362
+ pygpt_net/core/render/web/renderer.py,sha256=2cvNHNaWsXTpiXvIy1hVXsG0MHEkPEEJVP-w-nxPrt8,68606
359
363
  pygpt_net/core/render/web/syntax_highlight.py,sha256=QSLGF5cJL_Xeqej7_TYwY_5C2w9enXV_cMEuaJ3C43U,2005
360
364
  pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJi2iPI4,512
361
365
  pygpt_net/core/settings/settings.py,sha256=Ix06y-gJ3q7NJDf55XAWBBYulBLpinBqzYqsytH_9mo,8686
@@ -396,8 +400,8 @@ pygpt_net/css_rc.py,sha256=PX6g9z5BsD-DXISuR2oq3jHcjiKfcJ4HsgcHez6wGMc,27762
396
400
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
397
401
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
398
402
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
399
- pygpt_net/data/config/config.json,sha256=25JsVTJEiVo8rVOgAGWrEwoffymstOCGNqXRyEnc6-k,30886
400
- pygpt_net/data/config/models.json,sha256=WNCzYb3SgdiXLUr4BMG665s-6r8n6Q0wwXgE7ymBdSY,118192
403
+ pygpt_net/data/config/config.json,sha256=ELtN-j-P6VYfUM2F2DArKJaaRAhjWZlu0kasvf4JSEQ,30883
404
+ pygpt_net/data/config/models.json,sha256=3PPoeAjSMrQDZ6jPS6aP-wh6TgmOYlI5RiL70FoNy9g,118192
401
405
  pygpt_net/data/config/modes.json,sha256=IpjLOm428_vs6Ma9U-YQTNKJNtZw-qyM1lwhh73xl1w,2111
402
406
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
403
407
  pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
@@ -443,19 +447,19 @@ pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBA
443
447
  pygpt_net/data/css/style.css,sha256=dgVlVqEL38zF-4Ok-y1rwfALC8zETJAIuIbkwat_hTk,337
444
448
  pygpt_net/data/css/style.dark.css,sha256=PJ04XfRN1-3HyE9AO8xy1vhsaMNGrLl0tO4hH8VmCvM,2554
445
449
  pygpt_net/data/css/style.light.css,sha256=qJumh5HSwzGiDPoYKcKz_-8cOvV8D9QM74PtxnHBOqE,4914
446
- pygpt_net/data/css/web-blocks.css,sha256=naAJKmdLqFYaVey_urdbZ1rNCwUdVgbBMypUHxuQA5M,7420
447
- pygpt_net/data/css/web-blocks.dark.css,sha256=J4koULn9xZynOPsCM8zI0HwG0ChwwROaac00oOduqvA,1579
448
- pygpt_net/data/css/web-blocks.darkest.css,sha256=425pvVNX-HDMnPe-uarrK28kiEr4teudwwW8Qk8MtKI,1531
450
+ pygpt_net/data/css/web-blocks.css,sha256=i8BwIwauKvKiWq3bte45R6_bI6bjFyjKyshkTb2JWgs,7598
451
+ pygpt_net/data/css/web-blocks.dark.css,sha256=mck2u9KiO-pvnms0N0XJkoM_RBuf8QdC_3iSWAg8r40,1855
452
+ pygpt_net/data/css/web-blocks.darkest.css,sha256=p3929omAaS1yxNtcOk9yR6cdVGkTVLCIyVsmltxLVf4,1807
449
453
  pygpt_net/data/css/web-blocks.light.css,sha256=Sa6SLiVBA_ck6o2TXhXT7qAWZMWxwzKdaJZF7YH6kZk,1541
450
- pygpt_net/data/css/web-chatgpt.css,sha256=1zyYs8XPPErh4GB4_Bb8g1yPwH2YtKHyqFbj6RZZu1k,7829
451
- pygpt_net/data/css/web-chatgpt.dark.css,sha256=C4wgIbI8oOQ7BdnCTX3ceuXRDBsp8pvvCBjiOhn0ZO0,1500
452
- pygpt_net/data/css/web-chatgpt.darkest.css,sha256=oclQT4ZjjIU-icpNaBoci81Ya6jWRoRYP9dtnofR5xg,1452
453
- pygpt_net/data/css/web-chatgpt.light.css,sha256=AW8d8jppB6jGqFRDSUqL1Al_G9--UIqR696Ucu95llo,1536
454
- pygpt_net/data/css/web-chatgpt_wide.css,sha256=Bn_9omkRu0SqSCzvHzZdnrudQf-Vd6zEJf_CmyhRm5A,8046
455
- pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=C4wgIbI8oOQ7BdnCTX3ceuXRDBsp8pvvCBjiOhn0ZO0,1500
456
- pygpt_net/data/css/web-chatgpt_wide.darkest.css,sha256=oclQT4ZjjIU-icpNaBoci81Ya6jWRoRYP9dtnofR5xg,1452
457
- pygpt_net/data/css/web-chatgpt_wide.light.css,sha256=hDe7OqU7kd8ST9nuFcZmB-KuNKex6WyBNGKl2pHYjYk,1503
458
- pygpt_net/data/fixtures/fake_stream.txt,sha256=mdbcToK08H3apsJJvcQwH-dnBJsncU62AM-Z9vaQobA,265755
454
+ pygpt_net/data/css/web-chatgpt.css,sha256=rga5oRIfBT6D1jX5MI8oqShFwRX_3C54VHAmo55HlDc,7983
455
+ pygpt_net/data/css/web-chatgpt.dark.css,sha256=MDZPrly-g2yct_7cMAmCgiNrWzIUlRXJcMEGgwjyDOI,1776
456
+ pygpt_net/data/css/web-chatgpt.darkest.css,sha256=lfKclGll0Rz__925OMkFerkuHIGyJewJotvBbmvgpEc,1728
457
+ pygpt_net/data/css/web-chatgpt.light.css,sha256=vPe0hpFWi2DAzDQzYLA-qj0_LCw9hlfcLXQL0tBgj5Q,1818
458
+ pygpt_net/data/css/web-chatgpt_wide.css,sha256=kk28SeAT-sQmJ544k7a5GA7MBXR1bVBAkZc8IKWU-2M,8200
459
+ pygpt_net/data/css/web-chatgpt_wide.dark.css,sha256=MDZPrly-g2yct_7cMAmCgiNrWzIUlRXJcMEGgwjyDOI,1776
460
+ pygpt_net/data/css/web-chatgpt_wide.darkest.css,sha256=lfKclGll0Rz__925OMkFerkuHIGyJewJotvBbmvgpEc,1728
461
+ pygpt_net/data/css/web-chatgpt_wide.light.css,sha256=6Tq7OqzWcvkY-HRpU6v-UZskjMd_gwmq9NpN2ghjUwk,1785
462
+ pygpt_net/data/fixtures/fake_stream.txt,sha256=cCEzLbFVBweByDIX04hkr98teT2o7BWgmH37b3feMTU,265838
459
463
  pygpt_net/data/fonts/Lato/Lato-Black.ttf,sha256=iUTaWoYezgAYX6Fz6mUyTn1Hl6qGPG-g8D4GaAWXS2w,69484
460
464
  pygpt_net/data/fonts/Lato/Lato-BlackItalic.ttf,sha256=G7asNGubFS-gk9VAMO_NBz4o5R7AB8-3bCAflv103mc,71948
461
465
  pygpt_net/data/fonts/Lato/Lato-Bold.ttf,sha256=e3IFmfiu07rFuVMf7PZ1DI-n5ZO3J3ObwGkvzA9Vtng,73316
@@ -663,7 +667,30 @@ pygpt_net/data/icons/window.svg,sha256=Ac0i_zydkTg_hHi-ZzTRNW0uQ5z7j-2TjNX6iwv3o
663
667
  pygpt_net/data/icons/work.svg,sha256=6dAOEVzYU-6RUn3NpTvf6l2d4dD9vnalkYQTwjKNRrs,365
664
668
  pygpt_net/data/icons/zoom_in.svg,sha256=tFULsXTslx_gX6wi0XUCk8hiFlptvYCr922ipMQvNrM,422
665
669
  pygpt_net/data/icons/zoom_out.svg,sha256=HA01vUxYKU4KuOzZ74O6K6fzpEg_b6XW5fJ6U-XUwzs,396
666
- pygpt_net/data/js/app.js,sha256=cN7JJMJjeMWQycv6whNaIoi5Wolrild74R5gZ5oGMjc,262597
670
+ pygpt_net/data/js/app/async.js,sha256=RG0d22gVwd8bi6mbiYBAbVCYMluSY12RCc10jvOdwG0,6187
671
+ pygpt_net/data/js/app/bridge.js,sha256=7iT22sENmEsXE5T4oMW4Q_pReHm8mZX7fR-KxpYmaFM,2480
672
+ pygpt_net/data/js/app/common.js,sha256=OngeMfR85ClejG7WsWLzSWU60l6qkeQY5jz_APFi5W4,5906
673
+ pygpt_net/data/js/app/config.js,sha256=858gIsvHjz_AgJQaB13F18wU861tyg3n9oOZ1xZM-GY,6875
674
+ pygpt_net/data/js/app/custom.js,sha256=etaMSJQzcTU42nizcZTHkcR-ItTuRCCLLYnPE9eX4Rc,30670
675
+ pygpt_net/data/js/app/data.js,sha256=lzSnxXF8a-9wds3upMy0gEjZVLhuPoLMyHAlZLvjpuo,2378
676
+ pygpt_net/data/js/app/dom.js,sha256=sAnxWGqbxKLTZM7ir7wGADiCktFlHkiWIxtVUInJb9Q,10642
677
+ pygpt_net/data/js/app/events.js,sha256=TCLGbaysHNEjBcYuLvT7l0z3TbtpIWbjW_7_UEi5Tko,14714
678
+ pygpt_net/data/js/app/highlight.js,sha256=JKFXfzioS-MOj8S__k3brwotVEH5XSHAeaiuzZ2q1WI,21000
679
+ pygpt_net/data/js/app/logger.js,sha256=AlJOzkf4N-R59XHU6CySdlIMy7flMh_3wv8Sj2iXLeE,9928
680
+ pygpt_net/data/js/app/markdown.js,sha256=UXuj-W__W4U8Afnfp3dzm-rfzUWcQ3AdzCrdNsgSYkY,37949
681
+ pygpt_net/data/js/app/math.js,sha256=f3HgMQs5mt8YOIM4zTNwi1_0VAgBICMUFESCPH9H6Ik,5578
682
+ pygpt_net/data/js/app/nodes.js,sha256=ukfy8_JxrV_5c7rYFDA-HBs5U_kIhuwdD_f1-ElxQgs,12136
683
+ pygpt_net/data/js/app/queue.js,sha256=bZzTyRjWgSCRJ8SVS6p5fByDydiWgh-E7759IV8x8Zg,7523
684
+ pygpt_net/data/js/app/raf.js,sha256=1tuRUKinRHYWCMWRujJ8yPj-TqI14eDDnw63z_bftIw,6207
685
+ pygpt_net/data/js/app/runtime.js,sha256=uccdiQvQALRQ0iC-p3Q-8_FMgh65eqFWA-n7RNLWCw0,19037
686
+ pygpt_net/data/js/app/scroll.js,sha256=TM5g_sMHI9AMskORLFhTZM2X6CR1JPlTvdb6lmyExtI,11909
687
+ pygpt_net/data/js/app/stream.js,sha256=ivecd0Io1c9Xa13rJ9Nn0koHfwNhrx49Rv-GiXTwUbc,88438
688
+ pygpt_net/data/js/app/template.js,sha256=IV7LfHuSRbXJn8d7NYQ7CnEr2fTicdvKohvv4XAGWSI,10725
689
+ pygpt_net/data/js/app/tool.js,sha256=uZ_tTba6rD8V4rNBhe7HMB_ZQUQlTDrvAqXFTYIF6E0,2515
690
+ pygpt_net/data/js/app/ui.js,sha256=qsFYToAsmDZ771-UMUbl2Sk5NTEkXExs9U0MPCpiXT8,5070
691
+ pygpt_net/data/js/app/user.js,sha256=OCp1hqzNNIXnWJXMU1-s39_9SbGrc-WdIut1uujaxQM,11399
692
+ pygpt_net/data/js/app/utils.js,sha256=nl1Gbt6I7Mf9LfKwqb-NaKJUWRZTD2s8xO6c3BwEXOc,1794
693
+ pygpt_net/data/js/app.min.js,sha256=Tix5u6rtQL5n32BtVVoBoo0CXTwx6vDPgumjd4ubNrE,212705
667
694
  pygpt_net/data/js/highlight/DIGESTS.md,sha256=bFIjBE_BrA2dkd0CM5SXLKQIccKOUcUeRFUK4c_3kWM,75091
668
695
  pygpt_net/data/js/highlight/LICENSE,sha256=bAgUMVkdnfaWyC3FmP4UI3ZbiimbIA7QCyga_Q9kxJA,1514
669
696
  pygpt_net/data/js/highlight/README.md,sha256=iUuAsk62y3lZEbACdBntj-_CEEN4gUfcbi4hkmEL6n0,1717
@@ -1676,11 +1703,11 @@ pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff,sha256=4U_tArGrp86fW
1676
1703
  pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff2,sha256=cdUX1ngneHz6vfGGkUzDNY7aU543kxlB8rL9SiH2jAs,13568
1677
1704
  pygpt_net/data/js/katex/katex.min.css,sha256=lVaKnUaQNG4pI71WHffQZVALLQF4LMZEk4nOia8U9ow,23532
1678
1705
  pygpt_net/data/js/katex/katex.min.js,sha256=KLASOtKS2x8pUxWVzCDmlWJ4jhuLb0vtrgakbD6gDDo,276757
1679
- pygpt_net/data/js/markdown-it/markdown-it-katex.min.js,sha256=nWYrb1ouvTQ-qaHXWC1h3kQWJQ4dLgzNPcRzQ2dLh7Y,2281
1706
+ pygpt_net/data/js/markdown-it/markdown-it-katex.min.js,sha256=-wMst2a9i8Borapa9_hxPvpQysfFE-yph8GrBmDoA68,1670
1680
1707
  pygpt_net/data/js/markdown-it/markdown-it.min.js,sha256=OMcKHnypGrQOLZ5uYBKYUacX7Rx9Ssu91Bv5UDeRz2g,123618
1681
1708
  pygpt_net/data/languages.csv,sha256=fvtER6vnTXFHQslCh-e0xCfZDQ-ijgW4GYpOJG4U7LY,8289
1682
1709
  pygpt_net/data/locale/locale.de.ini,sha256=zW4I2IbZRuU0QUTzdOaVMNQZBQVQtU-vD-syeeU0kyg,106352
1683
- pygpt_net/data/locale/locale.en.ini,sha256=nVJCZfJaD7_s2psTi3awe6bqw09XxHpD8nLl56tIV-4,100263
1710
+ pygpt_net/data/locale/locale.en.ini,sha256=_e8Bj6RAKWsBQ11ofiXnHOyzfWfgeUH99VOG1fdJToM,100571
1684
1711
  pygpt_net/data/locale/locale.es.ini,sha256=M7uv7pGUMCk3_zXa7LxVUQRqZKZno6mbTtA-GHJ3BMI,107023
1685
1712
  pygpt_net/data/locale/locale.fr.ini,sha256=i5n5Y_i0q1QH21DMnLS-xp7VthhUgoBOp2aw9_f5NtU,109751
1686
1713
  pygpt_net/data/locale/locale.it.ini,sha256=U76QLdUT8DlLRMyI4B4-DAAebfGpexFoARSg0DVJYJQ,104697
@@ -1876,8 +1903,10 @@ pygpt_net/fonts_rc.py,sha256=iBYh-MsobIYZJDrsY6BSpaC51vKaJ7yiNpyU1FbfY9M,3236175
1876
1903
  pygpt_net/icons.qrc,sha256=xLApyj7e7MOwvugDMiFL_bqm5IYqAOEmHEUWy-flzcQ,9729
1877
1904
  pygpt_net/icons_rc.py,sha256=o6QKV61aBU7SxHUV1YhsUyVcnDWwWe7eiIh-SlYc7Fg,98200
1878
1905
  pygpt_net/item/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
1906
+ pygpt_net/item/agent.py,sha256=2H2QJHez-GCJRINb3zZZryZn8wiUHTU_MGkCsb3USp8,1517
1879
1907
  pygpt_net/item/assistant.py,sha256=FYIbh48J3aOC9IXaopFYqbzQ5vWG_hvWW76UFnUjvGM,11484
1880
1908
  pygpt_net/item/attachment.py,sha256=nsyvOnTS_gimcdzwJNI7bC-1KSrSu66XkMtaNwg2IYk,2970
1909
+ pygpt_net/item/builder_layout.py,sha256=u_VxSs_JrbVArVL7x6vMXmHNChmSpeCeqAoNjvJb9CA,1509
1881
1910
  pygpt_net/item/calendar_note.py,sha256=ab2cegCxr-p9WU_r3FkCNg0TwLHhfV4--O4Gei-Lshs,2507
1882
1911
  pygpt_net/item/ctx.py,sha256=ZeWSlil1JIJ09VJ8T5qchXqazvr8nKjhG4XlLUxmWnw,25247
1883
1912
  pygpt_net/item/index.py,sha256=NTDBgNjiyaixTFJu_1oBqoVajf92c2U1Oa3BKQ11poU,1920
@@ -1886,8 +1915,8 @@ pygpt_net/item/model.py,sha256=1s6aRxLs7Y8bgpVef7Yv7_ERmvjePjwNQLrZ0p7KHhU,10152
1886
1915
  pygpt_net/item/notepad.py,sha256=7v3A3HJjew0IoFM65Li0xfoSEdJzfEUZM1IH1ND0Bxw,1805
1887
1916
  pygpt_net/item/preset.py,sha256=9VeMlWjUvRKYyVu1XPxaZOFZvL-N_ThXZR_M38TbpWA,8523
1888
1917
  pygpt_net/item/prompt.py,sha256=xequZDTEv4eKjmC5OLqZnNrbyy0YA4LHe0k2RpPiBw0,1745
1889
- pygpt_net/js.qrc,sha256=Dyp5qWokt0MGSOmNfI6ASawF8Xo1f4SZArUJ8vckcbQ,526
1890
- pygpt_net/js_rc.py,sha256=nYbUV2b0UL5PJ7gkQAH_yifIM6iazn-UbA8Q56S7oq4,2384940
1918
+ pygpt_net/js.qrc,sha256=0ur8_O4TeD2NEmj2gPb7z1XKH5PRxgDo3H8awPPb7zg,2001
1919
+ pygpt_net/js_rc.py,sha256=_y8q8YhapY4mwBaAK_vQkeztKbYCmC7P95rjrt6DKQA,2789149
1891
1920
  pygpt_net/launcher.py,sha256=bqR175OVZ_Q3yKsIM5NiHB1S1b-vXrIglsQyr6zyrWU,10125
1892
1921
  pygpt_net/migrations/Version20231227152900.py,sha256=1Rw1mK2mVQs0B2HrbxHICu1Pd1X5jg4yZIrytnR5N5Y,2849
1893
1922
  pygpt_net/migrations/Version20231230095000.py,sha256=A1_e9oC_E4LSo9uBFiiI2dKH7N-SERFp7DMX1R_8LXQ,906
@@ -2159,6 +2188,9 @@ pygpt_net/provider/audio_output/google_tts.py,sha256=4VMNBR4O8srUNTkdjuQn8jHmOdF
2159
2188
  pygpt_net/provider/audio_output/ms_azure_tts.py,sha256=-8YlUwzUruR1cX6N5EZZfZSLOlOGbCvyHXTDwDD9GAg,4965
2160
2189
  pygpt_net/provider/audio_output/openai_tts.py,sha256=7A2FybS2HBlGRPdFWgsXxlr4KI_I1sQLNu4CZ8SZjIo,3156
2161
2190
  pygpt_net/provider/core/__init__.py,sha256=YHQ86AUqjoP79N5vRqOmK-6FUDLQhCl_0y6Z4Tun3dU,488
2191
+ pygpt_net/provider/core/agent/__init__.py,sha256=jwPZQU-LLHDmWMicfBT5a0XVuVBbM0AxRNojnirp1UY,487
2192
+ pygpt_net/provider/core/agent/base.py,sha256=oPlxc3Smo3BTaJPgDO4bq7NGIQjODekI06md_oAUkoA,1306
2193
+ pygpt_net/provider/core/agent/json_file.py,sha256=FQHXMkMPhMwOH-TLJJypJ26wH5RFnPHiiSaln6WgQFw,5618
2162
2194
  pygpt_net/provider/core/assistant/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2163
2195
  pygpt_net/provider/core/assistant/base.py,sha256=zFJs4LxnBvUBri9-FgOYjv1wyfDFEzEu9H01GcTYL0s,1251
2164
2196
  pygpt_net/provider/core/assistant/json_file.py,sha256=uNnxBEWWbShrjzrhYKfgVQRLQcoLGIHzEkTYCmTfD_A,6530
@@ -2189,7 +2221,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
2189
2221
  pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
2190
2222
  pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
2191
2223
  pygpt_net/provider/core/config/json_file.py,sha256=GCcpCRQnBiSLWwlGbG9T3ZgiHkTfp5Jsg2KYkZcakBw,6789
2192
- pygpt_net/provider/core/config/patch.py,sha256=NSWKbTGGVLCemTD96F7lwyedmrsGiGlFuLbCXlLKcpg,4756
2224
+ pygpt_net/provider/core/config/patch.py,sha256=cUrzuvGU0ChbMRqEuv50IhcvDWk02rN8rLAfCm4sxGo,5635
2193
2225
  pygpt_net/provider/core/config/patches/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2194
2226
  pygpt_net/provider/core/config/patches/patch_before_2_6_42.py,sha256=LRjSyLwpLObmN4JWnzQpjLIdf4PHvq-l-5q6ZdNV_WY,127092
2195
2227
  pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
@@ -2348,6 +2380,11 @@ pygpt_net/provider/web/duckduck_search.py,sha256=n6fWGwGVCi1RMKrpQ1xKb8aMgr3w1-b
2348
2380
  pygpt_net/provider/web/google_custom_search.py,sha256=T99QIkkh21QhsFbtNr3XXBZ4_kY11GTnUQ8-bdXLnww,4855
2349
2381
  pygpt_net/provider/web/microsoft_bing.py,sha256=Y4VoI7eJFfHFDN1g7zYT3cI1xwLrPEDdozqoLeh3BqQ,4199
2350
2382
  pygpt_net/tools/__init__.py,sha256=MdlCuI4chc1hFf402oIFfEebiksgtPT_95ddpYSYTVM,4520
2383
+ pygpt_net/tools/agent_builder/__init__.py,sha256=BMAd560SEU0GcVRUDaWWLiLoU2SYdAWDABhs7xrORwI,508
2384
+ pygpt_net/tools/agent_builder/tool.py,sha256=UlRaWPmoKmMNw-4lwbXJ3Qy_c_LldK8VPZx2mvcxuw4,9032
2385
+ pygpt_net/tools/agent_builder/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2386
+ pygpt_net/tools/agent_builder/ui/dialogs.py,sha256=aDRSgtiec5pCkodzfEi-D77m9Ks1Gn0Yfhb71uTq5w4,5040
2387
+ pygpt_net/tools/agent_builder/ui/list.py,sha256=PnRHPBfZUry4fzY4mnV7VV8LHQhLu_KCfM5Gk30TgNo,6941
2351
2388
  pygpt_net/tools/audio_transcriber/__init__.py,sha256=BQLr8Kg670xPAyv_qoRA_EjWq5WZclqoc4OpTk5V11k,508
2352
2389
  pygpt_net/tools/audio_transcriber/tool.py,sha256=Qzyd3lnzSjm40LoF9Isz-Yvc-Ex3WmEUFi5H0mjcTfo,9836
2353
2390
  pygpt_net/tools/audio_transcriber/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2361,10 +2398,10 @@ pygpt_net/tools/code_interpreter/ui/dialogs.py,sha256=iYCtmn_gPMKhvy8Ygga_oYPVg8
2361
2398
  pygpt_net/tools/code_interpreter/ui/html.py,sha256=8XI_RVZsOm6x95LTp3Lol4xmuTb_Mnb08lnNHxp6QpM,27414
2362
2399
  pygpt_net/tools/code_interpreter/ui/widgets.py,sha256=noOvecQNHcZKDfyfmgnupNr8KtY8WPvfbds63z6vOV0,18020
2363
2400
  pygpt_net/tools/html_canvas/__init__.py,sha256=7FScUoJWFBsF6Rbmt14zb2YEERcywW_xAeX0GTAHhX4,508
2364
- pygpt_net/tools/html_canvas/tool.py,sha256=F0rozMO1rva7ABr1hXhOBCW9XWq9hL8RjTWsI6cp-wc,9875
2401
+ pygpt_net/tools/html_canvas/tool.py,sha256=4-I7WfEGU9zMjauQ1LUoNxdt2oLy8dlEW9_-gA6JzDI,10210
2365
2402
  pygpt_net/tools/html_canvas/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2366
2403
  pygpt_net/tools/html_canvas/ui/dialogs.py,sha256=zw4XusCoZ-52ks8ogcasEVAxDHQwSHh88FtW2rk4HP0,4825
2367
- pygpt_net/tools/html_canvas/ui/widgets.py,sha256=Yp_IP1VhAF5zRymdQ2ADG_wObKOf44rNgI58Vn2c3_4,5050
2404
+ pygpt_net/tools/html_canvas/ui/widgets.py,sha256=aj-3sM0wxfQ_8krVXSuOwBlPzlfvXpDwP6WsBbhMMjQ,13897
2368
2405
  pygpt_net/tools/image_viewer/__init__.py,sha256=BQLr8Kg670xPAyv_qoRA_EjWq5WZclqoc4OpTk5V11k,508
2369
2406
  pygpt_net/tools/image_viewer/tool.py,sha256=8cIcEG9R0HGUXwikD8XOxQHqt0QZkgB4LzpiQ4GAWwU,9269
2370
2407
  pygpt_net/tools/image_viewer/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -2463,12 +2500,12 @@ pygpt_net/ui/layout/toolbox/split.py,sha256=Hs9hZPciLXCRV_izoayrBlJSCuTGumdNki6z
2463
2500
  pygpt_net/ui/layout/toolbox/toolbox.py,sha256=VHzyzm7LjcAN30h111SEP6fdXwi84DYyf8CE1X3pdt8,2799
2464
2501
  pygpt_net/ui/layout/toolbox/video.py,sha256=JyDVkJIh1m6RSbJFGQqIBKrsQgbfx2O08ybJ7bEZyWg,1477
2465
2502
  pygpt_net/ui/layout/toolbox/vision.py,sha256=E6-lLfU3vrWdlprayr6gxFs7F7AGkn4OIrFXrQ9p5XA,2035
2466
- pygpt_net/ui/main.py,sha256=Qrqtq6-DUG6v44YG4dGGPSx-U-jEolkb8BDQpqPCxx0,14227
2503
+ pygpt_net/ui/main.py,sha256=5cYps7APUbiyzQAs3-rweO4vDKcJpWIhshy89v_AzJ0,14194
2467
2504
  pygpt_net/ui/menu/__init__.py,sha256=wAIKG9wLWfYv6tpXCTXptWb_XKoCc-4lYWLDvV1bVYk,508
2468
2505
  pygpt_net/ui/menu/about.py,sha256=BtelbYhpXJGgsoEwsPuw61wVuGkzogpY3FVvWtd09HE,4619
2469
2506
  pygpt_net/ui/menu/audio.py,sha256=3vQhMq8vk_h7yb_Gk2dZMRviFR2PExgR_ynpgOkyl-g,4226
2470
2507
  pygpt_net/ui/menu/config.py,sha256=eMHXxvpjaqyLPVM1qNknzeGHYRMYvSJnwGhh8u7eeVM,6314
2471
- pygpt_net/ui/menu/debug.py,sha256=UDxml0iNWVtNhi9z_XMwlBKMTrQuR-Fcevp8xH9oqK8,3291
2508
+ pygpt_net/ui/menu/debug.py,sha256=rdvVbdGQ9_1e9Td-ARmiEMGMjiBBKekMJRQEAToQxJ8,5145
2472
2509
  pygpt_net/ui/menu/file.py,sha256=_kSohrpiHgcV5W9fIrmyBFAtNBaD8KZCgQAplOH2C6s,2527
2473
2510
  pygpt_net/ui/menu/lang.py,sha256=99dSS3mM4KIftgXgsgZoq2bJ_DnmgqA7z7cP49kICP4,897
2474
2511
  pygpt_net/ui/menu/menu.py,sha256=lk-0r3_22-RSlJrWDFLmux0I9fHanMtSM70xTHYOhWM,1764
@@ -2485,6 +2522,8 @@ pygpt_net/ui/widget/audio/bar.py,sha256=1TnNx5x4sXx-Iu4zPtwID7DGf97TH3OABG8BKyiC
2485
2522
  pygpt_net/ui/widget/audio/input.py,sha256=t9VAhP15HkSOvNV2crI3Kg6AgrQDj-wSQiiYTMlvK60,1721
2486
2523
  pygpt_net/ui/widget/audio/input_button.py,sha256=QDfA8WBskY0pkN8EMXZ97017Sj11t4p9b_jCz4Q6aRY,4498
2487
2524
  pygpt_net/ui/widget/audio/output.py,sha256=UxkiCnVT9DNFeByDGTFW_CK0LW8xSvhEK1zygtHvx4k,1586
2525
+ pygpt_net/ui/widget/builder/__init__.py,sha256=veIDrPtqCZNLdgtSD5cFCF3OLra9bRce1gBdpmK7sKU,519
2526
+ pygpt_net/ui/widget/builder/editor.py,sha256=WYzR6GtOq1JhSFvMfPQSwifIhquT6NnBZNZAGHlPQlo,83881
2488
2527
  pygpt_net/ui/widget/calendar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2489
2528
  pygpt_net/ui/widget/calendar/select.py,sha256=iQgD7djD9ZTD8csje3DVZhQu0onIn5Ai5Nse08FcV7Q,10667
2490
2529
  pygpt_net/ui/widget/dialog/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
@@ -2521,7 +2560,7 @@ pygpt_net/ui/widget/element/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5
2521
2560
  pygpt_net/ui/widget/element/button.py,sha256=rhy8_RVHRV8xl0pegul31z9fNBjjIAi5Nd0hHGF6cF8,4393
2522
2561
  pygpt_net/ui/widget/element/checkbox.py,sha256=qyX6T31c3a8Wb8B4JZwhuejD9SUAFSesdIjZdj4tv8I,2948
2523
2562
  pygpt_net/ui/widget/element/group.py,sha256=9wedtjRTls4FdyHSwUblzdtPOaQ0-8djnjTN9CZI1KI,3702
2524
- pygpt_net/ui/widget/element/labels.py,sha256=PGR3RtRjcp6yJ8u55aDIxHSriLwZ-HwDmZx_HTlsA_c,6597
2563
+ pygpt_net/ui/widget/element/labels.py,sha256=C16DWoWzSt-VFnfLM5Yg7NiM1iVZj6DyttoIShely84,6749
2525
2564
  pygpt_net/ui/widget/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2526
2565
  pygpt_net/ui/widget/filesystem/explorer.py,sha256=YTQSv-ZyicJlVAKkVGkunCrKC27r2Ljnaat7FzYEJ5A,23732
2527
2566
  pygpt_net/ui/widget/image/__init__.py,sha256=X9-pucLqQF9_ocDV-qNY6EQAJ_4dubGb-7TcWIzCXBo,488
@@ -2577,19 +2616,19 @@ pygpt_net/ui/widget/textarea/create.py,sha256=f4SrAW-2hjkKYIPrwVliSYH-LkgsQP8G13
2577
2616
  pygpt_net/ui/widget/textarea/editor.py,sha256=gmNzsMrCQXGkFyVfl0woc_klmjsyiXuOdcG8Lk2PSR4,5038
2578
2617
  pygpt_net/ui/widget/textarea/find.py,sha256=fQu6t-_LTZGFRNCkezywtMVsL-DocIkGBR_HbRFq61g,1534
2579
2618
  pygpt_net/ui/widget/textarea/html.py,sha256=4DOnUYtHBhN-6X5w13GK-ceAAvTPd8M4mH_N-c3L_h0,12344
2580
- pygpt_net/ui/widget/textarea/input.py,sha256=TNJxS5y2-ih8uzoKR1IZjftByrSGbI0JCFSEH6URO0g,35392
2619
+ pygpt_net/ui/widget/textarea/input.py,sha256=wPISqeT64WR-zm2zX_Bw9dQLIDAIJZ5aEj08afMdNjc,35581
2581
2620
  pygpt_net/ui/widget/textarea/name.py,sha256=vcyAY_pJWJoS_IJqdJjhIeDSniTL9rfpt8aaobWNFVY,1132
2582
2621
  pygpt_net/ui/widget/textarea/notepad.py,sha256=yGXXUN3pBs5UQgx4ipa8_Xn8JWxbNEoYVsnLg4BvtcY,9718
2583
- pygpt_net/ui/widget/textarea/output.py,sha256=krWta3GHwdlPOqcxLln150bo7iUOtbFL_yJzMucGOFU,6246
2622
+ pygpt_net/ui/widget/textarea/output.py,sha256=3yvlnxXhss-i5eRHwmNxxRZMhP4fiTbKA3esNyhrBt8,6934
2584
2623
  pygpt_net/ui/widget/textarea/rename.py,sha256=NwuGRIeWMo7WfsMguAFpTqdOz1eTiXbxrDXGsbWF_TY,1358
2585
2624
  pygpt_net/ui/widget/textarea/search_input.py,sha256=aoOlunBwxn-z3gIMNKfnghHX00sC36wQHl87dRlDJlM,5227
2586
2625
  pygpt_net/ui/widget/textarea/url.py,sha256=xbNQxoM5fYI1ZWbvybQkPmNPrIq3yhtNPBOSOWftZCg,1337
2587
- pygpt_net/ui/widget/textarea/web.py,sha256=FGS0NGSpzKgtP8AzMwnC-LHDXEOY7baHImmnxsbIyGY,19279
2626
+ pygpt_net/ui/widget/textarea/web.py,sha256=Gfp1fkqNbHhOmB1cmz4IM6wAL8JQzXZ-HqMWbLxZd48,20207
2588
2627
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2589
2628
  pygpt_net/ui/widget/vision/camera.py,sha256=v1qEncaZr5pXocO5Cpk_lsgfCMvfFigdJmzsYfzvCl0,1877
2590
- pygpt_net/utils.py,sha256=7lZj_YSzx7ZfvqFtjYThEvRJNSBZzrJyK7ZxDAtYPAQ,9708
2591
- pygpt_net-2.6.54.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2592
- pygpt_net-2.6.54.dist-info/METADATA,sha256=cifb0gzX_XZ5yb2RBnnHKLQuePCZDN81LRC2KNjNWaQ,166526
2593
- pygpt_net-2.6.54.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2594
- pygpt_net-2.6.54.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2595
- pygpt_net-2.6.54.dist-info/RECORD,,
2629
+ pygpt_net/utils.py,sha256=m0fkJ06JaUKvTbxZQgdY-mpYt7ReZZhq1D90a2ANOQ0,10832
2630
+ pygpt_net-2.6.56.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2631
+ pygpt_net-2.6.56.dist-info/METADATA,sha256=4lRXHWyHgMwoY4qsgYCg3QaKqLwfm97czMH7tKiVauI,166866
2632
+ pygpt_net-2.6.56.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2633
+ pygpt_net-2.6.56.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2634
+ pygpt_net-2.6.56.dist-info/RECORD,,