jarvis-ai-assistant 0.1.77__py3-none-any.whl → 0.1.78__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.

Potentially problematic release.


This version of jarvis-ai-assistant might be problematic. Click here for more details.

jarvis/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """Jarvis AI Assistant"""
2
2
 
3
- __version__ = "0.1.77"
3
+ __version__ = "0.1.78"
jarvis/agent.py CHANGED
@@ -24,7 +24,7 @@ class Agent:
24
24
  name: Agent名称,默认为"Jarvis"
25
25
  is_sub_agent: 是否为子Agent,默认为False
26
26
  """
27
- self.model = PlatformRegistry.get_global_platform()
27
+ self.model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
28
28
  self.tool_registry = ToolRegistry.get_global_tool_registry()
29
29
  self.name = name
30
30
  self.is_sub_agent = is_sub_agent
@@ -32,12 +32,11 @@ class Agent:
32
32
  self.conversation_turns = 0
33
33
 
34
34
  # 从环境变量加载嵌入模型配置
35
- self.embedding_model_name = os.environ.get("JARVIS_EMBEDDING_MODEL", "BAAI/bge-large-zh-v1.5")
36
35
  self.embedding_dimension = 1536 # Default for many embedding models
37
36
 
38
37
  # 初始化嵌入模型
39
38
  try:
40
- self.embedding_model = load_embedding_model(self.embedding_model_name)
39
+ self.embedding_model = load_embedding_model()
41
40
 
42
41
  # 预热模型并获取正确的维度
43
42
  test_text = "这是一段测试文本,用于确保模型完全加载。"
@@ -19,22 +19,6 @@ class CodeBase:
19
19
  self.root_dir = root_dir
20
20
  os.chdir(self.root_dir)
21
21
  self.thread_count = int(os.environ.get("JARVIS_THREAD_COUNT") or 10)
22
- self.cheap_platform = os.environ.get("JARVIS_CHEAP_PLATFORM") or os.environ.get("JARVIS_PLATFORM") or "kimi"
23
- self.cheap_model = os.environ.get("JARVIS_CHEAP_MODEL") or os.environ.get("JARVIS_MODEL") or "kimi"
24
- self.normal_platform = os.environ.get("JARVIS_PLATFORM") or "kimi"
25
- self.codegen_platform = os.environ.get("JARVIS_CODEGEN_PLATFORM") or os.environ.get("JARVIS_PLATFORM") or "kimi"
26
- self.codegen_model = os.environ.get("JARVIS_CODEGEN_MODEL") or os.environ.get("JARVIS_MODEL") or "kimi"
27
- self.normal_model = os.environ.get("JARVIS_MODEL") or "kimi"
28
- self.embedding_model_name = os.environ.get("JARVIS_EMBEDDING_MODEL") or "BAAI/bge-large-zh-v1.5"
29
- if not self.cheap_platform or not self.cheap_model or not self.codegen_platform or not self.codegen_model or not self.embedding_model_name or not self.normal_platform or not self.normal_model:
30
- raise ValueError("JARVIS_CHEAP_PLATFORM or JARVIS_CHEAP_MODEL or JARVIS_CODEGEN_PLATFORM or JARVIS_CODEGEN_MODEL or JARVIS_EMBEDDING_MODEL or JARVIS_PLATFORM or JARVIS_MODEL is not set")
31
-
32
- PrettyOutput.print(f"廉价模型使用平台: {self.cheap_platform} 模型: {self.cheap_model}", output_type=OutputType.INFO)
33
- PrettyOutput.print(f"代码生成模型使用平台: {self.codegen_platform} 模型: {self.codegen_model}", output_type=OutputType.INFO)
34
- PrettyOutput.print(f"分析模型使用平台: {self.normal_platform} 模型: {self.normal_model}", output_type=OutputType.INFO)
35
- PrettyOutput.print(f"嵌入模型: {self.embedding_model_name}", output_type=OutputType.INFO)
36
- PrettyOutput.print(f"索引建立线程数: {self.thread_count}", output_type=OutputType.INFO)
37
- PrettyOutput.print(f"检索算法:分层导航小世界算法", output_type=OutputType.INFO)
38
22
 
39
23
  # 初始化数据目录
40
24
  self.data_dir = os.path.join(self.root_dir, ".jarvis-codebase")
@@ -43,7 +27,7 @@ class CodeBase:
43
27
 
44
28
  # 初始化嵌入模型,使用系统默认缓存目录
45
29
  try:
46
- self.embedding_model = load_embedding_model(self.embedding_model_name)
30
+ self.embedding_model = load_embedding_model()
47
31
 
48
32
  # 强制完全加载所有模型组件
49
33
  test_text = """
@@ -62,7 +46,7 @@ class CodeBase:
62
46
  self.vector_dim = self.embedding_model.get_sentence_embedding_dimension()
63
47
 
64
48
  self.git_file_list = self.get_git_file_list()
65
- self.platform_registry = PlatformRegistry().get_global_platform_registry()
49
+ self.platform_registry = PlatformRegistry.get_global_platform_registry()
66
50
 
67
51
  # 初始化缓存和索引
68
52
  self.cache_path = os.path.join(self.data_dir, "cache.pkl")
@@ -102,8 +86,7 @@ class CodeBase:
102
86
  return False
103
87
 
104
88
  def make_description(self, file_path: str) -> str:
105
- model = self.platform_registry.create_platform(self.cheap_platform)
106
- model.set_model_name(self.cheap_model)
89
+ model = PlatformRegistry.get_global_platform_registry().get_codegen_platform()
107
90
  model.set_suppress_output(True)
108
91
  content = open(file_path, "r", encoding="utf-8").read()
109
92
  prompt = f"""请分析以下代码文件,并生成一个详细的描述。描述应该包含以下要点:
@@ -411,8 +394,7 @@ class CodeBase:
411
394
  if not initial_results:
412
395
  return []
413
396
 
414
- model = self.platform_registry.create_platform(self.normal_platform)
415
- model.set_model_name(self.normal_model)
397
+ model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
416
398
  model.set_suppress_output(True)
417
399
 
418
400
  try:
@@ -470,8 +452,7 @@ class CodeBase:
470
452
 
471
453
  def search_similar(self, query: str, top_k: int = 20) -> List[Tuple[str, float, str]]:
472
454
  """搜索相似文件"""
473
- model = self.platform_registry.create_platform(self.normal_platform)
474
- model.set_model_name(self.normal_model)
455
+ model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
475
456
  model.set_suppress_output(True)
476
457
 
477
458
  try:
@@ -554,8 +535,7 @@ class CodeBase:
554
535
 
555
536
  请用专业的语言回答用户的问题,如果给出的文件内容不足以回答用户的问题,请告诉用户,绝对不要胡编乱造。
556
537
  """
557
- model = self.platform_registry.create_platform(self.codegen_platform)
558
- model.set_model_name(self.codegen_model)
538
+ model = PlatformRegistry.get_global_platform_registry().get_codegen_platform()
559
539
  try:
560
540
  response = model.chat(prompt)
561
541
  return response
@@ -21,13 +21,7 @@ index_lock = threading.Lock()
21
21
  class JarvisCoder:
22
22
  def __init__(self, root_dir: str, language: str):
23
23
  """初始化代码修改工具"""
24
-
25
- self.platform = os.environ.get("JARVIS_CODEGEN_PLATFORM") or os.environ.get("JARVIS_PLATFORM")
26
- self.model = os.environ.get("JARVIS_CODEGEN_MODEL") or os.environ.get("JARVIS_MODEL")
27
-
28
24
 
29
- if not self.platform or not self.model:
30
- raise ValueError("JARVIS_CODEGEN_PLATFORM or JARVIS_CODEGEN_MODEL is not set")
31
25
 
32
26
  self.root_dir = find_git_root(root_dir)
33
27
  if not self.root_dir:
@@ -486,8 +480,6 @@ def main():
486
480
  load_env_from_file()
487
481
 
488
482
  parser = argparse.ArgumentParser(description='代码修改工具')
489
- parser.add_argument('-p', '--platform', help='AI平台名称', default=os.environ.get('JARVIS_CODEGEN_PLATFORM'))
490
- parser.add_argument('-m', '--model', help='模型名称', default=os.environ.get('JARVIS_CODEGEN_MODEL'))
491
483
  parser.add_argument('-d', '--dir', help='项目根目录', default=os.getcwd())
492
484
  parser.add_argument('-l', '--language', help='编程语言', default="python")
493
485
  args = parser.parse_args()
@@ -495,9 +487,6 @@ def main():
495
487
  # 设置平台
496
488
  if not args.platform:
497
489
  print("错误: 未指定AI平台,请使用 -p 参数")
498
- # 设置模型
499
- if args.model:
500
- os.environ['JARVIS_CODEGEN_MODEL'] = args.model
501
490
 
502
491
  tool = JarvisCoder(args.dir, args.language)
503
492
 
jarvis/main.py CHANGED
@@ -104,31 +104,16 @@ def main():
104
104
  parser = argparse.ArgumentParser(description='Jarvis AI 助手')
105
105
  parser.add_argument('-f', '--files', nargs='*', help='要处理的文件列表')
106
106
  parser.add_argument('--keep-history', action='store_true', help='保持聊天历史(不删除会话)')
107
- parser.add_argument('-p', '--platform', default=os.getenv('JARVIS_PLATFORM') or 'kimi', help='选择AI平台')
108
- parser.add_argument('-m', '--model', default=os.getenv('JARVIS_MODEL') or '', help='模型') # 用于指定使用的模型名称,默认使用环境变量或平台默认模型
109
107
  args = parser.parse_args()
110
108
 
111
- platform = args.platform if args.platform else os.getenv('JARVIS_PLATFORM')
112
-
113
- if not platform:
114
- PrettyOutput.print("未指定AI平台,请使用 -p 参数或者设置 JARVIS_PLATFORM 环境变量", OutputType.ERROR)
115
- return 1
116
-
117
- PlatformRegistry.get_global_platform_registry().set_global_platform_name(platform)
118
-
119
- if args.model:
120
- os.environ["JARVIS_MODEL"] = args.model
121
-
122
109
  try:
123
110
  # 获取全局模型实例
124
111
  agent = Agent()
125
112
 
126
113
  # 如果用户传入了模型参数,则更换当前模型为用户指定的模型
127
- if args.model:
128
- agent.model.set_model_name(args.model)
129
114
 
130
115
  # 欢迎信息
131
- PrettyOutput.print(f"Jarvis 已初始化 - With {platform} 平台,模型: {agent.model.name()}", OutputType.SYSTEM)
116
+ PrettyOutput.print(f"Jarvis 已初始化 - With {agent.model.name()}", OutputType.SYSTEM)
132
117
  if args.keep_history:
133
118
  PrettyOutput.print("已启用历史保留模式", OutputType.INFO)
134
119
 
jarvis/models/registry.py CHANGED
@@ -152,14 +152,26 @@ class PlatformRegistry:
152
152
  """
153
153
  self.platforms: Dict[str, Type[BasePlatform]] = {}
154
154
 
155
- @staticmethod
156
- def get_global_platform() -> BasePlatform:
157
- """获取全局平台实例"""
158
- platform = PlatformRegistry.get_global_platform_registry().create_platform(PlatformRegistry.global_platform_name)
159
- if not platform:
160
- raise Exception(f"Failed to create platform: {PlatformRegistry.global_platform_name}")
155
+ def get_normal_platform(self) -> BasePlatform:
156
+ platform_name = os.environ.get("JARVIS_PLATFORM", "kimi")
157
+ model_name = os.environ.get("JARVIS_MODEL", "kimi")
158
+ platform = self.create_platform(platform_name)
159
+ platform.set_model_name(model_name)
160
+ return platform
161
+
162
+ def get_codegen_platform(self) -> BasePlatform:
163
+ platform_name = os.environ.get("JARVIS_CODEGEN_PLATFORM", os.environ.get("JARVIS_PLATFORM", "kimi"))
164
+ model_name = os.environ.get("JARVIS_CODEGEN_MODEL", os.environ.get("JARVIS_MODEL", "kimi"))
165
+ platform = self.create_platform(platform_name)
166
+ platform.set_model_name(model_name)
167
+ return platform
168
+
169
+ def get_cheap_platform(self) -> BasePlatform:
170
+ platform_name = os.environ.get("JARVIS_CHEAP_PLATFORM", os.environ.get("JARVIS_PLATFORM", "kimi"))
171
+ model_name = os.environ.get("JARVIS_CHEAP_MODEL", os.environ.get("JARVIS_MODEL", "kimi"))
172
+ platform = self.create_platform(platform_name)
173
+ platform.set_model_name(model_name)
161
174
  return platform
162
-
163
175
 
164
176
  def register_platform(self, name: str, platform_class: Type[BasePlatform]):
165
177
  """注册平台类
@@ -195,10 +207,3 @@ class PlatformRegistry:
195
207
  """获取可用平台列表"""
196
208
  return list(self.platforms.keys())
197
209
 
198
- def set_global_platform_name(self, platform_name: str):
199
- """设置全局平台"""
200
- PlatformRegistry.global_platform_name = platform_name
201
-
202
- def get_global_platform_name(self) -> str:
203
- """获取全局平台名称"""
204
- return PlatformRegistry.global_platform_name
jarvis/rag/main.py CHANGED
@@ -13,6 +13,7 @@ from tqdm import tqdm
13
13
  import fitz # PyMuPDF for PDF files
14
14
  from docx import Document as DocxDocument # python-docx for DOCX files
15
15
  from pathlib import Path
16
+ from jarvis.models.registry import PlatformRegistry
16
17
 
17
18
  @dataclass
18
19
  class Document:
@@ -140,7 +141,6 @@ class RAGTool:
140
141
  # 初始化配置
141
142
  self.min_paragraph_length = int(os.environ.get("JARVIS_MIN_PARAGRAPH_LENGTH", "50")) # 最小段落长度
142
143
  self.max_paragraph_length = int(os.environ.get("JARVIS_MAX_PARAGRAPH_LENGTH", "1000")) # 最大段落长度
143
- self.embedding_model_name = os.environ.get("JARVIS_EMBEDDING_MODEL", "BAAI/bge-large-zh-v1.5")
144
144
 
145
145
  # 初始化数据目录
146
146
  self.data_dir = os.path.join(self.root_dir, ".jarvis-rag")
@@ -149,7 +149,7 @@ class RAGTool:
149
149
 
150
150
  # 初始化嵌入模型
151
151
  try:
152
- self.embedding_model = load_embedding_model(self.embedding_model_name)
152
+ self.embedding_model = load_embedding_model()
153
153
  self.vector_dim = self.embedding_model.get_sentence_embedding_dimension()
154
154
  PrettyOutput.print("模型加载完成", output_type=OutputType.SUCCESS)
155
155
  except Exception as e:
@@ -363,11 +363,11 @@ class RAGTool:
363
363
  output_type=OutputType.ERROR)
364
364
  return []
365
365
 
366
- def build_index(self):
366
+ def build_index(self, dir: str):
367
367
  """构建文档索引"""
368
368
  # 获取所有文件
369
369
  all_files = []
370
- for root, _, files in os.walk(self.root_dir):
370
+ for root, _, files in os.walk(dir):
371
371
  if any(ignored in root for ignored in ['.jarvis-rag', '.git', '__pycache__', 'node_modules']):
372
372
  continue
373
373
  for file in files:
@@ -431,8 +431,73 @@ class RAGTool:
431
431
 
432
432
  return results
433
433
 
434
+ def is_index_built(self):
435
+ """检查索引是否已构建"""
436
+ return self.index is not None
437
+
438
+ def query(self, query: str) -> List[Document]:
439
+ """查询相关文档
440
+
441
+ Args:
442
+ query: 查询文本
443
+
444
+ Returns:
445
+ 相关文档列表
446
+ """
447
+ if not self.is_index_built():
448
+ raise ValueError("索引未构建,请先调用build_index()")
449
+
450
+ results = self.search(query)
451
+ return [doc for doc, _ in results]
452
+
453
+ def ask(self, question: str) -> Optional[str]:
454
+ """询问关于文档的问题
455
+
456
+ Args:
457
+ question: 用户问题
458
+
459
+ Returns:
460
+ 模型回答,如果失败则返回 None
461
+ """
462
+ try:
463
+ # 搜索相关文档片段
464
+ results = self.query(question)
465
+ if not results:
466
+ return None
467
+
468
+ # 构建上下文
469
+ context = []
470
+ for doc in results:
471
+ context.append(f"""
472
+ 来源文件: {doc.metadata['file_path']}
473
+ 片段位置: {doc.metadata['chunk_index'] + 1}/{doc.metadata['total_chunks']}
474
+ 内容:
475
+ {doc.content}
476
+ ---
477
+ """)
478
+
479
+ # 构建提示词
480
+ prompt = f"""请基于以下文档片段回答用户的问题。如果文档片段中的信息不足以完整回答问题,请明确指出。
481
+
482
+ 用户问题: {question}
483
+
484
+ 相关文档片段:
485
+ {''.join(context)}
486
+
487
+ 请提供准确、简洁的回答,并在适当时引用具体的文档来源。
488
+ """
489
+ # 获取模型实例并生成回答
490
+ model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
491
+ response = model.chat(prompt)
492
+
493
+ return response
494
+
495
+ except Exception as e:
496
+ PrettyOutput.print(f"问答失败: {str(e)}", output_type=OutputType.ERROR)
497
+ return None
498
+
434
499
  def main():
435
- """命令行入口"""
500
+ """主函数"""
436
501
  import argparse
437
502
  import sys
438
503
 
@@ -442,39 +507,57 @@ def main():
442
507
  sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer, 'strict')
443
508
  sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer, 'strict')
444
509
 
445
- parser = argparse.ArgumentParser(description='RAG工具')
446
- parser.add_argument('--dir', type=str, default=os.getcwd(), help='项目根目录')
447
- parser.add_argument('--build', action='store_true', help='构建索引')
448
- parser.add_argument('--query', type=str, help='搜索查询')
449
- parser.add_argument('--top-k', type=int, default=5, help='返回结果数量')
450
-
510
+ parser = argparse.ArgumentParser(description='文档检索和分析工具')
511
+ parser.add_argument('--dir', type=str, help='要处理的文档目录')
512
+ parser.add_argument('--build', action='store_true', help='构建文档索引')
513
+ parser.add_argument('--search', type=str, help='搜索文档内容')
514
+ parser.add_argument('--ask', type=str, help='询问关于文档的问题')
451
515
  args = parser.parse_args()
452
-
516
+
453
517
  try:
454
- rag = RAGTool(args.dir)
455
-
456
- if args.build:
457
- rag.build_index()
458
-
459
- if args.query:
460
- results = rag.search(args.query, args.top_k)
461
-
462
- if not results:
463
- PrettyOutput.print("未找到相关内容", output_type=OutputType.WARNING)
464
- return
465
-
466
- PrettyOutput.print("\n搜索结果:", output_type=OutputType.INFO)
467
- for doc, score in results:
468
- PrettyOutput.print("\n" + "="*50, output_type=OutputType.INFO)
469
- PrettyOutput.print(f"文件: {doc.metadata['file_path']}", output_type=OutputType.INFO)
470
- PrettyOutput.print(f"相似度: {score:.3f}", output_type=OutputType.INFO)
471
- PrettyOutput.print(f"片段 {doc.metadata['chunk_index'] + 1}/{doc.metadata['total_chunks']}",
472
- output_type=OutputType.INFO)
473
- PrettyOutput.print("\n内容:", output_type=OutputType.INFO)
474
- # 确保内容是UTF-8编码
475
- content = doc.content.encode('utf-8', errors='replace').decode('utf-8')
476
- PrettyOutput.print(content, output_type=OutputType.INFO)
477
-
518
+ current_dir = find_git_root()
519
+ rag = RAGTool(current_dir)
520
+
521
+ if args.dir and args.build:
522
+ PrettyOutput.print(f"正在处理目录: {args.dir}", output_type=OutputType.INFO)
523
+ rag.build_index(args.dir)
524
+ return 0
525
+
526
+ if args.search or args.ask:
527
+ if not rag.is_index_built():
528
+ PrettyOutput.print("索引尚未构建,请先使用 --dir 和 --build 参数构建索引", output_type=OutputType.WARNING)
529
+ return 1
530
+
531
+ if args.search:
532
+ results = rag.query(args.search)
533
+ if not results:
534
+ PrettyOutput.print("未找到相关内容", output_type=OutputType.WARNING)
535
+ return 1
536
+
537
+ for doc in results:
538
+ PrettyOutput.print(f"\n文件: {doc.metadata['file_path']}", output_type=OutputType.INFO)
539
+ PrettyOutput.print(f"片段 {doc.metadata['chunk_index'] + 1}/{doc.metadata['total_chunks']}",
540
+ output_type=OutputType.INFO)
541
+ PrettyOutput.print("\n内容:", output_type=OutputType.INFO)
542
+ content = doc.content.encode('utf-8', errors='replace').decode('utf-8')
543
+ PrettyOutput.print(content, output_type=OutputType.INFO)
544
+ return 0
545
+
546
+ if args.ask:
547
+ # 调用 ask 方法
548
+ response = rag.ask(args.ask)
549
+ if not response:
550
+ PrettyOutput.print("未能获取答案", output_type=OutputType.WARNING)
551
+ return 1
552
+
553
+ # 显示回答
554
+ PrettyOutput.print("\n回答:", output_type=OutputType.INFO)
555
+ PrettyOutput.print(response, output_type=OutputType.INFO)
556
+ return 0
557
+
558
+ PrettyOutput.print("请指定操作参数。使用 -h 查看帮助。", output_type=OutputType.WARNING)
559
+ return 1
560
+
478
561
  except Exception as e:
479
562
  PrettyOutput.print(f"执行失败: {str(e)}", output_type=OutputType.ERROR)
480
563
  return 1
jarvis/tools/generator.py CHANGED
@@ -42,11 +42,7 @@ class ToolGeneratorTool:
42
42
 
43
43
  def _generate_tool_code(self, tool_name: str, class_name: str, description: str, parameters: Dict) -> str:
44
44
  """使用大模型生成工具代码"""
45
- platform_name = os.getenv("JARVIS_CODEGEN_PLATFORM") or PlatformRegistry.get_global_platform_name()
46
- model = PlatformRegistry.create_platform(platform_name)
47
- model_name = os.getenv("JARVIS_CODEGEN_MODEL")
48
- if model_name:
49
- model.set_model_name(model_name)
45
+ model = PlatformRegistry.get_global_platform_registry().get_codegen_platform()
50
46
 
51
47
  prompt = f"""请生成一个Python工具类的代码,要求如下,除了代码,不要输出任何内容:
52
48
 
jarvis/tools/search.py CHANGED
@@ -86,7 +86,7 @@ class SearchTool:
86
86
 
87
87
  def __init__(self):
88
88
  """初始化搜索工具,需要传入语言模型用于信息提取"""
89
- self.model = PlatformRegistry.get_global_platform_registry().get_global_platform()
89
+ self.model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
90
90
  self.webpage_tool = WebpageTool()
91
91
 
92
92
  def _search(self, query: str, max_results: int) -> List[Dict]:
jarvis/utils.py CHANGED
@@ -209,8 +209,9 @@ def find_git_root(dir="."):
209
209
  os.chdir(curr_dir)
210
210
  return ret
211
211
 
212
- def load_embedding_model(model_name: str):
212
+ def load_embedding_model():
213
213
  os.environ["TOKENIZERS_PARALLELISM"] = "false"
214
+ model_name = os.environ.get("JARVIS_EMBEDDING_MODEL", "BAAI/bge-large-zh-v1.5")
214
215
  PrettyOutput.print(f"正在加载嵌入模型: {model_name}...", OutputType.INFO)
215
216
  try:
216
217
  # 首先尝试离线加载
@@ -230,4 +231,5 @@ def load_embedding_model(model_name: str):
230
231
  cache_folder=os.path.expanduser("~/.cache/huggingface/hub")
231
232
  )
232
233
  PrettyOutput.print("模型下载并加载成功", OutputType.SUCCESS)
234
+
233
235
  return embedding_model
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.77
3
+ Version: 0.1.78
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
@@ -1,35 +1,35 @@
1
- jarvis/__init__.py,sha256=WZAfXLVIclhkO-zAnoGnZ9Gc0F0C_LUd0MwIpGBFrdw,50
2
- jarvis/agent.py,sha256=lUYH9wijs4wwbXMxqZBtOkEfL0jHLv9rw82r9EjPpXs,19743
3
- jarvis/main.py,sha256=7EcSlxa5JFFXBujzKDWdNtwX6axLhFFdJMc2GxTjfdk,6295
4
- jarvis/utils.py,sha256=TKKO7vbWLJ80n3JqL30HpbW-GuFfJTgR0GqBrsPPiwk,8566
1
+ jarvis/__init__.py,sha256=621TTvMVhcxJHyaCKZr7RtlYLVSbouHVNyKql9eFQFY,50
2
+ jarvis/agent.py,sha256=afAGM2SHzuf3ahDMXsIx5kNtfFeAssZVup0GbZVf2iY,19646
3
+ jarvis/main.py,sha256=OJc7e5i988eQLByT7SzX7eoa0HKm4LMg814gZv9hBX8,5487
4
+ jarvis/utils.py,sha256=jvo6ylvrTaSmXWcYY0qTTf14TwCkAhPsCUuIl5WHEuw,8640
5
5
  jarvis/jarvis_codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- jarvis/jarvis_codebase/main.py,sha256=aGhfH9JTW-CX97OJErzxztJGhL_CH6lXeabfwZxHHxQ,26807
6
+ jarvis/jarvis_codebase/main.py,sha256=DPMPw8qoKHooydELKwf_bXPa0a3459kdFcZOXdrM-N8,24785
7
7
  jarvis/jarvis_coder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- jarvis/jarvis_coder/main.py,sha256=4YhQ20MD8ntdD5hjmjJbBHYEDPDZ2aPIgAviJCvtOXE,24458
8
+ jarvis/jarvis_coder/main.py,sha256=Hr6T5LHC5n08s9tnOt-2_h8TmzothBUhqcd2-fzwuVI,23790
9
9
  jarvis/models/__init__.py,sha256=mrOt67nselz_H1gX9wdAO4y2DY5WPXzABqJbr5Des8k,63
10
10
  jarvis/models/ai8.py,sha256=vgy-r_3HHxGMAalZrA65VWHC1PuwBTYgtprSgHkCbrk,12557
11
11
  jarvis/models/base.py,sha256=ShV1H8Unee4RMaiFO4idROQA0Hc6wu4dyeRPX5fcszk,1433
12
12
  jarvis/models/kimi.py,sha256=1iTB0Z_WOmCML3Ufsge6jmeKOYvccr7I5lS3JUXymU4,17611
13
13
  jarvis/models/openai.py,sha256=ayaBWAN5VexMcKVrjEPDNB-Q9wx0sCV9Z4BCrvwYJ9w,4315
14
14
  jarvis/models/oyi.py,sha256=X2c5SWDIuQDCCFBcEKbzIWEz3I34eOAi0d1XAFgxlpw,15001
15
- jarvis/models/registry.py,sha256=YpooKSpk5pSWfb5cBDz5wRfPK-abb9uuUZr4WBejqwI,7762
15
+ jarvis/models/registry.py,sha256=Ez3MNCYIlvPxRS5rJrgV7b8BkXtaZ75bCkemPr3L9nw,8156
16
16
  jarvis/rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- jarvis/rag/main.py,sha256=sgtOzmqi9cO9DcCenSXSad5Xr7MI0U7Ji2GtQL-YaO4,18161
17
+ jarvis/rag/main.py,sha256=D3JrRQd4dTyf4ZB0gN131a3D4R933BhlNypimo1ZX7w,20775
18
18
  jarvis/tools/__init__.py,sha256=7Rqyj5hBAv5cWDVr5T9ZTZASO7ssBHeQNm2_4ZARdkA,72
19
19
  jarvis/tools/base.py,sha256=EGRGbdfbLXDLwtyoWdvp9rlxNX7bzc20t0Vc2VkwIEY,652
20
20
  jarvis/tools/codebase_qa.py,sha256=LsowsgL7HBmdBwa7zXcYi_OkwOok4qbnzYWYsuZxHtU,2413
21
21
  jarvis/tools/coder.py,sha256=kmotT2Klsug44S51QoSW9DzkxLzcF-XonyYAEoWZV6c,2295
22
22
  jarvis/tools/file_ops.py,sha256=h8g0eT9UvlJf4kt0DLXvdSsjcPj7x19lxWdDApeDfpg,3842
23
- jarvis/tools/generator.py,sha256=vVP3eN5cCDpRXf_fn0skETkPXAW1XZFWx9pt2_ahK48,5999
23
+ jarvis/tools/generator.py,sha256=S1DhHBfhNvF6SrORnlk8Mz210yDiJPuxbfswbX_UACs,5791
24
24
  jarvis/tools/methodology.py,sha256=UG6s5VYRcd9wrKX4cg6f7zJhet5AIcthFGMOAdevBiw,5175
25
25
  jarvis/tools/registry.py,sha256=MeTYNdZNRdhlgABviVxzbDPSgLpwDp2Nx2dGzedRu8U,7212
26
- jarvis/tools/search.py,sha256=3FX5oAkPiKD4Bvu8gBpKLQveOgl_K5jkvxRvkRPoH3M,8787
26
+ jarvis/tools/search.py,sha256=c9dXtyICdl8Lm8shNPNyIx9k67uY0rMF8xnIKu2RsnE,8787
27
27
  jarvis/tools/shell.py,sha256=UPKshPyOaUwTngresUw-ot1jHjQIb4wCY5nkJqa38lU,2520
28
28
  jarvis/tools/sub_agent.py,sha256=rEtAmSVY2ZjFOZEKr5m5wpACOQIiM9Zr_3dT92FhXYU,2621
29
29
  jarvis/tools/webpage.py,sha256=d3w3Jcjcu1ESciezTkz3n3Zf-rp_l91PrVoDEZnckOo,2391
30
- jarvis_ai_assistant-0.1.77.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
31
- jarvis_ai_assistant-0.1.77.dist-info/METADATA,sha256=Fo61TgkIMKSfekG4kV5RR_kfMDAgEpl5D2_2jl8geqU,12736
32
- jarvis_ai_assistant-0.1.77.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
33
- jarvis_ai_assistant-0.1.77.dist-info/entry_points.txt,sha256=iEvZ0rn-muMxWCNH5QEvw_mTTy_EVhyQyxDxWXqQQVo,174
34
- jarvis_ai_assistant-0.1.77.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
35
- jarvis_ai_assistant-0.1.77.dist-info/RECORD,,
30
+ jarvis_ai_assistant-0.1.78.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
31
+ jarvis_ai_assistant-0.1.78.dist-info/METADATA,sha256=h_0jRKVqkVFOatxdzvE4QkB_mkKxAHONa4dZr5CCXaI,12736
32
+ jarvis_ai_assistant-0.1.78.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
33
+ jarvis_ai_assistant-0.1.78.dist-info/entry_points.txt,sha256=iEvZ0rn-muMxWCNH5QEvw_mTTy_EVhyQyxDxWXqQQVo,174
34
+ jarvis_ai_assistant-0.1.78.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
35
+ jarvis_ai_assistant-0.1.78.dist-info/RECORD,,