jarvis-ai-assistant 0.1.220__py3-none-any.whl → 0.1.221__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.
@@ -12,8 +12,8 @@ from .embedding_manager import EmbeddingManager
12
12
 
13
13
  class ChromaRetriever:
14
14
  """
15
- A retriever class that combines dense vector search (ChromaDB) and
16
- sparse keyword search (BM25) for hybrid retrieval.
15
+ 一个检索器类,它结合了密集向量搜索(ChromaDB)和稀疏关键字搜索(BM25)
16
+ 以实现混合检索。
17
17
  """
18
18
 
19
19
  def __init__(
@@ -23,18 +23,18 @@ class ChromaRetriever:
23
23
  collection_name: str = "jarvis_rag_collection",
24
24
  ):
25
25
  """
26
- Initializes the ChromaRetriever.
26
+ 初始化ChromaRetriever
27
27
 
28
- Args:
29
- embedding_manager: An instance of EmbeddingManager.
30
- db_path: The file path for ChromaDB's persistent storage.
31
- collection_name: The name of the collection within ChromaDB.
28
+ 参数:
29
+ embedding_manager: EmbeddingManager的实例。
30
+ db_path: ChromaDB持久化存储的文件路径。
31
+ collection_name: ChromaDB中集合的名称。
32
32
  """
33
33
  self.embedding_manager = embedding_manager
34
34
  self.db_path = db_path
35
35
  self.collection_name = collection_name
36
36
 
37
- # Initialize ChromaDB client
37
+ # 初始化ChromaDB客户端
38
38
  self.client = chromadb.PersistentClient(path=self.db_path)
39
39
  self.collection = self.client.get_or_create_collection(
40
40
  name=self.collection_name
@@ -43,12 +43,12 @@ class ChromaRetriever:
43
43
  f"✅ ChromaDB 客户端已在 '{db_path}' 初始化,集合为 '{collection_name}'。"
44
44
  )
45
45
 
46
- # BM25 Index setup
46
+ # BM25索引设置
47
47
  self.bm25_index_path = os.path.join(self.db_path, f"{collection_name}_bm25.pkl")
48
48
  self._load_or_initialize_bm25()
49
49
 
50
50
  def _load_or_initialize_bm25(self):
51
- """Loads the BM25 index from disk or initializes a new one."""
51
+ """从磁盘加载BM25索引或初始化一个新索引。"""
52
52
  if os.path.exists(self.bm25_index_path):
53
53
  print("🔍 正在加载现有的 BM25 索引...")
54
54
  with open(self.bm25_index_path, "rb") as f:
@@ -62,7 +62,7 @@ class ChromaRetriever:
62
62
  self.bm25_index = None
63
63
 
64
64
  def _save_bm25_index(self):
65
- """Saves the BM25 index to disk."""
65
+ """BM25索引保存到磁盘。"""
66
66
  if self.bm25_index:
67
67
  print("💾 正在保存 BM25 索引...")
68
68
  with open(self.bm25_index_path, "wb") as f:
@@ -73,7 +73,7 @@ class ChromaRetriever:
73
73
  self, documents: List[Document], chunk_size=1000, chunk_overlap=100
74
74
  ):
75
75
  """
76
- Splits, embeds, and adds documents to both ChromaDB and the BM25 index.
76
+ 将文档拆分、嵌入,并添加到ChromaDBBM25索引中。
77
77
  """
78
78
  text_splitter = RecursiveCharacterTextSplitter(
79
79
  chunk_size=chunk_size, chunk_overlap=chunk_overlap
@@ -85,13 +85,13 @@ class ChromaRetriever:
85
85
  if not chunks:
86
86
  return
87
87
 
88
- # Extract content, metadata, and generate IDs
88
+ # 提取内容、元数据并生成ID
89
89
  chunk_texts = [chunk.page_content for chunk in chunks]
90
90
  metadatas = [chunk.metadata for chunk in chunks]
91
91
  start_id = self.collection.count()
92
92
  ids = [f"doc_{i}" for i in range(start_id, start_id + len(chunks))]
93
93
 
94
- # Add to ChromaDB
94
+ # 添加到ChromaDB
95
95
  embeddings = self.embedding_manager.embed_documents(chunk_texts)
96
96
  self.collection.add(
97
97
  ids=ids,
@@ -101,7 +101,7 @@ class ChromaRetriever:
101
101
  )
102
102
  print(f"✅ 成功将 {len(chunks)} 个块添加到 ChromaDB 集合中。")
103
103
 
104
- # Update and save BM25 index
104
+ # 更新并保存BM25索引
105
105
  tokenized_chunks = [doc.split() for doc in chunk_texts]
106
106
  self.bm25_corpus.extend(tokenized_chunks)
107
107
  self.bm25_index = BM25Okapi(self.bm25_corpus)
@@ -109,30 +109,30 @@ class ChromaRetriever:
109
109
 
110
110
  def retrieve(self, query: str, n_results: int = 5) -> List[Document]:
111
111
  """
112
- Performs hybrid retrieval using both vector search and BM25,
113
- then fuses the results using Reciprocal Rank Fusion (RRF).
112
+ 使用向量搜索和BM25执行混合检索,然后使用倒数排序融合(RRF)
113
+ 对结果进行融合。
114
114
  """
115
- # 1. Vector Search (ChromaDB)
115
+ # 1. 向量搜索 (ChromaDB)
116
116
  query_embedding = self.embedding_manager.embed_query(query)
117
117
  vector_results = self.collection.query(
118
118
  query_embeddings=cast(Any, [query_embedding]),
119
- n_results=n_results * 2, # Retrieve more results for fusion
119
+ n_results=n_results * 2, # 检索更多结果用于融合
120
120
  )
121
121
 
122
- # 2. Keyword Search (BM25)
122
+ # 2. 关键字搜索 (BM25)
123
123
  bm25_docs = []
124
124
  if self.bm25_index:
125
125
  tokenized_query = query.split()
126
126
  doc_scores = self.bm25_index.get_scores(tokenized_query)
127
127
 
128
- # Get all documents from Chroma to match with BM25 scores
128
+ # Chroma获取所有文档以匹配BM25分数
129
129
  all_docs_in_collection = self.collection.get()
130
130
  all_documents = all_docs_in_collection.get("documents")
131
131
  all_metadatas = all_docs_in_collection.get("metadatas")
132
132
 
133
133
  bm25_results_with_docs = []
134
134
  if all_documents and all_metadatas:
135
- # Create a mapping from index to document
135
+ # 创建从索引到文档的映射
136
136
  bm25_results_with_docs = [
137
137
  (
138
138
  all_documents[i],
@@ -143,17 +143,17 @@ class ChromaRetriever:
143
143
  if score > 0
144
144
  ]
145
145
 
146
- # Sort by score and take top results
146
+ # 按分数排序并取最高结果
147
147
  bm25_results_with_docs.sort(key=lambda x: x[2], reverse=True)
148
148
 
149
149
  for doc_text, metadata, _ in bm25_results_with_docs[: n_results * 2]:
150
150
  bm25_docs.append(Document(page_content=doc_text, metadata=metadata))
151
151
 
152
- # 3. Reciprocal Rank Fusion (RRF)
152
+ # 3. 倒数排序融合 (RRF)
153
153
  fused_scores: Dict[str, float] = {}
154
- k = 60 # RRF ranking constant
154
+ k = 60 # RRF排名常数
155
155
 
156
- # Process vector results
156
+ # 处理向量结果
157
157
  if vector_results and vector_results["ids"] and vector_results["documents"]:
158
158
  vec_ids = vector_results["ids"][0]
159
159
  vec_texts = vector_results["documents"][0]
@@ -161,7 +161,7 @@ class ChromaRetriever:
161
161
  for rank, doc_id in enumerate(vec_ids):
162
162
  fused_scores[doc_id] = fused_scores.get(doc_id, 0) + 1 / (k + rank)
163
163
 
164
- # Create a map from document text to its ID for BM25 fusion
164
+ # 为BM25融合创建从文档文本到其ID的映射
165
165
  doc_text_to_id = {text: doc_id for text, doc_id in zip(vec_texts, vec_ids)}
166
166
 
167
167
  for rank, doc in enumerate(bm25_docs):
@@ -171,12 +171,12 @@ class ChromaRetriever:
171
171
  k + rank
172
172
  )
173
173
 
174
- # Sort fused results
174
+ # 对融合结果进行排序
175
175
  sorted_fused_results = sorted(
176
176
  fused_scores.items(), key=lambda x: x[1], reverse=True
177
177
  )
178
178
 
179
- # Get the final documents from ChromaDB based on fused ranking
179
+ # 根据融合排名从ChromaDB获取最终文档
180
180
  final_doc_ids = [item[0] for item in sorted_fused_results[:n_results]]
181
181
 
182
182
  if not final_doc_ids:
@@ -7,15 +7,12 @@
7
7
  2. 支持单个文件的编辑操作,包括创建新文件
8
8
  3. 实现原子操作:所有修改要么全部成功,要么全部回滚
9
9
  4. 严格匹配控制:每个搜索文本必须且只能匹配一次
10
- 5. 支持两种编辑模式:快速编辑(fast_edit)和AI辅助编辑(slow_edit)
11
10
 
12
11
  核心特性:
13
12
  - 支持不存在的文件和空文件处理
14
13
  - 自动创建所需目录结构
15
14
  - 完善的错误处理和回滚机制
16
15
  - 严格的格式保持要求
17
- - 支持大文件处理(自动上传到模型平台)
18
- - 提供3次重试机制确保操作可靠性
19
16
  """
20
17
  from typing import Any, Dict
21
18
 
@@ -134,7 +131,6 @@ class FileSearchReplaceTool:
134
131
  for file_info in args["files"]:
135
132
  file_path = os.path.abspath(file_info["path"])
136
133
  changes = file_info["changes"]
137
- agent = args.get("agent", None)
138
134
 
139
135
  # 创建已处理文件变量,用于失败时回滚
140
136
  original_content = None
@@ -152,44 +148,23 @@ class FileSearchReplaceTool:
152
148
  content = f.read()
153
149
  original_content = content
154
150
 
155
- if file_exists and agent:
156
- files = agent.get_user_data("files")
157
- if not files or file_path not in files:
158
- file_results.append(
159
- {
160
- "file": file_path,
161
- "success": False,
162
- "stdout": "",
163
- "stderr": f"请先读取文件 {file_path} 的内容后再编辑",
164
- }
165
- )
166
- continue
167
-
168
151
  print(f"⚙️ 正在处理文件 {file_path}...")
169
- # 首先尝试fast_edit模式
170
152
  success, temp_content = EditFileHandler._fast_edit(
171
153
  file_path, changes
172
154
  )
173
155
  if not success:
174
- # 如果fast_edit失败,尝试slow_edit模式
175
- success, temp_content = EditFileHandler._slow_edit(
176
- file_path, changes, agent
156
+ print(f"❌ 文件 {file_path} 处理失败")
157
+ file_results.append(
158
+ {
159
+ "file": file_path,
160
+ "success": False,
161
+ "stdout": "",
162
+ "stderr": temp_content,
163
+ }
177
164
  )
178
- if not success:
179
- print(f"❌ 文件 {file_path} 处理失败")
180
- file_results.append(
181
- {
182
- "file": file_path,
183
- "success": False,
184
- "stdout": "",
185
- "stderr": temp_content,
186
- }
187
- )
188
- continue
189
- else:
190
- print(f"✅ 文件 {file_path} 内容生成完成")
191
- else:
192
- print(f"✅ 文件 {file_path} 内容生成完成")
165
+ continue
166
+
167
+ print(f"✅ 文件 {file_path} 内容生成完成")
193
168
 
194
169
  # 只有当所有替换操作都成功时,才写回文件
195
170
  if success and (
@@ -255,21 +255,6 @@ def get_mcp_config() -> List[Dict[str, Any]]:
255
255
  # RAG Framework Configuration
256
256
  # ==============================================================================
257
257
 
258
- EMBEDDING_MODELS = {
259
- "performance": {
260
- "model_name": "BAAI/bge-base-zh-v1.5",
261
- "model_kwargs": {"device": "cuda" if torch.cuda.is_available() else "cpu"},
262
- "encode_kwargs": {"normalize_embeddings": True},
263
- "show_progress": True,
264
- },
265
- "accuracy": {
266
- "model_name": "BAAI/bge-large-zh-v1.5",
267
- "model_kwargs": {"device": "cuda" if torch.cuda.is_available() else "cpu"},
268
- "encode_kwargs": {"normalize_embeddings": True},
269
- "show_progress": True,
270
- },
271
- }
272
-
273
258
 
274
259
  def get_rag_config() -> Dict[str, Any]:
275
260
  """
@@ -281,24 +266,24 @@ def get_rag_config() -> Dict[str, Any]:
281
266
  return GLOBAL_CONFIG_DATA.get("JARVIS_RAG", {})
282
267
 
283
268
 
284
- def get_rag_embedding_models() -> Dict[str, Any]:
269
+ def get_rag_embedding_model() -> str:
285
270
  """
286
- 获取RAG嵌入模型的定义。
271
+ 获取RAG嵌入模型的名称。
287
272
 
288
273
  返回:
289
- Dict[str, Any]: 嵌入模型配置字典
274
+ str: 嵌入模型的名称
290
275
  """
291
- return EMBEDDING_MODELS
276
+ return get_rag_config().get("embedding_model", "BAAI/bge-base-zh-v1.5")
292
277
 
293
278
 
294
- def get_rag_embedding_mode() -> str:
279
+ def get_rag_rerank_model() -> str:
295
280
  """
296
- 获取RAG嵌入模型的模式。
281
+ 获取RAG rerank模型的名称。
297
282
 
298
283
  返回:
299
- str: 'performance' 或 'accuracy'
284
+ str: rerank模型的名称
300
285
  """
301
- return get_rag_config().get("embedding_mode", "performance")
286
+ return get_rag_config().get("rerank_model", "BAAI/bge-reranker-base")
302
287
 
303
288
 
304
289
  def get_rag_embedding_cache_path() -> str:
@@ -308,7 +293,7 @@ def get_rag_embedding_cache_path() -> str:
308
293
  返回:
309
294
  str: 缓存路径
310
295
  """
311
- return get_rag_config().get("embedding_cache_path", ".jarvis/rag/embeddings")
296
+ return ".jarvis/rag/embeddings"
312
297
 
313
298
 
314
299
  def get_rag_vector_db_path() -> str:
@@ -318,4 +303,4 @@ def get_rag_vector_db_path() -> str:
318
303
  返回:
319
304
  str: 数据库路径
320
305
  """
321
- return get_rag_config().get("vector_db_path", ".jarvis/rag/vectordb")
306
+ return ".jarvis/rag/vectordb"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.220
3
+ Version: 0.1.221
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
@@ -59,16 +59,6 @@ Requires-Dist: pyyaml>=5.3.1
59
59
  Requires-Dist: ddgs==9.0.2
60
60
  Requires-Dist: beautifulsoup4==4.13.4
61
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
72
62
  Provides-Extra: dev
73
63
  Requires-Dist: pytest; extra == "dev"
74
64
  Requires-Dist: black; extra == "dev"
@@ -76,6 +66,17 @@ Requires-Dist: isort; extra == "dev"
76
66
  Requires-Dist: mypy; extra == "dev"
77
67
  Requires-Dist: build; extra == "dev"
78
68
  Requires-Dist: twine; extra == "dev"
69
+ Provides-Extra: rag
70
+ Requires-Dist: langchain; extra == "rag"
71
+ Requires-Dist: langchain-community; extra == "rag"
72
+ Requires-Dist: langchain-huggingface; extra == "rag"
73
+ Requires-Dist: chromadb; extra == "rag"
74
+ Requires-Dist: diskcache; extra == "rag"
75
+ Requires-Dist: sentence-transformers==2.7.0; extra == "rag"
76
+ Requires-Dist: torch>=2.6; extra == "rag"
77
+ Requires-Dist: typer; extra == "rag"
78
+ Requires-Dist: unstructured[md]; extra == "rag"
79
+ Requires-Dist: rank-bm25; extra == "rag"
79
80
  Dynamic: author
80
81
  Dynamic: home-page
81
82
  Dynamic: license-file
@@ -546,6 +547,7 @@ OPENAI_API_BASE: https://api.openai.com/v1
546
547
  | `JARVIS_USE_METHODOLOGY` | true | 是否启用方法论功能 |
547
548
  | `JARVIS_USE_ANALYSIS` | true | 是否启用任务分析功能 |
548
549
  | `JARVIS_DATA_PATH` | ~/.jarvis | Jarvis数据存储目录路径 |
550
+ | `JARVIS_RAG` | `{"embedding_model": "BAAI/bge-base-zh-v1.5"}` | RAG框架的配置 |
549
551
 
550
552
  ## 🛠️ 工具说明 <a id="tools"></a>
551
553
 
@@ -604,7 +606,7 @@ jarvis-rag add README.md ./docs/ 'src/jarvis/jarvis_rag/*.py'
604
606
  |---|---|
605
607
  | `paths` | **[必需]** 一个或多个文件路径、目录路径或用引号包裹的通配符模式。 |
606
608
  | `--collection` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
607
- | `--embedding-mode` | 覆盖全局配置,强制使用特定嵌入模式 (`performance` 或 `accuracy`)。 |
609
+ | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
608
610
  | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
609
611
 
610
612
  ##### 2.2 查询知识库 (`query`)
@@ -631,6 +633,7 @@ jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --pl
631
633
  | `--collection` | 指定要查询的知识库集合名称。 |
632
634
  | `--platform` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
633
635
  | `--model` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
636
+ | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
634
637
 
635
638
  ### 3. 命令替换功能
636
639
  支持使用特殊标记`'<tag>'`触发命令替换功能:
@@ -1,13 +1,18 @@
1
- jarvis/__init__.py,sha256=0ON7ERLL2QcDALpdR5gdhdn4WyjDQsqfLGVfq5qjuTU,75
2
- jarvis/jarvis_agent/__init__.py,sha256=AfWzPW1TQbfpgTK8P5yIf1pvMfv1dut6iMumRag1B2w,32289
1
+ jarvis/__init__.py,sha256=TgbmsIAvNeODBETy0s6gdVjK6p08SbEz7rEqI5VYYmw,75
2
+ jarvis/jarvis_agent/__init__.py,sha256=gjN3tUhHMmX3oAaAyAid4pkCW2R3zDnWLwF_qqRnix4,21443
3
3
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=lcw-VBm8-CVcblxEbGU4dVD6IixgXTLz9uBrv9Y6p20,2710
4
- jarvis/jarvis_agent/edit_file_handler.py,sha256=vKx26I4yOQwiQHNfkqMJ44Ybf90n37mojTcXNQQy-hw,17382
4
+ jarvis/jarvis_agent/edit_file_handler.py,sha256=ml1o-BE2Ca1-ybPlKuhstLQYwdJag39o0_-PXTUvFaE,11646
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/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh2lC__p40,1705
9
+ jarvis/jarvis_agent/prompts.py,sha256=e8i-3kaGr96mlzL3UUhQUHFDfbJSoE4xiF9TDksNDm4,7720
10
+ jarvis/jarvis_agent/protocols.py,sha256=JWnJDikFEuwvFUv7uzXu0ggJ4O9K2FkMnfVCwIJ5REw,873
11
+ jarvis/jarvis_agent/session_manager.py,sha256=DnvI9rWkVmkyO1XfKZyo9lTn4ajg4ccwzEkoRHFPOJM,2925
8
12
  jarvis/jarvis_agent/shell_input_handler.py,sha256=1IboqdxcJuoIqRpmDU10GugR9fWXUHyCEbVF4nIWbyo,1328
13
+ jarvis/jarvis_agent/tool_executor.py,sha256=nIq-sPNgrtimtM-IHpN09cWmId8jDzWRdCFoRzXnnoo,1721
9
14
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- jarvis/jarvis_code_agent/code_agent.py,sha256=JDLEVxT9YIg8crPOjDiYg76kb6v8Igrapj0NBK6Tn6Y,18731
15
+ jarvis/jarvis_code_agent/code_agent.py,sha256=MnIQMuSpBM-0u8gmXthpRhPQGCBOmK7nK9OCpTwoq6c,18763
11
16
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
12
17
  jarvis/jarvis_code_analysis/code_review.py,sha256=uCCbGd4Y1RjDzhZoVE8JdN2avlwOfqimSDIrcM-KMew,30456
13
18
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
@@ -30,7 +35,7 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
30
35
  jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
31
36
  jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
32
37
  jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
33
- jarvis/jarvis_data/config_schema.json,sha256=5pkd_5GBUvrsIPbVKb7dE-r67Zcv4EgNJGqKFhssHsI,6861
38
+ jarvis/jarvis_data/config_schema.json,sha256=RvK4XCVRGRVokguob_3-43BHRAyVFfb8tleU3QxLO1M,6520
34
39
  jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
35
40
  jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
41
  jarvis/jarvis_git_details/main.py,sha256=MjpUHB4ErR_SKPBx1TLLK_XLkH427RTtsyVn6EUd88Y,8907
@@ -57,21 +62,21 @@ jarvis/jarvis_platform/yuanbao.py,sha256=AIGQ0VOD_IAwWLnU9G19OG0XAbHpcJDzVWX2Vaz
57
62
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
63
  jarvis/jarvis_platform_manager/main.py,sha256=LxlXSfIfmkYNcajOG_XvvlmwlSWSGb0DmbzIDSHHYOU,18330
59
64
  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
65
+ jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
66
+ jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
67
+ jarvis/jarvis_rag/cli.py,sha256=iR26y7ZLj4HECl3zveY4fxwn-mhMnQ__IxHQo2NAwD0,13143
68
+ jarvis/jarvis_rag/embedding_manager.py,sha256=BoV6Vr_3F4zbjBAOQ1FdEBnJXGPwBkv1IEkdRP9CgFw,3338
69
+ jarvis/jarvis_rag/llm_interface.py,sha256=44Uu04v2_MxweLmMdR0YWbnxlfchAPAzLBEQmJdLjeU,4368
70
+ jarvis/jarvis_rag/query_rewriter.py,sha256=JM1Q23zZISze77BleRgTPgNAtLUtLAXkEo3G70kaTK8,2190
71
+ jarvis/jarvis_rag/rag_pipeline.py,sha256=9yeNRv6qOS2zo7o0b0u3gFmiW_XSivesvPKVJ8e5DlE,6209
72
+ jarvis/jarvis_rag/reranker.py,sha256=wYUDIMHQL8_tFcQ7GFn_zYHTE1AbKk4a9TRoN2lKtA8,1767
73
+ jarvis/jarvis_rag/retriever.py,sha256=B6oq1SAh7QAE9G5o0sXyNtLjFodukd8p-Was2QJZXg0,7637
69
74
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
75
  jarvis/jarvis_smart_shell/main.py,sha256=DbhRSP1sZfSIaTltP1YWVDSQOTYEsbiOnfO9kSYwcNs,6959
71
76
  jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
77
  jarvis/jarvis_tools/ask_user.py,sha256=iz2PTGx66IRL8e4DOpj3XhEGHFWeKQl0ggEOl_zOwQ0,1972
73
78
  jarvis/jarvis_tools/base.py,sha256=tFVmK6ppsImW2BzHZmrNmMRiOJdW-4aZP6Me3VxdYcA,1194
74
- jarvis/jarvis_tools/edit_file.py,sha256=AG-u6oT_r9FBu9wIr272uLhRWYllombxseSQXtU3bcM,11757
79
+ jarvis/jarvis_tools/edit_file.py,sha256=hM345E9rxS-EkqCZpwwizL6fmPdTadtB798tEO5Ce3g,10417
75
80
  jarvis/jarvis_tools/execute_script.py,sha256=gMarE5yCCSPU6Dp6HlcL2KT-2xCzR-1p-oQNlYOJK58,6157
76
81
  jarvis/jarvis_tools/file_analyzer.py,sha256=aVe1jBSp0YmlypihxrGADJpYrU_7CxDETxGUNySuSlI,4044
77
82
  jarvis/jarvis_tools/generate_new_tool.py,sha256=2YAs8DC7fJnxOkjSmhmSAwqSpBlicVhYc06WZ8YVBls,7679
@@ -86,7 +91,7 @@ jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
86
91
  jarvis/jarvis_tools/cli/main.py,sha256=Mg6TQDxMdzB1Ua1UrZ2EE-uQWsbaeojWaEGHJp2HimA,6375
87
92
  jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
88
93
  jarvis/jarvis_utils/builtin_replace_map.py,sha256=EI8JnHqr-ZpAhpwocTu48DhHUMHNd8tNUpDNYI47OLE,1717
89
- jarvis/jarvis_utils/config.py,sha256=9rPmyggYBeDUoLv7IE8mPeXjn50n_VqUt5NXQtHeMUQ,8357
94
+ jarvis/jarvis_utils/config.py,sha256=h7H2CRix-A6-25al3EpudmipdSq1CiIoqM2Wp8rdgqU,7778
90
95
  jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
91
96
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
92
97
  jarvis/jarvis_utils/git_utils.py,sha256=4mNbEgV0icMnB1UL1RWhE9Nxik3mwam2qcGMpd1ODJM,21707
@@ -97,9 +102,9 @@ jarvis/jarvis_utils/methodology.py,sha256=-cvM6pwgJK7BXCYg2uVjIId_j3v5RUh2z2PBcK
97
102
  jarvis/jarvis_utils/output.py,sha256=PRCgudPOB8gMEP3u-g0FGD2c6tBgJhLXUMqNPglfjV8,10813
98
103
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
99
104
  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,,
105
+ jarvis_ai_assistant-0.1.221.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
106
+ jarvis_ai_assistant-0.1.221.dist-info/METADATA,sha256=az-ngvUTXWE8ZtSHG9mxhe69Dn7PIrmpcCi6QdloSGg,22955
107
+ jarvis_ai_assistant-0.1.221.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ jarvis_ai_assistant-0.1.221.dist-info/entry_points.txt,sha256=L-9EE1kKoCdzxY9iMT7dGgBad-ytc3rso4if8C19SQU,915
109
+ jarvis_ai_assistant-0.1.221.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
110
+ jarvis_ai_assistant-0.1.221.dist-info/RECORD,,