pycoze 0.1.387__tar.gz → 0.1.389__tar.gz

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 (43) hide show
  1. {pycoze-0.1.387 → pycoze-0.1.389}/PKG-INFO +1 -1
  2. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/lib/window.py +0 -1
  3. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/chat.py +14 -1
  4. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/chat_base.py +33 -23
  5. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/lib.py +0 -1
  6. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze.egg-info/PKG-INFO +1 -1
  7. {pycoze-0.1.387 → pycoze-0.1.389}/setup.py +1 -1
  8. {pycoze-0.1.387 → pycoze-0.1.389}/LICENSE +0 -0
  9. {pycoze-0.1.387 → pycoze-0.1.389}/README.md +0 -0
  10. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/__init__.py +0 -0
  11. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ai/__init__.py +0 -0
  12. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ai/llm/__init__.py +0 -0
  13. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ai/llm/chat.py +0 -0
  14. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ai/llm/text_to_image_prompt.py +0 -0
  15. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ai/vram_reserve.py +0 -0
  16. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/__init__.py +0 -0
  17. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/lib/__init__.py +0 -0
  18. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/lib/tab.py +0 -0
  19. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/lib/view.py +0 -0
  20. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/api/lib/web.py +0 -0
  21. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/__init__.py +0 -0
  22. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/message.py +0 -0
  23. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/prompt.md +0 -0
  24. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/bot/tools.py +0 -0
  25. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/reference/__init__.py +0 -0
  26. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/reference/bot.py +0 -0
  27. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/reference/lib.py +0 -0
  28. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/reference/tool.py +0 -0
  29. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/reference/workflow.py +0 -0
  30. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ui/__init__.py +0 -0
  31. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ui/base.py +0 -0
  32. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ui/color.py +0 -0
  33. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ui/typ.py +0 -0
  34. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/ui/ui_def.py +0 -0
  35. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/utils/__init__.py +0 -0
  36. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/utils/arg.py +0 -0
  37. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/utils/env.py +0 -0
  38. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/utils/socket.py +0 -0
  39. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze/utils/text_or_file.py +0 -0
  40. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze.egg-info/SOURCES.txt +0 -0
  41. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze.egg-info/dependency_links.txt +0 -0
  42. {pycoze-0.1.387 → pycoze-0.1.389}/pycoze.egg-info/top_level.txt +0 -0
  43. {pycoze-0.1.387 → pycoze-0.1.389}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycoze
3
- Version: 0.1.387
3
+ Version: 0.1.389
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -39,7 +39,6 @@ class WindowCls:
39
39
  def close_window(self):
40
40
  socket.post("closeWindow", {})
41
41
 
42
-
43
42
  def get_slected_text(self) -> str:
44
43
  result = socket.post_and_recv_result("get-selected-text", {})
45
44
  return result
@@ -12,14 +12,27 @@ from pathlib import Path
12
12
 
13
13
 
14
14
  def eclipse_tool_result(text, threshold=100):
15
+ if not isinstance(threshold, int) or threshold < 0:
16
+ return text
17
+
15
18
  pattern = r'\[Tool Result Begin\](.*?)\[Tool Result End\]'
16
19
 
20
+ # 检查标签是否匹配
21
+ begin_count = text.count('[Tool Result Begin]')
22
+ end_count = text.count('[Tool Result End]')
23
+ if begin_count != end_count:
24
+ return text
25
+
17
26
  def replace_match(match):
18
27
  content = match.group(1)
28
+ # 检查嵌套标签
29
+ if '[Tool Result Begin]' in content or '[Tool Result End]' in content:
30
+ return match.group(0) # 返回原始匹配内容,不替换
31
+
19
32
  if len(content) < threshold:
20
33
  return match.group(0) # 返回原始匹配内容,不替换
21
34
  else:
22
- return '[Tool Result Begin]...[Tool Result End]'
35
+ return "[Tool Result Begin]too long to remember...[Tool Result End]"
23
36
 
24
37
  replaced_text = re.sub(pattern, replace_match, text, flags=re.DOTALL)
25
38
  return replaced_text
@@ -19,26 +19,34 @@ def guess_files_in_message(cwd: str, user_message: str) -> List[str]:
19
19
  return []
20
20
 
21
21
 
22
- def user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode: bool):
22
+ def content_str(cwd, potential_paths, conversation_history):
23
+ content = []
24
+ for file_path in potential_paths:
25
+ file_path = resolve_relative_path(cwd, file_path)
26
+ if os.path.isfile(file_path):
27
+ file_marker = f"[[{file_path}]]'"
28
+ file_content = read_local_file(file_path)
29
+ if not any(
30
+ file_marker in msg["content"] for msg in conversation_history
31
+ ):
32
+ content.append(f"{file_marker}\n{file_content}")
33
+ return (
34
+ "Partial contents of files are as follows:" + "\n".join(content)
35
+ if content
36
+ else ""
37
+ )
38
+
39
+ def user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode: bool, opened_files: List[str]):
23
40
  if programmer_mode:
24
41
  potential_paths = guess_files_in_message(cwd, user_input)
25
42
 
26
43
  exist_files = get_formatted_filelist_str(cwd, True, 200)
27
- content = []
28
- for file_path in potential_paths:
29
- file_path = resolve_relative_path(cwd, file_path)
30
- if os.path.isfile(file_path):
31
- file_marker = f"[[{file_path}]]'"
32
- file_content = read_local_file(file_path)
33
- if not any(
34
- file_marker in msg["content"] for msg in conversation_history
35
- ):
36
- content.append(f"{file_marker}\n{file_content}")
37
- content_str = (
38
- "Partial contents of files are as follows:" + "\n".join(content)
39
- if content
40
- else ""
44
+ exist_files_str = f"Files in current directory:\n{exist_files}" if exist_files else ""
45
+
46
+ opened_files_str = (
47
+ f"Opened files:\n{'\n'.join(opened_files)}" if opened_files else ""
41
48
  )
49
+
42
50
  return f"""<task>
43
51
  {user_input}
44
52
  </task>
@@ -46,10 +54,11 @@ def user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode
46
54
  <environment_details>
47
55
  Current working directory: {cwd}
48
56
 
49
- List of files under path:
50
- {exist_files}
57
+ {exist_files_str}
51
58
 
52
- {content_str}
59
+ {opened_files_str}
60
+
61
+ {content_str(cwd, potential_paths, conversation_history)}
53
62
 
54
63
  </environment_details>
55
64
  """
@@ -144,6 +153,7 @@ async def handle_user_inputs(
144
153
  no_exit_if_incomplete = bot_setting["systemAbility"]["no_exit_if_incomplete"]
145
154
  programmer_mode = bot_setting["programmerMode"]
146
155
  show_tool_results = bot_setting["showToolResults"]
156
+ opened_files = bot_setting["openedFiles"]
147
157
 
148
158
  start_new_stream = {
149
159
  "value": False
@@ -157,7 +167,7 @@ async def handle_user_inputs(
157
167
  {
158
168
  "role": "user",
159
169
  "content": user_task_prompt(
160
- conversation_history, cwd, user_input, programmer_mode
170
+ conversation_history, cwd, user_input, programmer_mode, opened_files
161
171
  ),
162
172
  }
163
173
  )
@@ -219,18 +229,18 @@ async def handle_user_inputs(
219
229
  )
220
230
 
221
231
  assistant_content = (
222
- "Executing tool: "
232
+ "Executing tool: \n"
223
233
  + dumps_markdown_json(tool_request)
224
234
  + "\n\n[Tool Result Begin]\n"
225
235
  + result
226
236
  + "\n[Tool Result End]\n"
227
237
  )
228
238
  lang = "json" if is_json_dumps else "text"
229
- status_str = "✅\n" if ok else "❌\n"
239
+
230
240
  if show_tool_results:
241
+ status_str = "✅\n" if ok else "❌\n"
231
242
  info("assistant", status_str + f"\n```{lang}\n" + result + "\n```\n\n")
232
- else:
233
- info("assistant", status_str)
243
+
234
244
  conversation_history.append(
235
245
  {"role": "assistant", "content": assistant_content}
236
246
  )
@@ -241,4 +241,3 @@ def format_filelist_str(items, limit):
241
241
  def get_formatted_filelist_str(root: str, recursive: bool, limit=200):
242
242
  items = get_files_and_folders(root, recursive)
243
243
  return format_filelist_str(items, limit=limit)
244
-
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycoze
3
- Version: 0.1.387
3
+ Version: 0.1.389
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="pycoze",
5
- version="0.1.387",
5
+ version="0.1.389",
6
6
  packages=find_packages(),
7
7
  install_requires=[],
8
8
  author="Yuan Jie Xiong",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes