jarvis-ai-assistant 0.3.2__py3-none-any.whl → 0.3.4__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 (27) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +170 -9
  3. jarvis/jarvis_agent/file_methodology_manager.py +6 -1
  4. jarvis/jarvis_agent/share_manager.py +21 -0
  5. jarvis/jarvis_agent/tool_executor.py +8 -4
  6. jarvis/jarvis_code_agent/code_agent.py +7 -12
  7. jarvis/jarvis_code_analysis/code_review.py +117 -12
  8. jarvis/jarvis_git_utils/git_commiter.py +63 -9
  9. jarvis/jarvis_memory_organizer/__init__.py +0 -0
  10. jarvis/jarvis_memory_organizer/memory_organizer.py +729 -0
  11. jarvis/jarvis_platform/base.py +9 -0
  12. jarvis/jarvis_platform/kimi.py +20 -0
  13. jarvis/jarvis_platform/openai.py +27 -0
  14. jarvis/jarvis_platform/tongyi.py +19 -0
  15. jarvis/jarvis_platform/yuanbao.py +18 -0
  16. jarvis/jarvis_platform_manager/main.py +22 -16
  17. jarvis/jarvis_tools/base.py +8 -1
  18. jarvis/jarvis_utils/git_utils.py +20 -3
  19. jarvis/jarvis_utils/globals.py +16 -10
  20. jarvis/jarvis_utils/methodology.py +19 -2
  21. jarvis/jarvis_utils/utils.py +159 -78
  22. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/METADATA +40 -1
  23. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/RECORD +27 -25
  24. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/entry_points.txt +2 -0
  25. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/WHEEL +0 -0
  26. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/licenses/LICENSE +0 -0
  27. {jarvis_ai_assistant-0.3.2.dist-info → jarvis_ai_assistant-0.3.4.dist-info}/top_level.txt +0 -0
@@ -26,6 +26,7 @@ from jarvis.jarvis_utils.config import (
26
26
  )
27
27
  from jarvis.jarvis_utils.embedding import get_context_token_count
28
28
  from jarvis.jarvis_utils.globals import get_in_chat, get_interrupt, set_interrupt
29
+ from jarvis.jarvis_utils.input import user_confirm
29
30
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
30
31
 
31
32
  g_config_file = None
@@ -57,6 +58,8 @@ COMMAND_MAPPING = {
57
58
  "jrg": "jarvis-rag",
58
59
  # 统计
59
60
  "jst": "jarvis-stats",
61
+ # 记忆整理
62
+ "jmo": "jarvis-memory-organizer",
60
63
  }
61
64
 
62
65
 
@@ -76,30 +79,6 @@ def _setup_signal_handler() -> None:
76
79
  signal.signal(signal.SIGINT, sigint_handler)
77
80
 
78
81
 
79
- def _show_welcome_message(welcome_str: str) -> None:
80
- """显示欢迎信息
81
-
82
- 参数:
83
- welcome_str: 欢迎信息字符串
84
- """
85
- if not welcome_str:
86
- return
87
-
88
- jarvis_ascii_art = f"""
89
- ██╗ █████╗ ██████╗ ██╗ ██╗██╗███████╗
90
- ██║██╔══██╗██╔══██╗██║ ██║██║██╔════╝
91
- ██║███████║██████╔╝██║ ██║██║███████╗
92
- ██╗██║██╔══██║██╔══██╗╚██╗ ██╔╝██║╚════██║
93
- ╚████║██║ ██║██║ ██║ ╚████╔╝ ██║███████║
94
- ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚══════╝
95
- {welcome_str}
96
-
97
- https://github.com/skyfireitdiy/Jarvis
98
- v{__version__}
99
- """
100
- PrettyOutput.print_gradient_text(jarvis_ascii_art, (0, 120, 255), (0, 255, 200))
101
-
102
-
103
82
  def _check_git_updates() -> bool:
104
83
  """检查并更新git仓库
105
84
 
@@ -112,7 +91,7 @@ def _check_git_updates() -> bool:
112
91
  return check_and_update_git_repo(str(script_dir))
113
92
 
114
93
 
115
- def _show_usage_stats() -> None:
94
+ def _show_usage_stats(welcome_str: str) -> None:
116
95
  """显示Jarvis使用统计信息"""
117
96
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
118
97
 
@@ -124,6 +103,8 @@ def _show_usage_stats() -> None:
124
103
  from rich.table import Table
125
104
  from rich.text import Text
126
105
 
106
+ console = Console()
107
+
127
108
  from jarvis.jarvis_stats.stats import StatsManager
128
109
 
129
110
  # 获取所有可用的指标
@@ -189,20 +170,12 @@ def _show_usage_stats() -> None:
189
170
 
190
171
  # 计算采纳率并添加到统计中
191
172
  commit_stats = categorized_stats["commit"]["metrics"]
192
- # 尝试多种可能的指标名称
193
- generated_commits = commit_stats.get(
194
- "commits_generated", commit_stats.get("commit_generated", 0)
195
- )
196
- accepted_commits = commit_stats.get(
197
- "commits_accepted",
198
- commit_stats.get("commit_accepted", commit_stats.get("commit_adopted", 0)),
199
- )
200
- rejected_commits = commit_stats.get(
201
- "commits_rejected", commit_stats.get("commit_rejected", 0)
202
- )
173
+ # 使用精确的指标名称
174
+ generated_commits = commit_stats.get("commits_generated", 0)
175
+ accepted_commits = commit_stats.get("commits_accepted", 0)
203
176
 
204
- # 如果有 generated 和 accepted,则使用这两个计算采纳率
205
- if generated_commits > 0 and accepted_commits > 0:
177
+ # 如果有 generated,则计算采纳率
178
+ if generated_commits > 0:
206
179
  adoption_rate = (accepted_commits / generated_commits) * 100
207
180
  categorized_stats["adoption"]["metrics"][
208
181
  "adoption_rate"
@@ -210,17 +183,6 @@ def _show_usage_stats() -> None:
210
183
  categorized_stats["adoption"]["metrics"][
211
184
  "commits_status"
212
185
  ] = f"{accepted_commits}/{generated_commits}"
213
- elif accepted_commits > 0 or rejected_commits > 0:
214
- # 否则使用 accepted 和 rejected 计算
215
- total_commits = accepted_commits + rejected_commits
216
- if total_commits > 0:
217
- adoption_rate = (accepted_commits / total_commits) * 100
218
- categorized_stats["adoption"]["metrics"][
219
- "adoption_rate"
220
- ] = f"{adoption_rate:.1f}%"
221
- categorized_stats["adoption"]["metrics"][
222
- "commits_status"
223
- ] = f"{accepted_commits}/{total_commits}"
224
186
 
225
187
  # 构建输出
226
188
  has_data = False
@@ -239,7 +201,6 @@ def _show_usage_stats() -> None:
239
201
  table = Table(
240
202
  show_header=True,
241
203
  header_style="bold magenta",
242
- title="📊 Jarvis 使用统计",
243
204
  title_justify="center",
244
205
  box=box.ROUNDED,
245
206
  padding=(0, 1),
@@ -429,28 +390,117 @@ def _show_usage_stats() -> None:
429
390
  summary_content.append(encouragement)
430
391
 
431
392
  # 3. 组合并打印
432
- render_items: List[RenderableType] = []
433
- if has_content:
434
- # 居中显示表格
435
- centered_table = Align.center(table)
436
- render_items.append(centered_table)
393
+ from rich import box
394
+
395
+ # 右侧内容:总体表现 + 使命与愿景
396
+ right_column_items = []
397
+
398
+ # 欢迎信息 Panel
399
+ if welcome_str:
400
+ jarvis_ascii_art_str = """
401
+ ██╗ █████╗ ██████╗ ██╗ ██╗██╗███████╗
402
+ ██║██╔══██╗██╔══██╗██║ ██║██║██╔════╝
403
+ ██║███████║██████╔╝██║ ██║██║███████╗
404
+ ██╗██║██╔══██║██╔══██╗╚██╗ ██╔╝██║╚════██║
405
+ ╚████║██║ ██║██║ ██║ ╚████╔╝ ██║███████║
406
+ ╚═══╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═══╝ ╚═╝╚══════╝"""
407
+
408
+ welcome_panel_content = Group(
409
+ Align.center(Text(jarvis_ascii_art_str, style="bold blue")),
410
+ Align.center(Text(welcome_str, style="bold")),
411
+ "", # for a blank line
412
+ Align.center(Text(f"v{__version__}")),
413
+ Align.center(Text("https://github.com/skyfireitdiy/Jarvis")),
414
+ )
437
415
 
416
+ welcome_panel = Panel(
417
+ welcome_panel_content, border_style="yellow", expand=True
418
+ )
419
+ right_column_items.append(welcome_panel)
438
420
  if summary_content:
439
421
  summary_panel = Panel(
440
422
  Text("\n".join(summary_content), justify="left"),
441
423
  title="✨ 总体表现 ✨",
442
424
  title_align="center",
443
425
  border_style="green",
444
- expand=False,
426
+ expand=True,
445
427
  )
446
- # 居中显示面板
447
- centered_panel = Align.center(summary_panel)
448
- render_items.append(centered_panel)
449
-
450
- if render_items:
451
- console = Console()
452
- render_group = Group(*render_items)
453
- console.print(render_group)
428
+ right_column_items.append(summary_panel)
429
+
430
+ # 愿景 Panel
431
+ vision_text = Text(
432
+ "重新定义开发者体验,打破人与工具的界限,构建开发者与AI之间真正的共生伙伴关系。",
433
+ justify="center",
434
+ style="italic",
435
+ )
436
+ vision_panel = Panel(
437
+ vision_text,
438
+ title="🔭 愿景 (Vision) 🔭",
439
+ title_align="center",
440
+ border_style="cyan",
441
+ expand=True,
442
+ )
443
+ right_column_items.append(vision_panel)
444
+
445
+ # 使命 Panel
446
+ mission_text = Text(
447
+ "通过深度人机协作,将开发者的灵感(Vibe)高效落地为代码与行动,释放创造之力。",
448
+ justify="center",
449
+ style="italic",
450
+ )
451
+ mission_panel = Panel(
452
+ mission_text,
453
+ title="🎯 使命 (Mission) 🎯",
454
+ title_align="center",
455
+ border_style="magenta",
456
+ expand=True,
457
+ )
458
+ right_column_items.append(mission_panel)
459
+
460
+ right_column_group = Group(*right_column_items)
461
+
462
+ layout_renderable: RenderableType
463
+
464
+ if console.width < 200:
465
+ # 上下布局
466
+ layout_items: List[RenderableType] = []
467
+ layout_items.append(right_column_group)
468
+ if has_content:
469
+ layout_items.append(table)
470
+ layout_renderable = Group(*layout_items)
471
+ else:
472
+ # 左右布局(当前)
473
+ layout_table = Table(
474
+ show_header=False,
475
+ box=None,
476
+ padding=0,
477
+ expand=True,
478
+ pad_edge=False,
479
+ )
480
+ # 左右布局,左侧为总结信息,右侧为统计表格
481
+ layout_table.add_column(ratio=5) # 左侧
482
+ layout_table.add_column(ratio=5) # 右侧
483
+
484
+ if has_content:
485
+ # 将总结信息放在左侧,统计表格放在右侧
486
+ layout_table.add_row(right_column_group, table)
487
+ else:
488
+ # 如果没有统计数据,则总结信息占满
489
+ layout_table.add_row(right_column_group)
490
+ layout_renderable = layout_table
491
+
492
+ # 打印最终的布局
493
+ if has_content or summary_content:
494
+ # 将整体布局封装在一个最终的Panel中,以提供整体边框
495
+ final_panel = Panel(
496
+ layout_renderable,
497
+ title="Jarvis AI Assistant",
498
+ title_align="center",
499
+ border_style="blue",
500
+ box=box.HEAVY,
501
+ padding=(0, 1),
502
+ )
503
+ console.print(final_panel)
454
504
  except Exception as e:
455
505
  # 输出错误信息以便调试
456
506
  import traceback
@@ -472,20 +522,16 @@ def init_env(welcome_str: str, config_file: Optional[str] = None) -> None:
472
522
  # 2. 统计命令使用
473
523
  count_cmd_usage()
474
524
 
475
- # 3. 显示欢迎信息
476
- if welcome_str:
477
- _show_welcome_message(welcome_str)
478
-
479
- # 4. 设置配置文件
525
+ # 3. 设置配置文件
480
526
  global g_config_file
481
527
  g_config_file = config_file
482
528
  load_config()
483
529
 
484
- # 5. 显示历史统计数据(仅在显示欢迎信息时显示)
530
+ # 4. 显示历史统计数据(仅在显示欢迎信息时显示)
485
531
  if welcome_str:
486
- _show_usage_stats()
532
+ _show_usage_stats(welcome_str)
487
533
 
488
- # 6. 检查git更新
534
+ # 5. 检查git更新
489
535
  if _check_git_updates():
490
536
  os.execv(sys.executable, [sys.executable] + sys.argv)
491
537
  sys.exit(0)
@@ -518,11 +564,22 @@ def _interactive_config_setup(config_file_path: Path):
518
564
  env_vars = {}
519
565
  required_keys = platform_class.get_required_env_keys()
520
566
  defaults = platform_class.get_env_defaults()
567
+ config_guide = platform_class.get_env_config_guide()
521
568
  if required_keys:
522
569
  PrettyOutput.print(
523
570
  f"请输入 {platform_name} 平台所需的配置信息:", OutputType.INFO
524
571
  )
572
+
573
+ # 如果有配置指导,先显示总体说明
574
+ if config_guide:
575
+ PrettyOutput.print(f"\n配置获取方法:", OutputType.INFO)
576
+
525
577
  for key in required_keys:
578
+ # 显示该环境变量的配置指导
579
+ if key in config_guide and config_guide[key]:
580
+ PrettyOutput.print(f"\n{key} 获取方法:", OutputType.INFO)
581
+ PrettyOutput.print(config_guide[key], OutputType.INFO)
582
+
526
583
  default_value = defaults.get(key, "")
527
584
  prompt_text = f" - {key}"
528
585
  if default_value:
@@ -659,7 +716,6 @@ def load_config():
659
716
 
660
717
  from typing import Tuple
661
718
 
662
-
663
719
  from typing import Tuple
664
720
 
665
721
 
@@ -998,11 +1054,36 @@ def _pull_git_repo(repo_path: Path, repo_type: str):
998
1054
  timeout=10,
999
1055
  )
1000
1056
  if status_result.stdout:
1001
- PrettyOutput.print(
1002
- f"检测到 '{repo_path.name}' 存在未提交的更改,跳过自动更新。",
1003
- OutputType.WARNING,
1004
- )
1005
- return
1057
+ if user_confirm(
1058
+ f"检测到 '{repo_path.name}' 存在未提交的更改,是否放弃这些更改并更新?"
1059
+ ):
1060
+ try:
1061
+ subprocess.run(
1062
+ ["git", "checkout", "."],
1063
+ cwd=repo_path,
1064
+ capture_output=True,
1065
+ text=True,
1066
+ encoding="utf-8",
1067
+ errors="replace",
1068
+ check=True,
1069
+ timeout=10,
1070
+ )
1071
+ except (
1072
+ subprocess.CalledProcessError,
1073
+ subprocess.TimeoutExpired,
1074
+ FileNotFoundError,
1075
+ ) as e:
1076
+ PrettyOutput.print(
1077
+ f"放弃 '{repo_path.name}' 的更改失败: {str(e)}",
1078
+ OutputType.ERROR,
1079
+ )
1080
+ return
1081
+ else:
1082
+ PrettyOutput.print(
1083
+ f"跳过更新 '{repo_path.name}' 以保留未提交的更改。",
1084
+ OutputType.INFO,
1085
+ )
1086
+ return
1006
1087
 
1007
1088
  # 获取更新前的commit hash
1008
1089
  before_hash_result = subprocess.run(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.2
3
+ Version: 0.3.4
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
@@ -202,27 +202,66 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercon
202
202
 
203
203
  #### 手动安装
204
204
  ```bash
205
+ # 1. 克隆仓库
205
206
  git clone https://github.com/skyfireitdiy/Jarvis
207
+
208
+ # 2. 进入项目目录
206
209
  cd Jarvis
210
+
211
+ # 3. 安装项目为可编辑模式
207
212
  pip3 install -e .
208
213
  ```
214
+ > **提示**: 使用 `-e .` (可编辑模式) 安装后,您对源码的任何修改都会立刻生效,非常适合开发者。
215
+
209
216
  或者从PyPI安装 (可能不是最新版):
210
217
  ```bash
211
218
  pip3 install jarvis-ai-assistant
212
219
  ```
213
220
 
221
+ **通过 uv 安装 (推荐)**
222
+ ```bash
223
+ # 1. 安装 uv (如果未安装)
224
+ curl -LsSf https://astral.sh/uv/install.sh | sh
225
+
226
+ # 2. 克隆仓库
227
+ git clone https://github.com/skyfireitdiy/Jarvis
228
+
229
+ # 3. 进入项目目录
230
+ cd Jarvis
231
+
232
+ # 4. 创建虚拟环境并安装
233
+ uv venv
234
+
235
+ # 安装基础功能
236
+ uv pip install .
237
+
238
+ # 可选: 安装RAG功能(包含PyTorch等较重的依赖)
239
+ # uv pip install .[rag]
240
+ ```
241
+
242
+ > **提示**: 安装完成后,建议将虚拟环境激活命令添加到您的 shell 配置文件中:
243
+ > - Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
244
+ > - Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
245
+
214
246
  ### 基本使用
215
247
  Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
216
248
 
217
249
  | 命令 | 快捷方式 | 功能描述 |
218
250
  |------|----------|----------|
219
251
  | `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
252
+ | `jarvis-agent` | `ja` | AI代理基础功能,处理会话和任务 |
220
253
  | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理 |
254
+ | `jarvis-code-review` | `jcr` | 智能代码审查工具 |
221
255
  | `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
256
+ | `jarvis-git-squash` | `jgs` | Git提交历史整理工具 |
222
257
  | `jarvis-platform-manager` | `jpm` | 管理和测试不同的大语言模型平台 |
258
+ | `jarvis-multi-agent` | `jma` | 多智能体协作系统 |
259
+ | `jarvis-tool` | `jt` | 工具管理与调用系统 |
260
+ | `jarvis-methodology` | `jm` | 方法论知识库管理 |
223
261
  | `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
224
262
  | `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
225
263
  | `jarvis-stats` | `jst` | 通用统计模块,支持记录和可视化任意指标数据 |
264
+ | `jarvis-memory-organizer` | `jmo` | 记忆管理工具,支持整理、合并、导入导出记忆 |
226
265
 
227
266
  更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
228
267
 
@@ -1,10 +1,10 @@
1
- jarvis/__init__.py,sha256=lEwB7boP3teN71H_7lteEF13tfqihaQwtXiRqbFAWro,73
2
- jarvis/jarvis_agent/__init__.py,sha256=2zScM4N6GN4Vv5y_jDmJjTirea8ZGtRMiPf-UaGl0XE,25789
1
+ jarvis/__init__.py,sha256=OeCDz6Z11rF2cp6sXEe7CwvIdTZ_EPzUJwW35kFF6BY,73
2
+ jarvis/jarvis_agent/__init__.py,sha256=NF_eUF85RRplGJyLmInIsTn-09aEPtjj4utYvEALvJw,31802
3
3
  jarvis/jarvis_agent/agent_manager.py,sha256=YzpMiF0H2-eyk2kn2o24Bkj3bXsQx7Pv2vfD4gWepo0,2893
4
4
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=Qs4LAr4xdKLBJpQE81YP4CkucAop86ms0iVoKa1nnso,2468
5
5
  jarvis/jarvis_agent/config_editor.py,sha256=Ctk82sO6w2cNW0-_5L7Bomj-hgM4U7WwMc52fwhAJyg,1809
6
6
  jarvis/jarvis_agent/edit_file_handler.py,sha256=w-byNJ4TN_SlV3djjfFC7OksySOFGrM8ku49w662dzc,11854
7
- jarvis/jarvis_agent/file_methodology_manager.py,sha256=h2ogMK9mSKjg_n04ITw24m28J_U225bhLNhfwpf9jpU,4383
7
+ jarvis/jarvis_agent/file_methodology_manager.py,sha256=qCRh36LLiaF3cXwIRlHurCzQlQQCUvd9BteCdj3CxfQ,4526
8
8
  jarvis/jarvis_agent/jarvis.py,sha256=2XMuMA3A4ihE4RAo-XnYZHnJ0ZrGRFagE1s-eiGdZ9Q,3252
9
9
  jarvis/jarvis_agent/main.py,sha256=Sd4-OnBcMqY5i7vb-Riy_JT2fGfuANtgiAWvWFY8LXM,3345
10
10
  jarvis/jarvis_agent/memory_manager.py,sha256=F7HTNzdN1_-cSygnz7zKSJRJvPLUOosqcXQeiW8zG4U,5266
@@ -14,16 +14,16 @@ jarvis/jarvis_agent/prompt_builder.py,sha256=PH1fPDVa8z_RXkoXHJFNDf8PQjUoLNLYwkh
14
14
  jarvis/jarvis_agent/prompts.py,sha256=X6cXa-n0xqBQ8LDTgLsD0kqziAh1s0cNp89i4mxcvHg,9444
15
15
  jarvis/jarvis_agent/protocols.py,sha256=JWnJDikFEuwvFUv7uzXu0ggJ4O9K2FkMnfVCwIJ5REw,873
16
16
  jarvis/jarvis_agent/session_manager.py,sha256=DnvI9rWkVmkyO1XfKZyo9lTn4ajg4ccwzEkoRHFPOJM,2925
17
- jarvis/jarvis_agent/share_manager.py,sha256=7w25cX2zupnBDdn_HDusMyOAXbHQMWKYVZYq9i4EJs0,7619
17
+ jarvis/jarvis_agent/share_manager.py,sha256=h3H6PXSTVUBLablFys_h16mdI7a48RVALQhADL17rSs,8696
18
18
  jarvis/jarvis_agent/shell_input_handler.py,sha256=1IboqdxcJuoIqRpmDU10GugR9fWXUHyCEbVF4nIWbyo,1328
19
19
  jarvis/jarvis_agent/task_analyzer.py,sha256=-fQ9YBYFcc-Z1FSoDIPzRfAgkREFoIOXtU2TdBkB-e0,4656
20
20
  jarvis/jarvis_agent/task_manager.py,sha256=HJm4_SMpsFbQMUUsAZeHm7cZuhNbz28YW-DRLYgoarc,4422
21
- jarvis/jarvis_agent/tool_executor.py,sha256=nIq-sPNgrtimtM-IHpN09cWmId8jDzWRdCFoRzXnnoo,1721
21
+ jarvis/jarvis_agent/tool_executor.py,sha256=k73cKhZEZpljvui4ZxALlFEIE-iLzJ32Softsmiwzqk,1896
22
22
  jarvis/jarvis_agent/tool_share_manager.py,sha256=R5ONIQlDXX9pFq3clwHFhEW8BAJ3ECaR2DqWCEC9tzM,5205
23
23
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- jarvis/jarvis_code_agent/code_agent.py,sha256=mFcvj3F2ZJS550Cbv8TrVyY1evQVow8SI6B-LCdRfxI,29317
24
+ jarvis/jarvis_code_agent/code_agent.py,sha256=49B2079pBLlxMmUaAzToAa-SdwAwDqWCeBhCnaA3Quk,29106
25
25
  jarvis/jarvis_code_agent/lint.py,sha256=LZPsfyZPMo7Wm7LN4osZocuNJwZx1ojacO3MlF870x8,4009
26
- jarvis/jarvis_code_analysis/code_review.py,sha256=TMov1pqDe1bg0vM1ndnYeW9ejHrRN_jMroo3T4L9yag,32368
26
+ jarvis/jarvis_code_analysis/code_review.py,sha256=GHNzJKLRxNIINGxM2dnDg7JV9bxG88bY2ZDh4qgqTV0,36023
27
27
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
28
28
  jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=9t62bMqs6qTkFSio4SKkj88qyb5ZubWrw3MxJBQ4X1A,1317
29
29
  jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=ShPXrl2_UPAnGaCHAG2wLl90COG3HK2XCSr1UK2dxN4,2420
@@ -48,25 +48,27 @@ jarvis/jarvis_data/config_schema.json,sha256=xri_qfCrs2AJ-fPwvnV4oU7VJpIrUxddffQ
48
48
  jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
49
49
  jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  jarvis/jarvis_git_squash/main.py,sha256=6PECdAbTbrsJBRLK1pXBh4hdJ_LADh-XXSic1xJi97E,2255
51
- jarvis/jarvis_git_utils/git_commiter.py,sha256=M6SnhF_GJktO0mIT8_Y4J4Zin7-w3V_MJADndfQ9_QU,13550
51
+ jarvis/jarvis_git_utils/git_commiter.py,sha256=6mdYbC6bMMQt4q5Is65ylL2S-Mho7ZdAB_NgoNq-CKA,15894
52
52
  jarvis/jarvis_mcp/__init__.py,sha256=OPMtjD-uq9xAaKCRIDyKIosaFfBe1GBPu1az-mQ0rVM,2048
53
53
  jarvis/jarvis_mcp/sse_mcp_client.py,sha256=neKrgFxwLDPWjVrl9uDt1ricNwbLZbv1ZEFh0IkmqZk,22656
54
54
  jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=APYUksYKlMx7AVNODKOLrTkKZPnp4kqTQIYIuNDDKko,11286
55
55
  jarvis/jarvis_mcp/streamable_mcp_client.py,sha256=sP0KEsxVcXGht0eA7a_m-ECtZAk39s4PL9OUdm35x2Y,14467
56
+ jarvis/jarvis_memory_organizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=TP-h3CCoQh9E3kdCDbrKORKneRZYnoaWm-JOZqDY1B0,25178
56
58
  jarvis/jarvis_methodology/main.py,sha256=6QF8hH3vB6rfxim0fPR34uVPf41zVpb4ZLqrFN2qONg,10983
57
59
  jarvis/jarvis_multi_agent/__init__.py,sha256=kCgtAX7VvliyEOQxIj2DvNjRAuh6bpNaOtDn60nzph4,6089
58
60
  jarvis/jarvis_multi_agent/main.py,sha256=Wbarez48QxXexlKEOcRsoMbcQEOP5rv_DzGkNk0SfpY,1779
59
61
  jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
60
62
  jarvis/jarvis_platform/ai8.py,sha256=W3947AGMpk3RRBfsfZmf222sEP0VIGoSU0vPkgiVnl0,11683
61
- jarvis/jarvis_platform/base.py,sha256=nCX3W9LYIINUYn0tIS5ZmZo4UgyQVnQLZWfbHWQkAjo,9905
63
+ jarvis/jarvis_platform/base.py,sha256=XfazAKRE9HnLCqoYaRG38HlEkCWHRWGcAftHsaMN-Tc,10179
62
64
  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
65
+ jarvis/jarvis_platform/kimi.py,sha256=imbH575fazyDai5pxB6zbHmzwzS4Ig0RP7WVpni-ooI,15175
66
+ jarvis/jarvis_platform/openai.py,sha256=0YSeDGHRSPQP2haEzFARx_aZH_d_UZ-HSCsJLh2hW5k,8037
65
67
  jarvis/jarvis_platform/registry.py,sha256=1bMy0YZUa8NLzuZlKfC4CBtpa0iniypTxUZk0Hv6g9Y,8415
66
- jarvis/jarvis_platform/tongyi.py,sha256=uZP5ceCbHPApimKBqKthP5QynG52C3tMBglIyoBHwaY,22186
67
- jarvis/jarvis_platform/yuanbao.py,sha256=mS4aywK9CzgFU6FHh6GUxyY1Ly-NoBtGkBi74Jo_0XM,22921
68
+ jarvis/jarvis_platform/tongyi.py,sha256=KXEMfylTU91kHisXSaiz8dxzNXK_d7XD9vjuw4yXuVs,22891
69
+ jarvis/jarvis_platform/yuanbao.py,sha256=32hjk1Ju1tqrMpF47JsSuaxej5K-gUPxjsDu9g0briY,23575
68
70
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- jarvis/jarvis_platform_manager/main.py,sha256=fRZbtCH6zrG7NXTMlplf0Oq4gRYkhebvPm3RrQtN_WU,20988
71
+ jarvis/jarvis_platform_manager/main.py,sha256=kN5X6Y6p9g0ZHvMY-uBYd0QxCaJ9uhyPRzo1SUk2kxM,20966
70
72
  jarvis/jarvis_platform_manager/service.py,sha256=myJYGSUclCEiRTf3JKs4JndwhXJeQj7MQQy4i13jMt0,13767
71
73
  jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
72
74
  jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
@@ -86,7 +88,7 @@ jarvis/jarvis_stats/storage.py,sha256=MBQRxExIWdePXzY1EE8JAs1IEpMqamImpgjruqt_u9
86
88
  jarvis/jarvis_stats/visualizer.py,sha256=ZIBmGELzs6c7qM01tQql1HF6eFKn6HDGVQfKXRUUIY0,8529
87
89
  jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
90
  jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb1k,2029
89
- jarvis/jarvis_tools/base.py,sha256=tFVmK6ppsImW2BzHZmrNmMRiOJdW-4aZP6Me3VxdYcA,1194
91
+ jarvis/jarvis_tools/base.py,sha256=kgDjh64HYr_ox_1FR7j52LsJ4B4W2wSqOejdtSBb2Fc,1413
90
92
  jarvis/jarvis_tools/clear_memory.py,sha256=HQMK70UJhhDgPPHozGaTpYizzQblUzYRwPbvD1z3z6o,8730
91
93
  jarvis/jarvis_tools/edit_file.py,sha256=hM345E9rxS-EkqCZpwwizL6fmPdTadtB798tEO5Ce3g,10417
92
94
  jarvis/jarvis_tools/execute_script.py,sha256=gMarE5yCCSPU6Dp6HlcL2KT-2xCzR-1p-oQNlYOJK58,6157
@@ -109,17 +111,17 @@ jarvis/jarvis_utils/clipboard.py,sha256=WgbQIQR2sh7_5ZzeX04eT3zXx_mxQbKyJOZXgGX_
109
111
  jarvis/jarvis_utils/config.py,sha256=RSmKvpfB9-cq5PVZPNSirc0qiNtNKw8AUpuz5RKK2vs,15378
110
112
  jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
111
113
  jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
112
- jarvis/jarvis_utils/git_utils.py,sha256=FxvmKkGlHWP0bTxzL1KR9fwr_ZYuBhtWX3Tt3JuMYKI,21865
113
- jarvis/jarvis_utils/globals.py,sha256=amABkrk0qGC8nJiE6AF9BzRVv7gNY-TnMVsvsIoe1_4,8638
114
+ jarvis/jarvis_utils/git_utils.py,sha256=-WReOr8JvfUHHXC9GDvYP-xA49wmM4_TRa6b4_ZccFs,22568
115
+ jarvis/jarvis_utils/globals.py,sha256=aTrOHcCgPAeZFLFIWMAMiJCYlmr4XhdFZf5gZ745hnE,8900
114
116
  jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
115
117
  jarvis/jarvis_utils/input.py,sha256=pl8SanShzaEJZybvNHTjnFdKC2VxDPS1IwONtbwe-7U,12765
116
- jarvis/jarvis_utils/methodology.py,sha256=i8-chZtggN3GbhaDzeLV4eBl0DP3I5zctZ-I5Hj5X-4,11972
118
+ jarvis/jarvis_utils/methodology.py,sha256=IIMU17WVSunsWXsnXROd4G77LxgYs4xEC_xm_0CDkjw,12554
117
119
  jarvis/jarvis_utils/output.py,sha256=QRLlKObQKT0KuRSeZRqYb7NlTQvsd1oZXZ41WxeWEuU,10894
118
120
  jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
119
- jarvis/jarvis_utils/utils.py,sha256=RwhyPfBGx_x9OKawWUVw6bAbZeI4IlvxBhhYQ_RHpWQ,40847
120
- jarvis_ai_assistant-0.3.2.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
121
- jarvis_ai_assistant-0.3.2.dist-info/METADATA,sha256=DL481NElSBIOwMBr1GXz6tfFmzR1vE86Z0keZubnZ_E,16807
122
- jarvis_ai_assistant-0.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
123
- jarvis_ai_assistant-0.3.2.dist-info/entry_points.txt,sha256=8cwi1VxZGU5UeSZMFiH-jG6NK95Asjukj5SBLBrGiGo,1257
124
- jarvis_ai_assistant-0.3.2.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
125
- jarvis_ai_assistant-0.3.2.dist-info/RECORD,,
121
+ jarvis/jarvis_utils/utils.py,sha256=ZyLL-X0EGi8fnofAdP5Qd99lYlP5U5qGY50elR4uS08,44291
122
+ jarvis_ai_assistant-0.3.4.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
123
+ jarvis_ai_assistant-0.3.4.dist-info/METADATA,sha256=rgbEn1DYq_u7mcMyId7rgP4s3oJJwdCc0IQdppTU2_4,18184
124
+ jarvis_ai_assistant-0.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
125
+ jarvis_ai_assistant-0.3.4.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
126
+ jarvis_ai_assistant-0.3.4.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
127
+ jarvis_ai_assistant-0.3.4.dist-info/RECORD,,
@@ -6,6 +6,7 @@ jarvis-code-agent = jarvis.jarvis_code_agent.code_agent:main
6
6
  jarvis-code-review = jarvis.jarvis_code_analysis.code_review:main
7
7
  jarvis-git-commit = jarvis.jarvis_git_utils.git_commiter:main
8
8
  jarvis-git-squash = jarvis.jarvis_git_squash.main:main
9
+ jarvis-memory-organizer = jarvis.jarvis_memory_organizer.memory_organizer:main
9
10
  jarvis-methodology = jarvis.jarvis_methodology.main:main
10
11
  jarvis-multi-agent = jarvis.jarvis_multi_agent.main:main
11
12
  jarvis-platform-manager = jarvis.jarvis_platform_manager.main:main
@@ -19,6 +20,7 @@ jgc = jarvis.jarvis_git_utils.git_commiter:main
19
20
  jgs = jarvis.jarvis_git_squash.main:main
20
21
  jm = jarvis.jarvis_methodology.main:main
21
22
  jma = jarvis.jarvis_multi_agent.main:main
23
+ jmo = jarvis.jarvis_memory_organizer.memory_organizer:main
22
24
  jpm = jarvis.jarvis_platform_manager.main:main
23
25
  jrg = jarvis.jarvis_rag.cli:main
24
26
  jss = jarvis.jarvis_smart_shell.main:main