pygpt-net 2.6.17.post1__py3-none-any.whl → 2.6.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. pygpt_net/CHANGELOG.txt +10 -0
  2. pygpt_net/__init__.py +3 -3
  3. pygpt_net/app.py +2 -0
  4. pygpt_net/controller/chat/output.py +2 -2
  5. pygpt_net/controller/chat/response.py +17 -28
  6. pygpt_net/core/agents/observer/evaluation.py +9 -9
  7. pygpt_net/core/agents/runner.py +53 -42
  8. pygpt_net/core/agents/tools.py +59 -40
  9. pygpt_net/core/experts/experts.py +32 -366
  10. pygpt_net/core/experts/worker.py +362 -0
  11. pygpt_net/core/idx/chat.py +49 -82
  12. pygpt_net/core/idx/context.py +10 -14
  13. pygpt_net/core/idx/idx.py +19 -8
  14. pygpt_net/core/idx/indexing.py +35 -38
  15. pygpt_net/core/idx/response.py +91 -2
  16. pygpt_net/core/idx/worker.py +3 -8
  17. pygpt_net/core/render/web/body.py +18 -1
  18. pygpt_net/core/render/web/renderer.py +28 -13
  19. pygpt_net/core/types/__init__.py +2 -1
  20. pygpt_net/core/types/tools.py +22 -0
  21. pygpt_net/data/config/config.json +4 -4
  22. pygpt_net/data/config/models.json +3 -3
  23. pygpt_net/data/config/presets/current.llama_index.json +1 -1
  24. pygpt_net/provider/agents/openai/evolve.py +1 -1
  25. pygpt_net/provider/gpt/summarizer.py +4 -0
  26. pygpt_net/ui/widget/filesystem/explorer.py +7 -9
  27. pygpt_net/utils.py +2 -0
  28. {pygpt_net-2.6.17.post1.dist-info → pygpt_net-2.6.19.dist-info}/METADATA +12 -2
  29. {pygpt_net-2.6.17.post1.dist-info → pygpt_net-2.6.19.dist-info}/RECORD +32 -30
  30. {pygpt_net-2.6.17.post1.dist-info → pygpt_net-2.6.19.dist-info}/LICENSE +0 -0
  31. {pygpt_net-2.6.17.post1.dist-info → pygpt_net-2.6.19.dist-info}/WHEEL +0 -0
  32. {pygpt_net-2.6.17.post1.dist-info → pygpt_net-2.6.19.dist-info}/entry_points.txt +0 -0
@@ -422,7 +422,7 @@ class Renderer(BaseRenderer):
422
422
  self.init(pid)
423
423
 
424
424
  if clear:
425
- self.reset(meta)
425
+ self.reset(meta, clear_nodes=False) # nodes will be cleared later, in flush_output()
426
426
 
427
427
  self.pids[pid].use_buffer = True
428
428
  self.pids[pid].html = ""
@@ -482,7 +482,8 @@ class Renderer(BaseRenderer):
482
482
  if html_parts:
483
483
  self.append(
484
484
  pid,
485
- "".join(html_parts)
485
+ "".join(html_parts),
486
+ replace=True,
486
487
  )
487
488
 
488
489
  html_parts.clear()
@@ -495,6 +496,7 @@ class Renderer(BaseRenderer):
495
496
  pid,
496
497
  self.pids[pid].html,
497
498
  flush=True,
499
+ replace=True,
498
500
  )
499
501
  self.parser.reset()
500
502
 
@@ -894,7 +896,8 @@ class Renderer(BaseRenderer):
894
896
  self,
895
897
  pid,
896
898
  html: str,
897
- flush: bool = False
899
+ flush: bool = False,
900
+ replace: bool = False,
898
901
  ):
899
902
  """
900
903
  Append text to output
@@ -902,11 +905,12 @@ class Renderer(BaseRenderer):
902
905
  :param pid: ctx pid
903
906
  :param html: HTML code
904
907
  :param flush: True if flush only
908
+ :param replace: True if replace current content
905
909
  """
906
910
  if self.pids[pid].loaded and not self.pids[pid].use_buffer:
907
911
  self.clear_chunks(pid)
908
912
  if html:
909
- self.flush_output(pid, html)
913
+ self.flush_output(pid, html, replace)
910
914
  self.pids[pid].clear()
911
915
  else:
912
916
  if not flush:
@@ -1064,33 +1068,37 @@ class Renderer(BaseRenderer):
1064
1068
 
1065
1069
  def reset(
1066
1070
  self,
1067
- meta: Optional[CtxMeta] = None
1071
+ meta: Optional[CtxMeta] = None,
1072
+ clear_nodes: bool = True
1068
1073
  ):
1069
1074
  """
1070
1075
  Reset
1071
1076
 
1072
1077
  :param meta: Context meta
1078
+ :param clear_nodes: True if clear nodes
1073
1079
  """
1074
1080
  pid = self.get_pid(meta)
1075
1081
  if pid is not None and pid in self.pids:
1076
- self.reset_by_pid(pid)
1082
+ self.reset_by_pid(pid, clear_nodes=clear_nodes)
1077
1083
  else:
1078
1084
  if meta is not None:
1079
1085
  pid = self.get_or_create_pid(meta)
1080
- self.reset_by_pid(pid)
1086
+ self.reset_by_pid(pid, clear_nodes=clear_nodes)
1081
1087
 
1082
1088
  self.clear_live(meta, CtxItem())
1083
1089
 
1084
- def reset_by_pid(self, pid: Optional[int]):
1090
+ def reset_by_pid(self, pid: Optional[int], clear_nodes: bool = True):
1085
1091
  """
1086
1092
  Reset by PID
1087
1093
 
1088
1094
  :param pid: context PID
1095
+ :param clear_nodes: True if clear nodes
1089
1096
  """
1090
1097
  self.parser.reset()
1091
1098
  self.pids[pid].item = None
1092
1099
  self.pids[pid].html = ""
1093
- self.clear_nodes(pid)
1100
+ if clear_nodes:
1101
+ self.clear_nodes(pid)
1094
1102
  self.clear_chunks(pid)
1095
1103
  self.pids[pid].images_appended = []
1096
1104
  self.pids[pid].urls_appended = []
@@ -1379,18 +1387,25 @@ class Renderer(BaseRenderer):
1379
1387
  def flush_output(
1380
1388
  self,
1381
1389
  pid: Optional[int],
1382
- html: str
1390
+ html: str,
1391
+ replace: bool = False
1383
1392
  ):
1384
1393
  """
1385
1394
  Flush output
1386
1395
 
1387
1396
  :param pid: context PID
1388
1397
  :param html: HTML code
1398
+ :param replace: True if replace current content
1389
1399
  """
1390
1400
  try:
1391
- self.get_output_node_by_pid(pid).page().runJavaScript(
1392
- f"""if (typeof window.appendNode !== 'undefined') appendNode({self.to_json(self.sanitize_html(html))});"""
1393
- )
1401
+ if replace:
1402
+ self.get_output_node_by_pid(pid).page().runJavaScript(
1403
+ f"if (typeof window.replaceNodes !== 'undefined') replaceNodes({self.to_json(self.sanitize_html(html))});"
1404
+ )
1405
+ else:
1406
+ self.get_output_node_by_pid(pid).page().runJavaScript(
1407
+ f"if (typeof window.appendNode !== 'undefined') appendNode({self.to_json(self.sanitize_html(html))});"
1408
+ )
1394
1409
  except Exception:
1395
1410
  pass
1396
1411
  html = None
@@ -13,4 +13,5 @@ from .agent import *
13
13
  from .mode import *
14
14
  from .model import *
15
15
  from .openai import *
16
- from .multimodal import *
16
+ from .multimodal import *
17
+ from .tools import *
@@ -0,0 +1,22 @@
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.08.21 07:00:00 #
10
+ # ================================================== #
11
+
12
+ TOOL_EXPERT_CALL_NAME = "expert_call"
13
+ TOOL_EXPERT_CALL_DESCRIPTION = "Call the expert"
14
+ TOOL_EXPERT_CALL_PARAM_ID_DESCRIPTION = "Expert ID"
15
+ TOOL_EXPERT_CALL_PARAM_QUERY_DESCRIPTION = "Query to expert"
16
+
17
+ TOOL_QUERY_ENGINE_NAME = "get_context"
18
+ TOOL_QUERY_ENGINE_DESCRIPTION = "Get additional context for provided question. Use this whenever you need additional context to provide an answer."
19
+ TOOL_QUERY_ENGINE_PARAM_QUERY_DESCRIPTION = "query to retrieve additional context for the question"
20
+ TOOL_QUERY_ENGINE_SPEC = ("**" + TOOL_QUERY_ENGINE_NAME + "**: "
21
+ + TOOL_QUERY_ENGINE_DESCRIPTION +
22
+ "available params: {'query': {'type': 'string', 'description': 'query string'}}, required: [query]")
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.17",
4
- "app.version": "2.6.17",
5
- "updated_at": "2025-08-21T00:00:00"
3
+ "version": "2.6.19",
4
+ "app.version": "2.6.19",
5
+ "updated_at": "2025-08-22T00:00:00"
6
6
  },
7
7
  "access.audio.event.speech": false,
8
8
  "access.audio.event.speech.disabled": [],
@@ -50,7 +50,7 @@
50
50
  "agent.func_call.native": false,
51
51
  "agent.goal.notify": false,
52
52
  "agent.idx": "base",
53
- "agent.idx.auto_retrieve": true,
53
+ "agent.idx.auto_retrieve": false,
54
54
  "agent.iterations": 3,
55
55
  "agent.llama.idx": "base",
56
56
  "agent.llama.loop.enabled": false,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "__meta__": {
3
- "version": "2.6.17",
4
- "app.version": "2.6.17",
5
- "updated_at": "2025-08-21T23:07:35"
3
+ "version": "2.6.19",
4
+ "app.version": "2.6.19",
5
+ "updated_at": "2025-08-22T23:07:35"
6
6
  },
7
7
  "items": {
8
8
  "SpeakLeash/bielik-11b-v2.3-instruct:Q4_K_M": {
@@ -2,7 +2,7 @@
2
2
  "name": "*",
3
3
  "ai_name": "",
4
4
  "user_name": "",
5
- "prompt": "You are a helpful assistant. Use fenced code for code blocks.",
5
+ "prompt": "You are a helpful assistant. Use markdown for code blocks.",
6
6
  "temperature": 1.0,
7
7
  "chat": false,
8
8
  "completion": false,
@@ -412,7 +412,7 @@ class Agent(BaseAgent):
412
412
  handler.reset()
413
413
  async for event in results[j].stream_events():
414
414
  if bridge.stopped():
415
- result.cancel()
415
+ results[j].cancel()
416
416
  bridge.on_stop(ctx)
417
417
  break
418
418
  final_output, response_id = handler.handle(event, ctx, buffer=False)
@@ -35,6 +35,10 @@ class Summarizer:
35
35
  system_prompt = self.window.core.prompt.get('ctx.auto_summary.system')
36
36
  truncated_input = str(ctx.input)[:max_chars] + '...' if len(str(ctx.input)) > max_chars else str(ctx.input)
37
37
  truncated_output = str(ctx.output)[:max_chars] + '...' if len(str(ctx.output)) > max_chars else str(ctx.output)
38
+
39
+ if not truncated_input and (not truncated_output or truncated_output == "None"):
40
+ return ""
41
+
38
42
  if truncated_output and truncated_output != "None":
39
43
  text = (self.window.core.prompt.get('ctx.auto_summary.user').
40
44
  replace("{input}", truncated_input).
@@ -178,8 +178,8 @@ class FileExplorer(QWidget):
178
178
  if len(idx_list) > 0:
179
179
  for idx in idx_list:
180
180
  id = idx['id']
181
- name = idx['name'] + " (" + idx['id'] + ")"
182
- action = menu.addAction("IDX: " + name)
181
+ name = f"{idx['name']} ({idx['id']})"
182
+ action = menu.addAction(f"IDX: {name}")
183
183
  action.triggered.connect(
184
184
  lambda checked=False,
185
185
  id=id: self.window.controller.idx.indexer.index_all_files(id)
@@ -198,8 +198,8 @@ class FileExplorer(QWidget):
198
198
  if len(idx_list) > 0:
199
199
  for idx in idx_list:
200
200
  id = idx['id']
201
- name = idx['name'] + " (" + idx['id'] + ")"
202
- action = menu.addAction("IDX: " + name)
201
+ name = f"{idx['name']} ({idx['id']})"
202
+ action = menu.addAction(f"IDX: {name}")
203
203
  action.triggered.connect(
204
204
  lambda checked=False,
205
205
  id=id: self.window.controller.idx.indexer.clear(id)
@@ -395,8 +395,8 @@ class FileExplorer(QWidget):
395
395
  if len(idx_list) > 0:
396
396
  for idx in idx_list:
397
397
  id = idx['id']
398
- name = idx['name'] + " (" + idx['id'] + ")"
399
- action = QAction(QIcon(":/icons/db.svg"), "IDX: " + name, self)
398
+ name = f"{idx['name']} ({idx['id']})"
399
+ action = QAction(QIcon(":/icons/db.svg"), f"IDX: {name}", self)
400
400
  action.triggered.connect(
401
401
  lambda checked=False,
402
402
  id=id,
@@ -558,9 +558,7 @@ class IndexedFileSystemModel(QFileSystemModel):
558
558
  dt = ts.strftime("%H:%M")
559
559
  else:
560
560
  dt = ts.strftime("%Y-%m-%d %H:%M")
561
- content = ''
562
- content += dt
563
- content += ' (' + ",".join(status['indexed_in']) + ')'
561
+ content = f"{dt} ({','.join(status['indexed_in'])})"
564
562
  else:
565
563
  content = '-' # if file not indexed
566
564
  return content
pygpt_net/utils.py CHANGED
@@ -263,6 +263,8 @@ def mem_clean():
263
263
  """
264
264
  Clean memory by removing unused variables
265
265
  """
266
+ return # temporary disabled
267
+
266
268
  import sys, gc
267
269
  ok = False
268
270
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pygpt-net
3
- Version: 2.6.17.post1
3
+ Version: 2.6.19
4
4
  Summary: Desktop AI Assistant powered by: OpenAI GPT-5, o1, o3, GPT-4, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, internet access, file handling, command execution and more.
5
5
  License: MIT
6
6
  Keywords: py_gpt,py-gpt,pygpt,desktop,app,o1,o3,gpt-5,gpt,gpt4,gpt-4o,gpt-4v,gpt3.5,gpt-4,gpt-4-vision,gpt-3.5,llama3,mistral,gemini,grok,deepseek,bielik,claude,tts,whisper,vision,chatgpt,dall-e,chat,chatbot,assistant,text completion,image generation,ai,api,openai,api key,langchain,llama-index,ollama,presets,ui,qt,pyside
@@ -109,7 +109,7 @@ Description-Content-Type: text/markdown
109
109
 
110
110
  [![pygpt](https://snapcraft.io/pygpt/badge.svg)](https://snapcraft.io/pygpt)
111
111
 
112
- Release: **2.6.17** | build: **2025-08-21** | Python: **>=3.10, <3.14**
112
+ Release: **2.6.19** | build: **2025-08-22** | Python: **>=3.10, <3.14**
113
113
 
114
114
  > Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
115
115
  >
@@ -4567,6 +4567,16 @@ may consume additional tokens that are not displayed in the main window.
4567
4567
 
4568
4568
  ## Recent changes:
4569
4569
 
4570
+ **2.6.19 (2025-08-22)**
4571
+
4572
+ - Fixed: added prevention for summarizing an empty context.
4573
+ - Improved the speed of context item refreshing.
4574
+
4575
+ **2.6.18 (2025-08-21)**
4576
+
4577
+ - Refactor and optimizations.
4578
+ - Fix: Evolve agent stop event calling.
4579
+
4570
4580
  **2.6.17 (2025-08-21)**
4571
4581
 
4572
4582
  - Optimized profile switching.
@@ -1,7 +1,7 @@
1
- pygpt_net/CHANGELOG.txt,sha256=aXQoY6LAxf31oH_P5FXlA6aQiRtYOhfPCZOfAPk110Y,100454
1
+ pygpt_net/CHANGELOG.txt,sha256=pXUA8cJ0SH9plFL3gWKvSbZnyzd0o75KVsH_302jVC0,100677
2
2
  pygpt_net/LICENSE,sha256=dz9sfFgYahvu2NZbx4C1xCsVn9GVer2wXcMkFRBvqzY,1146
3
- pygpt_net/__init__.py,sha256=KBVlmPZoJBZ0ZSOuNxYfSTzmFKuN4GEBujL1PtlqWus,1373
4
- pygpt_net/app.py,sha256=2IXjjYJ0tm-iFn3pHu3-JGoFAnN9YvmXGHPmeOhpU3Y,20999
3
+ pygpt_net/__init__.py,sha256=3qsXSKahk5822CHe-IOkYBE6ti5pr-IXDt4dqrPbAxc,1373
4
+ pygpt_net/app.py,sha256=jBRU18JvJPWwzTTMwrRA986jBFYQSVvB6C_xcJDY7ZI,21007
5
5
  pygpt_net/config.py,sha256=LCKrqQfePVNrAvH3EY_1oZx1Go754sDoyUneJ0iGWFI,16660
6
6
  pygpt_net/container.py,sha256=NsMSHURaEC_eW8vrCNdztwqkxB7jui3yVlzUOMYvCHg,4124
7
7
  pygpt_net/controller/__init__.py,sha256=UAYJmyXJG1_kawo23FRH0IjU8S8YBbIuJrPkrsOy9Eo,6199
@@ -40,9 +40,9 @@ pygpt_net/controller/chat/common.py,sha256=mOHvXqj3pPCzNPU82i7NXSmglW8jh7G5cCKDe
40
40
  pygpt_net/controller/chat/files.py,sha256=QZAi1Io57EU7htKt9M5I9OoGAFX51OH2V5-NsJktOto,2838
41
41
  pygpt_net/controller/chat/image.py,sha256=yPX26gsz0fLnyXR88lpVyvvHnKA-yZwfXJ4paUDYkeM,8579
42
42
  pygpt_net/controller/chat/input.py,sha256=EPA90r6GqHIlu4JJbr0cuvKIEYSs6LVkimxrWHAyyX0,12390
43
- pygpt_net/controller/chat/output.py,sha256=aSgZ8E8IaP4Jjd0ab6eXhebM_YIRPW7pRJUesYCgDQg,10864
43
+ pygpt_net/controller/chat/output.py,sha256=VL4OmC6MMy2KvJlMo6ipFqvd0oVNUK9F14BzUHWFfno,10860
44
44
  pygpt_net/controller/chat/render.py,sha256=-Z-beOsEvw_tS4I8kBT5Z0n9KhDlgrEQH4x1PLDvxhE,20613
45
- pygpt_net/controller/chat/response.py,sha256=tacJOG_iG7IjEFiZ4iDggEVVS9mbL0e92JBC--7bnCY,12543
45
+ pygpt_net/controller/chat/response.py,sha256=AydIFs507x3K3nd1HG-nsBBgLCoxM9IHXdcUMT8kQiw,12278
46
46
  pygpt_net/controller/chat/stream.py,sha256=zmDGI_Z9Rn8IYv6vEIVBMTOGjjY0zlfmM3qJMddRGRI,21994
47
47
  pygpt_net/controller/chat/text.py,sha256=ktluNw9ItG4g9p3OpOSmgALhFf1Gnonhl3J9kLzdTqU,10743
48
48
  pygpt_net/controller/chat/vision.py,sha256=LsFc0TZZwY8dVtJH6Q5iha8rUQCf5HhOMuRXMtnLzZU,3578
@@ -146,9 +146,9 @@ pygpt_net/core/agents/bridge.py,sha256=KhCbMTZNigNlgOhXEMN1kqWGNUhkEdjFdiHBBVTAr
146
146
  pygpt_net/core/agents/legacy.py,sha256=DdlyIpFjmeAC4XUGtq3F5_1BLGZLPOej0RZ6x9ycFjM,1731
147
147
  pygpt_net/core/agents/memory.py,sha256=9Jz9kT-xT8QPpGeXEpWopJUGBLLHu6Ys_-fRrg6BWDg,5210
148
148
  pygpt_net/core/agents/observer/__init__.py,sha256=qVIBJKpGbc0k7PTESAwAR7SbN-pbkBMJUTzeliCAaJU,651
149
- pygpt_net/core/agents/observer/evaluation.py,sha256=kSs_zMg9Cuwn-e_vDYVq6bzdbAVhqXIG6_zWHcN0ugk,8098
149
+ pygpt_net/core/agents/observer/evaluation.py,sha256=xA1TDHA6g0N1KXnZr92Xvi7pKYhiWHTTaM5G3L1oxlA,8109
150
150
  pygpt_net/core/agents/provider.py,sha256=rjxnuqzRxv2Z1d9i_wKpREwJBTeTgtyBDYtyHuwcSPA,2440
151
- pygpt_net/core/agents/runner.py,sha256=C3BQkpHLrd92EuM55mR4PnCJMVvZ4nV0kDhed4xfl9o,12186
151
+ pygpt_net/core/agents/runner.py,sha256=_R6bG1AD7uaHr158Az0DLQduy96dkr6UPyCWumSwFXE,12248
152
152
  pygpt_net/core/agents/runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
153
  pygpt_net/core/agents/runners/base.py,sha256=XjheBYhBZan51r3vkUh5uf00sYiRj8btZUeUP1jpqlA,5687
154
154
  pygpt_net/core/agents/runners/helpers.py,sha256=0iQQlSg_pJfxY_gQEWImnyAVkTUQYYSW67Z9DS7oUYw,8305
@@ -158,7 +158,7 @@ pygpt_net/core/agents/runners/llama_steps.py,sha256=1SBLp5t4TUsxpYIUtSSnBy5Sd2Ax
158
158
  pygpt_net/core/agents/runners/llama_workflow.py,sha256=kU_Gju08e3rAFb_DVyDpGHhTurC49_oAGdMWcL6wZHQ,12136
159
159
  pygpt_net/core/agents/runners/loop.py,sha256=opcVGx8WFjJesLlmMzoCBgP06Ajh6j_Taat4zCTumHg,6022
160
160
  pygpt_net/core/agents/runners/openai_workflow.py,sha256=J47INptxu8Uc40UfAWNRRiHRYL6ZM6lPojoqeHsC-mc,7989
161
- pygpt_net/core/agents/tools.py,sha256=6V2IjSF0m8cNY0HI7vW9bTLjKzR1KtcP0XTcHBvrPjU,21727
161
+ pygpt_net/core/agents/tools.py,sha256=T0nqYIyGA-Z7wI_CzF1NJQ9i5u83HEzsiYqy-IZgcQQ,21967
162
162
  pygpt_net/core/assistants/__init__.py,sha256=FujLn0ia5S3-7nX-Td_0S5Zqiw6Yublh58c4Di7rRgY,514
163
163
  pygpt_net/core/assistants/assistants.py,sha256=JVseBSjDJh9vJYjxoZVwU93EFTBJk_rUtRh_Ml550H0,4391
164
164
  pygpt_net/core/assistants/files.py,sha256=rmIVxDNfLrpA95Ghs_mc5s8Yn4xiC7POynpZMzaBcd0,10150
@@ -232,7 +232,8 @@ pygpt_net/core/events/event.py,sha256=uxNdPGaV5KDBaosPM6uxio7dPig091wAoz-OdOPCmx
232
232
  pygpt_net/core/events/kernel.py,sha256=Y5zQ-YCex04OQNMRMC7Q8g55A-imyj9XQ0Jkuyk2eCU,2074
233
233
  pygpt_net/core/events/render.py,sha256=Xfncp6ESvjPyBLtFq6KiNxckAFDN0DsUOJ_mrowjfnM,2525
234
234
  pygpt_net/core/experts/__init__.py,sha256=oscAmAEsCZclyHU7k3z5JzYqilwIO7J90e6oTa29tZ0,511
235
- pygpt_net/core/experts/experts.py,sha256=vqD7vnzoW8SQ6Of3rp42VVIbamRkhmOwAWoG4gZcCPU,32127
235
+ pygpt_net/core/experts/experts.py,sha256=-ai8_Nez5cDRJ3d8ozvPWgk8p0JofmuZvqhEscz1H00,19101
236
+ pygpt_net/core/experts/worker.py,sha256=-IvVW5OyURxQkSHXtCSjGGHwDt31-Zb_o23DnSIETXU,14134
236
237
  pygpt_net/core/filesystem/__init__.py,sha256=KZLS3s_otd3Md9eDA6FN-b4CtOCWl_fplUlM9V6hTy8,514
237
238
  pygpt_net/core/filesystem/actions.py,sha256=2lRVF_MpIxCwbH8DkugP0K6pY6FymLeH6LKVR2rtQGQ,4152
238
239
  pygpt_net/core/filesystem/editor.py,sha256=or7cT2xhZfDwjX47reyXQCt-_1c4h_xPJDddYi1auNw,4284
@@ -244,20 +245,20 @@ pygpt_net/core/filesystem/url.py,sha256=cXctpPHBY1-fwn7vFqfZi3CeP73n2nFXF-ZnePiR
244
245
  pygpt_net/core/history/__init__.py,sha256=OVtJM8Cf-9WV9-WmB6x__qB3QK4ZGaYzjpl4Fk8RdWM,511
245
246
  pygpt_net/core/history/history.py,sha256=PDE5Ut03mEgY9YPLZjqrimKQAyxoE7itViuqFV-VQf0,3123
246
247
  pygpt_net/core/idx/__init__.py,sha256=8-HStPMODmgzC3dBaJB6MDqGJHCHnKxNdt30Vzyu3cM,507
247
- pygpt_net/core/idx/chat.py,sha256=4Z-TgPPbGBUjennxKtJokSesOk-IM5lk1hhuJzhlTsU,31138
248
- pygpt_net/core/idx/context.py,sha256=MLsfdcKZwtTFxNzg17Xe2_Ez2wEtDATpQFrVJMHyKq0,10132
249
- pygpt_net/core/idx/idx.py,sha256=o1VIIoi2R6RbiINIi2dvVcZ5VZvEGTazLtPtB7NiB34,18199
250
- pygpt_net/core/idx/indexing.py,sha256=QFMLXT2gOy3pq01clJfDLjrC8WpgQpj44TqJ4JvNY04,42934
248
+ pygpt_net/core/idx/chat.py,sha256=dT9JLs7Y6PX79zAAluxOPNpb3W-UystxCKz3dEw7UEE,29581
249
+ pygpt_net/core/idx/context.py,sha256=fo62m22xBE-rtOgLMeOS-AR2SRRmaGipN7nY5BFax58,10146
250
+ pygpt_net/core/idx/idx.py,sha256=QworuvYkSGo0mrGb_3cWGJug9C-CgCeAExWaNCtWSo4,18422
251
+ pygpt_net/core/idx/indexing.py,sha256=w_xeXjZpOROXjwMboUU_JT57OtGDtV2kyV0_bXNbXZY,42543
251
252
  pygpt_net/core/idx/llm.py,sha256=SHh9PgG2HP69u233h7-zl-19Fr5z6Jfo_d5IoPizCng,5012
252
253
  pygpt_net/core/idx/metadata.py,sha256=69jrZ54S2wYZ3HzVooozADkbjgK2Rg4MuXTgfd6rcsI,5445
253
- pygpt_net/core/idx/response.py,sha256=3NlVPpJ1xg099OoCJ2kzM3k1GpmygKX3lMCgtVNs9UE,2236
254
+ pygpt_net/core/idx/response.py,sha256=X4K706Ppage3fSAVPSqMK1w1PflMsJ6QA6Tl-Y9P0vs,5008
254
255
  pygpt_net/core/idx/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
256
  pygpt_net/core/idx/types/ctx.py,sha256=IsmwGHAPuvb39E_7TfYr66ljv6v1svNKVDw5jQH2FGk,3409
256
257
  pygpt_net/core/idx/types/external.py,sha256=Pu3hoXrmomGLCL6kVLNPtlrVlO2jEOl7TM8YV0dh9yA,5130
257
258
  pygpt_net/core/idx/types/files.py,sha256=FzomPoQncYx3WtWNbHTjSNuTOP8x_z7f3ypybdabf1c,4039
258
259
  pygpt_net/core/idx/ui/__init__.py,sha256=nfCat59itYOlE7hgn-Y5iemtkgU2NWSnKZK_ffZhoa8,719
259
260
  pygpt_net/core/idx/ui/loaders.py,sha256=15-5Q5C9jGcLZkNkcqZDfAsQqwzLCZOFzHXCTGiYN6k,8732
260
- pygpt_net/core/idx/worker.py,sha256=dRkuVtA-u4TAyLeWmvz7a_asrkGcOPYAELHsdLal53k,4071
261
+ pygpt_net/core/idx/worker.py,sha256=ywaq96MoOKJjnohmSGNmk7Ah_iaPG4J61G99YmiXv0A,3969
261
262
  pygpt_net/core/image/__init__.py,sha256=HEXciv02RFJC3BkrzP9tvzvZlr36WYMz5v9W80JLqlQ,509
262
263
  pygpt_net/core/image/image.py,sha256=N0IZLNdIJG2ym92YvxaeHiC3mHc8LGybeNS0QovU-So,3953
263
264
  pygpt_net/core/info/__init__.py,sha256=SJUPrGXxdvHTpM3AyvsaD_Z_Fuzrg2cbcNevB7A6X-8,508
@@ -303,11 +304,11 @@ pygpt_net/core/render/plain/helpers.py,sha256=CMF84kSeuQnkgZVHmN_9YWaL5BC958tDE9
303
304
  pygpt_net/core/render/plain/pid.py,sha256=Pz3v1tnLj-XI_9vcaVkCf9SZ2EgVs4LYV4qzelBMoOg,1119
304
305
  pygpt_net/core/render/plain/renderer.py,sha256=CVCdwuDUZEpYna3tkwDlZLN7bwRMu-fBX636k5blqxM,15637
305
306
  pygpt_net/core/render/web/__init__.py,sha256=istp5dsn6EkLEP7lOBeDb8RjodUcWZqjcEvTroaTT-w,489
306
- pygpt_net/core/render/web/body.py,sha256=rybg76GiLWowR-qEvM0Y64woSsO4KSBnww4f8BU7GgI,54872
307
+ pygpt_net/core/render/web/body.py,sha256=ZmVK7mf74ebbctpVsqRsUfM4fJDpxQC-rirvYPecBw0,55666
307
308
  pygpt_net/core/render/web/helpers.py,sha256=ivrXrCqRIUWHDmu3INu-i6XUlB2W9IOO8iYyqpbnSRU,5438
308
309
  pygpt_net/core/render/web/parser.py,sha256=pDFc9Tf8P-jvrDilXyT1fukcQHbixHRJ9Dn9hF10Gko,12892
309
310
  pygpt_net/core/render/web/pid.py,sha256=pXBdPb8hw_aZS2Rtz3pLBpuybpXrzoqwYAFWBal9bLE,3685
310
- pygpt_net/core/render/web/renderer.py,sha256=slIQ4J-XcLoeCSd_EYBbXgxhzERHgwnH0U37SKpQZes,56482
311
+ pygpt_net/core/render/web/renderer.py,sha256=Toc8DXNsKO-V5wEd9fCZ-4WPv1xgQLRcD4ozlJ_yUGs,57308
311
312
  pygpt_net/core/render/web/syntax_highlight.py,sha256=QSLGF5cJL_Xeqej7_TYwY_5C2w9enXV_cMEuaJ3C43U,2005
312
313
  pygpt_net/core/settings/__init__.py,sha256=GQ6_gJ2jf_Chm7ZuZLvkcvEh_sfMDVMBieeoJi2iPI4,512
313
314
  pygpt_net/core/settings/settings.py,sha256=onqwNiICm2VhHfmXLvp1MiEJ14m2jzeeI2pjUiaUwtY,7787
@@ -321,13 +322,14 @@ pygpt_net/core/text/utils.py,sha256=PCQ6F7DODPigqP-ZVWs0CzR4I6C9gSBfD1JXp3rAY1g,
321
322
  pygpt_net/core/text/web_finder.py,sha256=8Yex-Kmnz8KyStF0-koNC-0392SkUIsy0nRYLExlyHM,6600
322
323
  pygpt_net/core/tokens/__init__.py,sha256=rSSdzmBL-LmMUv14hodHi5b1HYcm9UU8DEbD7owk4BI,510
323
324
  pygpt_net/core/tokens/tokens.py,sha256=o_k4XLYKUeGfmrLsclZxpjRX4L9BIF0Z8kIJZ9D3zgI,12363
324
- pygpt_net/core/types/__init__.py,sha256=XdrdI3paSuzjK_jSWensumQcCeZ-66X4RwooZ-Ag78I,598
325
+ pygpt_net/core/types/__init__.py,sha256=Vv4prXvMT1uPHq9TIYpXUt7SY8YBujnWOXQOjXg1kh8,619
325
326
  pygpt_net/core/types/agent.py,sha256=7GOLiexwcuCQIoTFCCv_THJv3wZ_XtlKCBogePj2DGU,872
326
327
  pygpt_net/core/types/console.py,sha256=wJkKQAYWtIWXNXmjmEEXLT8N-Chj2NzxyzGY5tswO4E,713
327
328
  pygpt_net/core/types/mode.py,sha256=3Dhp-uYzQv5Yf94UbyMM2pFLgMcy2EOuA2rFwRNxDyQ,858
328
329
  pygpt_net/core/types/model.py,sha256=V8O9yipzqyTmVjzeESQ1xvZpSdRU6UYmvWJ1M2Kxs5A,549
329
330
  pygpt_net/core/types/multimodal.py,sha256=xifoX4sno7kqeQxK4TwUWIAXu1d8Mr-axsLXsJat4P8,594
330
331
  pygpt_net/core/types/openai.py,sha256=onlFH1KjT1zWGF09KkyvLXSs8wp2y5bwULs8fr07iq8,1483
332
+ pygpt_net/core/types/tools.py,sha256=BdonNwytk5SxYtYdlDkMg5lMvFoXz3CQJHZ__oVlm_8,1223
331
333
  pygpt_net/core/updater/__init__.py,sha256=fC4g0Xn9S8lLxGbop1q2o2qi9IZegoVayNVWemgBwds,511
332
334
  pygpt_net/core/updater/updater.py,sha256=cykBw8BqJlJNisWnpXnSPZ25Gfw3Ufyd9a_dUuEo3p8,16740
333
335
  pygpt_net/core/vision/__init__.py,sha256=dFEilXM2Z128SmgBlLn1DvyLCksdcyqFI7rln_VPsf8,510
@@ -343,8 +345,8 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
343
345
  pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
344
346
  pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
345
347
  pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
346
- pygpt_net/data/config/config.json,sha256=7mM-UAbuZUlNbgaebZQ_up3QtEIDNTmN-eM29h-wc6A,24923
347
- pygpt_net/data/config/models.json,sha256=4koERZ-cITcGIcSngINcHB0SO238C2VJSYd1zxS0WFo,109650
348
+ pygpt_net/data/config/config.json,sha256=sFI99Xg2JwriJzFqKXPsqhDQ825ZwhyuuUdV3vO7wH4,24924
349
+ pygpt_net/data/config/models.json,sha256=g5-Xu_mh8z-gG8tJRz98Q65WIDjO1ARnbJvMIMPnIKI,109650
348
350
  pygpt_net/data/config/modes.json,sha256=M882iiqX_R2sNQl9cqZ3k-uneEvO9wpARtHRMLx_LHw,2265
349
351
  pygpt_net/data/config/presets/agent_code_act.json,sha256=GYHqhxtKFLUCvRI3IJAJ7Qe1k8yD9wGGNwManldWzlI,754
350
352
  pygpt_net/data/config/presets/agent_openai.json,sha256=bpDJgLRey_effQkzFRoOEGd4aHUrmzeODSDdNzrf62I,730
@@ -373,7 +375,7 @@ pygpt_net/data/config/presets/current.computer.json,sha256=CAQn1QqxYI8O5o0k2l7hJ
373
375
  pygpt_net/data/config/presets/current.expert.json,sha256=V0I633FyU2ZLZnTApiSF29tila85zYBqYadojedXWJw,419
374
376
  pygpt_net/data/config/presets/current.img.json,sha256=hr6gj6ZqcQgv0CJdqFSsGMUTFRixcsTa-sDX2_9P7Io,419
375
377
  pygpt_net/data/config/presets/current.langchain.json,sha256=yVOmJ1VpX0saxdBO_8tGaWM5oxa8EGbIcS6Wrk7Nqzo,433
376
- pygpt_net/data/config/presets/current.llama_index.json,sha256=1ZcALHvPgf1g-1W2tyfK77gDDHFzlGZVMNg87jT5N_s,480
378
+ pygpt_net/data/config/presets/current.llama_index.json,sha256=SBvlO3ldMTnuPaAo-cVcs44FMJT2Srqm08ZhHivFTXY,477
377
379
  pygpt_net/data/config/presets/current.research.json,sha256=dExl7MoUUKAUyRd1njumD6C9viT8qyZSZwhU4PCCNQg,759
378
380
  pygpt_net/data/config/presets/current.vision.json,sha256=x1ll5B3ROSKYQA6l27PRGXUnfugXNJ5730ZcuRXEO1I,447
379
381
  pygpt_net/data/config/presets/dalle_white_cat.json,sha256=esqUb43cqY8dAo7B5u99tRC0MBV5lmlrVLnJhTSkL8w,552
@@ -1984,7 +1986,7 @@ pygpt_net/provider/agents/openai/bots/research_bot/agents/planner_agent.py,sha25
1984
1986
  pygpt_net/provider/agents/openai/bots/research_bot/agents/search_agent.py,sha256=O7aJOas2dNmlcqyZmVK_oQxFPRJLX_vHJ8wPujbrmpI,2002
1985
1987
  pygpt_net/provider/agents/openai/bots/research_bot/agents/writer_agent.py,sha256=F2K7O5xccHUHzYJdYgcJehgZtdHgIcbOrsY7mB2K4E0,1773
1986
1988
  pygpt_net/provider/agents/openai/bots/research_bot/manager.py,sha256=h8jHoPhXDz-VZrH8qUvvSVEtJpa1ThbzUToHkgxCF08,7630
1987
- pygpt_net/provider/agents/openai/evolve.py,sha256=AkQznk-vmYMBpNdLChiIzzLqQlj1pbpvGZUhFhCnZVI,22751
1989
+ pygpt_net/provider/agents/openai/evolve.py,sha256=WcjrPbWkKKAxRrsztdltzVRIzeLeGcnSO6jlTjvdeNU,22755
1988
1990
  pygpt_net/provider/agents/openai/supervisor.py,sha256=3FOMEpuyGNRr5szw6pD4QnAIQIn1YceszoPlEAlI270,13141
1989
1991
  pygpt_net/provider/audio_input/__init__.py,sha256=lOkgAiuNUqkAl_QrIG3ZsUznIZeJYtokgzEnDB8gRic,488
1990
1992
  pygpt_net/provider/audio_input/base.py,sha256=2PxE9QeEd4fODLYx_sO-1iVdAFOxHVHjtse7-GIqix8,1826
@@ -2096,7 +2098,7 @@ pygpt_net/provider/gpt/image.py,sha256=p1p8zXuhHPUey8B_ruGAW8eQXuvXxOFGlQITtazM7
2096
2098
  pygpt_net/provider/gpt/remote_tools.py,sha256=eppSMpcr-5HD6vX2FZQJyr2UTKtunLxdl2nefndDh0M,5670
2097
2099
  pygpt_net/provider/gpt/responses.py,sha256=GN3QdPBlXQn0MDeJOY-yzKhWgm1iqptu-hnHAbYbRpE,29137
2098
2100
  pygpt_net/provider/gpt/store.py,sha256=4Mf3yv8x-ab2xBfIxtzQyJvzBnOLFddGQ83Prvcqkvk,17265
2099
- pygpt_net/provider/gpt/summarizer.py,sha256=cfyonTImOxMTQ49ASWsTxl8ipVIl3ssHpOW7zK2pAno,2865
2101
+ pygpt_net/provider/gpt/summarizer.py,sha256=vuJz6mj9F9Psiat0d-fn1zNGgXc-WkXJyi0jrvijO6E,2978
2100
2102
  pygpt_net/provider/gpt/tools.py,sha256=Oh9mnGIXfnwoRTx6f-9ZItD-v3loyr4OtcvhmgroyrY,3146
2101
2103
  pygpt_net/provider/gpt/utils.py,sha256=O0H0EPb4lXUMfE1bFdWB56yuWLv7M5owVIGWRyDDv-E,855
2102
2104
  pygpt_net/provider/gpt/vision.py,sha256=bdo5hQRDSVSvWMQT29RCxAYrwSqIfYfpJnyKyVL1CZQ,12716
@@ -2372,7 +2374,7 @@ pygpt_net/ui/widget/element/checkbox.py,sha256=i7774WlRHEg8Js7XdpdMF5LGW1DrBXU4M
2372
2374
  pygpt_net/ui/widget/element/group.py,sha256=a76-dsfLnI7EBIMu7Q-So1lsYw8870M-GhzfRwLLf-8,3632
2373
2375
  pygpt_net/ui/widget/element/labels.py,sha256=qg6wfOjOEya7H7fHmv4UmSJxOySwV5da359FnfdsOhs,6003
2374
2376
  pygpt_net/ui/widget/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2375
- pygpt_net/ui/widget/filesystem/explorer.py,sha256=362uTeJNEtoAAXzf1Lx0iwu5k7SfIDTgr9_HV0KuR5E,23953
2377
+ pygpt_net/ui/widget/filesystem/explorer.py,sha256=69aTLycXAOR34DHCUSkBh4uWT1YkavPeBLk9IiIc26I,23866
2376
2378
  pygpt_net/ui/widget/image/__init__.py,sha256=X9-pucLqQF9_ocDV-qNY6EQAJ_4dubGb-7TcWIzCXBo,488
2377
2379
  pygpt_net/ui/widget/image/display.py,sha256=VL3nfMxg8KhyLN6RJEDUKBW4du4DFi_PW2eJL1qStks,3797
2378
2380
  pygpt_net/ui/widget/lists/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
@@ -2436,9 +2438,9 @@ pygpt_net/ui/widget/textarea/url.py,sha256=xbNQxoM5fYI1ZWbvybQkPmNPrIq3yhtNPBOSO
2436
2438
  pygpt_net/ui/widget/textarea/web.py,sha256=xGI-47bZ5M_vf_jMc2R9sB1-vuHJbgd5FxE5tbKXj-Q,19815
2437
2439
  pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
2438
2440
  pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
2439
- pygpt_net/utils.py,sha256=gGbw-lBTodGg_uBx6zKEwa58GaVNZN1I9zY_ZDyJ9xg,8872
2440
- pygpt_net-2.6.17.post1.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2441
- pygpt_net-2.6.17.post1.dist-info/METADATA,sha256=ZDr1FygM_EXSpN2s5pNAfYofoKCiydQ5UI6jzNEIx2c,190174
2442
- pygpt_net-2.6.17.post1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2443
- pygpt_net-2.6.17.post1.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2444
- pygpt_net-2.6.17.post1.dist-info/RECORD,,
2441
+ pygpt_net/utils.py,sha256=GBAXOpp_Wjfu7Al7TnTV62-R-JPMiP9GuPXLJ0HmeJU,8906
2442
+ pygpt_net-2.6.19.dist-info/LICENSE,sha256=rbPqNB_xxANH8hKayJyIcTwD4bj4Y2G-Mcm85r1OImM,1126
2443
+ pygpt_net-2.6.19.dist-info/METADATA,sha256=ZQG0mftnPm3VOC9m38G0n7AcPiZp9_ZhKdFE3qydZrA,190399
2444
+ pygpt_net-2.6.19.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
2445
+ pygpt_net-2.6.19.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
2446
+ pygpt_net-2.6.19.dist-info/RECORD,,