pygpt-net 2.4.36.post1__py3-none-any.whl → 2.4.41__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.
- CHANGELOG.md +38 -1
- README.md +71 -114
- pygpt_net/CHANGELOG.txt +38 -1
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/__init__.py +7 -3
- pygpt_net/controller/access/control.py +1 -1
- pygpt_net/controller/access/voice.py +11 -5
- pygpt_net/controller/agent/experts.py +11 -6
- pygpt_net/controller/agent/legacy.py +8 -6
- pygpt_net/controller/agent/llama.py +4 -2
- pygpt_net/controller/assistant/__init__.py +9 -4
- pygpt_net/controller/assistant/batch.py +38 -21
- pygpt_net/controller/assistant/editor.py +7 -6
- pygpt_net/controller/assistant/files.py +23 -7
- pygpt_net/controller/assistant/store.py +20 -7
- pygpt_net/controller/assistant/threads.py +34 -8
- pygpt_net/controller/attachment.py +29 -10
- pygpt_net/controller/audio/__init__.py +25 -4
- pygpt_net/controller/calendar/__init__.py +23 -4
- pygpt_net/controller/calendar/note.py +57 -11
- pygpt_net/controller/camera.py +3 -2
- pygpt_net/controller/chat/__init__.py +5 -3
- pygpt_net/controller/chat/attachment.py +39 -44
- pygpt_net/controller/chat/command.py +4 -2
- pygpt_net/controller/chat/common.py +11 -4
- pygpt_net/controller/chat/files.py +10 -3
- pygpt_net/controller/chat/image.py +17 -5
- pygpt_net/controller/chat/input.py +10 -7
- pygpt_net/controller/chat/output.py +21 -6
- pygpt_net/controller/chat/render.py +100 -21
- pygpt_net/controller/chat/response.py +34 -7
- pygpt_net/controller/chat/stream.py +4 -2
- pygpt_net/controller/chat/text.py +6 -4
- pygpt_net/controller/command.py +11 -3
- pygpt_net/controller/config/__init__.py +34 -6
- pygpt_net/controller/config/field/checkbox.py +7 -4
- pygpt_net/controller/config/field/cmd.py +7 -5
- pygpt_net/controller/config/field/combo.py +14 -6
- pygpt_net/controller/config/field/dictionary.py +14 -11
- pygpt_net/controller/config/field/input.py +9 -6
- pygpt_net/controller/config/field/slider.py +11 -8
- pygpt_net/controller/config/field/textarea.py +8 -5
- pygpt_net/controller/config/placeholder.py +52 -21
- pygpt_net/controller/ctx/__init__.py +138 -49
- pygpt_net/controller/ctx/common.py +15 -4
- pygpt_net/controller/ctx/extra.py +11 -3
- pygpt_net/controller/ctx/summarizer.py +24 -5
- pygpt_net/controller/debug/__init__.py +27 -6
- pygpt_net/controller/dialogs/confirm.py +34 -7
- pygpt_net/controller/dialogs/debug.py +4 -2
- pygpt_net/controller/dialogs/info.py +7 -2
- pygpt_net/controller/files.py +48 -10
- pygpt_net/controller/finder.py +11 -5
- pygpt_net/controller/idx/__init__.py +10 -3
- pygpt_net/controller/idx/common.py +4 -2
- pygpt_net/controller/idx/indexer.py +25 -17
- pygpt_net/controller/idx/settings.py +9 -3
- pygpt_net/controller/kernel/__init__.py +34 -8
- pygpt_net/controller/kernel/reply.py +12 -3
- pygpt_net/controller/kernel/stack.py +5 -3
- pygpt_net/controller/lang/custom.py +2 -7
- pygpt_net/controller/lang/mapping.py +5 -3
- pygpt_net/controller/layout.py +2 -2
- pygpt_net/controller/mode.py +16 -4
- pygpt_net/controller/model/__init__.py +14 -3
- pygpt_net/controller/model/editor.py +8 -3
- pygpt_net/controller/notepad.py +26 -12
- pygpt_net/controller/painter/capture.py +23 -4
- pygpt_net/controller/painter/common.py +9 -7
- pygpt_net/controller/plugins/__init__.py +19 -5
- pygpt_net/controller/plugins/presets.py +15 -6
- pygpt_net/controller/plugins/settings.py +9 -3
- pygpt_net/controller/presets/__init__.py +55 -16
- pygpt_net/controller/presets/editor.py +26 -10
- pygpt_net/controller/settings/__init__.py +3 -2
- pygpt_net/controller/settings/editor.py +29 -7
- pygpt_net/controller/settings/profile.py +22 -5
- pygpt_net/controller/theme/__init__.py +54 -12
- pygpt_net/controller/theme/common.py +24 -2
- pygpt_net/controller/theme/markdown.py +32 -16
- pygpt_net/controller/theme/menu.py +26 -5
- pygpt_net/controller/theme/nodes.py +2 -5
- pygpt_net/controller/tools/__init__.py +40 -2
- pygpt_net/controller/ui/__init__.py +4 -6
- pygpt_net/controller/ui/tabs.py +363 -65
- pygpt_net/core/access/actions.py +6 -4
- pygpt_net/core/access/shortcuts.py +4 -3
- pygpt_net/core/access/voice.py +6 -5
- pygpt_net/core/agents/legacy.py +4 -2
- pygpt_net/core/agents/memory.py +7 -2
- pygpt_net/core/agents/observer/evaluation.py +15 -7
- pygpt_net/core/agents/provider.py +9 -4
- pygpt_net/core/agents/runner.py +61 -15
- pygpt_net/core/agents/tools.py +23 -5
- pygpt_net/core/assistants/__init__.py +6 -4
- pygpt_net/core/assistants/files.py +35 -12
- pygpt_net/core/assistants/store.py +20 -10
- pygpt_net/core/attachments/__init__.py +54 -15
- pygpt_net/core/attachments/context.py +217 -64
- pygpt_net/core/audio/__init__.py +71 -3
- pygpt_net/core/audio/context.py +7 -2
- pygpt_net/core/bridge/__init__.py +22 -6
- pygpt_net/core/bridge/context.py +5 -3
- pygpt_net/core/bridge/worker.py +16 -2
- pygpt_net/core/calendar/__init__.py +57 -11
- pygpt_net/core/chain/__init__.py +8 -2
- pygpt_net/core/chain/chat.py +10 -8
- pygpt_net/core/chain/completion.py +10 -7
- pygpt_net/core/command.py +62 -17
- pygpt_net/core/ctx/__init__.py +260 -58
- pygpt_net/core/ctx/bag.py +25 -4
- pygpt_net/core/ctx/container.py +28 -17
- pygpt_net/core/ctx/idx.py +45 -8
- pygpt_net/core/ctx/output.py +95 -74
- pygpt_net/core/ctx/reply.py +5 -2
- pygpt_net/core/db/__init__.py +8 -7
- pygpt_net/core/db/viewer.py +17 -11
- pygpt_net/core/debug/__init__.py +10 -9
- pygpt_net/core/debug/tabs.py +5 -2
- pygpt_net/core/docker/__init__.py +11 -5
- pygpt_net/core/docker/builder.py +11 -3
- pygpt_net/core/events/app.py +5 -3
- pygpt_net/core/events/base.py +11 -5
- pygpt_net/core/events/control.py +5 -3
- pygpt_net/core/events/event.py +18 -7
- pygpt_net/core/events/kernel.py +5 -3
- pygpt_net/core/events/render.py +5 -3
- pygpt_net/core/experts/__init__.py +5 -4
- pygpt_net/core/filesystem/__init__.py +52 -34
- pygpt_net/core/filesystem/actions.py +8 -5
- pygpt_net/core/filesystem/editor.py +13 -3
- pygpt_net/core/filesystem/types.py +12 -7
- pygpt_net/core/filesystem/url.py +7 -3
- pygpt_net/core/idx/__init__.py +34 -25
- pygpt_net/core/idx/chat.py +60 -38
- pygpt_net/core/idx/context.py +6 -2
- pygpt_net/core/idx/indexing.py +84 -35
- pygpt_net/core/idx/llm.py +11 -3
- pygpt_net/core/idx/metadata.py +13 -3
- pygpt_net/core/idx/types/ctx.py +32 -6
- pygpt_net/core/idx/types/external.py +41 -7
- pygpt_net/core/idx/types/files.py +31 -6
- pygpt_net/core/image.py +15 -4
- pygpt_net/core/llm/__init__.py +13 -3
- pygpt_net/core/locale.py +34 -8
- pygpt_net/core/models.py +4 -3
- pygpt_net/core/notepad.py +9 -4
- pygpt_net/core/plugins.py +7 -6
- pygpt_net/core/presets.py +19 -10
- pygpt_net/core/profile.py +12 -6
- pygpt_net/core/prompt/__init__.py +10 -3
- pygpt_net/core/prompt/custom.py +7 -6
- pygpt_net/core/prompt/template.py +9 -3
- pygpt_net/core/render/base.py +117 -22
- pygpt_net/core/render/markdown/body.py +27 -7
- pygpt_net/core/render/markdown/renderer.py +119 -22
- pygpt_net/core/render/plain/body.py +22 -5
- pygpt_net/core/render/plain/renderer.py +97 -21
- pygpt_net/core/render/web/body.py +75 -25
- pygpt_net/core/render/web/renderer.py +313 -63
- pygpt_net/core/settings.py +9 -4
- pygpt_net/core/tabs/__init__.py +290 -103
- pygpt_net/core/tabs/tab.py +17 -4
- pygpt_net/core/tokens.py +44 -11
- pygpt_net/core/updater/__init__.py +20 -7
- pygpt_net/core/vision/analyzer.py +29 -6
- pygpt_net/core/web.py +130 -2
- pygpt_net/data/config/config.json +19 -6
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/config/settings.json +81 -10
- pygpt_net/data/config/settings_section.json +3 -0
- pygpt_net/data/css/style.light.css +1 -0
- pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
- pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
- pygpt_net/data/css/web-chatgpt.css +350 -0
- pygpt_net/data/css/web-chatgpt.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt.light.css +75 -0
- pygpt_net/data/css/web-chatgpt_wide.css +350 -0
- pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
- pygpt_net/data/icons/split_screen.svg +1 -0
- pygpt_net/data/locale/locale.de.ini +19 -3
- pygpt_net/data/locale/locale.en.ini +30 -11
- pygpt_net/data/locale/locale.es.ini +19 -3
- pygpt_net/data/locale/locale.fr.ini +19 -3
- pygpt_net/data/locale/locale.it.ini +19 -3
- pygpt_net/data/locale/locale.pl.ini +20 -4
- pygpt_net/data/locale/locale.uk.ini +19 -3
- pygpt_net/data/locale/locale.zh.ini +20 -4
- pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +20 -10
- pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
- pygpt_net/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +46 -24
- pygpt_net/plugin/audio_input/simple.py +21 -5
- pygpt_net/plugin/audio_output/__init__.py +4 -1
- pygpt_net/plugin/base/config.py +4 -2
- pygpt_net/plugin/base/plugin.py +26 -6
- pygpt_net/plugin/base/worker.py +37 -9
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_web/__init__.py +46 -6
- pygpt_net/plugin/cmd_web/config.py +74 -48
- pygpt_net/plugin/cmd_web/websearch.py +61 -28
- pygpt_net/plugin/cmd_web/worker.py +79 -13
- pygpt_net/plugin/idx_llama_index/__init__.py +2 -2
- pygpt_net/plugin/real_time/__init__.py +2 -2
- pygpt_net/provider/core/config/patch.py +54 -1
- pygpt_net/provider/core/ctx/base.py +4 -1
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +10 -1
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +22 -1
- pygpt_net/provider/gpt/assistants.py +10 -9
- pygpt_net/provider/gpt/audio.py +3 -2
- pygpt_net/provider/gpt/chat.py +8 -7
- pygpt_net/provider/gpt/completion.py +6 -4
- pygpt_net/provider/gpt/image.py +9 -2
- pygpt_net/provider/gpt/store.py +14 -13
- pygpt_net/provider/gpt/vision.py +6 -5
- pygpt_net/tools/__init__.py +9 -1
- pygpt_net/tools/base.py +15 -1
- pygpt_net/tools/code_interpreter/__init__.py +174 -75
- pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
- pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
- pygpt_net/tools/html_canvas/__init__.py +78 -23
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- pygpt_net/ui/base/context_menu.py +2 -2
- pygpt_net/ui/layout/chat/input.py +10 -18
- pygpt_net/ui/layout/chat/output.py +26 -44
- pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
- pygpt_net/ui/layout/toolbox/footer.py +18 -2
- pygpt_net/ui/main.py +2 -2
- pygpt_net/ui/menu/config.py +7 -11
- pygpt_net/ui/menu/debug.py +11 -1
- pygpt_net/ui/menu/theme.py +9 -2
- pygpt_net/ui/widget/filesystem/explorer.py +2 -2
- pygpt_net/ui/widget/lists/context.py +27 -5
- pygpt_net/ui/widget/tabs/Input.py +2 -2
- pygpt_net/ui/widget/tabs/body.py +2 -1
- pygpt_net/ui/widget/tabs/layout.py +195 -0
- pygpt_net/ui/widget/tabs/output.py +218 -55
- pygpt_net/ui/widget/textarea/html.py +11 -1
- pygpt_net/ui/widget/textarea/output.py +10 -1
- pygpt_net/ui/widget/textarea/search_input.py +4 -1
- pygpt_net/ui/widget/textarea/web.py +49 -9
- {pygpt_net-2.4.36.post1.dist-info → pygpt_net-2.4.41.dist-info}/METADATA +72 -115
- {pygpt_net-2.4.36.post1.dist-info → pygpt_net-2.4.41.dist-info}/RECORD +258 -250
- /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
- {pygpt_net-2.4.36.post1.dist-info → pygpt_net-2.4.41.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.36.post1.dist-info → pygpt_net-2.4.41.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.36.post1.dist-info → pygpt_net-2.4.41.dist-info}/entry_points.txt +0 -0
@@ -6,9 +6,12 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Any, Optional
|
13
|
+
|
14
|
+
|
12
15
|
class Confirm:
|
13
16
|
def __init__(self, window=None):
|
14
17
|
"""
|
@@ -18,7 +21,12 @@ class Confirm:
|
|
18
21
|
"""
|
19
22
|
self.window = window
|
20
23
|
|
21
|
-
def accept(
|
24
|
+
def accept(
|
25
|
+
self,
|
26
|
+
type: str,
|
27
|
+
id: Optional[str] = None,
|
28
|
+
parent_object: Any = None
|
29
|
+
):
|
22
30
|
"""
|
23
31
|
Confirm dialog accept
|
24
32
|
|
@@ -154,7 +162,7 @@ class Confirm:
|
|
154
162
|
|
155
163
|
# tab close all
|
156
164
|
elif type == 'tab.close_all':
|
157
|
-
self.window.controller.ui.tabs.close_all(id, True) # by type
|
165
|
+
self.window.controller.ui.tabs.close_all(id, 0, True) # by type
|
158
166
|
|
159
167
|
# editor
|
160
168
|
elif type == 'editor.changed.clear':
|
@@ -264,7 +272,11 @@ class Confirm:
|
|
264
272
|
elif type == 'prompt.custom.delete':
|
265
273
|
self.window.controller.presets.delete_prompt(id, True)
|
266
274
|
|
267
|
-
def dismiss(
|
275
|
+
def dismiss(
|
276
|
+
self,
|
277
|
+
type: str,
|
278
|
+
id: Any
|
279
|
+
):
|
268
280
|
"""
|
269
281
|
Confirm dialog dismiss
|
270
282
|
|
@@ -283,7 +295,12 @@ class Confirm:
|
|
283
295
|
|
284
296
|
self.window.ui.dialog['confirm'].close()
|
285
297
|
|
286
|
-
def accept_rename(
|
298
|
+
def accept_rename(
|
299
|
+
self,
|
300
|
+
type: str,
|
301
|
+
id: Any,
|
302
|
+
name: str
|
303
|
+
):
|
287
304
|
"""
|
288
305
|
Update name of object
|
289
306
|
|
@@ -325,7 +342,12 @@ class Confirm:
|
|
325
342
|
elif type == 'prompt.custom.new':
|
326
343
|
self.window.controller.presets.save_prompt(name, True)
|
327
344
|
|
328
|
-
def accept_create(
|
345
|
+
def accept_create(
|
346
|
+
self,
|
347
|
+
type: str,
|
348
|
+
id: any,
|
349
|
+
name: str
|
350
|
+
):
|
329
351
|
"""
|
330
352
|
Create new object
|
331
353
|
|
@@ -349,7 +371,12 @@ class Confirm:
|
|
349
371
|
elif type == 'ctx.group':
|
350
372
|
self.window.controller.ctx.create_group(name, id)
|
351
373
|
|
352
|
-
def accept_url(
|
374
|
+
def accept_url(
|
375
|
+
self,
|
376
|
+
type: str,
|
377
|
+
id: any,
|
378
|
+
url: str
|
379
|
+
):
|
353
380
|
"""
|
354
381
|
Update URL provided
|
355
382
|
|
@@ -6,9 +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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Any
|
13
|
+
|
12
14
|
from PySide6.QtCore import Qt
|
13
15
|
from PySide6.QtGui import QStandardItemModel
|
14
16
|
|
@@ -95,7 +97,7 @@ class Debug:
|
|
95
97
|
self.initialized[id] = True
|
96
98
|
self.window.ui.debug[id].on_data_end()
|
97
99
|
|
98
|
-
def add(self, id: str, k: str, v:
|
100
|
+
def add(self, id: str, k: str, v: Any):
|
99
101
|
"""
|
100
102
|
Append debug entry
|
101
103
|
|
@@ -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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import webbrowser
|
@@ -32,7 +32,12 @@ class Info:
|
|
32
32
|
def setup(self):
|
33
33
|
pass
|
34
34
|
|
35
|
-
def toggle(
|
35
|
+
def toggle(
|
36
|
+
self,
|
37
|
+
id: str,
|
38
|
+
width: int = 400,
|
39
|
+
height: int = 400
|
40
|
+
):
|
36
41
|
"""
|
37
42
|
Toggle info dialog
|
38
43
|
|
pygpt_net/controller/files.py
CHANGED
@@ -6,12 +6,13 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
14
|
import shutil
|
15
|
+
from typing import Optional
|
15
16
|
|
16
17
|
from PySide6.QtCore import QUrl
|
17
18
|
from PySide6.QtGui import QDesktopServices
|
@@ -38,7 +39,11 @@ class Files:
|
|
38
39
|
# TODO: implement this
|
39
40
|
pass
|
40
41
|
|
41
|
-
def delete_recursive(
|
42
|
+
def delete_recursive(
|
43
|
+
self,
|
44
|
+
path: str,
|
45
|
+
force: bool = False
|
46
|
+
):
|
42
47
|
"""
|
43
48
|
Delete directory with all files
|
44
49
|
|
@@ -62,7 +67,12 @@ class Files:
|
|
62
67
|
self.window.core.debug.log(e)
|
63
68
|
print("Error deleting directory: {} - {}".format(path, e))
|
64
69
|
|
65
|
-
def touch_file(
|
70
|
+
def touch_file(
|
71
|
+
self,
|
72
|
+
path: str,
|
73
|
+
name: Optional[str] = None,
|
74
|
+
force: bool = False
|
75
|
+
):
|
66
76
|
"""
|
67
77
|
Touch empty file
|
68
78
|
|
@@ -90,7 +100,11 @@ class Files:
|
|
90
100
|
self.window.core.debug.log(e)
|
91
101
|
print("Error creating file: {} - {}".format(path, e))
|
92
102
|
|
93
|
-
def delete(
|
103
|
+
def delete(
|
104
|
+
self,
|
105
|
+
path: str,
|
106
|
+
force: bool = False
|
107
|
+
):
|
94
108
|
"""
|
95
109
|
Delete file or directory
|
96
110
|
|
@@ -123,7 +137,12 @@ class Files:
|
|
123
137
|
self.window.core.debug.log(e)
|
124
138
|
print("Error deleting file: {} - {}".format(path, e))
|
125
139
|
|
126
|
-
def duplicate_local(
|
140
|
+
def duplicate_local(
|
141
|
+
self,
|
142
|
+
path: str,
|
143
|
+
name: str,
|
144
|
+
force: bool = False
|
145
|
+
):
|
127
146
|
"""
|
128
147
|
Duplicate file or directory
|
129
148
|
|
@@ -198,7 +217,10 @@ class Files:
|
|
198
217
|
self.window.core.debug.log(e)
|
199
218
|
print("Error downloading file: {} - {}".format(path, e))
|
200
219
|
|
201
|
-
def upload_local(
|
220
|
+
def upload_local(
|
221
|
+
self,
|
222
|
+
parent_path: Optional[str] = None
|
223
|
+
):
|
202
224
|
"""
|
203
225
|
Upload local file(s) to directory
|
204
226
|
|
@@ -263,7 +285,11 @@ class Files:
|
|
263
285
|
self.window.ui.dialog['rename'].show()
|
264
286
|
self.window.ui.dialog['rename'].input.setFocus()
|
265
287
|
|
266
|
-
def update_name(
|
288
|
+
def update_name(
|
289
|
+
self,
|
290
|
+
path: str,
|
291
|
+
name: str
|
292
|
+
):
|
267
293
|
"""
|
268
294
|
Update name of file or directory
|
269
295
|
|
@@ -283,7 +309,11 @@ class Files:
|
|
283
309
|
self.window.ui.dialog['rename'].close()
|
284
310
|
self.update_explorer()
|
285
311
|
|
286
|
-
def open_dir(
|
312
|
+
def open_dir(
|
313
|
+
self,
|
314
|
+
path: str,
|
315
|
+
select: bool = False
|
316
|
+
):
|
287
317
|
"""
|
288
318
|
Open file or directory in file manager
|
289
319
|
|
@@ -308,7 +338,11 @@ class Files:
|
|
308
338
|
else:
|
309
339
|
subprocess.run(['xdg-open', path])
|
310
340
|
|
311
|
-
def open_in_file_manager(
|
341
|
+
def open_in_file_manager(
|
342
|
+
self,
|
343
|
+
path: str,
|
344
|
+
select: bool = False
|
345
|
+
):
|
312
346
|
"""
|
313
347
|
Open in file manager
|
314
348
|
|
@@ -341,7 +375,11 @@ class Files:
|
|
341
375
|
self.window.ui.dialog['create'].show()
|
342
376
|
self.window.ui.dialog['create'].input.setFocus()
|
343
377
|
|
344
|
-
def make_dir(
|
378
|
+
def make_dir(
|
379
|
+
self,
|
380
|
+
path: str,
|
381
|
+
name: Optional[str] = None
|
382
|
+
):
|
345
383
|
"""
|
346
384
|
Make directory
|
347
385
|
|
pygpt_net/controller/finder.py
CHANGED
@@ -6,9 +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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Any
|
13
|
+
|
12
14
|
|
13
15
|
class Finder:
|
14
16
|
def __init__(self, window=None):
|
@@ -86,7 +88,7 @@ class Finder:
|
|
86
88
|
"""
|
87
89
|
return self.window.ui.nodes['dialog.find.input'].text()
|
88
90
|
|
89
|
-
def set(self, parent):
|
91
|
+
def set(self, parent: Any):
|
90
92
|
"""
|
91
93
|
Set current parent for the finder
|
92
94
|
|
@@ -94,7 +96,7 @@ class Finder:
|
|
94
96
|
"""
|
95
97
|
self.parent = parent
|
96
98
|
|
97
|
-
def unset(self, parent):
|
99
|
+
def unset(self, parent: Any):
|
98
100
|
"""
|
99
101
|
Unset parent from the finder
|
100
102
|
|
@@ -103,7 +105,7 @@ class Finder:
|
|
103
105
|
if self.parent == parent:
|
104
106
|
self.parent = None
|
105
107
|
|
106
|
-
def open(self, parent):
|
108
|
+
def open(self, parent: Any):
|
107
109
|
"""
|
108
110
|
Open finder dialog
|
109
111
|
|
@@ -134,7 +136,11 @@ class Finder:
|
|
134
136
|
self.window.ui.dialog['find'].hide()
|
135
137
|
self.opened = False
|
136
138
|
|
137
|
-
def clear(
|
139
|
+
def clear(
|
140
|
+
self,
|
141
|
+
restore: bool = False,
|
142
|
+
to_end: bool = True
|
143
|
+
):
|
138
144
|
"""
|
139
145
|
Clear current parent highlights
|
140
146
|
|
@@ -6,13 +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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
|
+
from typing import Optional
|
13
14
|
|
14
15
|
from pygpt_net.item.ctx import CtxItem
|
15
16
|
from pygpt_net.utils import trans
|
17
|
+
|
16
18
|
from .common import Common
|
17
19
|
from .indexer import Indexer
|
18
20
|
from .settings import Settings
|
@@ -227,7 +229,12 @@ class Idx:
|
|
227
229
|
return True
|
228
230
|
return False
|
229
231
|
|
230
|
-
def on_ctx_end(
|
232
|
+
def on_ctx_end(
|
233
|
+
self,
|
234
|
+
ctx: Optional[CtxItem] = None,
|
235
|
+
mode: Optional[str] = None,
|
236
|
+
sync: bool = False
|
237
|
+
):
|
231
238
|
"""
|
232
239
|
After context item updated (request + response received)
|
233
240
|
|
@@ -255,7 +262,7 @@ class Idx:
|
|
255
262
|
if meta is not None:
|
256
263
|
self.indexer.index_ctx_realtime(meta, idx, sync=sync)
|
257
264
|
|
258
|
-
def after_index(self, idx: str = None):
|
265
|
+
def after_index(self, idx: Optional[str] = None):
|
259
266
|
"""
|
260
267
|
Called after index (update things, etc...)
|
261
268
|
|
@@ -6,9 +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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import List, Dict
|
13
|
+
|
12
14
|
|
13
15
|
class Common:
|
14
16
|
def __init__(self, window=None):
|
@@ -23,7 +25,7 @@ class Common:
|
|
23
25
|
"""Set up UI"""
|
24
26
|
pass
|
25
27
|
|
26
|
-
def get_loaders_choices(self) ->
|
28
|
+
def get_loaders_choices(self) -> List[Dict[str, str]]:
|
27
29
|
"""
|
28
30
|
Get available loaders choices
|
29
31
|
|
@@ -6,11 +6,12 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
|
+
from typing import Any, List, Dict
|
14
15
|
|
15
16
|
from PySide6.QtCore import Slot, QObject
|
16
17
|
from PySide6.QtWidgets import QApplication
|
@@ -218,8 +219,8 @@ class Indexer(QObject):
|
|
218
219
|
self,
|
219
220
|
path: str,
|
220
221
|
idx: str = "base",
|
221
|
-
replace: bool =
|
222
|
-
recursive: bool =
|
222
|
+
replace: bool = False,
|
223
|
+
recursive: bool = False
|
223
224
|
):
|
224
225
|
"""
|
225
226
|
Index all files in path (threaded)
|
@@ -228,7 +229,6 @@ class Indexer(QObject):
|
|
228
229
|
:param idx: index name
|
229
230
|
:param replace: replace index
|
230
231
|
:param recursive: recursive indexing
|
231
|
-
:param silent: silent mode
|
232
232
|
"""
|
233
233
|
self.window.update_status(trans('idx.status.indexing'))
|
234
234
|
self.worker = IndexWorker()
|
@@ -245,10 +245,10 @@ class Indexer(QObject):
|
|
245
245
|
|
246
246
|
def index_paths(
|
247
247
|
self,
|
248
|
-
paths:
|
248
|
+
paths: List[str],
|
249
249
|
idx: str = "base",
|
250
|
-
replace: bool =
|
251
|
-
recursive: bool =
|
250
|
+
replace: bool = False,
|
251
|
+
recursive: bool = False
|
252
252
|
):
|
253
253
|
"""
|
254
254
|
Index all files in path (threaded)
|
@@ -380,8 +380,8 @@ class Indexer(QObject):
|
|
380
380
|
self,
|
381
381
|
idx: str,
|
382
382
|
loader: str,
|
383
|
-
params:
|
384
|
-
config:
|
383
|
+
params: Dict[str, Any],
|
384
|
+
config: Dict[str, Any],
|
385
385
|
replace: bool = True,
|
386
386
|
):
|
387
387
|
"""
|
@@ -456,7 +456,11 @@ class Indexer(QObject):
|
|
456
456
|
idx_name = self.window.core.idx.get_by_idx(idx)
|
457
457
|
self.clear(idx_name)
|
458
458
|
|
459
|
-
def clear(
|
459
|
+
def clear(
|
460
|
+
self,
|
461
|
+
idx: str,
|
462
|
+
force: bool = False
|
463
|
+
):
|
460
464
|
"""
|
461
465
|
Clear index data
|
462
466
|
|
@@ -497,7 +501,11 @@ class Indexer(QObject):
|
|
497
501
|
|
498
502
|
self.window.tools.get("indexer").refresh()
|
499
503
|
|
500
|
-
def truncate(
|
504
|
+
def truncate(
|
505
|
+
self,
|
506
|
+
idx: str,
|
507
|
+
force: bool = False
|
508
|
+
):
|
501
509
|
"""
|
502
510
|
Truncate index data
|
503
511
|
|
@@ -542,7 +550,7 @@ class Indexer(QObject):
|
|
542
550
|
self.window.tools.get("indexer").refresh()
|
543
551
|
|
544
552
|
@Slot(object)
|
545
|
-
def handle_error(self, err:
|
553
|
+
def handle_error(self, err: Any):
|
546
554
|
"""
|
547
555
|
Handle thread error signal
|
548
556
|
|
@@ -560,7 +568,7 @@ class Indexer(QObject):
|
|
560
568
|
self,
|
561
569
|
idx: str,
|
562
570
|
num: int,
|
563
|
-
errors:
|
571
|
+
errors: List[str],
|
564
572
|
silent: bool = False
|
565
573
|
):
|
566
574
|
"""
|
@@ -600,7 +608,7 @@ class Indexer(QObject):
|
|
600
608
|
self,
|
601
609
|
idx: str,
|
602
610
|
num: int,
|
603
|
-
errors:
|
611
|
+
errors: List[str],
|
604
612
|
silent: bool = False
|
605
613
|
):
|
606
614
|
"""
|
@@ -631,8 +639,8 @@ class Indexer(QObject):
|
|
631
639
|
def handle_finished_file(
|
632
640
|
self,
|
633
641
|
idx: str,
|
634
|
-
files:
|
635
|
-
errors:
|
642
|
+
files: Dict[str, str],
|
643
|
+
errors: List[str],
|
636
644
|
silent: bool = False
|
637
645
|
):
|
638
646
|
"""
|
@@ -667,7 +675,7 @@ class Indexer(QObject):
|
|
667
675
|
self,
|
668
676
|
idx: str,
|
669
677
|
num: int,
|
670
|
-
errors:
|
678
|
+
errors: List[str],
|
671
679
|
silent: bool = False
|
672
680
|
):
|
673
681
|
"""
|
@@ -6,12 +6,13 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
|
+
from typing import Dict, Any
|
13
14
|
|
14
|
-
from PySide6.QtWidgets import QHBoxLayout, QLabel, QMenu
|
15
|
+
from PySide6.QtWidgets import QHBoxLayout, QLabel, QMenu, QLayout
|
15
16
|
|
16
17
|
from pygpt_net.ui.widget.element.button import ContextMenuButton
|
17
18
|
from pygpt_net.ui.widget.element.labels import HelpLabel, TitleLabel
|
@@ -35,7 +36,12 @@ class Settings:
|
|
35
36
|
"""
|
36
37
|
return ["update"]
|
37
38
|
|
38
|
-
def append(
|
39
|
+
def append(
|
40
|
+
self,
|
41
|
+
content: Dict[str, QLayout],
|
42
|
+
widgets: Dict[str, Any],
|
43
|
+
options: Dict[str, Any],
|
44
|
+
):
|
39
45
|
"""
|
40
46
|
Append extra settings to settings dialog (section: llama-index)
|
41
47
|
|
@@ -6,10 +6,12 @@
|
|
6
6
|
# GitHub: https://github.com/szczyglis-dev/py-gpt #
|
7
7
|
# MIT License #
|
8
8
|
# Created By : Marcin Szczygliński #
|
9
|
-
# Updated Date: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import time
|
13
|
+
from typing import Any, Dict, Optional, Union, List
|
14
|
+
|
13
15
|
from PySide6.QtCore import QObject, Slot
|
14
16
|
|
15
17
|
from pygpt_net.core.types import (
|
@@ -117,14 +119,18 @@ class Kernel(QObject):
|
|
117
119
|
|
118
120
|
event.data["response"] = response # update response
|
119
121
|
|
120
|
-
def input(
|
122
|
+
def input(
|
123
|
+
self,
|
124
|
+
context: BridgeContext,
|
125
|
+
extra: Dict[str, Any],
|
126
|
+
event: KernelEvent
|
127
|
+
):
|
121
128
|
"""
|
122
129
|
Input message to kernel
|
123
130
|
|
124
131
|
:param context: bridge context
|
125
132
|
:param extra: extra data
|
126
133
|
:param event: kernel event
|
127
|
-
:return: response
|
128
134
|
"""
|
129
135
|
if self.stopped() and event.name != KernelEvent.INPUT_USER:
|
130
136
|
return
|
@@ -135,7 +141,12 @@ class Kernel(QObject):
|
|
135
141
|
]:
|
136
142
|
return self.window.controller.chat.input.send(context, extra)
|
137
143
|
|
138
|
-
def queue(
|
144
|
+
def queue(
|
145
|
+
self,
|
146
|
+
context: BridgeContext,
|
147
|
+
extra: Dict[str, Any],
|
148
|
+
event: KernelEvent
|
149
|
+
) -> Optional[Union[bool, str, List[Dict]]]:
|
139
150
|
"""
|
140
151
|
Queue messages to kernel
|
141
152
|
|
@@ -170,7 +181,12 @@ class Kernel(QObject):
|
|
170
181
|
elif event.name == KernelEvent.CALL:
|
171
182
|
return self.call(context, extra, event)
|
172
183
|
|
173
|
-
def call(
|
184
|
+
def call(
|
185
|
+
self,
|
186
|
+
context: BridgeContext,
|
187
|
+
extra: Dict[str, Any],
|
188
|
+
event: KernelEvent
|
189
|
+
) -> Optional[Union[bool, str]]:
|
174
190
|
"""
|
175
191
|
Execute message
|
176
192
|
|
@@ -189,7 +205,12 @@ class Kernel(QObject):
|
|
189
205
|
elif event.name == KernelEvent.CALL:
|
190
206
|
return self.window.core.bridge.call(context, extra)
|
191
207
|
|
192
|
-
def reply(
|
208
|
+
def reply(
|
209
|
+
self,
|
210
|
+
context: BridgeContext,
|
211
|
+
extra: Dict[str, Any],
|
212
|
+
event: KernelEvent
|
213
|
+
) -> Optional[List[Dict]]:
|
193
214
|
"""
|
194
215
|
Queue reply message
|
195
216
|
|
@@ -206,14 +227,18 @@ class Kernel(QObject):
|
|
206
227
|
elif event.name == KernelEvent.REPLY_RETURN:
|
207
228
|
return self.input(context, extra, KernelEvent(KernelEvent.INPUT_SYSTEM))
|
208
229
|
|
209
|
-
def output(
|
230
|
+
def output(
|
231
|
+
self,
|
232
|
+
context: BridgeContext,
|
233
|
+
extra: Dict[str, Any],
|
234
|
+
event: KernelEvent
|
235
|
+
):
|
210
236
|
"""
|
211
237
|
Handle output from kernel
|
212
238
|
|
213
239
|
:param context: bridge context
|
214
240
|
:param extra: extra data
|
215
241
|
:param event: kernel event
|
216
|
-
:return: response
|
217
242
|
"""
|
218
243
|
if self.stopped():
|
219
244
|
return
|
@@ -251,6 +276,7 @@ class Kernel(QObject):
|
|
251
276
|
"""
|
252
277
|
self.halt = True
|
253
278
|
self.window.controller.chat.common.stop(exit=exit) # it stops legacy agent also
|
279
|
+
self.window.controller.audio.stop_audio()
|
254
280
|
if not exit:
|
255
281
|
self.window.dispatch(KernelEvent(KernelEvent.STOP))
|
256
282
|
self.set_state(KernelEvent(KernelEvent.STATE_IDLE, {"msg": trans("status.stopped")}))
|
@@ -6,10 +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: 2024.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import json
|
13
|
+
from typing import Optional, Dict, Any, List
|
13
14
|
|
14
15
|
from pygpt_net.core.events import KernelEvent, RenderEvent
|
15
16
|
from pygpt_net.core.bridge import BridgeContext
|
@@ -28,7 +29,11 @@ class Reply:
|
|
28
29
|
self.last_result = None
|
29
30
|
self.reply_idx = -1
|
30
31
|
|
31
|
-
def add(
|
32
|
+
def add(
|
33
|
+
self,
|
34
|
+
context: BridgeContext,
|
35
|
+
extra: Dict[str, Any] = None
|
36
|
+
) -> List[Dict]:
|
32
37
|
"""
|
33
38
|
Send reply from plugins to model
|
34
39
|
|
@@ -129,7 +134,11 @@ class Reply:
|
|
129
134
|
})
|
130
135
|
self.window.dispatch(event)
|
131
136
|
|
132
|
-
def run_post_response(
|
137
|
+
def run_post_response(
|
138
|
+
self,
|
139
|
+
ctx: CtxItem,
|
140
|
+
extra_data: Optional[Dict[str, Any]] = None
|
141
|
+
):
|
133
142
|
"""
|
134
143
|
Run post-response operations
|
135
144
|
|