aient 1.1.6__tar.gz → 1.1.8__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.
- {aient-1.1.6/src/aient.egg-info → aient-1.1.8}/PKG-INFO +1 -1
- {aient-1.1.6 → aient-1.1.8}/setup.py +1 -1
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/excute_command.py +35 -12
- aient-1.1.8/src/aient/plugins/write_file.py +91 -0
- {aient-1.1.6 → aient-1.1.8/src/aient.egg-info}/PKG-INFO +1 -1
- aient-1.1.6/src/aient/plugins/write_file.py +0 -54
- {aient-1.1.6 → aient-1.1.8}/LICENSE +0 -0
- {aient-1.1.6 → aient-1.1.8}/MANIFEST.in +0 -0
- {aient-1.1.6 → aient-1.1.8}/README.md +0 -0
- {aient-1.1.6 → aient-1.1.8}/setup.cfg +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/.git +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/.gitignore +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/log_config.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/models.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/request.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/response.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/test/test_base_api.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/test/test_geminimask.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/test/test_image.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/test/test_payload.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/core/utils.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/audio.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/base.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/chatgpt.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/claude.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/duckduckgo.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/gemini.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/groq.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/models/vertex.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/arXiv.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/config.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/get_time.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/image.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/list_directory.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/read_file.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/registry.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/run_python.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/plugins/websearch.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/prompt/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/prompt/agent.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/utils/__init__.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/utils/prompt.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient/utils/scripts.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient.egg-info/SOURCES.txt +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient.egg-info/dependency_links.txt +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient.egg-info/requires.txt +0 -0
- {aient-1.1.6 → aient-1.1.8}/src/aient.egg-info/top_level.txt +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_API.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_Deepbricks.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_Web_crawler.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_aiwaves.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_aiwaves_arxiv.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_ask_gemini.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_class.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_claude.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_claude_zh_char.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_ddg_search.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_download_pdf.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_gemini.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_get_token_dict.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_google_search.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_jieba.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_json.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_logging.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_ollama.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_plugin.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_py_run.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_requests.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_search.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_tikitoken.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_token.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_url.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_whisper.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_wildcard.py +0 -0
- {aient-1.1.6 → aient-1.1.8}/test/test_yjh.py +0 -0
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
|
|
4
4
|
|
5
5
|
setup(
|
6
6
|
name="aient",
|
7
|
-
version="1.1.
|
7
|
+
version="1.1.8",
|
8
8
|
description="Aient: The Awakening of Agent.",
|
9
9
|
long_description=Path.open(Path("README.md"), encoding="utf-8").read(),
|
10
10
|
long_description_content_type="text/markdown",
|
@@ -35,7 +35,8 @@ def compare_line(line: str) -> bool:
|
|
35
35
|
return False
|
36
36
|
similarity = calculate_similarity(line, last_line)
|
37
37
|
last_line = line
|
38
|
-
|
38
|
+
# print(f"similarity: {similarity}")
|
39
|
+
return similarity > 0.89
|
39
40
|
|
40
41
|
def unescape_html(input_string: str) -> str:
|
41
42
|
"""
|
@@ -130,8 +131,6 @@ def excute_command(command):
|
|
130
131
|
continue
|
131
132
|
if "git clone" in command and ('Counting objects' in data_str or 'Resolving deltas' in data_str or 'Receiving objects' in data_str or 'Compressing objects' in data_str):
|
132
133
|
continue
|
133
|
-
if compare_line(data_str):
|
134
|
-
continue
|
135
134
|
output_lines.append(data_str)
|
136
135
|
# 检查进程是否已结束,避免在进程已退出后 select 仍然阻塞
|
137
136
|
if process.poll() is not None and not r:
|
@@ -160,8 +159,6 @@ def excute_command(command):
|
|
160
159
|
continue
|
161
160
|
if "git clone" in command and ('Counting objects' in line or 'Resolving deltas' in line or 'Receiving objects' in line or 'Compressing objects' in line):
|
162
161
|
continue
|
163
|
-
if compare_line(line):
|
164
|
-
continue
|
165
162
|
output_lines.append(line)
|
166
163
|
process.stdout.close()
|
167
164
|
# print(f"\n--- 命令实时输出结束 (PIPE) ---")
|
@@ -174,8 +171,21 @@ def excute_command(command):
|
|
174
171
|
stderr_output = process.stderr.read()
|
175
172
|
process.stderr.close()
|
176
173
|
|
177
|
-
|
178
|
-
|
174
|
+
new_output_lines = []
|
175
|
+
output_lines = "".join(output_lines).strip().replace("\\u001b[A", "").replace("\\r", "\r").replace("\\\\", "").replace("\\n", "\n").replace("\r", "+++").replace("\n", "+++")
|
176
|
+
for line in output_lines.split("+++"):
|
177
|
+
if line.strip() == "":
|
178
|
+
continue
|
179
|
+
# aaa = last_line.strip()
|
180
|
+
is_same = compare_line(repr(line.strip()))
|
181
|
+
if not is_same:
|
182
|
+
# print(f"{repr(aaa)}", flush=True)
|
183
|
+
# print(f"{repr(line.strip())}", flush=True)
|
184
|
+
# print(f"is_same: {is_same}", flush=True)
|
185
|
+
# print(f"\n\n\n", flush=True)
|
186
|
+
new_output_lines.append(line)
|
187
|
+
final_output_log = "\n".join(new_output_lines)
|
188
|
+
# print(f"output_lines: {len(new_output_lines)}")
|
179
189
|
|
180
190
|
if process.returncode == 0:
|
181
191
|
return f"执行命令成功:\n{final_output_log}"
|
@@ -205,18 +215,31 @@ if __name__ == "__main__":
|
|
205
215
|
# print('\\n-------TQDM 任务完成.')
|
206
216
|
# """
|
207
217
|
|
218
|
+
# tqdm_script = """
|
219
|
+
# import time
|
220
|
+
# print("Hello, World!1")
|
221
|
+
# print("Hello, World!2")
|
222
|
+
# for i in range(10):
|
223
|
+
# print(f"TQDM 进度条测试: {i}")
|
224
|
+
# time.sleep(1)
|
225
|
+
# """
|
226
|
+
# processed_tqdm_script = tqdm_script.replace('"', '\\"')
|
227
|
+
# tqdm_command = f"python -c \"{processed_tqdm_script}\""
|
228
|
+
# # print(f"执行: {tqdm_command}")
|
229
|
+
# print(excute_command(tqdm_command))
|
230
|
+
|
208
231
|
tqdm_script = """
|
209
232
|
import time
|
210
|
-
|
211
|
-
|
212
|
-
for i in
|
213
|
-
print(
|
214
|
-
time.sleep(1)
|
233
|
+
with open("/Users/yanyuming/Downloads/GitHub/beswarm/1.txt", "r") as f:
|
234
|
+
content = f.read()
|
235
|
+
for i in content.split("\\n"):
|
236
|
+
print(i)
|
215
237
|
"""
|
216
238
|
processed_tqdm_script = tqdm_script.replace('"', '\\"')
|
217
239
|
tqdm_command = f"python -c \"{processed_tqdm_script}\""
|
218
240
|
# print(f"执行: {tqdm_command}")
|
219
241
|
print(excute_command(tqdm_command))
|
242
|
+
|
220
243
|
# tqdm_script = """
|
221
244
|
# import time
|
222
245
|
# from tqdm import tqdm
|
@@ -0,0 +1,91 @@
|
|
1
|
+
from .registry import register_tool
|
2
|
+
|
3
|
+
import os
|
4
|
+
import html
|
5
|
+
|
6
|
+
def unescape_html(input_string: str) -> str:
|
7
|
+
"""
|
8
|
+
将字符串中的 HTML 实体(例如 &)转换回其原始字符(例如 &)。
|
9
|
+
|
10
|
+
Args:
|
11
|
+
input_string: 包含 HTML 实体的输入字符串。
|
12
|
+
|
13
|
+
Returns:
|
14
|
+
转换后的字符串。
|
15
|
+
"""
|
16
|
+
return html.unescape(input_string)
|
17
|
+
|
18
|
+
@register_tool()
|
19
|
+
def write_to_file(path, content, mode='w'):
|
20
|
+
"""
|
21
|
+
## write_to_file
|
22
|
+
Description: Request to write full content to a file at the specified path. If the file exists, it will be overwritten with the provided content. If the file doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
23
|
+
Parameters:
|
24
|
+
- path: (required) The path of the file to write to (relative to the current working directory ${args.cwd})
|
25
|
+
- content: (required) The content to write to the file. ALWAYS provide the COMPLETE intended content of the file, without any truncation or omissions. You MUST include ALL parts of the file, even if they haven't been modified. Do NOT include the line numbers in the content though, just the actual content of the file.
|
26
|
+
- mode: (optional) The mode to write to the file. Default is 'w'. 'w' for write, 'a' for append.
|
27
|
+
Usage:
|
28
|
+
<write_to_file>
|
29
|
+
<path>File path here</path>
|
30
|
+
<content>
|
31
|
+
Your file content here
|
32
|
+
</content>
|
33
|
+
<mode>w</mode>
|
34
|
+
</write_to_file>
|
35
|
+
|
36
|
+
Example: Requesting to write to frontend-config.json
|
37
|
+
<write_to_file>
|
38
|
+
<path>frontend-config.json</path>
|
39
|
+
<content>
|
40
|
+
{
|
41
|
+
"apiEndpoint": "https://api.example.com",
|
42
|
+
"theme": {
|
43
|
+
"primaryColor": "#007bff",
|
44
|
+
"secondaryColor": "#6c757d",
|
45
|
+
"fontFamily": "Arial, sans-serif"
|
46
|
+
},
|
47
|
+
"features": {
|
48
|
+
"darkMode": true,
|
49
|
+
"notifications": true,
|
50
|
+
"analytics": false
|
51
|
+
},
|
52
|
+
"version": "1.0.0"
|
53
|
+
}
|
54
|
+
</content>
|
55
|
+
</write_to_file>
|
56
|
+
"""
|
57
|
+
# 确保目录存在
|
58
|
+
os.makedirs(os.path.dirname(path) or '.', exist_ok=True)
|
59
|
+
|
60
|
+
if content.startswith("##") and (path.endswith(".md") or path.endswith(".txt")):
|
61
|
+
content = "\n\n" + content
|
62
|
+
|
63
|
+
# 写入文件
|
64
|
+
with open(path, mode, encoding='utf-8') as file:
|
65
|
+
file.write(unescape_html(content))
|
66
|
+
|
67
|
+
return f"已成功写入文件:{path}"
|
68
|
+
|
69
|
+
|
70
|
+
if __name__ == "__main__":
|
71
|
+
text = """
|
72
|
+
<!DOCTYPE html>
|
73
|
+
<html lang="zh-CN">
|
74
|
+
<head>
|
75
|
+
<meta charset="UTF-8">
|
76
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
77
|
+
<title>Continuous Thought Machines (CTM) 原理解读</title>
|
78
|
+
<script>MathJax={chtml:{fontURL:'https://cdn.jsdelivr.net/npm/mathjax@3/es5/output/chtml/fonts/woff-v2'}}</script>
|
79
|
+
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js" id="MathJax-script" async></script>
|
80
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/2.1.2/viz.js" defer></script>
|
81
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/2.1.2/full.render.js" defer></script>
|
82
|
+
<script src="https://unpkg.com/@panzoom/panzoom@4.5.1/dist/panzoom.min.js" defer></script>
|
83
|
+
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css" rel="stylesheet"/>
|
84
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap" rel="stylesheet">
|
85
|
+
<link href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined" rel="stylesheet">
|
86
|
+
<style>
|
87
|
+
"""
|
88
|
+
with open("test.txt", "r", encoding="utf-8") as file:
|
89
|
+
content = file.read()
|
90
|
+
print(write_to_file("test.txt", content))
|
91
|
+
# python -m beswarm.aient.src.aient.plugins.write_file
|
@@ -1,54 +0,0 @@
|
|
1
|
-
from .registry import register_tool
|
2
|
-
|
3
|
-
import os
|
4
|
-
|
5
|
-
@register_tool()
|
6
|
-
def write_to_file(path, content, mode='w'):
|
7
|
-
"""
|
8
|
-
## write_to_file
|
9
|
-
Description: Request to write full content to a file at the specified path. If the file exists, it will be overwritten with the provided content. If the file doesn't exist, it will be created. This tool will automatically create any directories needed to write the file.
|
10
|
-
Parameters:
|
11
|
-
- path: (required) The path of the file to write to (relative to the current working directory ${args.cwd})
|
12
|
-
- content: (required) The content to write to the file. ALWAYS provide the COMPLETE intended content of the file, without any truncation or omissions. You MUST include ALL parts of the file, even if they haven't been modified. Do NOT include the line numbers in the content though, just the actual content of the file.
|
13
|
-
- mode: (optional) The mode to write to the file. Default is 'w'. 'w' for write, 'a' for append.
|
14
|
-
Usage:
|
15
|
-
<write_to_file>
|
16
|
-
<path>File path here</path>
|
17
|
-
<content>
|
18
|
-
Your file content here
|
19
|
-
</content>
|
20
|
-
<mode>w</mode>
|
21
|
-
</write_to_file>
|
22
|
-
|
23
|
-
Example: Requesting to write to frontend-config.json
|
24
|
-
<write_to_file>
|
25
|
-
<path>frontend-config.json</path>
|
26
|
-
<content>
|
27
|
-
{
|
28
|
-
"apiEndpoint": "https://api.example.com",
|
29
|
-
"theme": {
|
30
|
-
"primaryColor": "#007bff",
|
31
|
-
"secondaryColor": "#6c757d",
|
32
|
-
"fontFamily": "Arial, sans-serif"
|
33
|
-
},
|
34
|
-
"features": {
|
35
|
-
"darkMode": true,
|
36
|
-
"notifications": true,
|
37
|
-
"analytics": false
|
38
|
-
},
|
39
|
-
"version": "1.0.0"
|
40
|
-
}
|
41
|
-
</content>
|
42
|
-
</write_to_file>
|
43
|
-
"""
|
44
|
-
# 确保目录存在
|
45
|
-
os.makedirs(os.path.dirname(path) or '.', exist_ok=True)
|
46
|
-
|
47
|
-
if content.startswith("##") and (path.endswith(".md") or path.endswith(".txt")):
|
48
|
-
content = "\n\n" + content
|
49
|
-
|
50
|
-
# 写入文件
|
51
|
-
with open(path, mode, encoding='utf-8') as file:
|
52
|
-
file.write(content)
|
53
|
-
|
54
|
-
return f"已成功写入文件:{path}"
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|