fr-cli 2.2.3__tar.gz → 2.2.4__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.3/fr_cli.egg-info → fr_cli-2.2.4}/PKG-INFO +3 -3
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/__init__.py +1 -1
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/llm.py +2 -1
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/main.py +2 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/repl/commands.py +105 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4/fr_cli.egg-info}/PKG-INFO +3 -3
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli.egg-info/requires.txt +2 -2
- {fr_cli-2.2.3 → fr_cli-2.2.4}/pyproject.toml +3 -3
- {fr_cli-2.2.3 → fr_cli-2.2.4}/LICENSE +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/MANIFEST.in +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/README.md +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/README.md +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/WEAPON.MD +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/addon/plugin.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/__init__.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/__init__.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/_utils.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/db.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/local.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/rag.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/rag_watcher_daemon.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/remote.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/builtins/spider.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/client.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/executor.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/generator.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/manager.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/master.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/master_prompt.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/remote.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/server.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/agent/workflow.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/breakthrough/update.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/command/__init__.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/command/executor.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/command/registry.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/command/security.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/conf/config.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/conf/wizard.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/chat.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/core.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/intent.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/recommender.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/stream.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/sysmon.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/core/thinking.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/gatekeeper/__init__.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/gatekeeper/daemon.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/gatekeeper/manager.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/lang/i18n.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/memory/context.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/memory/history.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/memory/session.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/repl/__init__.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/security/security.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/ui/ui.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/cron.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/dataframe.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/disk.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/fs.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/launcher.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/loader.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/mail.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/mcp.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/vision.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli/weapon/web.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli.egg-info/SOURCES.txt +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli.egg-info/dependency_links.txt +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli.egg-info/entry_points.txt +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/fr_cli.egg-info/top_level.txt +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/setup.cfg +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_agent_client.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_agent_server.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_ai_save_file_with_verify.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_all.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_auto_session.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_builtins.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_dataframe.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_gatekeeper.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_integration.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_intent_classification.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_launcher.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/tests/test_master_agent.py +0 -0
- {fr_cli-2.2.3 → fr_cli-2.2.4}/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.4
|
|
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.4; 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.4; 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"
|
|
@@ -146,7 +146,8 @@ def create_llm_client(cfg: dict):
|
|
|
146
146
|
|
|
147
147
|
info = _PROVIDERS.get(provider, _PROVIDERS["zhipu"])
|
|
148
148
|
client_class = info["client_class"]
|
|
149
|
-
|
|
149
|
+
# 优先使用用户自定义的 base_url,其次使用内置默认
|
|
150
|
+
base_url = pcfg.get("base_url") or info.get("base_url")
|
|
150
151
|
|
|
151
152
|
kwargs = {"api_key": api_key}
|
|
152
153
|
if base_url:
|
|
@@ -89,6 +89,7 @@ from fr_cli.repl.commands import (
|
|
|
89
89
|
_cmd_read_excel,
|
|
90
90
|
_cmd_read_csv,
|
|
91
91
|
_cmd_master,
|
|
92
|
+
_cmd_providers,
|
|
92
93
|
_cmd_mcp_list,
|
|
93
94
|
_cmd_mcp_add,
|
|
94
95
|
_cmd_mcp_del,
|
|
@@ -147,6 +148,7 @@ _COMMAND_ROUTES = {
|
|
|
147
148
|
"/read_excel": _cmd_read_excel,
|
|
148
149
|
"/read_csv": _cmd_read_csv,
|
|
149
150
|
"/master": _cmd_master,
|
|
151
|
+
"/providers": _cmd_providers,
|
|
150
152
|
"/mcp_list": _cmd_mcp_list,
|
|
151
153
|
"/mcp_add": _cmd_mcp_add,
|
|
152
154
|
"/mcp_del": _cmd_mcp_del,
|
|
@@ -176,6 +176,111 @@ def _cmd_key(state, parts):
|
|
|
176
176
|
return False
|
|
177
177
|
|
|
178
178
|
|
|
179
|
+
def _cmd_providers(state, parts):
|
|
180
|
+
"""
|
|
181
|
+
多模型道统配置管理
|
|
182
|
+
用法:
|
|
183
|
+
/providers — 查看所有道统配置
|
|
184
|
+
/providers add <道统> <key> [模型] — 添加/更新道统配置
|
|
185
|
+
/providers del <道统> — 删除道统配置
|
|
186
|
+
/providers use <道统> — 切换到指定道统
|
|
187
|
+
"""
|
|
188
|
+
sub = parts[1] if len(parts) > 1 else ""
|
|
189
|
+
arg1 = parts[2] if len(parts) > 2 else ""
|
|
190
|
+
arg2 = parts[3] if len(parts) > 3 else ""
|
|
191
|
+
|
|
192
|
+
providers_cfg = state.cfg.setdefault("providers", {})
|
|
193
|
+
|
|
194
|
+
if not sub or sub == "list":
|
|
195
|
+
from fr_cli.core.llm import list_providers, get_provider_info
|
|
196
|
+
print(f"{CYAN}📜 道统配置总览{RESET}")
|
|
197
|
+
for p in list_providers():
|
|
198
|
+
pcfg = providers_cfg.get(p["id"], {})
|
|
199
|
+
has_key = bool(pcfg.get("key"))
|
|
200
|
+
if not has_key and p["id"] == "zhipu":
|
|
201
|
+
has_key = bool(state.cfg.get("key", ""))
|
|
202
|
+
key_status = f"{GREEN}✅{RESET}" if has_key else f"{RED}❌{RESET}"
|
|
203
|
+
model = pcfg.get("model", p["default_model"])
|
|
204
|
+
info = get_provider_info(p["id"])
|
|
205
|
+
base_url = pcfg.get("base_url") or info.get("base_url", "默认")
|
|
206
|
+
active = f" {YELLOW}👈 当前使用{RESET}" if p["id"] == state.provider else ""
|
|
207
|
+
print(f"\n {key_status} {CYAN}{p['id']}{RESET} — {p['name']}{active}")
|
|
208
|
+
print(f" 模型: {DIM}{model}{RESET}")
|
|
209
|
+
print(f" 接口: {DIM}{base_url}{RESET}")
|
|
210
|
+
if has_key:
|
|
211
|
+
raw_key = pcfg.get("key", state.cfg.get("key", ""))
|
|
212
|
+
key_display = raw_key[:8] + "****" if len(raw_key) > 8 else raw_key
|
|
213
|
+
print(f" Key: {DIM}{key_display}{RESET}")
|
|
214
|
+
print(f"\n{DIM}用法:{RESET}")
|
|
215
|
+
print(f" /providers add <道统> <key> [模型] — 添加/更新道统配置")
|
|
216
|
+
print(f" /providers del <道统> — 删除道统配置")
|
|
217
|
+
print(f" /providers use <道统> — 切换到指定道统")
|
|
218
|
+
return False
|
|
219
|
+
|
|
220
|
+
if sub == "add":
|
|
221
|
+
if not arg1 or not arg2:
|
|
222
|
+
print(f"{RED}❌ 用法: /providers add <道统> <key> [模型]{RESET}")
|
|
223
|
+
return False
|
|
224
|
+
provider_id = arg1
|
|
225
|
+
from fr_cli.core.llm import get_provider_info
|
|
226
|
+
info = get_provider_info(provider_id)
|
|
227
|
+
if not info:
|
|
228
|
+
print(f"{RED}❌ 无效道统: {provider_id}{RESET}")
|
|
229
|
+
return False
|
|
230
|
+
pcfg = providers_cfg.setdefault(provider_id, {})
|
|
231
|
+
pcfg["key"] = arg2
|
|
232
|
+
model = parts[4] if len(parts) > 4 else info["default_model"]
|
|
233
|
+
pcfg["model"] = model
|
|
234
|
+
# 支持自定义 base_url: /providers add <provider> <key> [model] --base-url <url>
|
|
235
|
+
for i, token in enumerate(parts):
|
|
236
|
+
if token in ("--base-url", "--base_url") and i + 1 < len(parts):
|
|
237
|
+
pcfg["base_url"] = parts[i + 1]
|
|
238
|
+
break
|
|
239
|
+
state.cfg["providers"] = providers_cfg
|
|
240
|
+
state.save_cfg()
|
|
241
|
+
extra = f" 自定义接口={pcfg.get('base_url')}" if pcfg.get("base_url") else ""
|
|
242
|
+
print(f"{GREEN}✅ [{provider_id}] 配置已更新: 模型={model}{extra}{RESET}")
|
|
243
|
+
return False
|
|
244
|
+
|
|
245
|
+
if sub == "del":
|
|
246
|
+
if not arg1:
|
|
247
|
+
print(f"{RED}❌ 用法: /providers del <道统>{RESET}")
|
|
248
|
+
return False
|
|
249
|
+
if arg1 in providers_cfg:
|
|
250
|
+
del providers_cfg[arg1]
|
|
251
|
+
state.cfg["providers"] = providers_cfg
|
|
252
|
+
state.save_cfg()
|
|
253
|
+
print(f"{GREEN}✅ [{arg1}] 配置已删除{RESET}")
|
|
254
|
+
else:
|
|
255
|
+
print(f"{YELLOW}⚠️ [{arg1}] 无配置可删除{RESET}")
|
|
256
|
+
return False
|
|
257
|
+
|
|
258
|
+
if sub == "use":
|
|
259
|
+
if not arg1:
|
|
260
|
+
print(f"{RED}❌ 用法: /providers use <道统>{RESET}")
|
|
261
|
+
return False
|
|
262
|
+
ok = state.update_provider(arg1)
|
|
263
|
+
if ok:
|
|
264
|
+
print(f"{GREEN}✅ 已切换到: [{state.provider}] {state.model_name}{RESET}")
|
|
265
|
+
# 检查新道统是否已配置 API Key
|
|
266
|
+
pcfg = providers_cfg.get(state.provider, {})
|
|
267
|
+
has_key = bool(pcfg.get("key"))
|
|
268
|
+
if not has_key and state.provider == "zhipu":
|
|
269
|
+
has_key = bool(state.cfg.get("key", ""))
|
|
270
|
+
if not has_key:
|
|
271
|
+
print(f"{YELLOW}⚠️ [{state.provider}] 尚未配置 API Key{RESET}")
|
|
272
|
+
k = input(f"👉 请输入 [{state.provider}] 的 API Key: ").strip()
|
|
273
|
+
if k:
|
|
274
|
+
state.update_key(k)
|
|
275
|
+
print(f"{GREEN}✅ [{state.provider}] API Key 已保存{RESET}")
|
|
276
|
+
else:
|
|
277
|
+
print(f"{RED}❌ 无效道统: {arg1}{RESET}")
|
|
278
|
+
return False
|
|
279
|
+
|
|
280
|
+
print(f"{RED}❌ 未知子命令: {sub}{RESET}")
|
|
281
|
+
return False
|
|
282
|
+
|
|
283
|
+
|
|
179
284
|
def _cmd_limit(state, parts):
|
|
180
285
|
arg1 = parts[1] if len(parts) > 1 else ""
|
|
181
286
|
if arg1:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fr-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.4
|
|
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.4; 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.4; 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.4
|
|
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.4
|
|
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.4"
|
|
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.4"]
|
|
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.4",
|
|
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
|