pygpt-net 2.6.55__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.
- pygpt_net/CHANGELOG.txt +6 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +26 -22
- pygpt_net/controller/audio/audio.py +0 -0
- pygpt_net/controller/calendar/calendar.py +0 -0
- pygpt_net/controller/calendar/note.py +0 -0
- pygpt_net/controller/chat/chat.py +0 -0
- pygpt_net/controller/chat/handler/openai_stream.py +2 -1
- pygpt_net/controller/chat/handler/worker.py +0 -0
- pygpt_net/controller/chat/remote_tools.py +0 -0
- pygpt_net/controller/chat/render.py +0 -0
- pygpt_net/controller/chat/text.py +0 -0
- pygpt_net/controller/ctx/common.py +0 -0
- pygpt_net/controller/debug/debug.py +26 -2
- pygpt_net/controller/debug/fixtures.py +1 -1
- pygpt_net/controller/dialogs/confirm.py +15 -1
- pygpt_net/controller/dialogs/debug.py +2 -0
- pygpt_net/controller/lang/mapping.py +0 -0
- pygpt_net/controller/launcher/launcher.py +0 -0
- pygpt_net/controller/mode/mode.py +0 -0
- pygpt_net/controller/presets/presets.py +0 -0
- pygpt_net/controller/realtime/realtime.py +0 -0
- pygpt_net/controller/theme/theme.py +0 -0
- pygpt_net/controller/ui/mode.py +0 -0
- pygpt_net/controller/ui/tabs.py +0 -0
- pygpt_net/core/agents/agents.py +3 -1
- pygpt_net/core/agents/custom.py +150 -0
- pygpt_net/core/agents/provider.py +0 -0
- pygpt_net/core/builder/__init__.py +12 -0
- pygpt_net/core/builder/graph.py +478 -0
- pygpt_net/core/calendar/calendar.py +0 -0
- pygpt_net/core/ctx/ctx.py +0 -0
- pygpt_net/core/ctx/output.py +0 -0
- pygpt_net/core/debug/agent.py +0 -0
- pygpt_net/core/debug/agent_builder.py +29 -0
- pygpt_net/core/debug/console/console.py +0 -0
- pygpt_net/core/debug/db.py +0 -0
- pygpt_net/core/debug/debug.py +0 -0
- pygpt_net/core/debug/events.py +0 -0
- pygpt_net/core/debug/indexes.py +0 -0
- pygpt_net/core/debug/kernel.py +0 -0
- pygpt_net/core/debug/tabs.py +0 -0
- pygpt_net/core/filesystem/filesystem.py +0 -0
- pygpt_net/core/fixtures/__init__ +0 -0
- pygpt_net/core/fixtures/stream/__init__.py +0 -0
- pygpt_net/core/fixtures/stream/generator.py +0 -0
- pygpt_net/core/models/models.py +0 -0
- pygpt_net/core/render/plain/pid.py +0 -0
- pygpt_net/core/render/plain/renderer.py +26 -4
- pygpt_net/core/render/web/body.py +46 -4
- pygpt_net/core/render/web/debug.py +0 -0
- pygpt_net/core/render/web/helpers.py +0 -0
- pygpt_net/core/render/web/pid.py +0 -0
- pygpt_net/core/render/web/renderer.py +15 -20
- pygpt_net/core/tabs/tab.py +0 -0
- pygpt_net/core/tabs/tabs.py +0 -0
- pygpt_net/core/text/utils.py +0 -0
- pygpt_net/css.qrc +0 -0
- pygpt_net/css_rc.py +0 -0
- pygpt_net/data/config/config.json +7 -7
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/css/web-blocks.css +9 -0
- pygpt_net/data/css/web-blocks.dark.css +6 -0
- pygpt_net/data/css/web-blocks.darkest.css +6 -0
- pygpt_net/data/css/web-chatgpt.css +14 -6
- pygpt_net/data/css/web-chatgpt.dark.css +6 -0
- pygpt_net/data/css/web-chatgpt.darkest.css +6 -0
- pygpt_net/data/css/web-chatgpt.light.css +6 -0
- pygpt_net/data/css/web-chatgpt_wide.css +14 -6
- pygpt_net/data/css/web-chatgpt_wide.dark.css +6 -0
- pygpt_net/data/css/web-chatgpt_wide.darkest.css +6 -0
- pygpt_net/data/css/web-chatgpt_wide.light.css +6 -0
- pygpt_net/data/fixtures/fake_stream.txt +14 -1
- pygpt_net/data/icons/case.svg +0 -0
- pygpt_net/data/icons/chat1.svg +0 -0
- pygpt_net/data/icons/chat2.svg +0 -0
- pygpt_net/data/icons/chat3.svg +0 -0
- pygpt_net/data/icons/chat4.svg +0 -0
- pygpt_net/data/icons/fit.svg +0 -0
- pygpt_net/data/icons/note1.svg +0 -0
- pygpt_net/data/icons/note2.svg +0 -0
- pygpt_net/data/icons/note3.svg +0 -0
- pygpt_net/data/icons/stt.svg +0 -0
- pygpt_net/data/icons/translate.svg +0 -0
- pygpt_net/data/icons/tts.svg +0 -0
- pygpt_net/data/icons/url.svg +0 -0
- pygpt_net/data/icons/vision.svg +0 -0
- pygpt_net/data/icons/web_off.svg +0 -0
- pygpt_net/data/icons/web_on.svg +0 -0
- pygpt_net/data/js/app/async.js +166 -0
- pygpt_net/data/js/app/bridge.js +88 -0
- pygpt_net/data/js/app/common.js +212 -0
- pygpt_net/data/js/app/config.js +223 -0
- pygpt_net/data/js/app/custom.js +961 -0
- pygpt_net/data/js/app/data.js +84 -0
- pygpt_net/data/js/app/dom.js +322 -0
- pygpt_net/data/js/app/events.js +400 -0
- pygpt_net/data/js/app/highlight.js +542 -0
- pygpt_net/data/js/app/logger.js +305 -0
- pygpt_net/data/js/app/markdown.js +1137 -0
- pygpt_net/data/js/app/math.js +167 -0
- pygpt_net/data/js/app/nodes.js +395 -0
- pygpt_net/data/js/app/queue.js +260 -0
- pygpt_net/data/js/app/raf.js +250 -0
- pygpt_net/data/js/app/runtime.js +582 -0
- pygpt_net/data/js/app/scroll.js +433 -0
- pygpt_net/data/js/app/stream.js +2708 -0
- pygpt_net/data/js/app/template.js +287 -0
- pygpt_net/data/js/app/tool.js +87 -0
- pygpt_net/data/js/app/ui.js +86 -0
- pygpt_net/data/js/app/user.js +380 -0
- pygpt_net/data/js/app/utils.js +64 -0
- pygpt_net/data/js/app.min.js +880 -0
- pygpt_net/data/js/markdown-it/markdown-it-katex.min.js +1 -1
- pygpt_net/data/js/markdown-it/markdown-it.min.js +0 -0
- pygpt_net/data/locale/locale.de.ini +0 -0
- pygpt_net/data/locale/locale.en.ini +7 -0
- pygpt_net/data/locale/locale.es.ini +0 -0
- pygpt_net/data/locale/locale.fr.ini +0 -0
- pygpt_net/data/locale/locale.it.ini +0 -0
- pygpt_net/data/locale/locale.pl.ini +0 -0
- pygpt_net/data/locale/locale.uk.ini +0 -0
- pygpt_net/data/locale/locale.zh.ini +0 -0
- pygpt_net/data/locale/plugin.agent.de.ini +0 -0
- pygpt_net/data/locale/plugin.agent.en.ini +0 -0
- pygpt_net/data/locale/plugin.agent.es.ini +0 -0
- pygpt_net/data/locale/plugin.agent.fr.ini +0 -0
- pygpt_net/data/locale/plugin.agent.it.ini +0 -0
- pygpt_net/data/locale/plugin.agent.pl.ini +0 -0
- pygpt_net/data/locale/plugin.agent.uk.ini +0 -0
- pygpt_net/data/locale/plugin.agent.zh.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.de.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.en.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.es.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.fr.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.it.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.pl.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.uk.ini +0 -0
- pygpt_net/data/locale/plugin.audio_input.zh.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.de.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.en.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.es.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.fr.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.it.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.pl.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.uk.ini +0 -0
- pygpt_net/data/locale/plugin.audio_output.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_api.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_code_interpreter.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_custom.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_files.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_history.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_mouse_control.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_serial.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_system.zh.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.de.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.es.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.fr.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.it.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.pl.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.uk.ini +0 -0
- pygpt_net/data/locale/plugin.cmd_web.zh.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.de.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.en.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.es.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.fr.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.it.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.pl.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.uk.ini +0 -0
- pygpt_net/data/locale/plugin.crontab.zh.ini +0 -0
- pygpt_net/data/locale/plugin.experts.de.ini +0 -0
- pygpt_net/data/locale/plugin.experts.en.ini +0 -0
- pygpt_net/data/locale/plugin.experts.es.ini +0 -0
- pygpt_net/data/locale/plugin.experts.fr.ini +0 -0
- pygpt_net/data/locale/plugin.experts.it.ini +0 -0
- pygpt_net/data/locale/plugin.experts.pl.ini +0 -0
- pygpt_net/data/locale/plugin.experts.uk.ini +0 -0
- pygpt_net/data/locale/plugin.experts.zh.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.de.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.en.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.es.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.fr.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.it.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.pl.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.uk.ini +0 -0
- pygpt_net/data/locale/plugin.extra_prompt.zh.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.de.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.en.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.es.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.fr.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.it.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.pl.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.uk.ini +0 -0
- pygpt_net/data/locale/plugin.idx_llama_index.zh.ini +0 -0
- pygpt_net/data/locale/plugin.mailer.en.ini +0 -0
- pygpt_net/data/locale/plugin.mcp.en.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.de.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.en.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.es.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.fr.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.it.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.pl.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.uk.ini +0 -0
- pygpt_net/data/locale/plugin.openai_dalle.zh.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.de.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.en.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.es.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.fr.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.it.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.pl.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.uk.ini +0 -0
- pygpt_net/data/locale/plugin.openai_vision.zh.ini +0 -0
- pygpt_net/data/locale/plugin.osm.en.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.de.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.en.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.es.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.fr.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.it.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.pl.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.uk.ini +0 -0
- pygpt_net/data/locale/plugin.real_time.zh.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.de.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.en.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.es.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.fr.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.it.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.pl.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.uk.ini +0 -0
- pygpt_net/data/locale/plugin.voice_control.zh.ini +0 -0
- pygpt_net/data/locale/plugin.wolfram.en.ini +0 -0
- pygpt_net/fonts.qrc +0 -0
- pygpt_net/fonts_rc.py +0 -0
- pygpt_net/icons.qrc +0 -0
- pygpt_net/icons_rc.py +0 -0
- pygpt_net/item/agent.py +62 -0
- pygpt_net/item/builder_layout.py +62 -0
- pygpt_net/js.qrc +24 -1
- pygpt_net/js_rc.py +51394 -33687
- pygpt_net/plugin/base/worker.py +0 -0
- pygpt_net/plugin/mcp/__init__.py +0 -0
- pygpt_net/plugin/mcp/config.py +0 -0
- pygpt_net/plugin/mcp/plugin.py +0 -0
- pygpt_net/plugin/mcp/worker.py +0 -0
- pygpt_net/plugin/osm/__init__.py +0 -0
- pygpt_net/plugin/osm/config.py +0 -0
- pygpt_net/plugin/osm/plugin.py +0 -0
- pygpt_net/plugin/osm/worker.py +0 -0
- pygpt_net/plugin/wolfram/__init__.py +0 -0
- pygpt_net/plugin/wolfram/config.py +0 -0
- pygpt_net/plugin/wolfram/plugin.py +0 -0
- pygpt_net/plugin/wolfram/worker.py +0 -0
- pygpt_net/provider/api/anthropic/tools.py +0 -0
- pygpt_net/provider/api/google/__init__.py +0 -0
- pygpt_net/provider/api/google/video.py +0 -0
- pygpt_net/provider/api/openai/agents/experts.py +0 -0
- pygpt_net/provider/api/openai/agents/remote_tools.py +0 -0
- pygpt_net/provider/api/openai/remote_tools.py +0 -0
- pygpt_net/provider/api/openai/responses.py +0 -0
- pygpt_net/provider/api/x_ai/__init__.py +0 -0
- pygpt_net/provider/api/x_ai/remote.py +0 -0
- pygpt_net/provider/core/agent/__init__.py +10 -0
- pygpt_net/provider/core/agent/base.py +51 -0
- pygpt_net/provider/core/agent/json_file.py +200 -0
- pygpt_net/provider/core/config/patch.py +18 -0
- pygpt_net/provider/core/config/patches/__init__.py +0 -0
- pygpt_net/provider/core/config/patches/patch_before_2_6_42.py +0 -0
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +0 -0
- pygpt_net/provider/core/model/patches/__init__.py +0 -0
- pygpt_net/provider/core/model/patches/patch_before_2_6_42.py +0 -0
- pygpt_net/provider/core/preset/patch.py +0 -0
- pygpt_net/provider/core/preset/patches/__init__.py +0 -0
- pygpt_net/provider/core/preset/patches/patch_before_2_6_42.py +0 -0
- pygpt_net/provider/llms/base.py +0 -0
- pygpt_net/provider/llms/deepseek_api.py +0 -0
- pygpt_net/provider/llms/google.py +0 -0
- pygpt_net/provider/llms/hugging_face_api.py +0 -0
- pygpt_net/provider/llms/hugging_face_embedding.py +0 -0
- pygpt_net/provider/llms/hugging_face_router.py +0 -0
- pygpt_net/provider/llms/local.py +0 -0
- pygpt_net/provider/llms/mistral.py +0 -0
- pygpt_net/provider/llms/open_router.py +0 -0
- pygpt_net/provider/llms/perplexity.py +0 -0
- pygpt_net/provider/llms/utils.py +0 -0
- pygpt_net/provider/llms/voyage.py +0 -0
- pygpt_net/provider/llms/x_ai.py +0 -0
- pygpt_net/tools/agent_builder/__init__.py +12 -0
- pygpt_net/tools/agent_builder/tool.py +292 -0
- pygpt_net/tools/agent_builder/ui/__init__.py +0 -0
- pygpt_net/tools/agent_builder/ui/dialogs.py +152 -0
- pygpt_net/tools/agent_builder/ui/list.py +228 -0
- pygpt_net/tools/code_interpreter/ui/html.py +0 -0
- pygpt_net/tools/code_interpreter/ui/widgets.py +0 -0
- pygpt_net/tools/html_canvas/tool.py +23 -6
- pygpt_net/tools/html_canvas/ui/widgets.py +224 -2
- pygpt_net/ui/layout/chat/chat.py +0 -0
- pygpt_net/ui/main.py +10 -9
- pygpt_net/ui/menu/debug.py +39 -1
- pygpt_net/ui/widget/builder/__init__.py +12 -0
- pygpt_net/ui/widget/builder/editor.py +2001 -0
- pygpt_net/ui/widget/draw/painter.py +0 -0
- pygpt_net/ui/widget/element/labels.py +9 -4
- pygpt_net/ui/widget/lists/db.py +0 -0
- pygpt_net/ui/widget/lists/debug.py +0 -0
- pygpt_net/ui/widget/tabs/body.py +0 -0
- pygpt_net/ui/widget/textarea/input.py +9 -7
- pygpt_net/ui/widget/textarea/output.py +21 -1
- pygpt_net/ui/widget/textarea/web.py +29 -2
- pygpt_net/utils.py +40 -0
- {pygpt_net-2.6.55.dist-info → pygpt_net-2.6.56.dist-info}/METADATA +8 -2
- {pygpt_net-2.6.55.dist-info → pygpt_net-2.6.56.dist-info}/RECORD +85 -46
- pygpt_net/data/js/app.js +0 -5869
- {pygpt_net-2.6.55.dist-info → pygpt_net-2.6.56.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.55.dist-info → pygpt_net-2.6.56.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.55.dist-info → pygpt_net-2.6.56.dist-info}/entry_points.txt +0 -0
pygpt_net/CHANGELOG.txt
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
2.6.56 (2025-09-22)
|
|
2
|
+
|
|
3
|
+
- Optimized: Memory usage and performance in streaming and rendering large contexts.
|
|
4
|
+
- Added: Copy to clipboard functionality in user messages.
|
|
5
|
+
- Added: Manual scroll in plain-text mode.
|
|
6
|
+
|
|
1
7
|
2.6.55 (2025-09-18)
|
|
2
8
|
|
|
3
9
|
- Fixed: Unnecessary context loading from the database.
|
pygpt_net/__init__.py
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
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.
|
|
9
|
+
# Updated Date: 2025.09.22 00:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
__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.
|
|
17
|
-
__build__ = "2025-09-
|
|
16
|
+
__version__ = "2.6.56"
|
|
17
|
+
__build__ = "2025-09-22"
|
|
18
18
|
__maintainer__ = "Marcin Szczygliński"
|
|
19
19
|
__github__ = "https://github.com/szczyglis-dev/py-gpt"
|
|
20
20
|
__report__ = "https://github.com/szczyglis-dev/py-gpt/issues"
|
pygpt_net/app.py
CHANGED
|
@@ -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.
|
|
9
|
+
# Updated Date: 2025.09.22 09:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
@@ -16,30 +16,32 @@ import platform
|
|
|
16
16
|
|
|
17
17
|
import pygpt_net.icons_rc
|
|
18
18
|
|
|
19
|
+
from pygpt_net.utils import set_env
|
|
20
|
+
|
|
21
|
+
# app env
|
|
22
|
+
set_env("PYGPT_APP_ENV", "prod", allow_overwrite=True) # dev | prod
|
|
23
|
+
|
|
24
|
+
# debug
|
|
25
|
+
# set_env("QTWEBENGINE_REMOTE_DEBUGGING", 9222)
|
|
26
|
+
# set_env("QT_LOGGING_RULES", "*.debug=true")
|
|
27
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-logging=stderr", True)
|
|
28
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--v=1", True)
|
|
29
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--renderer-process-limit=1", True)
|
|
30
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--process-per-site", "", True)
|
|
31
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-precise-memory-info", "", True)
|
|
32
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--js-flags=--expose-gc", "", True)
|
|
33
|
+
|
|
34
|
+
# by default, optimize for low-end devices
|
|
35
|
+
set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-low-end-device-mode", True)
|
|
36
|
+
set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--enable-gpu-rasterization", True)
|
|
37
|
+
# set_env("QTWEBENGINE_CHROMIUM_FLAGS", "--ignore-gpu-blocklist", True)
|
|
38
|
+
|
|
19
39
|
# disable warnings
|
|
20
|
-
|
|
21
|
-
|
|
40
|
+
set_env("TRANSFORMERS_NO_ADVISORY_WARNINGS", 1)
|
|
41
|
+
set_env("QT_LOGGING_RULES", "qt.multimedia.ffmpeg=false;qt.qpa.fonts=false", allow_overwrite=True)
|
|
22
42
|
|
|
23
43
|
if platform.system() == 'Windows':
|
|
24
|
-
|
|
25
|
-
os.environ['QT_MEDIA_BACKEND'] = 'windows'
|
|
26
|
-
|
|
27
|
-
# enable debug logging
|
|
28
|
-
# os.environ["QT_LOGGING_RULES"] = "*.debug=true"
|
|
29
|
-
# os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = "9222"
|
|
30
|
-
"""
|
|
31
|
-
os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = (
|
|
32
|
-
"--renderer-process-limit=1 "
|
|
33
|
-
"--process-per-site "
|
|
34
|
-
"--enable-precise-memory-info "
|
|
35
|
-
"--js-flags=--expose-gc"
|
|
36
|
-
)
|
|
37
|
-
"""
|
|
38
|
-
# by default, optimize for low-end devices
|
|
39
|
-
os.environ.setdefault(
|
|
40
|
-
"QTWEBENGINE_CHROMIUM_FLAGS",
|
|
41
|
-
"--enable-low-end-device-mode"
|
|
42
|
-
)
|
|
44
|
+
set_env("QT_MEDIA_BACKEND", "windows")
|
|
43
45
|
|
|
44
46
|
_original_open = builtins.open
|
|
45
47
|
|
|
@@ -201,6 +203,7 @@ from pygpt_net.tools.media_player import MediaPlayer as MediaPlayerTool
|
|
|
201
203
|
from pygpt_net.tools.text_editor import TextEditor as TextEditorTool
|
|
202
204
|
from pygpt_net.tools.html_canvas import HtmlCanvas as HtmlCanvasTool
|
|
203
205
|
from pygpt_net.tools.translator import Translator as TranslatorTool
|
|
206
|
+
# from pygpt_net.tools.agent_builder import AgentBuilder as AgentBuilderTool
|
|
204
207
|
|
|
205
208
|
def run(**kwargs):
|
|
206
209
|
"""
|
|
@@ -508,6 +511,7 @@ def run(**kwargs):
|
|
|
508
511
|
launcher.add_tool(CodeInterpreterTool())
|
|
509
512
|
launcher.add_tool(HtmlCanvasTool())
|
|
510
513
|
launcher.add_tool(TranslatorTool())
|
|
514
|
+
# launcher.add_tool(AgentBuilderTool())
|
|
511
515
|
|
|
512
516
|
# register custom tools
|
|
513
517
|
tools = kwargs.get('tools', None)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -200,7 +200,8 @@ def process_api_chat_responses(ctx, core, state, chunk, etype: Optional[str]) ->
|
|
|
200
200
|
if state.citations is None:
|
|
201
201
|
state.citations = []
|
|
202
202
|
url_citation = ann['url']
|
|
203
|
-
state.citations
|
|
203
|
+
if url_citation not in state.citations:
|
|
204
|
+
state.citations.append(url_citation)
|
|
204
205
|
ctx.urls = state.citations
|
|
205
206
|
elif ann['type'] == "container_file_citation":
|
|
206
207
|
state.files.append({
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -45,10 +45,13 @@ class Debug(QObject):
|
|
|
45
45
|
def update_menu(self):
|
|
46
46
|
"""Update debug menu"""
|
|
47
47
|
for id in self.window.controller.dialogs.debug.get_ids():
|
|
48
|
+
key = f"debug.{id}"
|
|
49
|
+
if key not in self.window.ui.menu:
|
|
50
|
+
continue
|
|
48
51
|
if self.window.controller.dialogs.debug.is_active(id):
|
|
49
|
-
self.window.ui.menu[
|
|
52
|
+
self.window.ui.menu[key].setChecked(True)
|
|
50
53
|
else:
|
|
51
|
-
self.window.ui.menu[
|
|
54
|
+
self.window.ui.menu[key].setChecked(False)
|
|
52
55
|
|
|
53
56
|
if self.is_logger:
|
|
54
57
|
self.window.ui.menu['debug.logger'].setChecked(True)
|
|
@@ -65,6 +68,27 @@ class Debug(QObject):
|
|
|
65
68
|
state = self.window.core.config.get('debug')
|
|
66
69
|
self.window.ui.menu['menu.debug'].menuAction().setVisible(state)
|
|
67
70
|
|
|
71
|
+
def open_chrome_debug(self, url: str = "about:blank"):
|
|
72
|
+
"""
|
|
73
|
+
Open Chrome debug URL
|
|
74
|
+
|
|
75
|
+
:param url: debug URL
|
|
76
|
+
"""
|
|
77
|
+
self.window.tools.get("html_canvas").set_url(url)
|
|
78
|
+
self.window.tools.get("html_canvas").auto_open(load=False)
|
|
79
|
+
|
|
80
|
+
def open_dev_tools(self) -> None:
|
|
81
|
+
"""
|
|
82
|
+
Open dev tools for given PID (Web renderer only)
|
|
83
|
+
|
|
84
|
+
:param pid: PID
|
|
85
|
+
"""
|
|
86
|
+
meta = self.window.core.ctx.get_current_meta()
|
|
87
|
+
if meta:
|
|
88
|
+
node = self.window.core.ctx.output.get_current(meta)
|
|
89
|
+
if node:
|
|
90
|
+
node.show_devtools()
|
|
91
|
+
|
|
68
92
|
def toggle_render(self):
|
|
69
93
|
"""Toggle render debug"""
|
|
70
94
|
value = self.window.ui.menu['debug.render'].isChecked()
|
|
@@ -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.
|
|
9
|
+
# Updated Date: 2025.09.19 00:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from typing import Any, Optional
|
|
@@ -285,6 +285,12 @@ class Confirm:
|
|
|
285
285
|
elif type == 'prompt.custom.delete':
|
|
286
286
|
self.window.controller.presets.delete_prompt(id, True)
|
|
287
287
|
|
|
288
|
+
elif type == 'agent.builder.agent.delete':
|
|
289
|
+
self.window.tools.get("agent_builder").delete_agent(id, True)
|
|
290
|
+
|
|
291
|
+
elif type == 'agent.builder.agent.clear':
|
|
292
|
+
self.window.tools.get("agent_builder").clear(True)
|
|
293
|
+
|
|
288
294
|
def dismiss(
|
|
289
295
|
self,
|
|
290
296
|
type: str,
|
|
@@ -365,6 +371,10 @@ class Confirm:
|
|
|
365
371
|
elif type == 'prompt.custom.new':
|
|
366
372
|
self.window.controller.presets.save_prompt(name, True)
|
|
367
373
|
|
|
374
|
+
# tool: agent builder - create new agent
|
|
375
|
+
elif type == 'agent.builder.agent':
|
|
376
|
+
self.window.tools.get("agent_builder").rename_agent(id, name)
|
|
377
|
+
|
|
368
378
|
def accept_create(
|
|
369
379
|
self,
|
|
370
380
|
type: str,
|
|
@@ -394,6 +404,10 @@ class Confirm:
|
|
|
394
404
|
elif type == 'ctx.group':
|
|
395
405
|
self.window.controller.ctx.create_group(name, id)
|
|
396
406
|
|
|
407
|
+
# tool: agent builder - create new agent
|
|
408
|
+
elif type == 'agent.builder.agent':
|
|
409
|
+
self.window.tools.get("agent_builder").add_agent(name)
|
|
410
|
+
|
|
397
411
|
def accept_url(
|
|
398
412
|
self,
|
|
399
413
|
type: str,
|
|
@@ -15,6 +15,7 @@ from PySide6.QtCore import Qt
|
|
|
15
15
|
from PySide6.QtGui import QStandardItemModel
|
|
16
16
|
|
|
17
17
|
from pygpt_net.core.debug.agent import AgentDebug
|
|
18
|
+
from pygpt_net.core.debug.agent_builder import AgentBuilderDebug
|
|
18
19
|
from pygpt_net.core.debug.assistants import AssistantsDebug
|
|
19
20
|
from pygpt_net.core.debug.attachments import AttachmentsDebug
|
|
20
21
|
from pygpt_net.core.debug.config import ConfigDebug
|
|
@@ -45,6 +46,7 @@ class Debug:
|
|
|
45
46
|
# setup workers
|
|
46
47
|
self.workers = {
|
|
47
48
|
'agent': AgentDebug(self.window),
|
|
49
|
+
'agent_builder': AgentBuilderDebug(self.window),
|
|
48
50
|
'assistants': AssistantsDebug(self.window),
|
|
49
51
|
'attachments': AttachmentsDebug(self.window),
|
|
50
52
|
'config': ConfigDebug(self.window),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
pygpt_net/controller/ui/mode.py
CHANGED
|
File without changes
|
pygpt_net/controller/ui/tabs.py
CHANGED
|
File without changes
|
pygpt_net/core/agents/agents.py
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
7
|
# MIT License #
|
|
8
8
|
# Created By : Marcin Szczygliński #
|
|
9
|
-
# Updated Date:
|
|
9
|
+
# Updated Date: 2025.09.19 00:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
|
+
from .custom import Custom
|
|
12
13
|
from .legacy import Legacy
|
|
13
14
|
from .memory import Memory
|
|
14
15
|
from .observer import Observer
|
|
@@ -24,6 +25,7 @@ class Agents:
|
|
|
24
25
|
:param window: Window instance
|
|
25
26
|
"""
|
|
26
27
|
self.window = window
|
|
28
|
+
self.custom = Custom(window)
|
|
27
29
|
self.legacy = Legacy(window)
|
|
28
30
|
self.memory = Memory(window)
|
|
29
31
|
self.observer = Observer(window)
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# ================================================== #
|
|
4
|
+
# This file is a part of PYGPT package #
|
|
5
|
+
# Website: https://pygpt.net #
|
|
6
|
+
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
|
+
# MIT License #
|
|
8
|
+
# Created By : Marcin Szczygliński #
|
|
9
|
+
# Updated Date: 2025.09.19 00:00:00 #
|
|
10
|
+
# ================================================== #
|
|
11
|
+
|
|
12
|
+
import copy
|
|
13
|
+
from uuid import uuid4
|
|
14
|
+
|
|
15
|
+
from pygpt_net.item.builder_layout import BuilderLayoutItem
|
|
16
|
+
from pygpt_net.provider.core.agent.json_file import JsonFileProvider
|
|
17
|
+
|
|
18
|
+
class Custom:
|
|
19
|
+
def __init__(self, window=None):
|
|
20
|
+
"""
|
|
21
|
+
Custom agents core
|
|
22
|
+
|
|
23
|
+
:param window: Window instance
|
|
24
|
+
"""
|
|
25
|
+
self.window = window
|
|
26
|
+
self.provider = JsonFileProvider(window) # json file provider
|
|
27
|
+
self.agents = {} # dict of AgentItem
|
|
28
|
+
self.layout = None # BuilderLayoutItem
|
|
29
|
+
self.loaded = False
|
|
30
|
+
|
|
31
|
+
def load(self):
|
|
32
|
+
"""Load custom agents from provider"""
|
|
33
|
+
data = self.provider.load()
|
|
34
|
+
if "layout" in data:
|
|
35
|
+
self.layout = data["layout"]
|
|
36
|
+
if "agents" in data:
|
|
37
|
+
self.agents = data["agents"]
|
|
38
|
+
self.loaded = True
|
|
39
|
+
|
|
40
|
+
def save(self):
|
|
41
|
+
"""Save custom agents to provider"""
|
|
42
|
+
self.provider.save(self.layout, self.agents)
|
|
43
|
+
|
|
44
|
+
def update_layout(self, layout: dict):
|
|
45
|
+
"""
|
|
46
|
+
Update layout of custom agents
|
|
47
|
+
|
|
48
|
+
:param layout: layout dict
|
|
49
|
+
"""
|
|
50
|
+
if self.layout is None:
|
|
51
|
+
self.layout = BuilderLayoutItem()
|
|
52
|
+
self.layout.data = layout
|
|
53
|
+
|
|
54
|
+
def reset(self):
|
|
55
|
+
"""Reset custom agents"""
|
|
56
|
+
self.agents = {}
|
|
57
|
+
self.layout = None
|
|
58
|
+
self.loaded = False
|
|
59
|
+
self.provider.truncate()
|
|
60
|
+
|
|
61
|
+
def get_layout(self) -> dict:
|
|
62
|
+
"""
|
|
63
|
+
Get layout of custom agents
|
|
64
|
+
|
|
65
|
+
:return: layout dict
|
|
66
|
+
"""
|
|
67
|
+
if not self.loaded:
|
|
68
|
+
self.load()
|
|
69
|
+
return self.layout
|
|
70
|
+
|
|
71
|
+
def get_agents(self) -> dict:
|
|
72
|
+
"""
|
|
73
|
+
Get custom agents
|
|
74
|
+
|
|
75
|
+
:return: dict of AgentItem
|
|
76
|
+
"""
|
|
77
|
+
if not self.loaded:
|
|
78
|
+
self.load()
|
|
79
|
+
return self.agents
|
|
80
|
+
|
|
81
|
+
def get_agent(self, agent_id: str):
|
|
82
|
+
"""
|
|
83
|
+
Get custom agent by ID
|
|
84
|
+
|
|
85
|
+
:param agent_id: agent ID
|
|
86
|
+
:return: AgentItem or None
|
|
87
|
+
"""
|
|
88
|
+
if not self.loaded:
|
|
89
|
+
self.load()
|
|
90
|
+
return self.agents.get(agent_id)
|
|
91
|
+
|
|
92
|
+
def new_agent(self, name: str):
|
|
93
|
+
"""
|
|
94
|
+
Create new custom agent
|
|
95
|
+
|
|
96
|
+
:param name: agent name
|
|
97
|
+
"""
|
|
98
|
+
if not self.loaded:
|
|
99
|
+
self.load()
|
|
100
|
+
new_id = str(uuid4())
|
|
101
|
+
from pygpt_net.item.agent import AgentItem
|
|
102
|
+
new_agent = AgentItem()
|
|
103
|
+
new_agent.id = new_id
|
|
104
|
+
new_agent.name = name
|
|
105
|
+
self.agents[new_id] = new_agent
|
|
106
|
+
self.save()
|
|
107
|
+
return new_id
|
|
108
|
+
|
|
109
|
+
def duplicate_agent(self, agent_id: str, new_name: str):
|
|
110
|
+
"""
|
|
111
|
+
Duplicate custom agent
|
|
112
|
+
|
|
113
|
+
:param agent_id: agent ID
|
|
114
|
+
:param new_name: new agent name
|
|
115
|
+
"""
|
|
116
|
+
if not self.loaded:
|
|
117
|
+
self.load()
|
|
118
|
+
agent = self.agents.get(agent_id)
|
|
119
|
+
if agent:
|
|
120
|
+
new_agent = copy.deepcopy(agent)
|
|
121
|
+
new_agent.id = str(uuid4())
|
|
122
|
+
new_agent.name = new_name
|
|
123
|
+
self.agents[new_agent.id] = new_agent
|
|
124
|
+
self.save()
|
|
125
|
+
|
|
126
|
+
def delete_agent(self, agent_id: str):
|
|
127
|
+
"""
|
|
128
|
+
Delete custom agent
|
|
129
|
+
|
|
130
|
+
:param agent_id: agent ID
|
|
131
|
+
"""
|
|
132
|
+
if not self.loaded:
|
|
133
|
+
self.load()
|
|
134
|
+
if agent_id in self.agents:
|
|
135
|
+
del self.agents[agent_id]
|
|
136
|
+
self.save()
|
|
137
|
+
|
|
138
|
+
def update_agent_layout(self, agent_id: str, layout: dict):
|
|
139
|
+
"""
|
|
140
|
+
Update layout of a specific custom agent
|
|
141
|
+
|
|
142
|
+
:param agent_id: agent ID
|
|
143
|
+
:param layout: new layout dict
|
|
144
|
+
"""
|
|
145
|
+
if not self.loaded:
|
|
146
|
+
self.load()
|
|
147
|
+
agent = self.agents.get(agent_id)
|
|
148
|
+
if agent:
|
|
149
|
+
agent.layout = layout
|
|
150
|
+
self.save()
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# ================================================== #
|
|
4
|
+
# This file is a part of PYGPT package #
|
|
5
|
+
# Website: https://pygpt.net #
|
|
6
|
+
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
|
7
|
+
# MIT License #
|
|
8
|
+
# Created By : Marcin Szczygliński #
|
|
9
|
+
# Updated Date: 2025.09.19 00:00:00 #
|
|
10
|
+
# ================================================== #
|
|
11
|
+
|
|
12
|
+
from .graph import NodeGraph, NodeTypeRegistry, NodeModel, PropertyModel, ConnectionModel
|