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.
- jarvis/__init__.py +1 -1
- jarvis/jarvis_agent/__init__.py +277 -242
- jarvis/jarvis_agent/agent_manager.py +85 -0
- jarvis/jarvis_agent/config_editor.py +53 -0
- jarvis/jarvis_agent/file_methodology_manager.py +105 -0
- jarvis/jarvis_agent/jarvis.py +30 -619
- jarvis/jarvis_agent/memory_manager.py +127 -0
- jarvis/jarvis_agent/methodology_share_manager.py +174 -0
- jarvis/jarvis_agent/prompts.py +18 -3
- jarvis/jarvis_agent/share_manager.py +176 -0
- jarvis/jarvis_agent/task_analyzer.py +126 -0
- jarvis/jarvis_agent/task_manager.py +111 -0
- jarvis/jarvis_agent/tool_share_manager.py +139 -0
- jarvis/jarvis_code_agent/code_agent.py +26 -20
- jarvis/jarvis_data/config_schema.json +37 -4
- jarvis/jarvis_platform/ai8.py +13 -1
- jarvis/jarvis_platform/base.py +20 -5
- jarvis/jarvis_platform/human.py +11 -1
- jarvis/jarvis_platform/kimi.py +10 -0
- jarvis/jarvis_platform/openai.py +20 -0
- jarvis/jarvis_platform/tongyi.py +14 -9
- jarvis/jarvis_platform/yuanbao.py +10 -0
- jarvis/jarvis_platform_manager/main.py +12 -12
- jarvis/jarvis_platform_manager/service.py +9 -4
- jarvis/jarvis_tools/registry.py +32 -0
- jarvis/jarvis_tools/retrieve_memory.py +36 -8
- jarvis/jarvis_tools/search_web.py +1 -1
- jarvis/jarvis_utils/clipboard.py +90 -0
- jarvis/jarvis_utils/config.py +64 -0
- jarvis/jarvis_utils/git_utils.py +17 -7
- jarvis/jarvis_utils/globals.py +18 -12
- jarvis/jarvis_utils/input.py +118 -16
- jarvis/jarvis_utils/methodology.py +48 -5
- jarvis/jarvis_utils/utils.py +169 -105
- {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/RECORD +40 -30
- {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/licenses/LICENSE +0 -0
- {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
|
-
|
283
|
+
# 首先构建基础提示词部分
|
284
|
+
base_prompt = f"""以下是与用户需求相关的方法论内容:
|
278
285
|
|
279
286
|
"""
|
280
|
-
|
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
|
|
jarvis/jarvis_utils/utils.py
CHANGED
@@ -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
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
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,18 +1,27 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
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/
|
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=
|
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=
|
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=
|
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=
|
52
|
-
jarvis/jarvis_platform/base.py,sha256=
|
53
|
-
jarvis/jarvis_platform/human.py,sha256=
|
54
|
-
jarvis/jarvis_platform/kimi.py,sha256=
|
55
|
-
jarvis/jarvis_platform/openai.py,sha256=
|
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=
|
58
|
-
jarvis/jarvis_platform/yuanbao.py,sha256=
|
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=
|
61
|
-
jarvis/jarvis_platform_manager/service.py,sha256=
|
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=
|
90
|
-
jarvis/jarvis_tools/retrieve_memory.py,sha256=
|
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=
|
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/
|
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=
|
103
|
-
jarvis/jarvis_utils/globals.py,sha256=
|
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=
|
106
|
-
jarvis/jarvis_utils/methodology.py,sha256=
|
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=
|
110
|
-
jarvis_ai_assistant-0.
|
111
|
-
jarvis_ai_assistant-0.
|
112
|
-
jarvis_ai_assistant-0.
|
113
|
-
jarvis_ai_assistant-0.
|
114
|
-
jarvis_ai_assistant-0.
|
115
|
-
jarvis_ai_assistant-0.
|
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,,
|
File without changes
|
{jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.2.8.dist-info → jarvis_ai_assistant-0.3.1.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|