jarvis-ai-assistant 0.2.8__py3-none-any.whl → 0.3.1__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 (40) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +277 -242
  3. jarvis/jarvis_agent/agent_manager.py +85 -0
  4. jarvis/jarvis_agent/config_editor.py +53 -0
  5. jarvis/jarvis_agent/file_methodology_manager.py +105 -0
  6. jarvis/jarvis_agent/jarvis.py +30 -619
  7. jarvis/jarvis_agent/memory_manager.py +127 -0
  8. jarvis/jarvis_agent/methodology_share_manager.py +174 -0
  9. jarvis/jarvis_agent/prompts.py +18 -3
  10. jarvis/jarvis_agent/share_manager.py +176 -0
  11. jarvis/jarvis_agent/task_analyzer.py +126 -0
  12. jarvis/jarvis_agent/task_manager.py +111 -0
  13. jarvis/jarvis_agent/tool_share_manager.py +139 -0
  14. jarvis/jarvis_code_agent/code_agent.py +26 -20
  15. jarvis/jarvis_data/config_schema.json +37 -4
  16. jarvis/jarvis_platform/ai8.py +13 -1
  17. jarvis/jarvis_platform/base.py +20 -5
  18. jarvis/jarvis_platform/human.py +11 -1
  19. jarvis/jarvis_platform/kimi.py +10 -0
  20. jarvis/jarvis_platform/openai.py +20 -0
  21. jarvis/jarvis_platform/tongyi.py +14 -9
  22. jarvis/jarvis_platform/yuanbao.py +10 -0
  23. jarvis/jarvis_platform_manager/main.py +12 -12
  24. jarvis/jarvis_platform_manager/service.py +9 -4
  25. jarvis/jarvis_tools/registry.py +32 -0
  26. jarvis/jarvis_tools/retrieve_memory.py +36 -8
  27. jarvis/jarvis_tools/search_web.py +1 -1
  28. jarvis/jarvis_utils/clipboard.py +90 -0
  29. jarvis/jarvis_utils/config.py +64 -0
  30. jarvis/jarvis_utils/git_utils.py +17 -7
  31. jarvis/jarvis_utils/globals.py +18 -12
  32. jarvis/jarvis_utils/input.py +118 -16
  33. jarvis/jarvis_utils/methodology.py +48 -5
  34. jarvis/jarvis_utils/utils.py +169 -105
  35. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/METADATA +1 -1
  36. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/RECORD +40 -30
  37. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/WHEEL +0 -0
  38. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/entry_points.txt +0 -0
  39. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/licenses/LICENSE +0 -0
  40. {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/top_level.txt +0 -0
@@ -19,10 +19,12 @@ from jarvis.jarvis_utils.config import (
19
19
  get_data_dir,
20
20
  get_methodology_dirs,
21
21
  get_central_methodology_repo,
22
+ get_max_input_token_count,
22
23
  )
23
24
  from jarvis.jarvis_utils.globals import get_agent, current_agent_name
24
25
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
25
26
  from jarvis.jarvis_utils.utils import is_context_overflow, daily_check_git_updates
27
+ from jarvis.jarvis_utils.embedding import get_context_token_count
26
28
 
27
29
 
28
30
  def _get_methodology_directory() -> str:
@@ -273,14 +275,16 @@ def load_methodology(user_input: str, tool_registery: Optional[Any] = None) -> s
273
275
  if not selected_methodologies:
274
276
  return "没有历史方法论可参考"
275
277
 
278
+ # 获取最大输入token数的2/3作为方法论的token限制
279
+ max_input_tokens = get_max_input_token_count()
280
+ methodology_token_limit = int(max_input_tokens * 2 / 3)
281
+
276
282
  # 步骤3:将选择出来的方法论内容提供给大模型生成步骤
277
- final_prompt = f"""以下是与用户需求相关的方法论内容:
283
+ # 首先构建基础提示词部分
284
+ base_prompt = f"""以下是与用户需求相关的方法论内容:
278
285
 
279
286
  """
280
- for problem_type, content in selected_methodologies.items():
281
- final_prompt += f"## {problem_type}\n\n{content}\n\n---\n\n"
282
-
283
- final_prompt += f"""以下是所有可用的工具内容:
287
+ suffix_prompt = f"""以下是所有可用的工具内容:
284
288
 
285
289
  {prompt}
286
290
 
@@ -300,6 +304,45 @@ def load_methodology(user_input: str, tool_registery: Optional[Any] = None) -> s
300
304
  除以上要求外,不要输出任何内容
301
305
  """
302
306
 
307
+ # 计算基础部分的token数
308
+ base_tokens = get_context_token_count(base_prompt + suffix_prompt)
309
+ available_tokens = methodology_token_limit - base_tokens
310
+
311
+ # 基于token限制筛选方法论内容
312
+ final_prompt = base_prompt
313
+ selected_count = 0
314
+ total_methodology_tokens = 0
315
+
316
+ for problem_type, content in selected_methodologies.items():
317
+ methodology_text = f"## {problem_type}\n\n{content}\n\n---\n\n"
318
+ methodology_tokens = get_context_token_count(methodology_text)
319
+
320
+ # 检查是否会超过token限制
321
+ if total_methodology_tokens + methodology_tokens > available_tokens:
322
+ PrettyOutput.print(
323
+ f"达到方法论token限制 ({total_methodology_tokens}/{available_tokens}),停止加载更多方法论",
324
+ OutputType.INFO,
325
+ )
326
+ break
327
+
328
+ final_prompt += methodology_text
329
+ total_methodology_tokens += methodology_tokens
330
+ selected_count += 1
331
+
332
+ # 如果一个方法论都没有加载成功
333
+ if selected_count == 0:
334
+ PrettyOutput.print(
335
+ "警告:由于token限制,无法加载任何方法论内容", OutputType.WARNING
336
+ )
337
+ return "没有历史方法论可参考"
338
+
339
+ final_prompt += suffix_prompt
340
+
341
+ PrettyOutput.print(
342
+ f"成功加载 {selected_count} 个方法论,总token数: {total_methodology_tokens}",
343
+ OutputType.INFO,
344
+ )
345
+
303
346
  # 如果内容不大,直接使用chat_until_success
304
347
  return platform.chat_until_success(final_prompt)
305
348
 
@@ -491,6 +491,153 @@ def init_env(welcome_str: str, config_file: Optional[str] = None) -> None:
491
491
  sys.exit(0)
492
492
 
493
493
 
494
+ def _interactive_config_setup(config_file_path: Path):
495
+ """交互式配置引导"""
496
+ from jarvis.jarvis_platform.registry import PlatformRegistry
497
+ from jarvis.jarvis_utils.input import (
498
+ get_choice,
499
+ get_single_line_input as get_input,
500
+ user_confirm as get_yes_no,
501
+ )
502
+
503
+ PrettyOutput.print(
504
+ "欢迎使用 Jarvis!未找到配置文件,现在开始引导配置。", OutputType.INFO
505
+ )
506
+
507
+ # 1. 选择平台
508
+ registry = PlatformRegistry.get_global_platform_registry()
509
+ platforms = registry.get_available_platforms()
510
+ platform_name = get_choice("请选择您要使用的AI平台", platforms)
511
+
512
+ # 2. 配置环境变量
513
+ platform_class = registry.platforms.get(platform_name)
514
+ if not platform_class:
515
+ PrettyOutput.print(f"平台 '{platform_name}' 加载失败。", OutputType.ERROR)
516
+ sys.exit(1)
517
+
518
+ env_vars = {}
519
+ required_keys = platform_class.get_required_env_keys()
520
+ defaults = platform_class.get_env_defaults()
521
+ if required_keys:
522
+ PrettyOutput.print(
523
+ f"请输入 {platform_name} 平台所需的配置信息:", OutputType.INFO
524
+ )
525
+ for key in required_keys:
526
+ default_value = defaults.get(key, "")
527
+ prompt_text = f" - {key}"
528
+ if default_value:
529
+ prompt_text += f" (默认: {default_value})"
530
+ prompt_text += ": "
531
+
532
+ value = get_input(prompt_text, default=default_value)
533
+ env_vars[key] = value
534
+ os.environ[key] = value # 立即设置环境变量以便后续测试
535
+
536
+ # 3. 选择模型
537
+ try:
538
+ platform_instance = registry.create_platform(platform_name)
539
+ if not platform_instance:
540
+ PrettyOutput.print(f"无法创建平台 '{platform_name}'。", OutputType.ERROR)
541
+ sys.exit(1)
542
+
543
+ model_list_tuples = platform_instance.get_model_list()
544
+ model_choices = [f"{name} ({desc})" for name, desc in model_list_tuples]
545
+ model_display_name = get_choice("请选择要使用的模型", model_choices)
546
+
547
+ # 从显示名称反向查找模型ID
548
+ selected_index = model_choices.index(model_display_name)
549
+ model_name, _ = model_list_tuples[selected_index]
550
+
551
+ except Exception:
552
+ PrettyOutput.print("获取模型列表失败", OutputType.ERROR)
553
+ if not get_yes_no("无法获取模型列表,是否继续配置?"):
554
+ sys.exit(1)
555
+ model_name = get_input("请输入模型名称:")
556
+
557
+ # 4. 测试配置
558
+ PrettyOutput.print("正在测试配置...", OutputType.INFO)
559
+ test_passed = False
560
+ try:
561
+ platform_instance = registry.create_platform(platform_name)
562
+ if platform_instance:
563
+ platform_instance.set_model_name(model_name)
564
+ response_generator = platform_instance.chat("hello")
565
+ response = "".join(response_generator)
566
+ if response:
567
+ PrettyOutput.print(
568
+ f"测试成功,模型响应: {response}", OutputType.SUCCESS
569
+ )
570
+ test_passed = True
571
+ else:
572
+ PrettyOutput.print("测试失败,模型没有响应。", OutputType.ERROR)
573
+ else:
574
+ PrettyOutput.print("测试失败,无法创建平台实例。", OutputType.ERROR)
575
+ except Exception:
576
+ PrettyOutput.print("测试失败", OutputType.ERROR)
577
+
578
+ # 5. 生成并保存配置
579
+ config_data = {
580
+ "ENV": env_vars,
581
+ "JARVIS_PLATFORM": platform_name,
582
+ "JARVIS_THINKING_PLATFORM": platform_name,
583
+ "JARVIS_MODEL": model_name,
584
+ "JARVIS_THINKING_MODEL": model_name,
585
+ }
586
+
587
+ if test_passed:
588
+ PrettyOutput.print("配置已测试通过,将为您生成配置文件。", OutputType.SUCCESS)
589
+ else:
590
+ if not get_yes_no("配置测试失败,您确定要保存这个配置吗?"):
591
+ PrettyOutput.print("配置未保存。", OutputType.INFO)
592
+ sys.exit(0)
593
+
594
+ try:
595
+ schema_path = (
596
+ Path(__file__).parent.parent / "jarvis_data" / "config_schema.json"
597
+ )
598
+ if schema_path.exists():
599
+ config_file_path.parent.mkdir(parents=True, exist_ok=True)
600
+ # 使用现有的函数生成默认结构,然后覆盖引导配置
601
+ generate_default_config(str(schema_path.absolute()), str(config_file_path))
602
+
603
+ # 读取刚生成的默认配置
604
+ with open(config_file_path, "r", encoding="utf-8") as f:
605
+ content = f.read()
606
+ default_config = yaml.safe_load(
607
+ content.split("\n", 1)[1]
608
+ ) # 跳过 schema 行
609
+
610
+ # 合并用户配置
611
+ if default_config is None:
612
+ default_config = {}
613
+ default_config.update(config_data)
614
+
615
+ # 写回合并后的配置
616
+ final_content = (
617
+ f"# yaml-language-server: $schema={str(schema_path.absolute())}\n"
618
+ )
619
+ final_content += yaml.dump(
620
+ default_config, allow_unicode=True, sort_keys=False
621
+ )
622
+ with open(config_file_path, "w", encoding="utf-8") as f:
623
+ f.write(final_content)
624
+
625
+ PrettyOutput.print(
626
+ f"配置文件已生成: {config_file_path}", OutputType.SUCCESS
627
+ )
628
+ PrettyOutput.print("配置完成,请重新启动Jarvis。", OutputType.INFO)
629
+ sys.exit(0)
630
+ else:
631
+ PrettyOutput.print(
632
+ "未找到config schema,无法生成配置文件。", OutputType.ERROR
633
+ )
634
+ sys.exit(1)
635
+
636
+ except Exception:
637
+ PrettyOutput.print("生成配置文件失败", OutputType.ERROR)
638
+ sys.exit(1)
639
+
640
+
494
641
  def load_config():
495
642
  config_file = g_config_file
496
643
  config_file_path = (
@@ -505,22 +652,7 @@ def load_config():
505
652
  if old_config_file.exists(): # 旧的配置文件存在
506
653
  _read_old_config_file(old_config_file)
507
654
  else:
508
- # 生成默认配置文件
509
- schema_path = (
510
- Path(__file__).parent.parent / "jarvis_data" / "config_schema.json"
511
- )
512
- if schema_path.exists():
513
- try:
514
- config_file_path.parent.mkdir(parents=True, exist_ok=True)
515
- generate_default_config(
516
- str(schema_path.absolute()), str(config_file_path)
517
- )
518
- PrettyOutput.print(
519
- f"已生成默认配置文件: {config_file_path}", OutputType.INFO
520
- )
521
- sys.exit(0)
522
- except Exception as e:
523
- PrettyOutput.print(f"生成默认配置文件失败: {e}", OutputType.ERROR)
655
+ _interactive_config_setup(config_file_path)
524
656
  else:
525
657
  _load_and_process_config(str(config_file_path.parent), str(config_file_path))
526
658
 
@@ -528,6 +660,9 @@ def load_config():
528
660
  from typing import Tuple
529
661
 
530
662
 
663
+ from typing import Tuple
664
+
665
+
531
666
  def _load_config_file(config_file: str) -> Tuple[str, dict]:
532
667
  """读取并解析YAML格式的配置文件
533
668
 
@@ -594,10 +729,24 @@ def _load_and_process_config(jarvis_dir: str, config_file: str) -> None:
594
729
  jarvis_dir: Jarvis数据目录路径
595
730
  config_file: 配置文件路径
596
731
  """
597
- content, config_data = _load_config_file(config_file)
598
- _ensure_schema_declaration(jarvis_dir, config_file, content, config_data)
599
- set_global_env_data(config_data)
600
- _process_env_variables(config_data)
732
+ from jarvis.jarvis_utils.input import user_confirm as get_yes_no
733
+
734
+ try:
735
+ content, config_data = _load_config_file(config_file)
736
+ _ensure_schema_declaration(jarvis_dir, config_file, content, config_data)
737
+ set_global_env_data(config_data)
738
+ _process_env_variables(config_data)
739
+ except Exception:
740
+ PrettyOutput.print("加载配置文件失败", OutputType.ERROR)
741
+ if get_yes_no("配置文件格式错误,是否删除并重新配置?"):
742
+ try:
743
+ os.remove(config_file)
744
+ PrettyOutput.print(
745
+ "已删除损坏的配置文件,请重启Jarvis以重新配置。", OutputType.SUCCESS
746
+ )
747
+ except Exception:
748
+ PrettyOutput.print("删除配置文件失败", OutputType.ERROR)
749
+ sys.exit(1)
601
750
 
602
751
 
603
752
  def generate_default_config(schema_path: str, output_path: str) -> None:
@@ -811,91 +960,6 @@ def get_loc_stats() -> str:
811
960
  return ""
812
961
 
813
962
 
814
- def copy_to_clipboard(text: str) -> None:
815
- """将文本复制到剪贴板,支持Windows、macOS和Linux
816
-
817
- 参数:
818
- text: 要复制的文本
819
- """
820
- print("--- 剪贴板内容开始 ---")
821
- print(text)
822
- print("--- 剪贴板内容结束 ---")
823
-
824
- system = platform.system()
825
-
826
- # Windows系统
827
- if system == "Windows":
828
- try:
829
- # 使用Windows的clip命令
830
- process = subprocess.Popen(
831
- ["clip"],
832
- stdin=subprocess.PIPE,
833
- stdout=subprocess.DEVNULL,
834
- stderr=subprocess.DEVNULL,
835
- shell=True,
836
- )
837
- if process.stdin:
838
- process.stdin.write(text.encode("utf-8"))
839
- process.stdin.close()
840
- return
841
- except Exception as e:
842
- PrettyOutput.print(f"使用Windows clip命令时出错: {e}", OutputType.WARNING)
843
-
844
- # macOS系统
845
- elif system == "Darwin":
846
- try:
847
- process = subprocess.Popen(
848
- ["pbcopy"],
849
- stdin=subprocess.PIPE,
850
- stdout=subprocess.DEVNULL,
851
- stderr=subprocess.DEVNULL,
852
- )
853
- if process.stdin:
854
- process.stdin.write(text.encode("utf-8"))
855
- process.stdin.close()
856
- return
857
- except Exception as e:
858
- PrettyOutput.print(f"使用macOS pbcopy命令时出错: {e}", OutputType.WARNING)
859
-
860
- # Linux系统
861
- else:
862
- # 尝试使用 xsel
863
- try:
864
- process = subprocess.Popen(
865
- ["xsel", "-b", "-i"],
866
- stdin=subprocess.PIPE,
867
- stdout=subprocess.DEVNULL,
868
- stderr=subprocess.DEVNULL,
869
- )
870
- if process.stdin:
871
- process.stdin.write(text.encode("utf-8"))
872
- process.stdin.close()
873
- return
874
- except FileNotFoundError:
875
- pass # xsel 未安装,继续尝试下一个
876
- except Exception as e:
877
- PrettyOutput.print(f"使用xsel时出错: {e}", OutputType.WARNING)
878
-
879
- # 尝试使用 xclip
880
- try:
881
- process = subprocess.Popen(
882
- ["xclip", "-selection", "clipboard"],
883
- stdin=subprocess.PIPE,
884
- stdout=subprocess.DEVNULL,
885
- stderr=subprocess.DEVNULL,
886
- )
887
- if process.stdin:
888
- process.stdin.write(text.encode("utf-8"))
889
- process.stdin.close()
890
- return
891
- except FileNotFoundError:
892
- PrettyOutput.print(
893
- "xsel 和 xclip 均未安装, 无法复制到剪贴板", OutputType.WARNING
894
- )
895
- except Exception as e:
896
- PrettyOutput.print(f"使用xclip时出错: {e}", OutputType.WARNING)
897
-
898
-
899
963
  def _pull_git_repo(repo_path: Path, repo_type: str):
900
964
  """对指定的git仓库执行git pull操作,并根据commit hash判断是否有更新。"""
901
965
  git_dir = repo_path / ".git"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.2.8
3
+ Version: 0.3.1
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,18 +1,27 @@
1
- jarvis/__init__.py,sha256=rn_98P3W66_HZr-g2PfCqi31zz80PtoPiaPvZCINUKo,73
2
- jarvis/jarvis_agent/__init__.py,sha256=feyq1jxhgzAy8y0X7nNidmFTm8gkpJdhikzmphZNU7M,26945
1
+ jarvis/__init__.py,sha256=XcoTQZ6UV9jwJibx5WyZw3mcC4mymdL1YQyJuL5GUfY,73
2
+ jarvis/jarvis_agent/__init__.py,sha256=2zScM4N6GN4Vv5y_jDmJjTirea8ZGtRMiPf-UaGl0XE,25789
3
+ jarvis/jarvis_agent/agent_manager.py,sha256=YzpMiF0H2-eyk2kn2o24Bkj3bXsQx7Pv2vfD4gWepo0,2893
3
4
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=Qs4LAr4xdKLBJpQE81YP4CkucAop86ms0iVoKa1nnso,2468
5
+ jarvis/jarvis_agent/config_editor.py,sha256=Ctk82sO6w2cNW0-_5L7Bomj-hgM4U7WwMc52fwhAJyg,1809
4
6
  jarvis/jarvis_agent/edit_file_handler.py,sha256=w-byNJ4TN_SlV3djjfFC7OksySOFGrM8ku49w662dzc,11854
5
- jarvis/jarvis_agent/jarvis.py,sha256=4CD18QQHL-7XrqrWJDhN1mAxyO4Gk64dd-NUJs3Gt6g,27175
7
+ jarvis/jarvis_agent/file_methodology_manager.py,sha256=h2ogMK9mSKjg_n04ITw24m28J_U225bhLNhfwpf9jpU,4383
8
+ jarvis/jarvis_agent/jarvis.py,sha256=yCXqNVF9S-IX02tNfPTw4WesMuO3F0Ht3Z0u1Srv7VI,3234
6
9
  jarvis/jarvis_agent/main.py,sha256=56pLVy6v-3ZdyPCcWXdRkgbjmYsoIfC7zrA6B7sYivU,3334
10
+ jarvis/jarvis_agent/memory_manager.py,sha256=F7HTNzdN1_-cSygnz7zKSJRJvPLUOosqcXQeiW8zG4U,5266
11
+ jarvis/jarvis_agent/methodology_share_manager.py,sha256=vwWNexluTXSI3qeNP3zJAemOjWW37o_1AlqDR1C8wCI,6910
7
12
  jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
8
13
  jarvis/jarvis_agent/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh2lC__p40,1705
9
- jarvis/jarvis_agent/prompts.py,sha256=VLQtz75X5qExQkSwYlJYQzNLpDMdByr4FaY71POVLMI,8713
14
+ jarvis/jarvis_agent/prompts.py,sha256=X6cXa-n0xqBQ8LDTgLsD0kqziAh1s0cNp89i4mxcvHg,9444
10
15
  jarvis/jarvis_agent/protocols.py,sha256=JWnJDikFEuwvFUv7uzXu0ggJ4O9K2FkMnfVCwIJ5REw,873
11
16
  jarvis/jarvis_agent/session_manager.py,sha256=DnvI9rWkVmkyO1XfKZyo9lTn4ajg4ccwzEkoRHFPOJM,2925
17
+ jarvis/jarvis_agent/share_manager.py,sha256=3lXwoHv6TZb6nxkSN0r2BHLMk6J09HC0csT3C9Ep5w0,6615
12
18
  jarvis/jarvis_agent/shell_input_handler.py,sha256=1IboqdxcJuoIqRpmDU10GugR9fWXUHyCEbVF4nIWbyo,1328
19
+ jarvis/jarvis_agent/task_analyzer.py,sha256=-fQ9YBYFcc-Z1FSoDIPzRfAgkREFoIOXtU2TdBkB-e0,4656
20
+ jarvis/jarvis_agent/task_manager.py,sha256=HJm4_SMpsFbQMUUsAZeHm7cZuhNbz28YW-DRLYgoarc,4422
13
21
  jarvis/jarvis_agent/tool_executor.py,sha256=nIq-sPNgrtimtM-IHpN09cWmId8jDzWRdCFoRzXnnoo,1721
22
+ jarvis/jarvis_agent/tool_share_manager.py,sha256=R5ONIQlDXX9pFq3clwHFhEW8BAJ3ECaR2DqWCEC9tzM,5205
14
23
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- jarvis/jarvis_code_agent/code_agent.py,sha256=t1i9XPihW7xrsYn6I86_QvCocVgHgIg0ORQ-ADcheeM,29132
24
+ jarvis/jarvis_code_agent/code_agent.py,sha256=cFLvSnUMQoQ_RkQ4MsZaln1G6DrxBF6u4Lgz79q2bSI,29305
16
25
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
17
26
  jarvis/jarvis_code_analysis/code_review.py,sha256=TMov1pqDe1bg0vM1ndnYeW9ejHrRN_jMroo3T4L9yag,32368
18
27
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
@@ -35,7 +44,7 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
35
44
  jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
36
45
  jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
37
46
  jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
38
- jarvis/jarvis_data/config_schema.json,sha256=CPGIKXei1xgFkkGKXzFNy_LxmZCFtbd_8cHv22A9zQ0,10523
47
+ jarvis/jarvis_data/config_schema.json,sha256=xri_qfCrs2AJ-fPwvnV4oU7VJpIrUxddffQMoSaHZ2A,11419
39
48
  jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
40
49
  jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
50
  jarvis/jarvis_git_squash/main.py,sha256=6PECdAbTbrsJBRLK1pXBh4hdJ_LADh-XXSic1xJi97E,2255
@@ -48,17 +57,17 @@ jarvis/jarvis_methodology/main.py,sha256=6QF8hH3vB6rfxim0fPR34uVPf41zVpb4ZLqrFN2
48
57
  jarvis/jarvis_multi_agent/__init__.py,sha256=kCgtAX7VvliyEOQxIj2DvNjRAuh6bpNaOtDn60nzph4,6089
49
58
  jarvis/jarvis_multi_agent/main.py,sha256=Wbarez48QxXexlKEOcRsoMbcQEOP5rv_DzGkNk0SfpY,1779
50
59
  jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
51
- jarvis/jarvis_platform/ai8.py,sha256=uiL1BkONteUB2aXg6kMGSXLLOhzGDl5_SNQYyQzmFNk,11412
52
- jarvis/jarvis_platform/base.py,sha256=cfeYB6ldfQH1tz1rroQpmJTLAw8KByKS74qun0pqE1c,9498
53
- jarvis/jarvis_platform/human.py,sha256=cSN8Lqf0ts2_pPfS2_v7PaWxQKqcW_3bSmhRTHey7Qo,4674
54
- jarvis/jarvis_platform/kimi.py,sha256=HzNcdQ3tO2ndHk02mfD9DeeGP7JVFnQ1pbkAVF21jjA,14222
55
- jarvis/jarvis_platform/openai.py,sha256=ccGqsU2cFfd5324P7SH1tSmFABpvto8fytmxQGkr3BA,6412
60
+ jarvis/jarvis_platform/ai8.py,sha256=W3947AGMpk3RRBfsfZmf222sEP0VIGoSU0vPkgiVnl0,11683
61
+ jarvis/jarvis_platform/base.py,sha256=nCX3W9LYIINUYn0tIS5ZmZo4UgyQVnQLZWfbHWQkAjo,9905
62
+ jarvis/jarvis_platform/human.py,sha256=jWjW8prEag79e6ddqTPV4nz_Gz6zFBfO4a1EbvP8QWA,4908
63
+ jarvis/jarvis_platform/kimi.py,sha256=qEqlCIT8gceR-hkYiv2m3nWaq1rgcMt7z44L77Rjpc4,14465
64
+ jarvis/jarvis_platform/openai.py,sha256=MFDAVdJf9qK86B--cywseXcBBLcxi6DQW7B_KMpozeI,6960
56
65
  jarvis/jarvis_platform/registry.py,sha256=1bMy0YZUa8NLzuZlKfC4CBtpa0iniypTxUZk0Hv6g9Y,8415
57
- jarvis/jarvis_platform/tongyi.py,sha256=22NPrJDrd4Zag2oWlytZ9--vA3hLJhJ2YJ-kM5RwLQ8,22212
58
- jarvis/jarvis_platform/yuanbao.py,sha256=FbkpMs_hUL8bGJHbWivQEynnU892-5qPsMe0xASGXkI,22673
66
+ jarvis/jarvis_platform/tongyi.py,sha256=uZP5ceCbHPApimKBqKthP5QynG52C3tMBglIyoBHwaY,22186
67
+ jarvis/jarvis_platform/yuanbao.py,sha256=mS4aywK9CzgFU6FHh6GUxyY1Ly-NoBtGkBi74Jo_0XM,22921
59
68
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- jarvis/jarvis_platform_manager/main.py,sha256=V320cEk2CP-NhmdNr0dED77VOUTJ6ODYL0YXC7wLZzw,17513
61
- jarvis/jarvis_platform_manager/service.py,sha256=hQGWQ2qAlzm_C_lNQDuLORQ4rmjR1P1-V3ou7l2Bv0s,13622
69
+ jarvis/jarvis_platform_manager/main.py,sha256=VhP0qiLqGPk_nQ_j0xg6H5CSct5ckNBaFqohb82whYs,17490
70
+ jarvis/jarvis_platform_manager/service.py,sha256=myJYGSUclCEiRTf3JKs4JndwhXJeQj7MQQy4i13jMt0,13767
62
71
  jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
63
72
  jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
64
73
  jarvis/jarvis_rag/cli.py,sha256=bIQKibp8swJDyfFBXaiX5C20LHN_2W2knO2I-MQp58c,15620
@@ -86,30 +95,31 @@ jarvis/jarvis_tools/generate_new_tool.py,sha256=uaWKlDMGjetvvwKTj0_AVTdmd14IktRb
86
95
  jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
87
96
  jarvis/jarvis_tools/read_code.py,sha256=EnI-R-5HyIQYhMD391nZWXHIuHHBF-OJIRE0QpLcPX4,6417
88
97
  jarvis/jarvis_tools/read_webpage.py,sha256=NmDUboVZd4CGHBPRFK6dp3uqVhuGopW1bOi3TcaLDF4,2092
89
- jarvis/jarvis_tools/registry.py,sha256=RBQ6Z3UVv4R8dlM8EcGWtWV53C34fOSwXMBJasWv0tk,29781
90
- jarvis/jarvis_tools/retrieve_memory.py,sha256=zItXPSMGzaPyH-4p_CP3z24fBYFnCK3OQJctgVunZMI,8288
98
+ jarvis/jarvis_tools/registry.py,sha256=TtZ415LUMfWqfcgn3G5V4e3QLLU2ILNRatkP10U0Ypw,31047
99
+ jarvis/jarvis_tools/retrieve_memory.py,sha256=0UBZm4wQTXLTj5WHXR9fjsiIDQh-Z2UINVu8cJ12YYg,9488
91
100
  jarvis/jarvis_tools/rewrite_file.py,sha256=eG_WKg6cVAXmuGwUqlWkcuyay5S8DOzEi8vZCmX3O8w,7255
92
101
  jarvis/jarvis_tools/save_memory.py,sha256=DjeFb38OtK9Y_RpWYHz8vL72JdauXZTlc_Y0FUQBtiM,7486
93
- jarvis/jarvis_tools/search_web.py,sha256=zh6EYLQPIQneoz27Hheh-fifMeMNhrTVldXKMSsMz2Y,5801
102
+ jarvis/jarvis_tools/search_web.py,sha256=kDwC6fy4TFFyok5zFYZ4VCZXyLsbU9jAoxxy26--GIk,5809
94
103
  jarvis/jarvis_tools/virtual_tty.py,sha256=LTsg1PlsPvgaLShUaxpAKwTpyjXRr0l0qSREI7Q-fBc,26349
95
104
  jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
105
  jarvis/jarvis_tools/cli/main.py,sha256=GsfZJ4OS4Hvxh0H2XiLkgbzm-ajBsb4c0LyjuIAAatE,7718
97
106
  jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
98
107
  jarvis/jarvis_utils/builtin_replace_map.py,sha256=4BurljGuiG_I93EBs7mlFlPm9wYC_4CmdTG5tQWpF6g,1712
99
- jarvis/jarvis_utils/config.py,sha256=7LsdGsI2v6XAwPXBfeG_fk3bRJ1fEUTqhybVyw4SVhw,13432
108
+ jarvis/jarvis_utils/clipboard.py,sha256=WgbQIQR2sh7_5ZzeX04eT3zXx_mxQbKyJOZXgGX_TcI,2907
109
+ jarvis/jarvis_utils/config.py,sha256=RSmKvpfB9-cq5PVZPNSirc0qiNtNKw8AUpuz5RKK2vs,15378
100
110
  jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
101
111
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
102
- jarvis/jarvis_utils/git_utils.py,sha256=dkC0HcUdm_rF5vXNoLByne3mGykZEviD3Lo_SYbwROU,21667
103
- jarvis/jarvis_utils/globals.py,sha256=lpS1lmWRnLgqOeoyhZlktdZK9SK8YMekc6XWamho0Jw,8561
112
+ jarvis/jarvis_utils/git_utils.py,sha256=FxvmKkGlHWP0bTxzL1KR9fwr_ZYuBhtWX3Tt3JuMYKI,21865
113
+ jarvis/jarvis_utils/globals.py,sha256=amABkrk0qGC8nJiE6AF9BzRVv7gNY-TnMVsvsIoe1_4,8638
104
114
  jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
105
- jarvis/jarvis_utils/input.py,sha256=KMAbSubWHo2z-gACf5PyQSGozJKXQby-fwcfzobJld0,9598
106
- jarvis/jarvis_utils/methodology.py,sha256=I8BTBijpApzUtRG20_Wu1Vuv0I0OoYOzshec6CMOPX8,10231
115
+ jarvis/jarvis_utils/input.py,sha256=pl8SanShzaEJZybvNHTjnFdKC2VxDPS1IwONtbwe-7U,12765
116
+ jarvis/jarvis_utils/methodology.py,sha256=i8-chZtggN3GbhaDzeLV4eBl0DP3I5zctZ-I5Hj5X-4,11972
107
117
  jarvis/jarvis_utils/output.py,sha256=QRLlKObQKT0KuRSeZRqYb7NlTQvsd1oZXZ41WxeWEuU,10894
108
118
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
109
- jarvis/jarvis_utils/utils.py,sha256=oGCGQ6BaeHAywLwHagPQTm-Q6y_gabATof-3NlDZfik,37970
110
- jarvis_ai_assistant-0.2.8.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
111
- jarvis_ai_assistant-0.2.8.dist-info/METADATA,sha256=jTrkkv5Aq35ijhskPLJOaB7pcbOMWEXeXvTyfGxYPbE,16807
112
- jarvis_ai_assistant-0.2.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
- jarvis_ai_assistant-0.2.8.dist-info/entry_points.txt,sha256=8cwi1VxZGU5UeSZMFiH-jG6NK95Asjukj5SBLBrGiGo,1257
114
- jarvis_ai_assistant-0.2.8.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
115
- jarvis_ai_assistant-0.2.8.dist-info/RECORD,,
119
+ jarvis/jarvis_utils/utils.py,sha256=RwhyPfBGx_x9OKawWUVw6bAbZeI4IlvxBhhYQ_RHpWQ,40847
120
+ jarvis_ai_assistant-0.3.1.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
121
+ jarvis_ai_assistant-0.3.1.dist-info/METADATA,sha256=4A6JaiqkYbe-sqjWL5vB8MPelkKGP03DulZn-Y-zE3Y,16807
122
+ jarvis_ai_assistant-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
123
+ jarvis_ai_assistant-0.3.1.dist-info/entry_points.txt,sha256=8cwi1VxZGU5UeSZMFiH-jG6NK95Asjukj5SBLBrGiGo,1257
124
+ jarvis_ai_assistant-0.3.1.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
125
+ jarvis_ai_assistant-0.3.1.dist-info/RECORD,,