pycoze 0.1.387__py3-none-any.whl → 0.1.388__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.
pycoze/api/lib/window.py CHANGED
@@ -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
pycoze/bot/chat.py CHANGED
@@ -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
pycoze/bot/chat_base.py CHANGED
@@ -19,11 +19,17 @@ 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 user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode: bool, opened_files: List[str]):
23
23
  if programmer_mode:
24
24
  potential_paths = guess_files_in_message(cwd, user_input)
25
25
 
26
26
  exist_files = get_formatted_filelist_str(cwd, True, 200)
27
+ exist_files_str = f"Files in current directory:\n{exist_files}" if exist_files else ""
28
+
29
+ opened_files_str = (
30
+ f"Opened files:\n{'\n'.join(opened_files)}" if opened_files else ""
31
+ )
32
+
27
33
  content = []
28
34
  for file_path in potential_paths:
29
35
  file_path = resolve_relative_path(cwd, file_path)
@@ -46,8 +52,9 @@ def user_task_prompt(conversation_history, cwd, user_input: str, programmer_mode
46
52
  <environment_details>
47
53
  Current working directory: {cwd}
48
54
 
49
- List of files under path:
50
- {exist_files}
55
+ {exist_files_str}
56
+
57
+ {opened_files_str}
51
58
 
52
59
  {content_str}
53
60
 
@@ -144,6 +151,7 @@ async def handle_user_inputs(
144
151
  no_exit_if_incomplete = bot_setting["systemAbility"]["no_exit_if_incomplete"]
145
152
  programmer_mode = bot_setting["programmerMode"]
146
153
  show_tool_results = bot_setting["showToolResults"]
154
+ opened_files = bot_setting["openedFiles"]
147
155
 
148
156
  start_new_stream = {
149
157
  "value": False
@@ -157,7 +165,7 @@ async def handle_user_inputs(
157
165
  {
158
166
  "role": "user",
159
167
  "content": user_task_prompt(
160
- conversation_history, cwd, user_input, programmer_mode
168
+ conversation_history, cwd, user_input, programmer_mode, opened_files
161
169
  ),
162
170
  }
163
171
  )
@@ -219,18 +227,18 @@ async def handle_user_inputs(
219
227
  )
220
228
 
221
229
  assistant_content = (
222
- "Executing tool: "
230
+ "Executing tool: \n"
223
231
  + dumps_markdown_json(tool_request)
224
232
  + "\n\n[Tool Result Begin]\n"
225
233
  + result
226
234
  + "\n[Tool Result End]\n"
227
235
  )
228
236
  lang = "json" if is_json_dumps else "text"
229
- status_str = "✅\n" if ok else "❌\n"
237
+
230
238
  if show_tool_results:
239
+ status_str = "✅\n" if ok else "❌\n"
231
240
  info("assistant", status_str + f"\n```{lang}\n" + result + "\n```\n\n")
232
- else:
233
- info("assistant", status_str)
241
+
234
242
  conversation_history.append(
235
243
  {"role": "assistant", "content": assistant_content}
236
244
  )
pycoze/bot/lib.py CHANGED
@@ -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.388
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -9,11 +9,11 @@ pycoze/api/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  pycoze/api/lib/tab.py,sha256=DWO8ElI-VOODtIxqUFWaDB8VRrrFYAZRWivuIeD1wG0,2619
10
10
  pycoze/api/lib/view.py,sha256=_PIpTfeuTPPlMDKshMGsqFQYMq7ZiO4Hg5XwHwDoU60,7357
11
11
  pycoze/api/lib/web.py,sha256=GWgtiTJOolKOX2drXcwuyqTcbo5FQVxa1NuBGcNyjyc,223
12
- pycoze/api/lib/window.py,sha256=3Qu8AzDwiFK2gBzuSoBkLBXfk0_34343FR3bqa0jjnE,2074
12
+ pycoze/api/lib/window.py,sha256=dkzWfLwn5pE_L0DfQ38K8nx9tQyT5KO-GYyXi0rytFc,2073
13
13
  pycoze/bot/__init__.py,sha256=rL3Q-ycczRpSFfKn84fg3QBl5k22WpyeIU5qOEjEby8,79
14
- pycoze/bot/chat.py,sha256=pLq8RXxXAT43xMPwXwZTSquiX6hlRWjB9PWT_nMxzUw,5807
15
- pycoze/bot/chat_base.py,sha256=BDwJnirYhd05et-XD5L6Sx0EtDnb0OZ7QojjFpbG-_k,9718
16
- pycoze/bot/lib.py,sha256=mlNDSO7LwEJYG36h2pagESiEp4_aofv4sdNIe2wyLlQ,7214
14
+ pycoze/bot/chat.py,sha256=4RGMwg2TjFERd-4LTIpQ6ilaRx4eP566KaQma2jg2O4,6296
15
+ pycoze/bot/chat_base.py,sha256=BuDMyWSNVfRee94fUkNKubU8E8ME2hU4DzrzE7M3ZSQ,9973
16
+ pycoze/bot/lib.py,sha256=WMVhyKFXvNoLrS2wvNOakIJXyUmVE6ujCV6XVDV0M6A,7213
17
17
  pycoze/bot/message.py,sha256=udnIi-h4QgGzkbr_5VcAsVGjoLp9wXJSfBCeuOz7_Bk,802
18
18
  pycoze/bot/prompt.md,sha256=Km8GzmmC44HN0rnZh8txZxY52_0KWgyKh6GkjGQ3bCI,15379
19
19
  pycoze/bot/tools.py,sha256=X5gpYbiRQZMvduhfXZy8VGYwjXGw5ndqbGHb-gXTQIE,10276
@@ -32,8 +32,8 @@ pycoze/utils/arg.py,sha256=jop1tBfe5hYkHW1NSpCeaZBEznkgguBscj_7M2dWfrs,503
32
32
  pycoze/utils/env.py,sha256=5pWlXfM1F5ZU9hhv1rHlDEanjEW5wf0nbyez9bNRqqA,559
33
33
  pycoze/utils/socket.py,sha256=bZbFFRH4mfThzRqt55BAAGQ6eICx_ja4x8UGGrUdAm8,2428
34
34
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
35
- pycoze-0.1.387.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
36
- pycoze-0.1.387.dist-info/METADATA,sha256=qP9IaJUFRo7H940M_k04Uedy-AGs2w8HZXxlwS0d7_U,854
37
- pycoze-0.1.387.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
- pycoze-0.1.387.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
39
- pycoze-0.1.387.dist-info/RECORD,,
35
+ pycoze-0.1.388.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
36
+ pycoze-0.1.388.dist-info/METADATA,sha256=jZ5uGP79BWdbRlta5YfKvg198O08PvzIGa828xxUOdU,854
37
+ pycoze-0.1.388.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
38
+ pycoze-0.1.388.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
39
+ pycoze-0.1.388.dist-info/RECORD,,