fr-cli 2.2.0__tar.gz → 2.2.1__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.
- {fr_cli-2.2.0/fr_cli.egg-info → fr_cli-2.2.1}/PKG-INFO +3 -3
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/__init__.py +1 -1
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/repl/commands.py +12 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1/fr_cli.egg-info}/PKG-INFO +3 -3
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli.egg-info/requires.txt +2 -2
- {fr_cli-2.2.0 → fr_cli-2.2.1}/pyproject.toml +3 -3
- {fr_cli-2.2.0 → fr_cli-2.2.1}/LICENSE +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/MANIFEST.in +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/README.md +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/README.md +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/WEAPON.MD +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/addon/plugin.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/__init__.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/__init__.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/_utils.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/db.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/local.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/rag.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/rag_watcher_daemon.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/remote.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/builtins/spider.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/client.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/executor.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/generator.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/manager.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/master.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/master_prompt.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/remote.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/server.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/agent/workflow.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/breakthrough/update.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/command/__init__.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/command/executor.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/command/registry.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/command/security.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/conf/config.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/conf/wizard.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/chat.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/core.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/intent.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/llm.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/recommender.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/stream.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/sysmon.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/core/thinking.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/gatekeeper/__init__.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/gatekeeper/daemon.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/gatekeeper/manager.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/lang/i18n.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/main.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/memory/context.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/memory/history.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/memory/session.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/repl/__init__.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/security/security.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/ui/ui.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/cron.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/dataframe.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/disk.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/fs.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/launcher.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/loader.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/mail.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/mcp.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/vision.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli/weapon/web.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli.egg-info/SOURCES.txt +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli.egg-info/dependency_links.txt +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli.egg-info/entry_points.txt +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/fr_cli.egg-info/top_level.txt +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/setup.cfg +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_agent_client.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_agent_server.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_ai_save_file_with_verify.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_all.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_auto_session.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_builtins.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_dataframe.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_gatekeeper.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_integration.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_intent_classification.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_launcher.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_master_agent.py +0 -0
- {fr_cli-2.2.0 → fr_cli-2.2.1}/tests/test_structured_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fr-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.1
|
|
4
4
|
Summary: 凡人打字机 - 支持多模型(Zhipu/DeepSeek/Kimi/Qwen/StepFun/MiniMax/Spark)的终极全能终端工具
|
|
5
5
|
Author: FANREN CLI Author
|
|
6
6
|
License-Expression: MIT
|
|
@@ -37,7 +37,7 @@ Requires-Dist: pyodbc>=4.0.0; extra == "db"
|
|
|
37
37
|
Requires-Dist: oracledb>=1.3.0; extra == "db"
|
|
38
38
|
Provides-Extra: rag
|
|
39
39
|
Requires-Dist: chromadb>=0.4.0; extra == "rag"
|
|
40
|
-
Requires-Dist: sentence-transformers>=2.2.
|
|
40
|
+
Requires-Dist: sentence-transformers>=2.2.1; extra == "rag"
|
|
41
41
|
Provides-Extra: remote
|
|
42
42
|
Requires-Dist: paramiko>=3.0.0; extra == "remote"
|
|
43
43
|
Provides-Extra: spider
|
|
@@ -56,7 +56,7 @@ Requires-Dist: psycopg2-binary>=2.9.0; extra == "all"
|
|
|
56
56
|
Requires-Dist: pyodbc>=4.0.0; extra == "all"
|
|
57
57
|
Requires-Dist: oracledb>=1.3.0; extra == "all"
|
|
58
58
|
Requires-Dist: chromadb>=0.4.0; extra == "all"
|
|
59
|
-
Requires-Dist: sentence-transformers>=2.2.
|
|
59
|
+
Requires-Dist: sentence-transformers>=2.2.1; extra == "all"
|
|
60
60
|
Requires-Dist: paramiko>=3.0.0; extra == "all"
|
|
61
61
|
Requires-Dist: selenium>=4.10.0; extra == "all"
|
|
62
62
|
Requires-Dist: bypy; extra == "all"
|
|
@@ -103,6 +103,18 @@ def _cmd_model(state, parts):
|
|
|
103
103
|
ok = state.update_model(arg1)
|
|
104
104
|
if ok:
|
|
105
105
|
print(f"{GREEN}✅ 已切换: [{state.provider}] {state.model_name}{RESET}")
|
|
106
|
+
# 检查新道统是否已配置 API Key,若未配置则引导输入
|
|
107
|
+
providers_cfg = state.cfg.get("providers", {})
|
|
108
|
+
pcfg = providers_cfg.get(state.provider, {})
|
|
109
|
+
has_key = bool(pcfg.get("key", state.cfg.get("key", "")))
|
|
110
|
+
if not has_key:
|
|
111
|
+
print(f"{YELLOW}⚠️ [{state.provider}] 尚未配置 API Key{RESET}")
|
|
112
|
+
k = input(f"👉 请输入 [{state.provider}] 的 API Key: ").strip()
|
|
113
|
+
if k:
|
|
114
|
+
state.update_key(k)
|
|
115
|
+
print(f"{GREEN}✅ [{state.provider}] API Key 已保存{RESET}")
|
|
116
|
+
else:
|
|
117
|
+
print(f"{RED}❌ 未输入 Key,[{state.provider}] 可能无法正常使用{RESET}")
|
|
106
118
|
else:
|
|
107
119
|
print(f"{RED}❌ 无效的提供商或模型: {arg1}{RESET}")
|
|
108
120
|
else:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fr-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.1
|
|
4
4
|
Summary: 凡人打字机 - 支持多模型(Zhipu/DeepSeek/Kimi/Qwen/StepFun/MiniMax/Spark)的终极全能终端工具
|
|
5
5
|
Author: FANREN CLI Author
|
|
6
6
|
License-Expression: MIT
|
|
@@ -37,7 +37,7 @@ Requires-Dist: pyodbc>=4.0.0; extra == "db"
|
|
|
37
37
|
Requires-Dist: oracledb>=1.3.0; extra == "db"
|
|
38
38
|
Provides-Extra: rag
|
|
39
39
|
Requires-Dist: chromadb>=0.4.0; extra == "rag"
|
|
40
|
-
Requires-Dist: sentence-transformers>=2.2.
|
|
40
|
+
Requires-Dist: sentence-transformers>=2.2.1; extra == "rag"
|
|
41
41
|
Provides-Extra: remote
|
|
42
42
|
Requires-Dist: paramiko>=3.0.0; extra == "remote"
|
|
43
43
|
Provides-Extra: spider
|
|
@@ -56,7 +56,7 @@ Requires-Dist: psycopg2-binary>=2.9.0; extra == "all"
|
|
|
56
56
|
Requires-Dist: pyodbc>=4.0.0; extra == "all"
|
|
57
57
|
Requires-Dist: oracledb>=1.3.0; extra == "all"
|
|
58
58
|
Requires-Dist: chromadb>=0.4.0; extra == "all"
|
|
59
|
-
Requires-Dist: sentence-transformers>=2.2.
|
|
59
|
+
Requires-Dist: sentence-transformers>=2.2.1; extra == "all"
|
|
60
60
|
Requires-Dist: paramiko>=3.0.0; extra == "all"
|
|
61
61
|
Requires-Dist: selenium>=4.10.0; extra == "all"
|
|
62
62
|
Requires-Dist: bypy; extra == "all"
|
|
@@ -11,7 +11,7 @@ psycopg2-binary>=2.9.0
|
|
|
11
11
|
pyodbc>=4.0.0
|
|
12
12
|
oracledb>=1.3.0
|
|
13
13
|
chromadb>=0.4.0
|
|
14
|
-
sentence-transformers>=2.2.
|
|
14
|
+
sentence-transformers>=2.2.1
|
|
15
15
|
paramiko>=3.0.0
|
|
16
16
|
selenium>=4.10.0
|
|
17
17
|
bypy
|
|
@@ -44,7 +44,7 @@ watchdog>=3.0.0
|
|
|
44
44
|
|
|
45
45
|
[rag]
|
|
46
46
|
chromadb>=0.4.0
|
|
47
|
-
sentence-transformers>=2.2.
|
|
47
|
+
sentence-transformers>=2.2.1
|
|
48
48
|
|
|
49
49
|
[remote]
|
|
50
50
|
paramiko>=3.0.0
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "fr-cli"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.1"
|
|
8
8
|
description = "凡人打字机 - 支持多模型(Zhipu/DeepSeek/Kimi/Qwen/StepFun/MiniMax/Spark)的终极全能终端工具"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -38,7 +38,7 @@ dependencies = [
|
|
|
38
38
|
[project.optional-dependencies]
|
|
39
39
|
data = ["pandas>=1.5.0", "openpyxl>=3.0.0"]
|
|
40
40
|
db = ["pymysql>=1.0.0", "psycopg2-binary>=2.9.0", "pyodbc>=4.0.0", "oracledb>=1.3.0"]
|
|
41
|
-
rag = ["chromadb>=0.4.0", "sentence-transformers>=2.2.
|
|
41
|
+
rag = ["chromadb>=0.4.0", "sentence-transformers>=2.2.1"]
|
|
42
42
|
remote = ["paramiko>=3.0.0"]
|
|
43
43
|
spider = ["selenium>=4.10.0"]
|
|
44
44
|
cloud = ["bypy", "aligo", "msal"]
|
|
@@ -46,7 +46,7 @@ monitor = ["watchdog>=3.0.0"]
|
|
|
46
46
|
all = [
|
|
47
47
|
"pandas>=1.5.0", "openpyxl>=3.0.0",
|
|
48
48
|
"pymysql>=1.0.0", "psycopg2-binary>=2.9.0", "pyodbc>=4.0.0", "oracledb>=1.3.0",
|
|
49
|
-
"chromadb>=0.4.0", "sentence-transformers>=2.2.
|
|
49
|
+
"chromadb>=0.4.0", "sentence-transformers>=2.2.1",
|
|
50
50
|
"paramiko>=3.0.0",
|
|
51
51
|
"selenium>=4.10.0",
|
|
52
52
|
"bypy", "aligo", "msal",
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|