chattool 7.1.0__tar.gz → 7.1.2__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 (158) hide show
  1. {chattool-7.1.0/src/chattool.egg-info → chattool-7.1.2}/PKG-INFO +65 -61
  2. {chattool-7.1.0 → chattool-7.1.2}/README.md +50 -45
  3. {chattool-7.1.0 → chattool-7.1.2}/pyproject.toml +15 -16
  4. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/__init__.py +2 -10
  5. chattool-7.1.2/src/chattool/client/__init__.py +23 -0
  6. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/client/main.py +0 -12
  7. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/__init__.py +0 -12
  8. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/aliyun.py +1 -1
  9. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/elements.py +0 -12
  10. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/tencent.py +1 -1
  11. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/mcp/catalog.py +0 -8
  12. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/mcp/server.py +0 -2
  13. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/__init__.py +0 -2
  14. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/cli.py +0 -7
  15. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/skill/cli.py +2 -2
  16. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/skill/platforms.py +6 -5
  17. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/__init__.py +1 -15
  18. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/cc/cli.py +1 -1
  19. chattool-7.1.2/src/chattool/tools/cert/__init__.py +5 -0
  20. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/cert/cert_server.py +4 -4
  21. {chattool-7.1.0 → chattool-7.1.2/src/chattool.egg-info}/PKG-INFO +65 -61
  22. {chattool-7.1.0 → chattool-7.1.2}/src/chattool.egg-info/SOURCES.txt +0 -46
  23. {chattool-7.1.0 → chattool-7.1.2}/src/chattool.egg-info/entry_points.txt +0 -1
  24. {chattool-7.1.0 → chattool-7.1.2}/src/chattool.egg-info/requires.txt +15 -15
  25. chattool-7.1.0/src/chattool/client/__init__.py +0 -43
  26. chattool-7.1.0/src/chattool/config/feishu.py +0 -36
  27. chattool-7.1.0/src/chattool/config/huggingface.py +0 -28
  28. chattool-7.1.0/src/chattool/config/liblib.py +0 -33
  29. chattool-7.1.0/src/chattool/config/pollinations.py +0 -23
  30. chattool-7.1.0/src/chattool/config/siliconflow.py +0 -29
  31. chattool-7.1.0/src/chattool/config/tongyi.py +0 -33
  32. chattool-7.1.0/src/chattool/serve/lark_serve.py +0 -177
  33. chattool-7.1.0/src/chattool/tools/cert/__init__.py +0 -5
  34. chattool-7.1.0/src/chattool/tools/cert/acme_dns_tiny.py +0 -239
  35. chattool-7.1.0/src/chattool/tools/cert/cert_updater.py +0 -460
  36. chattool-7.1.0/src/chattool/tools/cert/cli.py +0 -305
  37. chattool-7.1.0/src/chattool/tools/dns/__init__.py +0 -38
  38. chattool-7.1.0/src/chattool/tools/dns/aliyun.py +0 -305
  39. chattool-7.1.0/src/chattool/tools/dns/base.py +0 -186
  40. chattool-7.1.0/src/chattool/tools/dns/cli.py +0 -737
  41. chattool-7.1.0/src/chattool/tools/dns/domain_utils.py +0 -11
  42. chattool-7.1.0/src/chattool/tools/dns/ip_updater.py +0 -319
  43. chattool-7.1.0/src/chattool/tools/dns/mcp.py +0 -220
  44. chattool-7.1.0/src/chattool/tools/dns/tencent.py +0 -283
  45. chattool-7.1.0/src/chattool/tools/dns/utils.py +0 -30
  46. chattool-7.1.0/src/chattool/tools/image/__init__.py +0 -45
  47. chattool-7.1.0/src/chattool/tools/image/base.py +0 -30
  48. chattool-7.1.0/src/chattool/tools/image/cli.py +0 -423
  49. chattool-7.1.0/src/chattool/tools/image/codex.py +0 -393
  50. chattool-7.1.0/src/chattool/tools/image/helpers.py +0 -96
  51. chattool-7.1.0/src/chattool/tools/image/huggingface.py +0 -44
  52. chattool-7.1.0/src/chattool/tools/image/liblib.py +0 -150
  53. chattool-7.1.0/src/chattool/tools/image/pollinations.py +0 -56
  54. chattool-7.1.0/src/chattool/tools/image/siliconflow.py +0 -92
  55. chattool-7.1.0/src/chattool/tools/image/tongyi.py +0 -61
  56. chattool-7.1.0/src/chattool/tools/lark/__init__.py +0 -22
  57. chattool-7.1.0/src/chattool/tools/lark/bot.py +0 -1721
  58. chattool-7.1.0/src/chattool/tools/lark/cli.py +0 -239
  59. chattool-7.1.0/src/chattool/tools/lark/context.py +0 -128
  60. chattool-7.1.0/src/chattool/tools/lark/docx_blocks.py +0 -96
  61. chattool-7.1.0/src/chattool/tools/lark/elements.py +0 -119
  62. chattool-7.1.0/src/chattool/tools/lark/markdown_blocks.py +0 -110
  63. chattool-7.1.0/src/chattool/tools/lark/session.py +0 -116
  64. chattool-7.1.0/src/chattool/tools/network/__init__.py +0 -3
  65. chattool-7.1.0/src/chattool/tools/network/cli.py +0 -236
  66. chattool-7.1.0/src/chattool/tools/network/link_check.py +0 -171
  67. chattool-7.1.0/src/chattool/tools/network/mcp.py +0 -45
  68. chattool-7.1.0/src/chattool/tools/network/scanner.py +0 -133
  69. chattool-7.1.0/src/chattool/tools/network/service_urls.py +0 -24
  70. chattool-7.1.0/src/chattool/tools/pypi/__init__.py +0 -41
  71. chattool-7.1.0/src/chattool/tools/pypi/cli.py +0 -520
  72. chattool-7.1.0/src/chattool/tools/pypi/main.py +0 -1779
  73. {chattool-7.1.0 → chattool-7.1.2}/LICENSE +0 -0
  74. {chattool-7.1.0 → chattool-7.1.2}/MANIFEST.in +0 -0
  75. {chattool-7.1.0 → chattool-7.1.2}/scripts/migrate_chattool_envs_to_chatarch.py +0 -0
  76. {chattool-7.1.0 → chattool-7.1.2}/setup.cfg +0 -0
  77. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/_all.py +0 -0
  78. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/client/cert_client.py +0 -0
  79. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/client/svg2gif_client.py +0 -0
  80. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/azure.py +0 -0
  81. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/base.py +0 -0
  82. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/browser.py +0 -0
  83. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/crs.py +0 -0
  84. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/openai.py +0 -0
  85. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/skills.py +0 -0
  86. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/tplink.py +0 -0
  87. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/config/zulip.py +0 -0
  88. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/const.py +0 -0
  89. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/docker/__init__.py +0 -0
  90. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/docker/cli.py +0 -0
  91. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/docker/elements.py +0 -0
  92. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/docker/main.py +0 -0
  93. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/__init__.py +0 -0
  94. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/__init__.py +0 -0
  95. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/cli.py +0 -0
  96. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/client.py +0 -0
  97. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/daily.py +0 -0
  98. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/harvest.py +0 -0
  99. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/models.py +0 -0
  100. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/presets.py +0 -0
  101. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/arxiv/query.py +0 -0
  102. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/cli.py +0 -0
  103. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/wordpress/__init__.py +0 -0
  104. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/wordpress/client.py +0 -0
  105. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/explore/wordpress/models.py +0 -0
  106. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/interaction/__init__.py +0 -0
  107. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/interaction/command_schema.py +0 -0
  108. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/interaction/policy.py +0 -0
  109. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/interaction/warnings.py +0 -0
  110. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/llm/__init__.py +0 -0
  111. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/llm/chattype.py +0 -0
  112. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/llm/response.py +0 -0
  113. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/mcp/__init__.py +0 -0
  114. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/mcp/cli.py +0 -0
  115. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/capture.py +0 -0
  116. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/cert_server.py +0 -0
  117. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/local.py +0 -0
  118. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/oauth.py +0 -0
  119. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/serve/svg2gif.py +0 -0
  120. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/skill/__init__.py +0 -0
  121. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/skill/interaction.py +0 -0
  122. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/skill/validation.py +0 -0
  123. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/__init__.py +0 -0
  124. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/base.py +0 -0
  125. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/cli.py +0 -0
  126. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/playwright_impl.py +0 -0
  127. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/selenium.py +0 -0
  128. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/test_browser.py +0 -0
  129. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/test_module.py +0 -0
  130. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/test_remote.py +0 -0
  131. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/browser/xhs_qrcode.py +0 -0
  132. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/cc/__init__.py +0 -0
  133. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/cert/email.py +0 -0
  134. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/crs/__init__.py +0 -0
  135. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/crs/api.py +0 -0
  136. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/crs/cli.py +0 -0
  137. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/crs/openai_oauth.py +0 -0
  138. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/interact.py +0 -0
  139. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/nginx/__init__.py +0 -0
  140. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/nginx/cli.py +0 -0
  141. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/nginx/templates.py +0 -0
  142. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/tplogin.py +0 -0
  143. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/tplogin_cli.py +0 -0
  144. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/zulip/__init__.py +0 -0
  145. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/zulip/cli.py +0 -0
  146. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/zulip/client.py +0 -0
  147. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/zulip/legacy.py +0 -0
  148. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/tools/zulip/mcp.py +0 -0
  149. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/__init__.py +0 -0
  150. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/basic.py +0 -0
  151. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/custom_logger.py +0 -0
  152. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/fastobj.py +0 -0
  153. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/httpclient.py +0 -0
  154. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/pathing.py +0 -0
  155. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/test_helpers.py +0 -0
  156. {chattool-7.1.0 → chattool-7.1.2}/src/chattool/utils/urltool.py +0 -0
  157. {chattool-7.1.0 → chattool-7.1.2}/src/chattool.egg-info/dependency_links.txt +0 -0
  158. {chattool-7.1.0 → chattool-7.1.2}/src/chattool.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: chattool
3
- Version: 7.1.0
3
+ Version: 7.1.2
4
4
  Summary: Toolkit for Chat API
5
5
  Author-email: Rex Wang <1073853456@qq.com>
6
6
  License: MIT license
@@ -17,14 +17,20 @@ Requires-Python: >=3.10
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
19
  Requires-Dist: Click>=7.0
20
- Requires-Dist: chatgh<0.3.0,>=0.2.6
21
20
  Requires-Dist: chatstyle<0.2.0,>=0.1.0
22
- Requires-Dist: chatenv<0.3.0,>=0.2.0
21
+ Requires-Dist: chatenv<0.3.0,>=0.2.2
23
22
  Requires-Dist: requests>=2.20
24
23
  Requires-Dist: python-dotenv>=0.17.0
25
24
  Requires-Dist: colorama
26
25
  Requires-Dist: httpx
27
26
  Requires-Dist: tomli; python_version < "3.11"
27
+ Provides-Extra: arch
28
+ Requires-Dist: ChatGH<0.3.0,>=0.2.6; extra == "arch"
29
+ Requires-Dist: ChatUp<0.3.0,>=0.2.0; extra == "arch"
30
+ Requires-Dist: ChatPyPI<0.3.0,>=0.2.3; extra == "arch"
31
+ Requires-Dist: ChatNet<0.3.0,>=0.2.0; extra == "arch"
32
+ Requires-Dist: ChatLark<0.2.0,>=0.1.1; extra == "arch"
33
+ Requires-Dist: ChatImg[images]<0.2.0,>=0.1.3; extra == "arch"
28
34
  Provides-Extra: interactive
29
35
  Requires-Dist: questionary>=2.1.0; extra == "interactive"
30
36
  Requires-Dist: prompt_toolkit; extra == "interactive"
@@ -32,18 +38,11 @@ Provides-Extra: batch
32
38
  Requires-Dist: batch_executor>=0.3.0; extra == "batch"
33
39
  Requires-Dist: filelock; extra == "batch"
34
40
  Provides-Extra: dns
35
- Requires-Dist: aiohttp>=3.8; extra == "dns"
36
- Requires-Dist: cryptography; extra == "dns"
37
- Requires-Dist: gitpython; extra == "dns"
38
- Requires-Dist: netifaces; extra == "dns"
39
- Requires-Dist: alibabacloud_alidns20150109>=3.5.10; extra == "dns"
40
- Requires-Dist: alibabacloud_tea_openapi>=0.3.0; extra == "dns"
41
- Requires-Dist: tencentcloud-sdk-python; extra == "dns"
41
+ Requires-Dist: ChatDNS<0.2.0,>=0.1.1; extra == "dns"
42
42
  Provides-Extra: lark
43
- Requires-Dist: lark-oapi==1.5.3; extra == "lark"
44
- Requires-Dist: flask; extra == "lark"
43
+ Requires-Dist: ChatLark<0.2.0,>=0.1.1; extra == "lark"
45
44
  Provides-Extra: images
46
- Requires-Dist: dashscope; extra == "images"
45
+ Requires-Dist: ChatImg[images]<0.2.0,>=0.1.3; extra == "images"
47
46
  Provides-Extra: screenshot
48
47
  Requires-Dist: selenium; extra == "screenshot"
49
48
  Requires-Dist: pillow; extra == "screenshot"
@@ -57,14 +56,14 @@ Provides-Extra: serve
57
56
  Requires-Dist: fastapi; extra == "serve"
58
57
  Requires-Dist: uvicorn; extra == "serve"
59
58
  Requires-Dist: pydantic>=2.0.0; extra == "serve"
59
+ Requires-Dist: ChatDNS<0.2.0,>=0.1.1; extra == "serve"
60
60
  Provides-Extra: mcp
61
61
  Requires-Dist: fastmcp; python_version >= "3.10" and extra == "mcp"
62
62
  Provides-Extra: client
63
63
  Requires-Dist: gitpython; extra == "client"
64
64
  Requires-Dist: rich; extra == "client"
65
65
  Provides-Extra: pypi
66
- Requires-Dist: build; extra == "pypi"
67
- Requires-Dist: twine; extra == "pypi"
66
+ Requires-Dist: ChatPyPI<0.3.0,>=0.2.3; extra == "pypi"
68
67
  Provides-Extra: setup
69
68
  Requires-Dist: chatup<0.3.0,>=0.2.0; extra == "setup"
70
69
  Provides-Extra: tools
@@ -87,7 +86,7 @@ Provides-Extra: dev
87
86
  Requires-Dist: wheel; extra == "dev"
88
87
  Requires-Dist: build; extra == "dev"
89
88
  Requires-Dist: twine; extra == "dev"
90
- Requires-Dist: chattool[docs,setup,tests,tools]; extra == "dev"
89
+ Requires-Dist: chattool[arch,docs,setup,tests,tools]; extra == "dev"
91
90
  Dynamic: license-file
92
91
 
93
92
  <div align="center">
@@ -122,10 +121,12 @@ Dynamic: license-file
122
121
  ```bash
123
122
  pip install chattool --upgrade
124
123
  pip install "chattool[tools]" # 常用工具全集
125
- pip install "chattool[mcp,dns]" # MCP 服务 + DNS 工具
124
+ pip install "chattool[mcp]" # legacy MCP 服务(DNS MCP 本轮不维护)
126
125
  pip install "chattool[images]" # 含图像工具
127
- pip install "chattool[pypi]" # 含 Python 包构建/发布依赖
126
+ pip install "chattool[pypi]" # 安装独立 ChatPyPI,用 chatpypi 管理 Python 包创建/构建/发布
127
+ pip install "chattool[lark]" # 安装独立 ChatLark,用 chatlark 管理飞书/Lark bot helper
128
128
  pip install "chattool[setup]" # 安装独立 ChatUp,用 chatup workspace/hermes/cc-connect 等命令做环境初始化
129
+ pip install "chattool[arch]" # 一次性安装 ChatGH / ChatUp / ChatPyPI / ChatNet / ChatLark 这些平行 ChatArch 工具
129
130
  pip install "chattool[dev]" # 仓库开发依赖
130
131
  ```
131
132
 
@@ -152,7 +153,7 @@ chatenv set OPENAI_API_KEY=sk-xxx
152
153
  chatenv new mini -t feishu # 从当前激活配置复制一份新的 Feishu profile
153
154
  chatenv new -t openai # 交互式创建 OpenAI profile:先问名称,再补齐字段,不改 active .env
154
155
  chatenv save work -t openai && chatenv use work -t openai # 按类型管理 profile
155
- chattool lark info -e work # 显式使用 Feishu profile,优先级高于当前 shell 环境变量
156
+ chatlark info -e work # 显式使用 Feishu profile,优先级高于当前 shell 环境变量
156
157
  chattool cc init -i --quiet # 生成默认 quiet 的 cc-connect 项目配置
157
158
  ```
158
159
 
@@ -178,23 +179,25 @@ async for chunk in Chat().user("写一首诗").async_get_response_stream():
178
179
  print(chunk.delta_content, end="", flush=True)
179
180
  ```
180
181
 
181
- ### 飞书机器人 (`chattool lark`)
182
+ ### 飞书/Lark Bot(已迁移到 ChatLark)
183
+
184
+ 飞书/Lark bot helper 已从 ChatTool 分离到独立包 `ChatLark`,请使用一等 CLI `chatlark`。模型调用相关入口暂不接回 ChatTool。
182
185
 
183
186
  ```bash
184
- chattool lark send USER_ID "Hello"
185
- chattool lark send "Hello" # 使用 FEISHU_DEFAULT_RECEIVER_ID
186
- chattool lark send -t chat_id "Hello team" # 使用 FEISHU_DEFAULT_CHAT_ID
187
- chattool lark info
188
- chatup lark-cli # 需安装 chattool[setup] 或 chatup
189
- chattool serve lark echo # 回显机器人
190
- chattool serve lark ai --system "你是工作助手" # AI 对话机器人
187
+ pip install "chattool[lark]"
188
+ chatlark send USER_ID "Hello"
189
+ chatlark send "Hello" # 使用 FEISHU_DEFAULT_RECEIVER_ID
190
+ chatlark send -t chat_id "Hello team" # 使用 FEISHU_DEFAULT_CHAT_ID
191
+ chatlark info
192
+ chatlark serve echo
193
+ chatlark serve webhook
191
194
  ```
192
195
 
193
196
  ```python
194
- from chattool.tools.lark import LarkBot, ChatSession
197
+ from chatlark import LarkBot, ChatSession
195
198
 
196
199
  bot = LarkBot()
197
- session = ChatSession(system="你是助手")
200
+ session = ChatSession(chat_factory=my_chat_factory)
198
201
 
199
202
  @bot.on_message
200
203
  def chat(ctx):
@@ -203,21 +206,23 @@ def chat(ctx):
203
206
  bot.start()
204
207
  ```
205
208
 
206
- ### DNS 管理 (`chattool dns`)
209
+ ### DNS 管理(已迁移到 ChatDNS)
210
+
211
+ DNS 记录管理、DDNS、IP 探测和 DNS-01 证书自动化已经从 ChatTool 分离到独立包 `ChatDNS`,请使用一等 CLI `chatdns`:
207
212
 
208
213
  ```bash
209
- chattool dns
210
- chattool dns list
211
- chattool dns records home.example.com
212
- chattool dns set home.example.com -v 1.2.3.4
213
- chattool dns delete home.example.com -t A --yes
214
- chattool dns ip
215
- chattool dns ddns home.example.com --monitor
216
- chattool dns cert apply -d example.com -e admin@example.com
217
- chattool dns cert check -d example.com
214
+ chatdns --help
215
+ chatdns list
216
+ chatdns records home.example.com
217
+ chatdns set home.example.com -v 1.2.3.4
218
+ chatdns delete home.example.com -t A --yes
219
+ chatdns ip
220
+ chatdns ddns home.example.com --monitor
221
+ chatdns cert apply -d example.com -e admin@example.com --provider aliyun --staging
222
+ chatdns cert check -d example.com
218
223
  ```
219
224
 
220
- 交互终端里直接运行 `chattool dns` 会先进入命令选择;`records` / `set` / `delete` / `ddns` / `cert apply` 缺少必要参数时会自动补问,`cert apply` 的邮箱默认读取 `git config user.email`,`-I` 才会禁用交互并直接报错。
225
+ 在 ChatTool 中可通过可选依赖安装:`pip install "chattool[dns]"`。旧的 nested `chattool dns` 命令已移除,避免 ChatTool 继续持有重复 DNS/证书业务实现。
221
226
 
222
227
  ### Nginx 配置生成 (`chattool nginx`)
223
228
 
@@ -229,16 +234,17 @@ chattool nginx static-root ./nas.conf --set SERVER_NAME=share.example.com --set
229
234
  chattool nginx -i # 交互式选择模板并逐项填写
230
235
  ```
231
236
 
232
- ### AI 绘图 (`chattool image`)
237
+ ### AI 绘图 (`chatimg`)
233
238
 
234
239
  ```bash
235
- chattool image pollinations generate "a cat in space" -o cat.png
236
- chattool image siliconflow generate "a cute dog" -o dog.png
237
- chattool image codex generate "a watercolor fox"
238
- chattool image huggingface generate
240
+ pip install "chattool[images]"
241
+ chatimg pollinations generate "a cat in space" -o cat.png
242
+ chatimg siliconflow generate "a cute dog" -o dog.png
243
+ chatimg codex generate "a watercolor fox"
244
+ chatimg openai generate "a clean app icon"
239
245
  ```
240
246
 
241
- 交互终端里,各家 `generate` 命令缺少 `prompt` 时会自动补问;`huggingface generate` 与 `codex generate` 未传 `-o` 时会默认写到当前目录下的 `generated/image_<provider>_<model>_<timestamp>.png`。显式传 `-I` 时保持直接报错。
247
+ AI image provider 能力已迁移到独立 `ChatImg` / `chatimg`;`chattool image` 已移除,避免 ChatTool 继续持有重复 image provider 实现。
242
248
 
243
249
  ### 数据探索 (`chattool explore`)
244
250
 
@@ -266,9 +272,8 @@ chattool serve local . --html index.html --dry-run
266
272
 
267
273
  | 工具 | 命令 | 说明 |
268
274
  |------|------|------|
269
- | 网络扫描 | `chattool network` | 扫描局域网主机和端口 |
270
275
  | Nginx 配置 | `chattool nginx` | 按模板生成常见的反向代理、路径转发和静态目录配置 |
271
- | PyPI 工具 | `chattool pypi` | 创建、构建、校验、上传与探测 Python 包 |
276
+ | PyPI 工具 | `chatpypi`(来自 `chattool[pypi]` / `chattool[arch]` / `ChatPyPI`) | 创建、构建、校验、上传与探测 Python 包;ChatTool 不再内置 `chattool pypi` |
272
277
  | MCP 服务 | `chattool mcp start` | 标准 MCP Server,供 Claude/Cursor 调用 |
273
278
  | 环境安装 | `chatup zsh/codex/claude/opencode/hermes/lark-cli/docker` | ChatTool 的 setup 能力已迁移到独立 ChatUp;安装 `chattool[setup]` 或 `chatup` 后使用 `chatup ...` 一级命令配置常用 Agent CLI / WebUI / Docker 环境 |
274
279
  | Workspace | `chatup workspace` | 初始化围绕核心项目的人类-AI 协作工作区骨架;当前默认使用 `projects/` 作为实际工作的执行容器,workspace 根目录则保留 general-use 协议与上下文;可选 `--with-chattool`、`--with-chatblog`、`--with-memory` 分别挂载 ChatTool、ChatBlog、ChatMemory |
@@ -280,7 +285,7 @@ chattool serve local . --html index.html --dry-run
280
285
 
281
286
  完整文档见 [chattool.wzhecnu.cn](https://chattool.wzhecnu.cn)
282
287
  仓库结构设计草案见 `docs/design/python-library-repo-structure.md`
283
- PyPI 发布命令设计草案见 `docs/design/chattool-pypi-cli-design.md`
288
+ PyPI 包管理能力已迁移到独立 `ChatPyPI` / `chatpypi` 包。
284
289
 
285
290
  ## 测试约定
286
291
 
@@ -288,26 +293,25 @@ PyPI 发布命令设计草案见 `docs/design/chattool-pypi-cli-design.md`
288
293
  - `tests/mock-cli-tests/`:所有基于 `mock`、`patch`、`monkeypatch`、fake client / API 的 CLI 测试,统一集中到这里。
289
294
  - `tests/code-tests/`:非 CLI 的代码测试与历史测试迁移落点。
290
295
 
291
- 快速建包可直接运行:
296
+ 快速建包请安装并使用独立 `chatpypi`:
292
297
 
293
298
  ```bash
294
- chattool pypi init mychat
295
- chattool pypi init mycli -t chatarch
296
- chattool pypi init -i # 交互式选择模板、mkdocs/workflow 等选项
297
- chatpypi mychat
299
+ pip install "chattool[pypi]"
300
+ chatpypi init mychat
301
+ chatpypi init mycli -t chatarch
302
+ chatpypi init -i # 交互式选择模板、mkdocs/workflow 等选项
303
+ chatpypi probe mychat
298
304
  ```
299
305
 
300
- `chatpypi` 现在是更直接的快捷入口:传入普通首参数时,会自动按 `chattool pypi init <name>` 处理;如果首参数本身就是 `init/build/check/upload/probe` 之一,则保持原样透传给 `chattool pypi`。
306
+ 也可以通过 `pip install "chattool[arch]"` 一次性安装 ChatGH、ChatUp、ChatPyPI、ChatNet、ChatLark、ChatImg。
301
307
 
302
- 默认模板生成的 `pyproject.toml` 会写入 `requires-python = ">=3.9"`;`chatarch` 模板依赖 `chatstyle>=0.1.0` 与 `chatenv>=0.1.1`,默认写入 `requires-python = ">=3.10"`。
308
+ `ChatPyPI` / `chatpypi` 是 Python 包创建、构建、校验、上传与探测能力的 canonical owner;ChatTool 不再内置 `chattool pypi` 或 `chatpypi` wrapper。
303
309
 
304
- `chatarch` 模板会额外生成 `DEVELOP.md`、`CHANGELOG.md`、`AGENTS.md`、`README.en.md`、`mkdocs.yml`、`docs/`、`tests/cli-tests/`、`tests/mock-cli-tests/`、`tests/code-tests/` 与 `.github/workflows/` 骨架,并默认依赖 `chatstyle>=0.1.0` 与 `chatenv>=0.1.1` 作为 ChatArch CLI/env 运行时;其中发布 workflow 由显式 `v*` tag 或 `workflow_dispatch` 触发,校验 tag 与包内 `__version__` 一致,并通过 PyPI Trusted Publishing 的 `environment: pypi` 发布尚未存在的版本,不依赖仓库级 PyPI token secret。
310
+ 默认模板生成的 `pyproject.toml` 会写入 `requires-python = ">=3.9"`;`chatarch` 模板默认写入 `requires-python = ">=3.10"`,并依赖 `chatstyle>=0.1.0,<0.2.0` 与 `chatenv>=0.2.2,<0.3.0`。
305
311
 
306
- 如只想生成代码与测试骨架,可以用 `--without-mkdocs` 跳过 mkdocs/docs,用 `--without-workflows` 跳过 `.github/workflows/`。
312
+ `chatarch` 模板会额外生成 `DEVELOP.md`、`CHANGELOG.md`、`AGENTS.md`、`README.en.md`、`mkdocs.yml`、`docs/`、`tests/cli-tests/`、`tests/mock-cli-tests/`、`tests/code-tests/` 与 `.github/workflows/` 骨架;发布 workflow 由显式 `v*` tag 或 `workflow_dispatch` 触发,校验 tag 与包内 `__version__` 一致,并通过 PyPI Trusted Publishing 发布。默认不写 `environment: pypi`,除非 PyPI Trusted Publisher 明确配置了同名 environment。
307
313
 
308
- `chattool pypi` 现在只保留最小命令集:`init/build/check/upload/probe`。其中 `upload` 只是对原始 `twine upload` 的薄封装,不再接管凭证、仓库和交互逻辑。
309
-
310
- 其中 `chattool pypi probe <name>` 现在默认面向正式 `pypi`,按精确项目名检查名称是否已被占用;若命中现有项目,会顺手输出少量项目摘要信息和最新 release 日期,便于快速判断是否需要换名。
314
+ 如只想生成代码与测试骨架,可以用 `--without-mkdocs` 跳过 mkdocs/docs,用 `--without-workflows` 跳过 `.github/workflows/`。
311
315
 
312
316
  ## 开源协议
313
317
 
@@ -30,10 +30,12 @@
30
30
  ```bash
31
31
  pip install chattool --upgrade
32
32
  pip install "chattool[tools]" # 常用工具全集
33
- pip install "chattool[mcp,dns]" # MCP 服务 + DNS 工具
33
+ pip install "chattool[mcp]" # legacy MCP 服务(DNS MCP 本轮不维护)
34
34
  pip install "chattool[images]" # 含图像工具
35
- pip install "chattool[pypi]" # 含 Python 包构建/发布依赖
35
+ pip install "chattool[pypi]" # 安装独立 ChatPyPI,用 chatpypi 管理 Python 包创建/构建/发布
36
+ pip install "chattool[lark]" # 安装独立 ChatLark,用 chatlark 管理飞书/Lark bot helper
36
37
  pip install "chattool[setup]" # 安装独立 ChatUp,用 chatup workspace/hermes/cc-connect 等命令做环境初始化
38
+ pip install "chattool[arch]" # 一次性安装 ChatGH / ChatUp / ChatPyPI / ChatNet / ChatLark 这些平行 ChatArch 工具
37
39
  pip install "chattool[dev]" # 仓库开发依赖
38
40
  ```
39
41
 
@@ -60,7 +62,7 @@ chatenv set OPENAI_API_KEY=sk-xxx
60
62
  chatenv new mini -t feishu # 从当前激活配置复制一份新的 Feishu profile
61
63
  chatenv new -t openai # 交互式创建 OpenAI profile:先问名称,再补齐字段,不改 active .env
62
64
  chatenv save work -t openai && chatenv use work -t openai # 按类型管理 profile
63
- chattool lark info -e work # 显式使用 Feishu profile,优先级高于当前 shell 环境变量
65
+ chatlark info -e work # 显式使用 Feishu profile,优先级高于当前 shell 环境变量
64
66
  chattool cc init -i --quiet # 生成默认 quiet 的 cc-connect 项目配置
65
67
  ```
66
68
 
@@ -86,23 +88,25 @@ async for chunk in Chat().user("写一首诗").async_get_response_stream():
86
88
  print(chunk.delta_content, end="", flush=True)
87
89
  ```
88
90
 
89
- ### 飞书机器人 (`chattool lark`)
91
+ ### 飞书/Lark Bot(已迁移到 ChatLark)
92
+
93
+ 飞书/Lark bot helper 已从 ChatTool 分离到独立包 `ChatLark`,请使用一等 CLI `chatlark`。模型调用相关入口暂不接回 ChatTool。
90
94
 
91
95
  ```bash
92
- chattool lark send USER_ID "Hello"
93
- chattool lark send "Hello" # 使用 FEISHU_DEFAULT_RECEIVER_ID
94
- chattool lark send -t chat_id "Hello team" # 使用 FEISHU_DEFAULT_CHAT_ID
95
- chattool lark info
96
- chatup lark-cli # 需安装 chattool[setup] 或 chatup
97
- chattool serve lark echo # 回显机器人
98
- chattool serve lark ai --system "你是工作助手" # AI 对话机器人
96
+ pip install "chattool[lark]"
97
+ chatlark send USER_ID "Hello"
98
+ chatlark send "Hello" # 使用 FEISHU_DEFAULT_RECEIVER_ID
99
+ chatlark send -t chat_id "Hello team" # 使用 FEISHU_DEFAULT_CHAT_ID
100
+ chatlark info
101
+ chatlark serve echo
102
+ chatlark serve webhook
99
103
  ```
100
104
 
101
105
  ```python
102
- from chattool.tools.lark import LarkBot, ChatSession
106
+ from chatlark import LarkBot, ChatSession
103
107
 
104
108
  bot = LarkBot()
105
- session = ChatSession(system="你是助手")
109
+ session = ChatSession(chat_factory=my_chat_factory)
106
110
 
107
111
  @bot.on_message
108
112
  def chat(ctx):
@@ -111,21 +115,23 @@ def chat(ctx):
111
115
  bot.start()
112
116
  ```
113
117
 
114
- ### DNS 管理 (`chattool dns`)
118
+ ### DNS 管理(已迁移到 ChatDNS)
119
+
120
+ DNS 记录管理、DDNS、IP 探测和 DNS-01 证书自动化已经从 ChatTool 分离到独立包 `ChatDNS`,请使用一等 CLI `chatdns`:
115
121
 
116
122
  ```bash
117
- chattool dns
118
- chattool dns list
119
- chattool dns records home.example.com
120
- chattool dns set home.example.com -v 1.2.3.4
121
- chattool dns delete home.example.com -t A --yes
122
- chattool dns ip
123
- chattool dns ddns home.example.com --monitor
124
- chattool dns cert apply -d example.com -e admin@example.com
125
- chattool dns cert check -d example.com
123
+ chatdns --help
124
+ chatdns list
125
+ chatdns records home.example.com
126
+ chatdns set home.example.com -v 1.2.3.4
127
+ chatdns delete home.example.com -t A --yes
128
+ chatdns ip
129
+ chatdns ddns home.example.com --monitor
130
+ chatdns cert apply -d example.com -e admin@example.com --provider aliyun --staging
131
+ chatdns cert check -d example.com
126
132
  ```
127
133
 
128
- 交互终端里直接运行 `chattool dns` 会先进入命令选择;`records` / `set` / `delete` / `ddns` / `cert apply` 缺少必要参数时会自动补问,`cert apply` 的邮箱默认读取 `git config user.email`,`-I` 才会禁用交互并直接报错。
134
+ 在 ChatTool 中可通过可选依赖安装:`pip install "chattool[dns]"`。旧的 nested `chattool dns` 命令已移除,避免 ChatTool 继续持有重复 DNS/证书业务实现。
129
135
 
130
136
  ### Nginx 配置生成 (`chattool nginx`)
131
137
 
@@ -137,16 +143,17 @@ chattool nginx static-root ./nas.conf --set SERVER_NAME=share.example.com --set
137
143
  chattool nginx -i # 交互式选择模板并逐项填写
138
144
  ```
139
145
 
140
- ### AI 绘图 (`chattool image`)
146
+ ### AI 绘图 (`chatimg`)
141
147
 
142
148
  ```bash
143
- chattool image pollinations generate "a cat in space" -o cat.png
144
- chattool image siliconflow generate "a cute dog" -o dog.png
145
- chattool image codex generate "a watercolor fox"
146
- chattool image huggingface generate
149
+ pip install "chattool[images]"
150
+ chatimg pollinations generate "a cat in space" -o cat.png
151
+ chatimg siliconflow generate "a cute dog" -o dog.png
152
+ chatimg codex generate "a watercolor fox"
153
+ chatimg openai generate "a clean app icon"
147
154
  ```
148
155
 
149
- 交互终端里,各家 `generate` 命令缺少 `prompt` 时会自动补问;`huggingface generate` 与 `codex generate` 未传 `-o` 时会默认写到当前目录下的 `generated/image_<provider>_<model>_<timestamp>.png`。显式传 `-I` 时保持直接报错。
156
+ AI image provider 能力已迁移到独立 `ChatImg` / `chatimg`;`chattool image` 已移除,避免 ChatTool 继续持有重复 image provider 实现。
150
157
 
151
158
  ### 数据探索 (`chattool explore`)
152
159
 
@@ -174,9 +181,8 @@ chattool serve local . --html index.html --dry-run
174
181
 
175
182
  | 工具 | 命令 | 说明 |
176
183
  |------|------|------|
177
- | 网络扫描 | `chattool network` | 扫描局域网主机和端口 |
178
184
  | Nginx 配置 | `chattool nginx` | 按模板生成常见的反向代理、路径转发和静态目录配置 |
179
- | PyPI 工具 | `chattool pypi` | 创建、构建、校验、上传与探测 Python 包 |
185
+ | PyPI 工具 | `chatpypi`(来自 `chattool[pypi]` / `chattool[arch]` / `ChatPyPI`) | 创建、构建、校验、上传与探测 Python 包;ChatTool 不再内置 `chattool pypi` |
180
186
  | MCP 服务 | `chattool mcp start` | 标准 MCP Server,供 Claude/Cursor 调用 |
181
187
  | 环境安装 | `chatup zsh/codex/claude/opencode/hermes/lark-cli/docker` | ChatTool 的 setup 能力已迁移到独立 ChatUp;安装 `chattool[setup]` 或 `chatup` 后使用 `chatup ...` 一级命令配置常用 Agent CLI / WebUI / Docker 环境 |
182
188
  | Workspace | `chatup workspace` | 初始化围绕核心项目的人类-AI 协作工作区骨架;当前默认使用 `projects/` 作为实际工作的执行容器,workspace 根目录则保留 general-use 协议与上下文;可选 `--with-chattool`、`--with-chatblog`、`--with-memory` 分别挂载 ChatTool、ChatBlog、ChatMemory |
@@ -188,7 +194,7 @@ chattool serve local . --html index.html --dry-run
188
194
 
189
195
  完整文档见 [chattool.wzhecnu.cn](https://chattool.wzhecnu.cn)
190
196
  仓库结构设计草案见 `docs/design/python-library-repo-structure.md`
191
- PyPI 发布命令设计草案见 `docs/design/chattool-pypi-cli-design.md`
197
+ PyPI 包管理能力已迁移到独立 `ChatPyPI` / `chatpypi` 包。
192
198
 
193
199
  ## 测试约定
194
200
 
@@ -196,26 +202,25 @@ PyPI 发布命令设计草案见 `docs/design/chattool-pypi-cli-design.md`
196
202
  - `tests/mock-cli-tests/`:所有基于 `mock`、`patch`、`monkeypatch`、fake client / API 的 CLI 测试,统一集中到这里。
197
203
  - `tests/code-tests/`:非 CLI 的代码测试与历史测试迁移落点。
198
204
 
199
- 快速建包可直接运行:
205
+ 快速建包请安装并使用独立 `chatpypi`:
200
206
 
201
207
  ```bash
202
- chattool pypi init mychat
203
- chattool pypi init mycli -t chatarch
204
- chattool pypi init -i # 交互式选择模板、mkdocs/workflow 等选项
205
- chatpypi mychat
208
+ pip install "chattool[pypi]"
209
+ chatpypi init mychat
210
+ chatpypi init mycli -t chatarch
211
+ chatpypi init -i # 交互式选择模板、mkdocs/workflow 等选项
212
+ chatpypi probe mychat
206
213
  ```
207
214
 
208
- `chatpypi` 现在是更直接的快捷入口:传入普通首参数时,会自动按 `chattool pypi init <name>` 处理;如果首参数本身就是 `init/build/check/upload/probe` 之一,则保持原样透传给 `chattool pypi`。
215
+ 也可以通过 `pip install "chattool[arch]"` 一次性安装 ChatGH、ChatUp、ChatPyPI、ChatNet、ChatLark、ChatImg。
209
216
 
210
- 默认模板生成的 `pyproject.toml` 会写入 `requires-python = ">=3.9"`;`chatarch` 模板依赖 `chatstyle>=0.1.0` 与 `chatenv>=0.1.1`,默认写入 `requires-python = ">=3.10"`。
217
+ `ChatPyPI` / `chatpypi` 是 Python 包创建、构建、校验、上传与探测能力的 canonical owner;ChatTool 不再内置 `chattool pypi` 或 `chatpypi` wrapper。
211
218
 
212
- `chatarch` 模板会额外生成 `DEVELOP.md`、`CHANGELOG.md`、`AGENTS.md`、`README.en.md`、`mkdocs.yml`、`docs/`、`tests/cli-tests/`、`tests/mock-cli-tests/`、`tests/code-tests/` 与 `.github/workflows/` 骨架,并默认依赖 `chatstyle>=0.1.0` 与 `chatenv>=0.1.1` 作为 ChatArch CLI/env 运行时;其中发布 workflow 由显式 `v*` tag 或 `workflow_dispatch` 触发,校验 tag 与包内 `__version__` 一致,并通过 PyPI Trusted Publishing 的 `environment: pypi` 发布尚未存在的版本,不依赖仓库级 PyPI token secret。
219
+ 默认模板生成的 `pyproject.toml` 会写入 `requires-python = ">=3.9"`;`chatarch` 模板默认写入 `requires-python = ">=3.10"`,并依赖 `chatstyle>=0.1.0,<0.2.0` 与 `chatenv>=0.2.2,<0.3.0`。
213
220
 
214
- 如只想生成代码与测试骨架,可以用 `--without-mkdocs` 跳过 mkdocs/docs,用 `--without-workflows` 跳过 `.github/workflows/`。
221
+ `chatarch` 模板会额外生成 `DEVELOP.md`、`CHANGELOG.md`、`AGENTS.md`、`README.en.md`、`mkdocs.yml`、`docs/`、`tests/cli-tests/`、`tests/mock-cli-tests/`、`tests/code-tests/` 与 `.github/workflows/` 骨架;发布 workflow 由显式 `v*` tag 或 `workflow_dispatch` 触发,校验 tag 与包内 `__version__` 一致,并通过 PyPI Trusted Publishing 发布。默认不写 `environment: pypi`,除非 PyPI Trusted Publisher 明确配置了同名 environment。
215
222
 
216
- `chattool pypi` 现在只保留最小命令集:`init/build/check/upload/probe`。其中 `upload` 只是对原始 `twine upload` 的薄封装,不再接管凭证、仓库和交互逻辑。
217
-
218
- 其中 `chattool pypi probe <name>` 现在默认面向正式 `pypi`,按精确项目名检查名称是否已被占用;若命中现有项目,会顺手输出少量项目摘要信息和最新 release 日期,便于快速判断是否需要换名。
223
+ 如只想生成代码与测试骨架,可以用 `--without-mkdocs` 跳过 mkdocs/docs,用 `--without-workflows` 跳过 `.github/workflows/`。
219
224
 
220
225
  ## 开源协议
221
226
 
@@ -23,9 +23,8 @@ keywords = ["chattool"]
23
23
  license = {text = "MIT license"}
24
24
  dependencies = [
25
25
  "Click>=7.0",
26
- "chatgh>=0.2.6,<0.3.0",
27
26
  "chatstyle>=0.1.0,<0.2.0",
28
- "chatenv>=0.2.0,<0.3.0",
27
+ "chatenv>=0.2.2,<0.3.0",
29
28
  "requests>=2.20",
30
29
  "python-dotenv>=0.17.0",
31
30
  "colorama",
@@ -34,6 +33,14 @@ dependencies = [
34
33
  ]
35
34
 
36
35
  [project.optional-dependencies]
36
+ arch = [
37
+ "ChatGH>=0.2.6,<0.3.0",
38
+ "ChatUp>=0.2.0,<0.3.0",
39
+ "ChatPyPI>=0.2.3,<0.3.0",
40
+ "ChatNet>=0.2.0,<0.3.0",
41
+ "ChatLark>=0.1.1,<0.2.0",
42
+ "ChatImg[images]>=0.1.3,<0.2.0",
43
+ ]
37
44
  interactive = [
38
45
  "questionary>=2.1.0",
39
46
  "prompt_toolkit",
@@ -43,20 +50,13 @@ batch = [
43
50
  "filelock",
44
51
  ]
45
52
  dns = [
46
- "aiohttp>=3.8",
47
- "cryptography",
48
- "gitpython",
49
- "netifaces",
50
- "alibabacloud_alidns20150109>=3.5.10",
51
- "alibabacloud_tea_openapi>=0.3.0",
52
- "tencentcloud-sdk-python",
53
+ "ChatDNS>=0.1.1,<0.2.0",
53
54
  ]
54
55
  lark = [
55
- "lark-oapi==1.5.3",
56
- "flask",
56
+ "ChatLark>=0.1.1,<0.2.0",
57
57
  ]
58
58
  images = [
59
- "dashscope"
59
+ "ChatImg[images]>=0.1.3,<0.2.0",
60
60
  ]
61
61
  screenshot = [
62
62
  "selenium",
@@ -73,6 +73,7 @@ serve = [
73
73
  "fastapi",
74
74
  "uvicorn",
75
75
  "pydantic>=2.0.0",
76
+ "ChatDNS>=0.1.1,<0.2.0",
76
77
  ]
77
78
  mcp = [
78
79
  "fastmcp; python_version >= '3.10'",
@@ -82,8 +83,7 @@ client = [
82
83
  "rich",
83
84
  ]
84
85
  pypi = [
85
- "build",
86
- "twine",
86
+ "ChatPyPI>=0.2.3,<0.3.0",
87
87
  ]
88
88
  setup = [
89
89
  "chatup>=0.2.0,<0.3.0",
@@ -111,7 +111,7 @@ dev = [
111
111
  "wheel",
112
112
  "build",
113
113
  "twine",
114
- "chattool[docs,setup,tests,tools]",
114
+ "chattool[arch,docs,setup,tests,tools]",
115
115
  ]
116
116
  [project.urls]
117
117
  Homepage = "https://github.com/cubenlp/chattool"
@@ -119,7 +119,6 @@ Repository = "https://github.com/cubenlp/chattool"
119
119
 
120
120
  [project.scripts]
121
121
  chattool = "chattool.client:main_cli"
122
- chatpypi = "chattool.client:main_pypi_cli"
123
122
  chatskill = "chattool.client:main_skill_cli"
124
123
  chatmcp = "chattool.mcp:main"
125
124
 
@@ -4,7 +4,7 @@ import importlib
4
4
 
5
5
  __author__ = """Rex Wang"""
6
6
  __email__ = "1073853456@qq.com"
7
- __version__ = "7.1.0"
7
+ __version__ = "7.1.2"
8
8
 
9
9
  from dotenv import load_dotenv
10
10
 
@@ -36,11 +36,7 @@ BaseEnvConfig.load_all(CHATARCH_ENV_DIR)
36
36
 
37
37
 
38
38
  _LAZY_ATTRS = {
39
- "LarkBot": ("chattool.tools.lark", "LarkBot"),
40
- "AliyunDNSClient": ("chattool.tools.dns", "AliyunDNSClient"),
41
- "TencentDNSClient": ("chattool.tools.dns", "TencentDNSClient"),
42
- "DynamicIPUpdater": ("chattool.tools.dns", "DynamicIPUpdater"),
43
- "SSLCertUpdater": ("chattool.tools.cert", "SSLCertUpdater"),
39
+ "SSLCertUpdater": ("chatdns", "SSLCertUpdater"),
44
40
  }
45
41
 
46
42
 
@@ -69,9 +65,5 @@ __all__ = [
69
65
  "AliyunConfig",
70
66
  "TencentConfig",
71
67
  "ZulipConfig",
72
- "LarkBot",
73
- "AliyunDNSClient",
74
- "TencentDNSClient",
75
- "DynamicIPUpdater",
76
68
  "SSLCertUpdater",
77
69
  ]
@@ -0,0 +1,23 @@
1
+ from chattool.interaction import install_cli_warning_filters
2
+
3
+ install_cli_warning_filters()
4
+
5
+
6
+ def main_cli():
7
+ from .main import cli
8
+
9
+ cli()
10
+
11
+
12
+ def main_skill_cli():
13
+ import sys
14
+
15
+ from chattool.skill.cli import skill_cli
16
+
17
+ skill_cli.main(args=sys.argv[1:], prog_name="chatskill")
18
+
19
+
20
+ __all__ = [
21
+ "main_cli",
22
+ "main_skill_cli",
23
+ ]
@@ -52,13 +52,6 @@ def _load_attr(module_path: str, attr: str) -> click.Command:
52
52
  return getattr(module, attr)
53
53
 
54
54
 
55
- def _load_dns_group() -> click.Command:
56
- dns_group = _load_attr("chattool.tools.dns.cli", "cli")
57
- cert_group = _load_attr("chattool.tools.cert.cli", "cert_cli")
58
- dns_group.add_command(cert_group, name="cert")
59
- return dns_group
60
-
61
-
62
55
  def _build_serve_group() -> click.Command:
63
56
  return _load_attr("chattool.serve.cli", "serve_cli")
64
57
 
@@ -88,15 +81,10 @@ def cli():
88
81
 
89
82
  cli._lazy_commands.update(
90
83
  {
91
- "dns": _load_dns_group,
92
- "pypi": lambda: _load_attr("chattool.tools.pypi.cli", "cli"),
93
84
  "serve": _build_serve_group,
94
85
  "client": _build_client_group,
95
- "network": lambda: _load_attr("chattool.tools.network.cli", "cli"),
96
86
  "nginx": lambda: _load_attr("chattool.tools.nginx.cli", "cli"),
97
87
  "mcp": lambda: _load_attr("chattool.mcp.cli", "cli"),
98
- "lark": lambda: _load_attr("chattool.tools.lark.cli", "cli"),
99
- "image": lambda: _load_attr("chattool.tools.image.cli", "cli"),
100
88
  "tplogin": lambda: _load_attr("chattool.tools.tplogin_cli", "cli"),
101
89
  "browser": lambda: _load_attr("chattool.tools.browser.cli", "cli"),
102
90
  "zulip": lambda: _load_attr("chattool.tools.zulip.cli", "cli"),
@@ -6,12 +6,6 @@ from .azure import AzureConfig
6
6
  from .aliyun import AliyunConfig
7
7
  from .tencent import TencentConfig
8
8
  from .zulip import ZulipConfig
9
- from .feishu import FeishuConfig
10
- from .tongyi import TongyiConfig
11
- from .huggingface import HuggingFaceConfig
12
- from .pollinations import PollinationsConfig
13
- from .liblib import LiblibConfig
14
- from .siliconflow import SiliconFlowConfig
15
9
  from .tplink import TPLinkConfig
16
10
  from .browser import BrowserConfig
17
11
 
@@ -25,12 +19,6 @@ __all__ = [
25
19
  "ZulipConfig",
26
20
  "AliyunConfig",
27
21
  "TencentConfig",
28
- "FeishuConfig",
29
- "TongyiConfig",
30
- "HuggingFaceConfig",
31
- "PollinationsConfig",
32
- "LiblibConfig",
33
- "SiliconFlowConfig",
34
22
  "BrowserConfig",
35
23
  "TPLinkConfig",
36
24
  "SkillsConfig",
@@ -16,7 +16,7 @@ class AliyunConfig(BaseEnvConfig):
16
16
  def test(cls):
17
17
  print(f"Testing {cls._title}...")
18
18
  try:
19
- from chattool.tools.dns.aliyun import AliyunDNSClient
19
+ from chatdns import AliyunDNSClient
20
20
  client = AliyunDNSClient()
21
21
  # 尝试获取域名列表,只取1个来验证
22
22
  domains = client.describe_domains(page_size=1)