pygpt-net 2.6.45__py3-none-any.whl → 2.6.46__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 +7 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +0 -5
- pygpt_net/controller/debug/debug.py +11 -9
- pygpt_net/controller/dialogs/debug.py +40 -29
- pygpt_net/core/debug/agent.py +19 -14
- pygpt_net/core/debug/assistants.py +22 -24
- pygpt_net/core/debug/attachments.py +11 -7
- pygpt_net/core/debug/config.py +22 -23
- pygpt_net/core/debug/context.py +63 -63
- pygpt_net/core/debug/db.py +1 -4
- pygpt_net/core/debug/events.py +14 -11
- pygpt_net/core/debug/indexes.py +41 -76
- pygpt_net/core/debug/kernel.py +11 -8
- pygpt_net/core/debug/models.py +20 -15
- pygpt_net/core/debug/plugins.py +9 -6
- pygpt_net/core/debug/presets.py +16 -11
- pygpt_net/core/debug/tabs.py +28 -22
- pygpt_net/core/debug/ui.py +25 -22
- pygpt_net/core/render/web/renderer.py +3 -2
- pygpt_net/core/tabs/tab.py +14 -1
- pygpt_net/data/config/config.json +3 -3
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/settings.json +15 -17
- pygpt_net/data/css/style.dark.css +6 -0
- pygpt_net/data/css/web-blocks.css +4 -0
- pygpt_net/data/css/web-blocks.light.css +1 -1
- pygpt_net/data/css/web-chatgpt.css +4 -0
- pygpt_net/data/css/web-chatgpt.light.css +1 -1
- pygpt_net/data/css/web-chatgpt_wide.css +4 -0
- pygpt_net/data/css/web-chatgpt_wide.light.css +1 -1
- pygpt_net/data/js/app.js +720 -636
- pygpt_net/data/locale/locale.de.ini +1 -1
- pygpt_net/data/locale/locale.en.ini +1 -1
- pygpt_net/data/locale/locale.es.ini +1 -1
- pygpt_net/data/locale/locale.fr.ini +1 -1
- pygpt_net/data/locale/locale.it.ini +1 -1
- pygpt_net/data/locale/locale.pl.ini +2 -2
- pygpt_net/data/locale/locale.uk.ini +1 -1
- pygpt_net/data/locale/locale.zh.ini +1 -1
- pygpt_net/item/model.py +4 -1
- pygpt_net/js_rc.py +12824 -12612
- pygpt_net/provider/api/anthropic/__init__.py +3 -1
- pygpt_net/provider/api/anthropic/tools.py +1 -1
- pygpt_net/provider/api/google/__init__.py +7 -1
- pygpt_net/provider/api/x_ai/__init__.py +5 -1
- pygpt_net/provider/core/config/patch.py +14 -1
- pygpt_net/provider/llms/anthropic.py +37 -5
- pygpt_net/provider/llms/azure_openai.py +3 -1
- pygpt_net/provider/llms/base.py +13 -1
- pygpt_net/provider/llms/deepseek_api.py +13 -3
- pygpt_net/provider/llms/google.py +14 -1
- pygpt_net/provider/llms/hugging_face_api.py +105 -24
- pygpt_net/provider/llms/hugging_face_embedding.py +88 -0
- pygpt_net/provider/llms/hugging_face_router.py +28 -16
- pygpt_net/provider/llms/local.py +2 -0
- pygpt_net/provider/llms/mistral.py +60 -3
- pygpt_net/provider/llms/open_router.py +4 -2
- pygpt_net/provider/llms/openai.py +4 -1
- pygpt_net/provider/llms/perplexity.py +66 -5
- pygpt_net/provider/llms/utils.py +39 -0
- pygpt_net/provider/llms/voyage.py +50 -0
- pygpt_net/provider/llms/x_ai.py +70 -10
- pygpt_net/ui/widget/lists/db.py +1 -0
- pygpt_net/ui/widget/lists/debug.py +1 -0
- pygpt_net/ui/widget/tabs/body.py +12 -1
- {pygpt_net-2.6.45.dist-info → pygpt_net-2.6.46.dist-info}/METADATA +11 -4
- {pygpt_net-2.6.45.dist-info → pygpt_net-2.6.46.dist-info}/RECORD +71 -68
- {pygpt_net-2.6.45.dist-info → pygpt_net-2.6.46.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.45.dist-info → pygpt_net-2.6.46.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.45.dist-info → pygpt_net-2.6.46.dist-info}/entry_points.txt +0 -0
pygpt_net/core/debug/events.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from pygpt_net.core.events import (
|
|
@@ -31,16 +31,19 @@ class EventsDebug:
|
|
|
31
31
|
|
|
32
32
|
def update(self):
|
|
33
33
|
"""Update debug window."""
|
|
34
|
-
self.window.core.debug
|
|
35
|
-
self.window.core.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
34
|
+
debug = self.window.core.debug
|
|
35
|
+
access_voice = self.window.core.access.voice
|
|
36
|
+
|
|
37
|
+
debug.begin(self.id)
|
|
38
|
+
debug.add(self.id, 'App Events:', str(self.extract_events(AppEvent)))
|
|
39
|
+
debug.add(self.id, 'Control Events:', str(self.extract_events(ControlEvent)))
|
|
40
|
+
debug.add(self.id, 'Kernel Events:', str(self.extract_events(KernelEvent)))
|
|
41
|
+
debug.add(self.id, 'Render Events:', str(self.extract_events(RenderEvent)))
|
|
42
|
+
debug.add(self.id, 'Plugin Events:', str(self.extract_events(Event)))
|
|
43
|
+
debug.add(self.id, '----', '')
|
|
44
|
+
debug.add(self.id, 'Voice Cmds (all):', str(access_voice.commands))
|
|
45
|
+
debug.add(self.id, 'Voice Cmds (allowed):', str(access_voice.get_commands()))
|
|
46
|
+
debug.end(self.id)
|
|
44
47
|
|
|
45
48
|
def extract_events(self, events: BaseEvent) -> dict:
|
|
46
49
|
"""
|
pygpt_net/core/debug/indexes.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import datetime
|
|
@@ -24,91 +24,56 @@ class IndexesDebug:
|
|
|
24
24
|
|
|
25
25
|
def update(self):
|
|
26
26
|
"""Update debug window."""
|
|
27
|
-
self.window.core.debug
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
debug = self.window.core.debug
|
|
28
|
+
idx_core = self.window.core.idx
|
|
29
|
+
idx_controller = self.window.controller.idx
|
|
30
|
+
config = self.window.core.config
|
|
31
|
+
storage = idx_core.storage
|
|
32
|
+
indexing = idx_core.indexing
|
|
33
|
+
|
|
34
|
+
debug.begin(self.id)
|
|
35
|
+
debug.add(self.id, 'Current storage:', str(idx_core.get_current_store()))
|
|
36
|
+
debug.add(self.id, 'Current idx:', str(idx_controller.current_idx))
|
|
37
|
+
debug.add(self.id, 'Current mode:', str(idx_controller.current_mode))
|
|
38
|
+
debug.add(self.id, 'Chat mode:', str(config.get("llama.idx.chat.mode")))
|
|
39
|
+
debug.add(self.id, 'Indexes (list):', str(list(config.get("llama.idx.list"))))
|
|
33
40
|
|
|
34
41
|
# count items in DB
|
|
35
|
-
db_counter = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
42
|
+
db_counter = {
|
|
43
|
+
"ctx": idx_core.get_counters("ctx"),
|
|
44
|
+
"file": idx_core.get_counters("file"),
|
|
45
|
+
"external": idx_core.get_counters("external")
|
|
46
|
+
}
|
|
39
47
|
|
|
40
|
-
for store in
|
|
48
|
+
for store in idx_core.items:
|
|
41
49
|
name = "Items (files): " + store
|
|
42
|
-
indexes_data = {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
self.window.core.debug.add(self.id, name, str(indexes_data))
|
|
50
|
+
indexes_data = {idx: len(idx_core.items[store][idx].items)
|
|
51
|
+
for idx in idx_core.items[store]}
|
|
52
|
+
if indexes_data:
|
|
53
|
+
debug.add(self.id, name, str(indexes_data))
|
|
47
54
|
|
|
48
55
|
# DB items counters
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
str(db_counter["external"]))
|
|
53
|
-
self.window.core.debug.add(self.id, 'DB items (file):',
|
|
54
|
-
str(db_counter["file"]))
|
|
56
|
+
debug.add(self.id, 'DB items (ctx):', str(db_counter["ctx"]))
|
|
57
|
+
debug.add(self.id, 'DB items (external/web):', str(db_counter["external"]))
|
|
58
|
+
debug.add(self.id, 'DB items (file):', str(db_counter["file"]))
|
|
55
59
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
self.window.core.debug.add(self.id, 'Temp (in-memory) indices:',
|
|
59
|
-
str(self.window.core.idx.storage.count_tmp()))
|
|
60
|
+
debug.add(self.id, 'Storage (storages):', str(list(storage.storages.keys())))
|
|
61
|
+
debug.add(self.id, 'Temp (in-memory) indices:', str(storage.count_tmp()))
|
|
60
62
|
|
|
61
63
|
# loaders
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
str(sorted(list(self.window.core.idx.indexing.loaders["web"].keys()))))
|
|
66
|
-
self.window.core.debug.add(self.id, 'External instructions [web]:',
|
|
67
|
-
str(self.window.core.idx.indexing.external_instructions))
|
|
64
|
+
debug.add(self.id, 'Offline loaders [files]:', str(sorted(list(indexing.loaders["file"].keys()))))
|
|
65
|
+
debug.add(self.id, 'Offline loaders [web]:', str(sorted(list(indexing.loaders["web"].keys()))))
|
|
66
|
+
debug.add(self.id, 'External instructions [web]:', str(indexing.external_instructions))
|
|
68
67
|
|
|
69
|
-
excluded =
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
self.window.core.debug.add(self.id, 'Custom metadata:',
|
|
74
|
-
str(self.window.core.config.get("llama.idx.custom_meta")))
|
|
68
|
+
excluded = config.get("llama.idx.excluded.ext").replace(" ", "").split(',')
|
|
69
|
+
debug.add(self.id, 'Excluded (ext):', str(excluded))
|
|
70
|
+
debug.add(self.id, 'Force exclude:', str(config.get("llama.idx.excluded.force")))
|
|
71
|
+
debug.add(self.id, 'Custom metadata:', str(config.get("llama.idx.custom_meta")))
|
|
75
72
|
|
|
76
73
|
# ctx
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
last_str = "-"
|
|
80
|
-
|
|
81
|
-
if last_ctx > 0:
|
|
82
|
-
last_str = datetime.datetime.fromtimestamp(last_ctx).strftime('%Y-%m-%d %H:%M:%S') + " (" + str(last_ctx) + ")"
|
|
83
|
-
self.window.core.debug.add(self.id, 'CTX [db.last]:', str(last_str))
|
|
84
|
-
|
|
85
|
-
# indexes
|
|
86
|
-
"""
|
|
87
|
-
indexes = self.window.core.idx.get_all()
|
|
88
|
-
for key in list(indexes):
|
|
89
|
-
path = os.path.join(self.window.core.config.get_user_dir('idx'), key)
|
|
90
|
-
idx = indexes[key]
|
|
91
|
-
self.window.core.debug.add(self.id, '----', '')
|
|
92
|
-
idx_data = {
|
|
93
|
-
'id': idx.id,
|
|
94
|
-
'store': idx.store,
|
|
95
|
-
'path': path,
|
|
96
|
-
'items': len(idx.items),
|
|
97
|
-
}
|
|
98
|
-
self.window.core.debug.add(self.id, 'IDX: [' + str(key) + ']', str(idx_data))
|
|
99
|
-
|
|
100
|
-
# files
|
|
101
|
-
items = idx.items
|
|
102
|
-
for item_id in items:
|
|
103
|
-
item = items[item_id]
|
|
104
|
-
indexed_dt = datetime.datetime.fromtimestamp(item['indexed_ts'])
|
|
105
|
-
data = {
|
|
106
|
-
'id': item['id'],
|
|
107
|
-
'path': item['path'],
|
|
108
|
-
'indexed_at': str(item['indexed_ts']) + ' (' + str(indexed_dt) + ')',
|
|
109
|
-
'file_id': item_id,
|
|
110
|
-
}
|
|
111
|
-
self.window.core.debug.add(self.id, item_id, str(data))
|
|
112
|
-
"""
|
|
74
|
+
debug.add(self.id, 'CTX [auto]:', str(config.get("llama.idx.auto")))
|
|
75
|
+
last_ctx = int(config.get("llama.idx.db.last"))
|
|
76
|
+
last_str = "-" if last_ctx <= 0 else f"{datetime.datetime.fromtimestamp(last_ctx).strftime('%Y-%m-%d %H:%M:%S')} ({last_ctx})"
|
|
77
|
+
debug.add(self.id, 'CTX [db.last]:', str(last_str))
|
|
113
78
|
|
|
114
|
-
|
|
79
|
+
debug.end(self.id)
|
pygpt_net/core/debug/kernel.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
class KernelDebug:
|
|
@@ -21,10 +21,13 @@ class KernelDebug:
|
|
|
21
21
|
|
|
22
22
|
def update(self):
|
|
23
23
|
"""Update debug window."""
|
|
24
|
-
self.window.core.debug
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
debug = self.window.core.debug
|
|
25
|
+
kernel_controller = self.window.controller.kernel
|
|
26
|
+
|
|
27
|
+
debug.begin(self.id)
|
|
28
|
+
debug.add(self.id, 'Busy:', str(kernel_controller.busy))
|
|
29
|
+
debug.add(self.id, 'Halt:', str(kernel_controller.halt))
|
|
30
|
+
debug.add(self.id, 'Status:', str(kernel_controller.status))
|
|
31
|
+
debug.add(self.id, 'State:', str(kernel_controller.state))
|
|
32
|
+
debug.add(self.id, 'Stack:', str(kernel_controller.last_stack))
|
|
33
|
+
debug.end(self.id)
|
pygpt_net/core/debug/models.py
CHANGED
|
@@ -6,12 +6,11 @@
|
|
|
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.
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
13
13
|
|
|
14
|
-
|
|
15
14
|
class ModelsDebug:
|
|
16
15
|
def __init__(self, window=None):
|
|
17
16
|
"""
|
|
@@ -24,30 +23,36 @@ class ModelsDebug:
|
|
|
24
23
|
|
|
25
24
|
def update(self):
|
|
26
25
|
"""Update debug window."""
|
|
27
|
-
self.window.core.debug
|
|
26
|
+
debug = self.window.core.debug
|
|
27
|
+
models_controller = self.window.controller.models
|
|
28
|
+
models_core = self.window.core.models
|
|
29
|
+
command_core = self.window.core.command
|
|
30
|
+
config_core = self.window.core.config
|
|
31
|
+
|
|
32
|
+
debug.begin(self.id)
|
|
28
33
|
|
|
29
|
-
path = os.path.join(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
path = os.path.join(config_core.path, '', 'models.json')
|
|
35
|
+
debug.add(self.id, 'Models File', str(path))
|
|
36
|
+
debug.add(self.id, 'editor.selected[]', str(models_controller.editor.selected))
|
|
37
|
+
debug.add(self.id, '[func] is_native_enabled()', str(command_core.is_native_enabled()))
|
|
33
38
|
|
|
34
|
-
|
|
39
|
+
debug.add(
|
|
35
40
|
self.id, 'Options',
|
|
36
|
-
str(
|
|
41
|
+
str(models_controller.model.editor.get_options())
|
|
37
42
|
)
|
|
38
43
|
|
|
39
44
|
# models
|
|
40
|
-
for key in
|
|
45
|
+
for key in models_core.items:
|
|
41
46
|
if key == '__meta__':
|
|
42
|
-
|
|
47
|
+
debug.add(self.id, '__meta__', str(models_core.items[key]))
|
|
43
48
|
continue
|
|
44
|
-
|
|
49
|
+
|
|
50
|
+
model = models_core.items[key]
|
|
45
51
|
data = {
|
|
46
52
|
'id': model.id,
|
|
47
53
|
'name': model.name,
|
|
48
54
|
'provider': model.provider,
|
|
49
55
|
'mode': model.mode,
|
|
50
|
-
# 'multimodal': model.multimodal,
|
|
51
56
|
'input': model.input,
|
|
52
57
|
'output': model.output,
|
|
53
58
|
'langchain': model.langchain,
|
|
@@ -58,6 +63,6 @@ class ModelsDebug:
|
|
|
58
63
|
'default': model.default,
|
|
59
64
|
'imported': model.imported,
|
|
60
65
|
}
|
|
61
|
-
|
|
66
|
+
debug.add(self.id, str(key), str(data))
|
|
62
67
|
|
|
63
|
-
|
|
68
|
+
debug.end(self.id)
|
pygpt_net/core/debug/plugins.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
|
|
@@ -22,17 +22,20 @@ class PluginsDebug:
|
|
|
22
22
|
|
|
23
23
|
def update(self):
|
|
24
24
|
"""Update debug window."""
|
|
25
|
-
self.window.core.debug
|
|
25
|
+
debug = self.window.core.debug
|
|
26
|
+
plugins_dict = self.window.core.plugins.plugins
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
debug.begin(self.id)
|
|
29
|
+
|
|
30
|
+
plugins = list(plugins_dict.keys())
|
|
28
31
|
for key in plugins:
|
|
29
|
-
plugin =
|
|
32
|
+
plugin = plugins_dict[key]
|
|
30
33
|
data = {
|
|
31
34
|
'id': plugin.id,
|
|
32
35
|
'name': plugin.name,
|
|
33
36
|
'description': plugin.description,
|
|
34
37
|
'options': plugin.options
|
|
35
38
|
}
|
|
36
|
-
|
|
39
|
+
debug.add(self.id, str(key), str(data))
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
debug.end(self.id)
|
pygpt_net/core/debug/presets.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.
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import os
|
|
@@ -39,19 +39,24 @@ class PresetsDebug:
|
|
|
39
39
|
|
|
40
40
|
def update(self):
|
|
41
41
|
"""Update debug window."""
|
|
42
|
-
self.window.core.debug
|
|
42
|
+
debug = self.window.core.debug
|
|
43
|
+
presets_controller = self.window.controller.presets
|
|
44
|
+
presets_core = self.window.core.presets
|
|
45
|
+
config_path = self.window.core.config.path
|
|
43
46
|
|
|
44
|
-
|
|
47
|
+
debug.begin(self.id)
|
|
48
|
+
|
|
49
|
+
debug.add(
|
|
45
50
|
self.id, 'Options',
|
|
46
|
-
str(
|
|
51
|
+
str(presets_controller.editor.get_options())
|
|
47
52
|
)
|
|
48
53
|
|
|
49
|
-
|
|
54
|
+
debug.add(self.id, 'selected[]', str(presets_controller.selected))
|
|
50
55
|
|
|
51
|
-
#
|
|
52
|
-
for key in list(dict(
|
|
53
|
-
preset =
|
|
54
|
-
path = os.path.join(
|
|
56
|
+
# Presets
|
|
57
|
+
for key in list(dict(presets_core.items)):
|
|
58
|
+
preset = presets_core.items[key]
|
|
59
|
+
path = os.path.join(config_path, 'presets', f"{key}.json")
|
|
55
60
|
data = {
|
|
56
61
|
'id': key,
|
|
57
62
|
'file': path,
|
|
@@ -75,6 +80,6 @@ class PresetsDebug:
|
|
|
75
80
|
'temperature': preset.temperature,
|
|
76
81
|
'version': preset.version,
|
|
77
82
|
}
|
|
78
|
-
|
|
83
|
+
debug.add(self.id, str(key), str(data))
|
|
79
84
|
|
|
80
|
-
|
|
85
|
+
debug.end(self.id)
|
pygpt_net/core/debug/tabs.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
class TabsDebug:
|
|
@@ -21,29 +21,35 @@ class TabsDebug:
|
|
|
21
21
|
|
|
22
22
|
def update(self):
|
|
23
23
|
"""Update debug window."""
|
|
24
|
-
self.window.core.debug
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
debug = self.window.core.debug
|
|
25
|
+
tabs_controller = self.window.controller.ui.tabs
|
|
26
|
+
tabs_core = self.window.core.tabs
|
|
27
|
+
ctx_output = self.window.core.ctx.output
|
|
28
|
+
ctx_container = self.window.core.ctx.container
|
|
29
|
+
|
|
30
|
+
debug.begin(self.id)
|
|
31
|
+
debug.add(self.id, 'current Col', str(tabs_controller.get_current_column_idx()))
|
|
32
|
+
debug.add(self.id, 'current IDX', str(tabs_controller.get_current_idx()))
|
|
33
|
+
debug.add(self.id, 'current Tab', str(tabs_controller.get_current_tab()))
|
|
34
|
+
debug.add(self.id, 'current PID', str(tabs_controller.get_current_pid()))
|
|
35
|
+
debug.add(self.id, 'current Type', str(tabs_controller.get_current_type()))
|
|
36
|
+
debug.add(self.id, '----', '')
|
|
37
|
+
debug.add(self.id, 'last_pid', str(tabs_core.last_pid))
|
|
38
|
+
debug.add(self.id, 'locked', str(tabs_controller.locked))
|
|
39
|
+
debug.add(self.id, 'col', str(tabs_controller.col))
|
|
40
|
+
debug.add(self.id, 'count(pids)', str(len(tabs_core.pids)))
|
|
41
|
+
debug.add(self.id, 'count(ctx bags)', str(len(ctx_container.bags)))
|
|
42
|
+
debug.add(self.id, '----', '')
|
|
37
43
|
|
|
38
44
|
# PIDs
|
|
39
|
-
for pid in list(
|
|
40
|
-
tab =
|
|
45
|
+
for pid in list(tabs_core.pids):
|
|
46
|
+
tab = tabs_core.pids[pid]
|
|
41
47
|
data = tab.to_dict()
|
|
42
|
-
|
|
48
|
+
debug.add(self.id, f"PID [{pid}]", str(data))
|
|
43
49
|
|
|
44
50
|
# mapping PID => meta.id
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
debug.add(self.id, '----', '')
|
|
52
|
+
debug.add(self.id, 'PID => meta.id', str(ctx_output.mapping))
|
|
53
|
+
debug.add(self.id, '(last) meta.id => PID', str(ctx_output.last_pids))
|
|
54
|
+
debug.add(self.id, '(last) PID', str(ctx_output.last_pid))
|
|
55
|
+
debug.end(self.id)
|
pygpt_net/core/debug/ui.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:
|
|
9
|
+
# Updated Date: 2025.09.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
|
|
@@ -45,30 +45,33 @@ class UIDebug:
|
|
|
45
45
|
:param items: items
|
|
46
46
|
:param name: name
|
|
47
47
|
"""
|
|
48
|
-
self.window.core.debug.add(self.id,
|
|
48
|
+
self.window.core.debug.add(self.id, f"ui.{name}", str(self.map_structure(items)))
|
|
49
49
|
|
|
50
50
|
def update(self):
|
|
51
51
|
"""Update debug window"""
|
|
52
|
-
|
|
52
|
+
# Local references
|
|
53
|
+
debug = self.window.core.debug
|
|
54
|
+
lang_mapping = self.window.controller.lang.mapping.get_mapping()
|
|
55
|
+
ui = self.window.ui
|
|
53
56
|
|
|
54
|
-
|
|
55
|
-
self.id, '*lang_mapping',
|
|
56
|
-
str(self.map_structure(self.window.controller.lang.mapping.get_mapping(), True))
|
|
57
|
-
)
|
|
57
|
+
debug.begin(self.id)
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
self.update_section(self.window.ui.debug, 'debug')
|
|
61
|
-
self.update_section(self.window.ui.dialog, 'dialog')
|
|
62
|
-
self.update_section(self.window.ui.editor, 'editor')
|
|
63
|
-
self.update_section(self.window.ui.groups, 'groups')
|
|
64
|
-
self.update_section(self.window.ui.hooks, 'hooks')
|
|
65
|
-
self.update_section(self.window.ui.menu, 'menu')
|
|
66
|
-
self.update_section(self.window.ui.models, 'models')
|
|
67
|
-
self.update_section(self.window.ui.nodes, 'nodes')
|
|
68
|
-
self.update_section(self.window.ui.notepad, 'notepad')
|
|
69
|
-
self.update_section(self.window.ui.paths, 'paths')
|
|
70
|
-
self.update_section(self.window.ui.plugin_addon, 'plugin_addon')
|
|
71
|
-
self.update_section(self.window.ui.splitters, 'splitters')
|
|
72
|
-
self.update_section(self.window.ui.tabs, 'tabs')
|
|
59
|
+
debug.add(self.id, '*lang_mapping', str(self.map_structure(lang_mapping, True)))
|
|
73
60
|
|
|
74
|
-
|
|
61
|
+
# Update sections using local 'ui' reference
|
|
62
|
+
self.update_section(ui.config, 'config')
|
|
63
|
+
self.update_section(ui.debug, 'debug')
|
|
64
|
+
self.update_section(ui.dialog, 'dialog')
|
|
65
|
+
self.update_section(ui.editor, 'editor')
|
|
66
|
+
self.update_section(ui.groups, 'groups')
|
|
67
|
+
self.update_section(ui.hooks, 'hooks')
|
|
68
|
+
self.update_section(ui.menu, 'menu')
|
|
69
|
+
self.update_section(ui.models, 'models')
|
|
70
|
+
self.update_section(ui.nodes, 'nodes')
|
|
71
|
+
self.update_section(ui.notepad, 'notepad')
|
|
72
|
+
self.update_section(ui.paths, 'paths')
|
|
73
|
+
self.update_section(ui.plugin_addon, 'plugin_addon')
|
|
74
|
+
self.update_section(ui.splitters, 'splitters')
|
|
75
|
+
self.update_section(ui.tabs, 'tabs')
|
|
76
|
+
|
|
77
|
+
debug.end(self.id)
|
|
@@ -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.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
import gc
|
|
@@ -884,6 +884,7 @@ class Renderer(BaseRenderer):
|
|
|
884
884
|
:param pid: context PID
|
|
885
885
|
:param payload: payload to append
|
|
886
886
|
:param flush: True if flush immediately (legacy HTML path)
|
|
887
|
+
:param replace: True if replace whole output (legacy HTML path)
|
|
887
888
|
"""
|
|
888
889
|
if self.pids[pid].loaded and not self.pids[pid].use_buffer:
|
|
889
890
|
self.clear_chunks(pid)
|
|
@@ -1291,10 +1292,10 @@ class Renderer(BaseRenderer):
|
|
|
1291
1292
|
:param meta: context meta
|
|
1292
1293
|
"""
|
|
1293
1294
|
tab = node.get_tab()
|
|
1295
|
+
tab.delete_ref(node)
|
|
1294
1296
|
layout = tab.child.layout()
|
|
1295
1297
|
layout.removeWidget(node)
|
|
1296
1298
|
self.window.ui.nodes['output'].pop(tab.pid, None)
|
|
1297
|
-
tab.child.delete_refs()
|
|
1298
1299
|
|
|
1299
1300
|
node.on_delete()
|
|
1300
1301
|
|
pygpt_net/core/tabs/tab.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.14 20:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from datetime import datetime
|
|
@@ -140,6 +140,19 @@ class Tab:
|
|
|
140
140
|
ref.deleteLater()
|
|
141
141
|
del self.refs[:]
|
|
142
142
|
|
|
143
|
+
def delete_ref(self, widget: Any) -> None:
|
|
144
|
+
"""
|
|
145
|
+
Unpin reference to widget in this tab
|
|
146
|
+
|
|
147
|
+
:param widget: widget reference
|
|
148
|
+
"""
|
|
149
|
+
for ref in self.refs:
|
|
150
|
+
if ref and ref is widget:
|
|
151
|
+
self.refs.remove(ref)
|
|
152
|
+
break
|
|
153
|
+
if self.child and hasattr(self.child, 'delete_ref'):
|
|
154
|
+
self.child.delete_ref(widget)
|
|
155
|
+
|
|
143
156
|
def to_dict(self) -> Dict[str, Any]:
|
|
144
157
|
"""
|
|
145
158
|
Convert to dict
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"__meta__": {
|
|
3
|
-
"version": "2.6.
|
|
4
|
-
"app.version": "2.6.
|
|
5
|
-
"updated_at": "2025-09-
|
|
3
|
+
"version": "2.6.46",
|
|
4
|
+
"app.version": "2.6.46",
|
|
5
|
+
"updated_at": "2025-09-15T00:00:00"
|
|
6
6
|
},
|
|
7
7
|
"access.audio.event.speech": false,
|
|
8
8
|
"access.audio.event.speech.disabled": [],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"__meta__": {
|
|
3
|
-
"version": "2.6.
|
|
4
|
-
"app.version": "2.6.
|
|
5
|
-
"updated_at": "2025-09-
|
|
3
|
+
"version": "2.6.46",
|
|
4
|
+
"app.version": "2.6.46",
|
|
5
|
+
"updated_at": "2025-09-15T08:03:34"
|
|
6
6
|
},
|
|
7
7
|
"items": {
|
|
8
8
|
"SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
|
|
@@ -53,22 +53,7 @@
|
|
|
53
53
|
"secret": false,
|
|
54
54
|
"advanced": false,
|
|
55
55
|
"tab": "OpenAI"
|
|
56
|
-
},
|
|
57
|
-
"api_proxy": {
|
|
58
|
-
"section": "api_keys",
|
|
59
|
-
"type": "text",
|
|
60
|
-
"slider": false,
|
|
61
|
-
"label": "settings.api_proxy",
|
|
62
|
-
"description": "settings.api_proxy.desc",
|
|
63
|
-
"value": "",
|
|
64
|
-
"min": null,
|
|
65
|
-
"max": null,
|
|
66
|
-
"multiplier": null,
|
|
67
|
-
"step": null,
|
|
68
|
-
"secret": false,
|
|
69
|
-
"advanced": false,
|
|
70
|
-
"tab": "OpenAI"
|
|
71
|
-
},
|
|
56
|
+
},
|
|
72
57
|
"api_use_responses": {
|
|
73
58
|
"section": "api_keys",
|
|
74
59
|
"type": "bool",
|
|
@@ -593,7 +578,20 @@
|
|
|
593
578
|
"multiplier": 1,
|
|
594
579
|
"step": 1,
|
|
595
580
|
"advanced": false
|
|
596
|
-
},
|
|
581
|
+
},
|
|
582
|
+
"api_proxy": {
|
|
583
|
+
"section": "general",
|
|
584
|
+
"type": "text",
|
|
585
|
+
"slider": false,
|
|
586
|
+
"label": "settings.api_proxy",
|
|
587
|
+
"description": "settings.api_proxy.desc",
|
|
588
|
+
"value": "",
|
|
589
|
+
"min": null,
|
|
590
|
+
"max": null,
|
|
591
|
+
"multiplier": null,
|
|
592
|
+
"step": null,
|
|
593
|
+
"secret": false
|
|
594
|
+
},
|
|
597
595
|
"theme.style": {
|
|
598
596
|
"section": "layout",
|
|
599
597
|
"type": "combo",
|
|
@@ -133,4 +133,10 @@ QCalendarWidget QAbstractItemView::item:hover {{
|
|
|
133
133
|
}}
|
|
134
134
|
.file-explorer QTreeView::branch {{
|
|
135
135
|
background: #262a2e;
|
|
136
|
+
}}
|
|
137
|
+
|
|
138
|
+
.DebugList::item:selected,
|
|
139
|
+
.DebugList::item:selected:focus {{
|
|
140
|
+
color: #000;
|
|
141
|
+
selection-color: #000000;
|
|
136
142
|
}}
|