jarvis-ai-assistant 0.1.218__py3-none-any.whl → 0.1.220__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.
Files changed (28) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +37 -92
  3. jarvis/jarvis_agent/shell_input_handler.py +1 -1
  4. jarvis/jarvis_code_agent/code_agent.py +5 -3
  5. jarvis/jarvis_data/config_schema.json +30 -0
  6. jarvis/jarvis_git_squash/main.py +2 -1
  7. jarvis/jarvis_platform/human.py +2 -7
  8. jarvis/jarvis_platform/yuanbao.py +3 -1
  9. jarvis/jarvis_rag/__init__.py +11 -0
  10. jarvis/jarvis_rag/cache.py +87 -0
  11. jarvis/jarvis_rag/cli.py +297 -0
  12. jarvis/jarvis_rag/embedding_manager.py +109 -0
  13. jarvis/jarvis_rag/llm_interface.py +130 -0
  14. jarvis/jarvis_rag/query_rewriter.py +63 -0
  15. jarvis/jarvis_rag/rag_pipeline.py +177 -0
  16. jarvis/jarvis_rag/reranker.py +56 -0
  17. jarvis/jarvis_rag/retriever.py +201 -0
  18. jarvis/jarvis_tools/search_web.py +127 -11
  19. jarvis/jarvis_utils/config.py +71 -0
  20. jarvis/jarvis_utils/git_utils.py +27 -18
  21. jarvis/jarvis_utils/input.py +21 -10
  22. jarvis/jarvis_utils/utils.py +43 -20
  23. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/METADATA +87 -5
  24. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/RECORD +28 -19
  25. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/entry_points.txt +1 -0
  26. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/WHEEL +0 -0
  27. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/licenses/LICENSE +0 -0
  28. {jarvis_ai_assistant-0.1.218.dist-info → jarvis_ai_assistant-0.1.220.dist-info}/top_level.txt +0 -0
@@ -18,7 +18,7 @@ from typing import Any, Dict, List, Set, Tuple
18
18
 
19
19
  from jarvis.jarvis_utils.config import is_confirm_before_apply_patch
20
20
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
21
- from jarvis.jarvis_utils.utils import user_confirm
21
+ from jarvis.jarvis_utils.input import user_confirm
22
22
 
23
23
 
24
24
  def find_git_root_and_cd(start_dir: str = ".") -> str:
@@ -408,48 +408,51 @@ def check_and_update_git_repo(repo_path: str) -> bool:
408
408
  f"Jarvis已更新到tag {remote_tag_result.stdout.strip()}",
409
409
  OutputType.SUCCESS,
410
410
  )
411
-
411
+
412
412
  # 执行pip安装更新代码
413
413
  try:
414
414
  PrettyOutput.print("正在安装更新后的代码...", OutputType.INFO)
415
-
415
+
416
416
  # 检查是否在虚拟环境中
417
- in_venv = hasattr(sys, 'real_prefix') or (
418
- hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix
417
+ in_venv = hasattr(sys, "real_prefix") or (
418
+ hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
419
419
  )
420
-
420
+
421
421
  # 尝试普通安装
422
422
  install_cmd = [sys.executable, "-m", "pip", "install", "-e", "."]
423
423
  result = subprocess.run(
424
- install_cmd,
425
- cwd=git_root,
426
- capture_output=True,
427
- text=True
424
+ install_cmd, cwd=git_root, capture_output=True, text=True
428
425
  )
429
-
426
+
430
427
  if result.returncode == 0:
431
428
  PrettyOutput.print("代码更新安装成功", OutputType.SUCCESS)
432
429
  return True
433
-
430
+
434
431
  # 处理权限错误
435
432
  error_msg = result.stderr.strip()
436
- if not in_venv and ("Permission denied" in error_msg or "not writeable" in error_msg):
437
- if user_confirm("检测到权限问题,是否尝试用户级安装(--user)?", True):
433
+ if not in_venv and (
434
+ "Permission denied" in error_msg or "not writeable" in error_msg
435
+ ):
436
+ if user_confirm(
437
+ "检测到权限问题,是否尝试用户级安装(--user)?", True
438
+ ):
438
439
  user_result = subprocess.run(
439
440
  install_cmd + ["--user"],
440
441
  cwd=git_root,
441
442
  capture_output=True,
442
- text=True
443
+ text=True,
443
444
  )
444
445
  if user_result.returncode == 0:
445
446
  PrettyOutput.print("用户级代码安装成功", OutputType.SUCCESS)
446
447
  return True
447
448
  error_msg = user_result.stderr.strip()
448
-
449
+
449
450
  PrettyOutput.print(f"代码安装失败: {error_msg}", OutputType.ERROR)
450
451
  return False
451
452
  except Exception as e:
452
- PrettyOutput.print(f"安装过程中发生意外错误: {str(e)}", OutputType.ERROR)
453
+ PrettyOutput.print(
454
+ f"安装过程中发生意外错误: {str(e)}", OutputType.ERROR
455
+ )
453
456
  return False
454
457
  return False
455
458
  except Exception as e:
@@ -522,7 +525,13 @@ def get_recent_commits_with_files() -> List[Dict[str, Any]]:
522
525
 
523
526
  # 获取当前用户最近5次提交的基本信息
524
527
  result = subprocess.run(
525
- ["git", "log", "-5", "--author=" + current_author, "--pretty=format:%H%n%s%n%an%n%ad"],
528
+ [
529
+ "git",
530
+ "log",
531
+ "-5",
532
+ "--author=" + current_author,
533
+ "--pretty=format:%H%n%s%n%an%n%ad",
534
+ ],
526
535
  capture_output=True,
527
536
  text=True,
528
537
  )
@@ -26,6 +26,7 @@ from prompt_toolkit.styles import Style as PromptStyle # type: ignore
26
26
  from jarvis.jarvis_utils.config import get_replace_map
27
27
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
28
28
  from jarvis.jarvis_utils.tag import ot
29
+ from jarvis.jarvis_utils.utils import copy_to_clipboard
29
30
 
30
31
 
31
32
  def get_single_line_input(tip: str) -> str:
@@ -179,6 +180,24 @@ class FileCompleter(Completer):
179
180
  return tag
180
181
 
181
182
 
183
+ def user_confirm(tip: str, default: bool = True) -> bool:
184
+ """提示用户确认是/否问题
185
+
186
+ 参数:
187
+ tip: 显示给用户的消息
188
+ default: 用户直接回车时的默认响应
189
+
190
+ 返回:
191
+ bool: 用户确认返回True,否则返回False
192
+ """
193
+ try:
194
+ suffix = "[Y/n]" if default else "[y/N]"
195
+ ret = get_single_line_input(f"{tip} {suffix}: ")
196
+ return default if ret == "" else ret.lower() == "y"
197
+ except KeyboardInterrupt:
198
+ return False
199
+
200
+
182
201
  def get_multiline_input(tip: str) -> str:
183
202
  """
184
203
  获取带有增强补全和确认功能的多行输入。
@@ -217,19 +236,11 @@ def get_multiline_input(tip: str) -> str:
217
236
  def _(event):
218
237
  """处理Ctrl+O以复制最后一条消息到剪贴板。"""
219
238
  from jarvis.jarvis_utils.globals import get_last_message
220
- import subprocess
221
239
 
222
240
  last_msg = get_last_message()
223
241
  if last_msg:
224
- try:
225
- # 使用xsel将内容复制到剪贴板
226
- subprocess.run(
227
- ["xsel", "-b", "-i"], input=last_msg.encode("utf-8"), check=True
228
- )
229
- print(last_msg)
230
- PrettyOutput.print("已将最后一条消息复制到剪贴板", OutputType.INFO)
231
- except subprocess.CalledProcessError as e:
232
- PrettyOutput.print(f"复制到剪贴板失败: {e}", OutputType.ERROR)
242
+ print(f"{last_msg}")
243
+ copy_to_clipboard(last_msg)
233
244
  else:
234
245
  PrettyOutput.print("没有可复制的消息", OutputType.INFO)
235
246
 
@@ -5,7 +5,6 @@ import os
5
5
  import signal
6
6
  import subprocess
7
7
  import sys
8
- import tarfile
9
8
  import time
10
9
  from pathlib import Path
11
10
  from typing import Any, Callable, Dict, Optional
@@ -20,7 +19,6 @@ from jarvis.jarvis_utils.config import (
20
19
  )
21
20
  from jarvis.jarvis_utils.embedding import get_context_token_count
22
21
  from jarvis.jarvis_utils.globals import get_in_chat, get_interrupt, set_interrupt
23
- from jarvis.jarvis_utils.input import get_single_line_input
24
22
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
25
23
 
26
24
  g_config_file = None
@@ -371,24 +369,6 @@ def get_file_md5(filepath: str) -> str:
371
369
  return hashlib.md5(open(filepath, "rb").read(100 * 1024 * 1024)).hexdigest()
372
370
 
373
371
 
374
- def user_confirm(tip: str, default: bool = True) -> bool:
375
- """提示用户确认是/否问题
376
-
377
- 参数:
378
- tip: 显示给用户的消息
379
- default: 用户直接回车时的默认响应
380
-
381
- 返回:
382
- bool: 用户确认返回True,否则返回False
383
- """
384
- try:
385
- suffix = "[Y/n]" if default else "[y/N]"
386
- ret = get_single_line_input(f"{tip} {suffix}: ")
387
- return default if ret == "" else ret.lower() == "y"
388
- except KeyboardInterrupt:
389
- return False
390
-
391
-
392
372
  def get_file_line_count(filename: str) -> int:
393
373
  """计算文件中的行数
394
374
 
@@ -451,3 +431,46 @@ def get_loc_stats() -> str:
451
431
  return result.stdout if result.returncode == 0 else ""
452
432
  except FileNotFoundError:
453
433
  return ""
434
+
435
+
436
+ def copy_to_clipboard(text: str) -> None:
437
+ """将文本复制到剪贴板,依次尝试xsel和xclip (非阻塞)
438
+
439
+ 参数:
440
+ text: 要复制的文本
441
+ """
442
+ # 尝试使用 xsel
443
+ try:
444
+ process = subprocess.Popen(
445
+ ["xsel", "-b", "-i"],
446
+ stdin=subprocess.PIPE,
447
+ stdout=subprocess.DEVNULL,
448
+ stderr=subprocess.DEVNULL,
449
+ )
450
+ if process.stdin:
451
+ process.stdin.write(text.encode("utf-8"))
452
+ process.stdin.close()
453
+ return
454
+ except FileNotFoundError:
455
+ pass # xsel 未安装,继续尝试下一个
456
+ except Exception as e:
457
+ PrettyOutput.print(f"使用xsel时出错: {e}", OutputType.WARNING)
458
+
459
+ # 尝试使用 xclip
460
+ try:
461
+ process = subprocess.Popen(
462
+ ["xclip", "-selection", "clipboard"],
463
+ stdin=subprocess.PIPE,
464
+ stdout=subprocess.DEVNULL,
465
+ stderr=subprocess.DEVNULL,
466
+ )
467
+ if process.stdin:
468
+ process.stdin.write(text.encode("utf-8"))
469
+ process.stdin.close()
470
+ return
471
+ except FileNotFoundError:
472
+ PrettyOutput.print(
473
+ "xsel 和 xclip 均未安装, 无法复制到剪贴板", OutputType.WARNING
474
+ )
475
+ except Exception as e:
476
+ PrettyOutput.print(f"使用xclip时出错: {e}", OutputType.WARNING)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.218
3
+ Version: 0.1.220
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -33,11 +33,11 @@ Classifier: Intended Audience :: Developers
33
33
  Classifier: License :: OSI Approved :: MIT License
34
34
  Classifier: Operating System :: POSIX :: Linux
35
35
  Classifier: Programming Language :: Python :: 3
36
- Classifier: Programming Language :: Python :: 3.8
37
36
  Classifier: Programming Language :: Python :: 3.9
38
37
  Classifier: Programming Language :: Python :: 3.10
39
38
  Classifier: Programming Language :: Python :: 3.11
40
- Requires-Python: >=3.8
39
+ Classifier: Programming Language :: Python :: 3.12
40
+ Requires-Python: >=3.9
41
41
  Description-Content-Type: text/markdown
42
42
  License-File: LICENSE
43
43
  Requires-Dist: requests==2.32.3
@@ -56,6 +56,19 @@ Requires-Dist: tabulate==0.9.0
56
56
  Requires-Dist: pyte==0.8.2
57
57
  Requires-Dist: httpx>=0.28.1
58
58
  Requires-Dist: pyyaml>=5.3.1
59
+ Requires-Dist: ddgs==9.0.2
60
+ Requires-Dist: beautifulsoup4==4.13.4
61
+ Requires-Dist: lxml==6.0.0
62
+ Requires-Dist: langchain
63
+ Requires-Dist: langchain-community
64
+ Requires-Dist: langchain-huggingface
65
+ Requires-Dist: chromadb
66
+ Requires-Dist: diskcache
67
+ Requires-Dist: sentence-transformers==2.7.0
68
+ Requires-Dist: torch>=2.6
69
+ Requires-Dist: typer
70
+ Requires-Dist: unstructured[md]
71
+ Requires-Dist: rank-bm25
59
72
  Provides-Extra: dev
60
73
  Requires-Dist: pytest; extra == "dev"
61
74
  Requires-Dist: black; extra == "dev"
@@ -550,7 +563,76 @@ OPENAI_API_BASE: https://api.openai.com/v1
550
563
  | search_web | 使用互联网搜索 |
551
564
  | virtual_tty | 控制虚拟终端执行操作 |
552
565
 
553
- ### 2. 命令替换功能
566
+ ### 2. 🧠 RAG增强知识库 (`jarvis-rag`)
567
+
568
+ `jarvis-rag` 是一个强大的命令行工具,用于构建、管理和查询本地化的RAG(检索增强生成)知识库。它允许您将自己的文档(代码、笔记、文章等)作为外部知识源,让AI能够基于这些具体内容进行回答,而不是仅仅依赖其通用训练数据。
569
+
570
+ #### 核心功能
571
+
572
+ - **本地化知识库**:所有文档索引和数据都存储在本地,确保数据隐私和安全。
573
+ - **智能文档加载**:自动识别并加载多种文本文件,无需关心文件后缀。
574
+ - **灵活的查询**:支持使用项目默认的“思考”模型或动态指定任意已注册的LLM进行查询。
575
+ - **配置驱动**:通过 `config.toml` 或 `.jarvis/config.yaml` 进行集中配置。
576
+
577
+ #### 子命令说明
578
+
579
+ ##### 2.1 添加文档到知识库 (`add`)
580
+
581
+ 此命令用于将文件、目录或符合通配符模式的文档添加到知识库中。
582
+
583
+ ```bash
584
+ # 基本用法
585
+ jarvis-rag add <文件路径/目录路径/通配符模式>...
586
+
587
+ # 示例
588
+ # 1. 添加单个文件
589
+ jarvis-rag add ./docs/my_document.md
590
+
591
+ # 2. 添加整个目录(将递归扫描所有文本文件)
592
+ jarvis-rag add ./src/
593
+
594
+ # 3. 使用通配符添加所有Python文件
595
+ jarvis-rag add 'src/**/*.py'
596
+
597
+ # 4. 混合添加
598
+ jarvis-rag add README.md ./docs/ 'src/jarvis/jarvis_rag/*.py'
599
+ ```
600
+
601
+ **参数与选项:**
602
+
603
+ | 参数/选项 | 描述 |
604
+ |---|---|
605
+ | `paths` | **[必需]** 一个或多个文件路径、目录路径或用引号包裹的通配符模式。 |
606
+ | `--collection` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
607
+ | `--embedding-mode` | 覆盖全局配置,强制使用特定嵌入模式 (`performance` 或 `accuracy`)。 |
608
+ | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
609
+
610
+ ##### 2.2 查询知识库 (`query`)
611
+
612
+ 此命令用于向已建立的知识库提出问题。
613
+
614
+ ```bash
615
+ # 基本用法
616
+ jarvis-rag query "你的问题"
617
+
618
+ # 示例
619
+ # 1. 使用默认配置进行查询
620
+ jarvis-rag query "请总结一下我添加的文档的核心内容"
621
+
622
+ # 2. 指定使用Kimi模型进行查询
623
+ jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --platform kimi --model moonshot-v1-8k
624
+ ```
625
+
626
+ **参数与选项:**
627
+
628
+ | 参数/选项 | 描述 |
629
+ |---|---|
630
+ | `question` | **[必需]** 你要向知识库提出的问题。 |
631
+ | `--collection` | 指定要查询的知识库集合名称。 |
632
+ | `--platform` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
633
+ | `--model` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
634
+
635
+ ### 3. 命令替换功能
554
636
  支持使用特殊标记`'<tag>'`触发命令替换功能:
555
637
 
556
638
  | 标记 | 功能 |
@@ -565,7 +647,7 @@ OPENAI_API_BASE: https://api.openai.com/v1
565
647
  | `'Check'` | 执行静态代码检查,包括错误和风格问题 |
566
648
  | `'SaveSession'` | 保存当前会话并退出 |
567
649
 
568
- ### 3. 自定义替换配置
650
+ ### 4. 自定义替换配置
569
651
  在`~/.jarvis/config.yaml`中添加:
570
652
  ```yaml
571
653
  JARVIS_REPLACE_MAP:
@@ -1,13 +1,13 @@
1
- jarvis/__init__.py,sha256=kZICQ-BRviIbORP24Lb9cDICZepAOS0v8uaT-30YZkk,75
2
- jarvis/jarvis_agent/__init__.py,sha256=Ftod6FDMlGJ_DuueI2W19whAmpldVAsGYvlgbvqC55w,33260
1
+ jarvis/__init__.py,sha256=0ON7ERLL2QcDALpdR5gdhdn4WyjDQsqfLGVfq5qjuTU,75
2
+ jarvis/jarvis_agent/__init__.py,sha256=AfWzPW1TQbfpgTK8P5yIf1pvMfv1dut6iMumRag1B2w,32289
3
3
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=lcw-VBm8-CVcblxEbGU4dVD6IixgXTLz9uBrv9Y6p20,2710
4
4
  jarvis/jarvis_agent/edit_file_handler.py,sha256=vKx26I4yOQwiQHNfkqMJ44Ybf90n37mojTcXNQQy-hw,17382
5
5
  jarvis/jarvis_agent/jarvis.py,sha256=4LBtAh9_AuQcjvqBFInqY19eyEJVJtGH4py32yu8olc,6287
6
6
  jarvis/jarvis_agent/main.py,sha256=c6bQe-8LXvW2-NBn9Rn_yPYdrwnkJ8KQaSFY2cPvkxw,2775
7
7
  jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
8
- jarvis/jarvis_agent/shell_input_handler.py,sha256=zVaKNthIHJh1j4g8_-d3w5ahNH9aH-ZNRSOourQpHR4,1328
8
+ jarvis/jarvis_agent/shell_input_handler.py,sha256=1IboqdxcJuoIqRpmDU10GugR9fWXUHyCEbVF4nIWbyo,1328
9
9
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- jarvis/jarvis_code_agent/code_agent.py,sha256=pJQVApwcyZ0YaDZHRSLb2FKyHnT99OQgQzik_Oxapow,18683
10
+ jarvis/jarvis_code_agent/code_agent.py,sha256=JDLEVxT9YIg8crPOjDiYg76kb6v8Igrapj0NBK6Tn6Y,18731
11
11
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
12
12
  jarvis/jarvis_code_analysis/code_review.py,sha256=uCCbGd4Y1RjDzhZoVE8JdN2avlwOfqimSDIrcM-KMew,30456
13
13
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
@@ -30,12 +30,12 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
30
30
  jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
31
31
  jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
32
32
  jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
33
- jarvis/jarvis_data/config_schema.json,sha256=BeaihTD2eYRZq65-tbmCIx7lBdS5U0V1FOQGIc6XCq0,5849
33
+ jarvis/jarvis_data/config_schema.json,sha256=5pkd_5GBUvrsIPbVKb7dE-r67Zcv4EgNJGqKFhssHsI,6861
34
34
  jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
35
35
  jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  jarvis/jarvis_git_details/main.py,sha256=MjpUHB4ErR_SKPBx1TLLK_XLkH427RTtsyVn6EUd88Y,8907
37
37
  jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- jarvis/jarvis_git_squash/main.py,sha256=lx0WVOiaydYgwzWBDG7C8wJxYJwSb1SIxyoD-rgzgvA,2274
38
+ jarvis/jarvis_git_squash/main.py,sha256=2nwX-Ghphn97Ua0SXPJIxix-rgm_Z9KRkrovjpSklUk,2311
39
39
  jarvis/jarvis_git_utils/git_commiter.py,sha256=erZ3wNJuaEgHlKTaYv0UKargG_Yl9OnssTIcErEAdtw,12472
40
40
  jarvis/jarvis_mcp/__init__.py,sha256=OPMtjD-uq9xAaKCRIDyKIosaFfBe1GBPu1az-mQ0rVM,2048
41
41
  jarvis/jarvis_mcp/sse_mcp_client.py,sha256=-3Qy1LyqgHswoc6YbadVRG3ias2op7lUp7Ne2-QUKBM,22474
@@ -47,16 +47,25 @@ jarvis/jarvis_multi_agent/main.py,sha256=h7VUSwoPrES0XTK8z5kt3XLX1mmcm8UEuFEHQOU
47
47
  jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
48
48
  jarvis/jarvis_platform/ai8.py,sha256=yi7xG8ld4Yrf7drz-uu_JT_XCGYRB0obhygt-jKik8o,10871
49
49
  jarvis/jarvis_platform/base.py,sha256=-XegiAS8G_nzwsWPOVEAQ2iTxE33fxu5-TWV4c3Pz-g,8981
50
- jarvis/jarvis_platform/human.py,sha256=quB5yMMoyU8w55IrVqa9F4ITOpF2TdM0GHQVD9zyWgk,4925
50
+ jarvis/jarvis_platform/human.py,sha256=cSN8Lqf0ts2_pPfS2_v7PaWxQKqcW_3bSmhRTHey7Qo,4674
51
51
  jarvis/jarvis_platform/kimi.py,sha256=OEiRNlC4Ao3PrO_yiogEwgMtTobehoEm_X4CMGT-Aas,15315
52
52
  jarvis/jarvis_platform/openai.py,sha256=ccGqsU2cFfd5324P7SH1tSmFABpvto8fytmxQGkr3BA,6412
53
53
  jarvis/jarvis_platform/oyi.py,sha256=GvVooV8ScRqDb9QxJdINtdZwsx6PUIdo1-bt9k0hmqY,12604
54
54
  jarvis/jarvis_platform/registry.py,sha256=1bMy0YZUa8NLzuZlKfC4CBtpa0iniypTxUZk0Hv6g9Y,8415
55
55
  jarvis/jarvis_platform/tongyi.py,sha256=vSK1b4NhTeHbNhTgGRj4PANXptwCAwitczwK8VXwWwU,22921
56
- jarvis/jarvis_platform/yuanbao.py,sha256=W4yEsjkxnwi681UnAX0hV8vVPuNRmn6lRGZ3G-d74nw,23007
56
+ jarvis/jarvis_platform/yuanbao.py,sha256=AIGQ0VOD_IAwWLnU9G19OG0XAbHpcJDzVWX2VazsyAI,23092
57
57
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  jarvis/jarvis_platform_manager/main.py,sha256=LxlXSfIfmkYNcajOG_XvvlmwlSWSGb0DmbzIDSHHYOU,18330
59
59
  jarvis/jarvis_platform_manager/service.py,sha256=hQGWQ2qAlzm_C_lNQDuLORQ4rmjR1P1-V3ou7l2Bv0s,13622
60
+ jarvis/jarvis_rag/__init__.py,sha256=_-uyfhhKbuwfIbyl0OOyq2QdTXu0LB9-ZhxyU8L27kQ,326
61
+ jarvis/jarvis_rag/cache.py,sha256=e4k3qJxgscqunvIsn5q7AUj_hiMqlvaO5Uznx9KuIbQ,2787
62
+ jarvis/jarvis_rag/cli.py,sha256=PvRtkbU7BETJ_tLpx6ODQVU3nejIcobB4GIZyi8sZDs,10109
63
+ jarvis/jarvis_rag/embedding_manager.py,sha256=ldHxm2E-EoHdmQk2oryH7nbtfwkpTE14-lAHkVbYPlM,4035
64
+ jarvis/jarvis_rag/llm_interface.py,sha256=I4yJOIWO4XdceZBcmRxDFZOj7yGKBNhdrxI7FO2KfRw,4576
65
+ jarvis/jarvis_rag/query_rewriter.py,sha256=bPYtFlTBai0V9bXSmW3zlJ2IbwUtuVbVniFG1G-l4vE,2246
66
+ jarvis/jarvis_rag/rag_pipeline.py,sha256=Bhhl6sponge9ylNHYFsRgu0vj-Jb7qwPXwC4sgpcZ_A,6582
67
+ jarvis/jarvis_rag/reranker.py,sha256=ZwrPxr0NxkGm7KIc5kpsj08AmyyES6TDmnw5AYm4m-Y,1829
68
+ jarvis/jarvis_rag/retriever.py,sha256=MNPETffQxwj7bOoQKveVhvnHKnCb_-XOQgZZITf66C8,7719
60
69
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
70
  jarvis/jarvis_smart_shell/main.py,sha256=DbhRSP1sZfSIaTltP1YWVDSQOTYEsbiOnfO9kSYwcNs,6959
62
71
  jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -71,26 +80,26 @@ jarvis/jarvis_tools/read_code.py,sha256=EnI-R-5HyIQYhMD391nZWXHIuHHBF-OJIRE0QpLc
71
80
  jarvis/jarvis_tools/read_webpage.py,sha256=NmDUboVZd4CGHBPRFK6dp3uqVhuGopW1bOi3TcaLDF4,2092
72
81
  jarvis/jarvis_tools/registry.py,sha256=0SdgBi-b1qnd3QX0VvQy7UVU7Pq9BZGYLiAe7t0DjpQ,25690
73
82
  jarvis/jarvis_tools/rewrite_file.py,sha256=eG_WKg6cVAXmuGwUqlWkcuyay5S8DOzEi8vZCmX3O8w,7255
74
- jarvis/jarvis_tools/search_web.py,sha256=C-TuBFy25WOSiwRCe7YiL0hnMx0DuHj6upHO5OtkHTA,925
83
+ jarvis/jarvis_tools/search_web.py,sha256=DqBwNGFK3vZleZ7_4Go3q27DzPCp4m0ZeEi1N7UEFc4,5363
75
84
  jarvis/jarvis_tools/virtual_tty.py,sha256=KKr3jpvQWWMPr2o40hlmN6fuXJCN8H4_ma5QU40Citc,16089
76
85
  jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
86
  jarvis/jarvis_tools/cli/main.py,sha256=Mg6TQDxMdzB1Ua1UrZ2EE-uQWsbaeojWaEGHJp2HimA,6375
78
87
  jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
79
88
  jarvis/jarvis_utils/builtin_replace_map.py,sha256=EI8JnHqr-ZpAhpwocTu48DhHUMHNd8tNUpDNYI47OLE,1717
80
- jarvis/jarvis_utils/config.py,sha256=MO2-1z_7f3KkSrv7heGK1650Zb0SjnljO2hzLE2jA5c,6598
89
+ jarvis/jarvis_utils/config.py,sha256=9rPmyggYBeDUoLv7IE8mPeXjn50n_VqUt5NXQtHeMUQ,8357
81
90
  jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
82
91
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
83
- jarvis/jarvis_utils/git_utils.py,sha256=7AZblSD4b76vXxaDFkmZOy5rNkwvkwQQxGUy3NAusDQ,21641
92
+ jarvis/jarvis_utils/git_utils.py,sha256=4mNbEgV0icMnB1UL1RWhE9Nxik3mwam2qcGMpd1ODJM,21707
84
93
  jarvis/jarvis_utils/globals.py,sha256=WzZh_acNfHJj1LDulhyLQ7cojksBy0gdrITe0vH1XA0,3901
85
94
  jarvis/jarvis_utils/http.py,sha256=Uqt1kcz0HWnAfXHHi1fNGwLb2lcVUqpbrG2Uk_-kcIU,4882
86
- jarvis/jarvis_utils/input.py,sha256=-D5hRKp5wi5uYt7AR2gKQ8foufC3SwjptTnWYv-anRM,9029
95
+ jarvis/jarvis_utils/input.py,sha256=V2w3xV0MO73c4Y4XY_yy9jVNg7MmN76FmAnpKRiJUog,9160
87
96
  jarvis/jarvis_utils/methodology.py,sha256=-cvM6pwgJK7BXCYg2uVjIId_j3v5RUh2z2PBcK_2vj4,8155
88
97
  jarvis/jarvis_utils/output.py,sha256=PRCgudPOB8gMEP3u-g0FGD2c6tBgJhLXUMqNPglfjV8,10813
89
98
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
90
- jarvis/jarvis_utils/utils.py,sha256=BoRwLcixdf7mU3Tawe95ygGhQpkMffrFYLYhPwIvw8A,14498
91
- jarvis_ai_assistant-0.1.218.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
92
- jarvis_ai_assistant-0.1.218.dist-info/METADATA,sha256=43UssL2FFv3sCcJJmWi5ca1flcKmay-Kg8csxQdxTM0,19614
93
- jarvis_ai_assistant-0.1.218.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
- jarvis_ai_assistant-0.1.218.dist-info/entry_points.txt,sha256=SF46ViTZcQVZEfbqzJDKKVc9TrN1x-P1mQ6wup7u2HY,875
95
- jarvis_ai_assistant-0.1.218.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
96
- jarvis_ai_assistant-0.1.218.dist-info/RECORD,,
99
+ jarvis/jarvis_utils/utils.py,sha256=ojupkZQfFIE6ysTyCy0jUdePucpwpvZlZJSXkGsdyQE,15263
100
+ jarvis_ai_assistant-0.1.220.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
101
+ jarvis_ai_assistant-0.1.220.dist-info/METADATA,sha256=fCmHnmrvl-GuwHSUer0rox7iZNdRjJ-eXqV8lLPC5R4,22619
102
+ jarvis_ai_assistant-0.1.220.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
+ jarvis_ai_assistant-0.1.220.dist-info/entry_points.txt,sha256=L-9EE1kKoCdzxY9iMT7dGgBad-ytc3rso4if8C19SQU,915
104
+ jarvis_ai_assistant-0.1.220.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
105
+ jarvis_ai_assistant-0.1.220.dist-info/RECORD,,
@@ -9,6 +9,7 @@ jarvis-git-squash = jarvis.jarvis_git_squash.main:main
9
9
  jarvis-methodology = jarvis.jarvis_methodology.main:main
10
10
  jarvis-multi-agent = jarvis.jarvis_multi_agent.main:main
11
11
  jarvis-platform-manager = jarvis.jarvis_platform_manager.main:main
12
+ jarvis-rag = jarvis.jarvis_rag.cli:main
12
13
  jarvis-smart-shell = jarvis.jarvis_smart_shell.main:main
13
14
  jarvis-tool = jarvis.jarvis_tools.cli.main:main
14
15
  jca = jarvis.jarvis_code_agent.code_agent:main