jarvis-ai-assistant 0.3.33__py3-none-any.whl → 0.4.0__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 +10 -5
- jarvis/jarvis_agent/agent_manager.py +11 -8
- jarvis/jarvis_agent/config.py +7 -0
- jarvis/jarvis_agent/jarvis.py +374 -10
- jarvis/jarvis_agent/main.py +32 -2
- jarvis/jarvis_agent/stdio_redirect.py +296 -0
- jarvis/jarvis_agent/web_bridge.py +189 -0
- jarvis/jarvis_agent/web_output_sink.py +53 -0
- jarvis/jarvis_agent/web_server.py +647 -0
- jarvis/jarvis_code_agent/code_agent.py +32 -6
- jarvis/jarvis_data/config_schema.json +5 -0
- jarvis/jarvis_multi_agent/main.py +27 -0
- jarvis/jarvis_platform/base.py +1 -0
- jarvis/jarvis_tools/execute_script.py +45 -8
- jarvis/jarvis_tools/sub_agent.py +0 -3
- jarvis/jarvis_utils/config.py +35 -2
- jarvis/jarvis_utils/input.py +6 -0
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/RECORD +24 -20
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/top_level.txt +0 -0
@@ -24,6 +24,7 @@ from jarvis.jarvis_utils.config import (
|
|
24
24
|
is_confirm_before_apply_patch,
|
25
25
|
is_enable_static_analysis,
|
26
26
|
get_git_check_mode,
|
27
|
+
set_config,
|
27
28
|
)
|
28
29
|
from jarvis.jarvis_utils.git_utils import (
|
29
30
|
confirm_add_new_files,
|
@@ -90,11 +91,6 @@ class CodeAgent:
|
|
90
91
|
auto_complete=False,
|
91
92
|
output_handler=[tool_registry, EditFileHandler()], # type: ignore
|
92
93
|
model_group=model_group,
|
93
|
-
input_handler=[
|
94
|
-
shell_input_handler,
|
95
|
-
file_context_handler,
|
96
|
-
builtin_input_handler,
|
97
|
-
],
|
98
94
|
need_summary=need_summary,
|
99
95
|
use_methodology=False, # 禁用方法论
|
100
96
|
use_analysis=False, # 禁用分析
|
@@ -775,7 +771,6 @@ class CodeAgent:
|
|
775
771
|
|
776
772
|
@app.command()
|
777
773
|
def cli(
|
778
|
-
|
779
774
|
model_group: Optional[str] = typer.Option(
|
780
775
|
None, "-g", "--llm-group", help="使用的模型组,覆盖配置文件中的设置"
|
781
776
|
),
|
@@ -806,13 +801,44 @@ def cli(
|
|
806
801
|
"--suffix",
|
807
802
|
help="提交信息后缀(用换行分隔)",
|
808
803
|
),
|
804
|
+
non_interactive: bool = typer.Option(
|
805
|
+
False, "-n", "--non-interactive", help="启用非交互模式:用户无法与命令交互,脚本执行超时限制为5分钟"
|
806
|
+
),
|
809
807
|
) -> None:
|
810
808
|
"""Jarvis主入口点。"""
|
809
|
+
# CLI 标志:非交互模式(不依赖配置文件)
|
810
|
+
if non_interactive:
|
811
|
+
try:
|
812
|
+
os.environ["JARVIS_NON_INTERACTIVE"] = "true"
|
813
|
+
except Exception:
|
814
|
+
pass
|
815
|
+
# 注意:全局配置同步放在 init_env 之后执行,避免被 init_env 覆盖
|
816
|
+
# 非交互模式要求从命令行传入任务
|
817
|
+
if non_interactive and not (requirement and str(requirement).strip()):
|
818
|
+
PrettyOutput.print(
|
819
|
+
"非交互模式已启用:必须使用 --requirement 传入任务内容,因多行输入不可用。",
|
820
|
+
OutputType.ERROR,
|
821
|
+
)
|
822
|
+
raise typer.Exit(code=2)
|
811
823
|
init_env(
|
812
824
|
"欢迎使用 Jarvis-CodeAgent,您的代码工程助手已准备就绪!",
|
813
825
|
config_file=config_file,
|
814
826
|
)
|
815
827
|
|
828
|
+
# 在初始化环境后同步 CLI 选项到全局配置,避免被 init_env 覆盖
|
829
|
+
try:
|
830
|
+
if model_group:
|
831
|
+
set_config("JARVIS_LLM_GROUP", str(model_group))
|
832
|
+
if tool_group:
|
833
|
+
set_config("JARVIS_TOOL_GROUP", str(tool_group))
|
834
|
+
if restore_session:
|
835
|
+
set_config("JARVIS_RESTORE_SESSION", True)
|
836
|
+
if non_interactive:
|
837
|
+
set_config("JARVIS_NON_INTERACTIVE", True)
|
838
|
+
except Exception:
|
839
|
+
# 静默忽略同步异常,不影响主流程
|
840
|
+
pass
|
841
|
+
|
816
842
|
try:
|
817
843
|
subprocess.run(
|
818
844
|
["git", "rev-parse", "--git-dir"],
|
@@ -188,6 +188,11 @@
|
|
188
188
|
"description": "AI工具筛选阈值:当可用工具数量超过此值时触发AI筛选",
|
189
189
|
"default": 30
|
190
190
|
},
|
191
|
+
"JARVIS_SCRIPT_EXECUTION_TIMEOUT": {
|
192
|
+
"type": "number",
|
193
|
+
"description": "脚本执行的超时时间(秒),仅在非交互模式下生效。",
|
194
|
+
"default": 300
|
195
|
+
},
|
191
196
|
"JARVIS_CONFIRM_BEFORE_APPLY_PATCH": {
|
192
197
|
"type": "boolean",
|
193
198
|
"description": "应用补丁前是否需要确认",
|
@@ -3,10 +3,12 @@ from typing import Optional
|
|
3
3
|
|
4
4
|
import typer
|
5
5
|
import yaml # type: ignore[import-untyped]
|
6
|
+
import os
|
6
7
|
|
7
8
|
from jarvis.jarvis_multi_agent import MultiAgent
|
8
9
|
from jarvis.jarvis_utils.input import get_multiline_input
|
9
10
|
from jarvis.jarvis_utils.utils import init_env
|
11
|
+
from jarvis.jarvis_utils.config import set_config
|
10
12
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
11
13
|
|
12
14
|
app = typer.Typer(help="多智能体系统启动器")
|
@@ -18,9 +20,34 @@ def cli(
|
|
18
20
|
user_input: Optional[str] = typer.Option(
|
19
21
|
None, "--input", "-i", help="用户输入(可选)"
|
20
22
|
),
|
23
|
+
non_interactive: bool = typer.Option(
|
24
|
+
False, "-n", "--non-interactive", help="启用非交互模式:用户无法与命令交互,脚本执行超时限制为5分钟"
|
25
|
+
),
|
21
26
|
):
|
22
27
|
"""从YAML配置文件初始化并运行多智能体系统"""
|
28
|
+
# CLI 标志:非交互模式(不依赖配置文件)
|
29
|
+
if non_interactive:
|
30
|
+
try:
|
31
|
+
os.environ["JARVIS_NON_INTERACTIVE"] = "true"
|
32
|
+
except Exception:
|
33
|
+
pass
|
34
|
+
# 注意:全局配置同步在 init_env 之后执行,避免被覆盖
|
35
|
+
# 非交互模式要求从命令行传入任务
|
36
|
+
if non_interactive and not (user_input and str(user_input).strip()):
|
37
|
+
PrettyOutput.print(
|
38
|
+
"非交互模式已启用:必须使用 --input 传入任务内容,因多行输入不可用。",
|
39
|
+
OutputType.ERROR,
|
40
|
+
)
|
41
|
+
raise typer.Exit(code=2)
|
23
42
|
init_env("欢迎使用 Jarvis-MultiAgent,您的多智能体系统已准备就绪!")
|
43
|
+
|
44
|
+
# 在初始化环境后同步 CLI 选项到全局配置,避免被 init_env 覆盖
|
45
|
+
try:
|
46
|
+
if non_interactive:
|
47
|
+
set_config("JARVIS_NON_INTERACTIVE", True)
|
48
|
+
except Exception:
|
49
|
+
# 静默忽略同步异常,不影响主流程
|
50
|
+
pass
|
24
51
|
|
25
52
|
try:
|
26
53
|
with open(config, "r", errors="ignore") as f:
|
jarvis/jarvis_platform/base.py
CHANGED
@@ -223,6 +223,7 @@ class BasePlatform(ABC):
|
|
223
223
|
duration = end_time - start_time
|
224
224
|
panel.subtitle = f"[bold green]✓ 对话完成耗时: {duration:.2f}秒[/bold green]"
|
225
225
|
live.update(panel)
|
226
|
+
console.print()
|
226
227
|
else:
|
227
228
|
# Print a clear prefix line before streaming model output (non-pretty mode)
|
228
229
|
console.print(
|
@@ -19,6 +19,7 @@ class ScriptTool:
|
|
19
19
|
+ "注意:由于模型上下文长度限制,请避免在脚本中输出大量信息,应该使用rg过滤输出。"
|
20
20
|
+ "与virtual_tty不同,此工具会创建一个临时的脚本文件,并使用脚本命令执行脚本,不具备交互式操作的能力,"
|
21
21
|
+ "适用于需要执行脚本并获取结果的场景。不适合需要交互式操作的场景(如:ssh连接、sftp传输、gdb/dlv调试等)。"
|
22
|
+
+ "在非交互模式(JARVIS_NON_INTERACTIVE=true)下:脚本执行时间限制为5分钟,超时将被终止并返回超时信息;用户无法与命令交互,请不要执行需要交互的命令。"
|
22
23
|
)
|
23
24
|
parameters = {
|
24
25
|
"type": "object",
|
@@ -115,8 +116,37 @@ class ScriptTool:
|
|
115
116
|
f"script -q -c '{interpreter} {script_path}' {output_file}"
|
116
117
|
)
|
117
118
|
|
118
|
-
# Execute command
|
119
|
-
|
119
|
+
# Execute command with optional timeout in non-interactive mode
|
120
|
+
from jarvis.jarvis_utils.config import get_script_execution_timeout, is_non_interactive
|
121
|
+
import subprocess
|
122
|
+
|
123
|
+
timed_out = False
|
124
|
+
if is_non_interactive():
|
125
|
+
try:
|
126
|
+
proc = subprocess.Popen(tee_command, shell=True)
|
127
|
+
try:
|
128
|
+
proc.wait(timeout=get_script_execution_timeout())
|
129
|
+
except subprocess.TimeoutExpired:
|
130
|
+
timed_out = True
|
131
|
+
try:
|
132
|
+
proc.kill()
|
133
|
+
except Exception:
|
134
|
+
pass
|
135
|
+
except Exception as e:
|
136
|
+
PrettyOutput.print(str(e), OutputType.ERROR)
|
137
|
+
# Attempt to read any partial output if available
|
138
|
+
try:
|
139
|
+
output = self.get_display_output(output_file)
|
140
|
+
except Exception as ee:
|
141
|
+
output = f"读取输出文件失败: {str(ee)}"
|
142
|
+
return {
|
143
|
+
"success": False,
|
144
|
+
"stdout": output,
|
145
|
+
"stderr": f"执行脚本失败: {str(e)}",
|
146
|
+
}
|
147
|
+
else:
|
148
|
+
# Execute command and capture return code
|
149
|
+
os.system(tee_command)
|
120
150
|
|
121
151
|
# Read and process output file
|
122
152
|
try:
|
@@ -125,12 +155,19 @@ class ScriptTool:
|
|
125
155
|
except Exception as e:
|
126
156
|
output = f"读取输出文件失败: {str(e)}"
|
127
157
|
|
128
|
-
# Return
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
158
|
+
# Return result (handle timeout in non-interactive mode)
|
159
|
+
if is_non_interactive() and timed_out:
|
160
|
+
return {
|
161
|
+
"success": False,
|
162
|
+
"stdout": output,
|
163
|
+
"stderr": f"执行超时(超过{get_script_execution_timeout()}秒),进程已被终止(非交互模式)。",
|
164
|
+
}
|
165
|
+
else:
|
166
|
+
return {
|
167
|
+
"success": True,
|
168
|
+
"stdout": output,
|
169
|
+
"stderr": "",
|
170
|
+
}
|
134
171
|
|
135
172
|
finally:
|
136
173
|
# Clean up temporary files
|
jarvis/jarvis_tools/sub_agent.py
CHANGED
@@ -137,14 +137,12 @@ class SubAgentTool:
|
|
137
137
|
# 基于父Agent(如有)继承部分配置后创建子Agent
|
138
138
|
parent_agent = args.get("agent", None)
|
139
139
|
parent_model_group = None
|
140
|
-
parent_input_handler = None
|
141
140
|
parent_execute_tool_confirm = None
|
142
141
|
parent_multiline_inputer = None
|
143
142
|
try:
|
144
143
|
if parent_agent is not None:
|
145
144
|
if getattr(parent_agent, "model", None):
|
146
145
|
parent_model_group = getattr(parent_agent.model, "model_group", None)
|
147
|
-
parent_input_handler = getattr(parent_agent, "input_handler", None)
|
148
146
|
parent_execute_tool_confirm = getattr(parent_agent, "execute_tool_confirm", None)
|
149
147
|
parent_multiline_inputer = getattr(parent_agent, "multiline_inputer", None)
|
150
148
|
except Exception:
|
@@ -160,7 +158,6 @@ class SubAgentTool:
|
|
160
158
|
auto_complete=auto_complete,
|
161
159
|
output_handler=None,
|
162
160
|
use_tools=None,
|
163
|
-
input_handler=parent_input_handler,
|
164
161
|
execute_tool_confirm=parent_execute_tool_confirm,
|
165
162
|
need_summary=need_summary,
|
166
163
|
multiline_inputer=parent_multiline_inputer,
|
jarvis/jarvis_utils/config.py
CHANGED
@@ -81,10 +81,10 @@ def get_max_token_count(model_group_override: Optional[str] = None) -> int:
|
|
81
81
|
获取模型允许的最大token数量。
|
82
82
|
|
83
83
|
返回:
|
84
|
-
int: 模型能处理的最大token数量,为最大输入token数量的
|
84
|
+
int: 模型能处理的最大token数量,为最大输入token数量的30倍。
|
85
85
|
"""
|
86
86
|
max_input_tokens = get_max_input_token_count(model_group_override)
|
87
|
-
return max_input_tokens *
|
87
|
+
return max_input_tokens * 30
|
88
88
|
|
89
89
|
|
90
90
|
def get_max_input_token_count(model_group_override: Optional[str] = None) -> int:
|
@@ -712,6 +712,16 @@ def get_tool_filter_threshold() -> int:
|
|
712
712
|
return int(GLOBAL_CONFIG_DATA.get("JARVIS_TOOL_FILTER_THRESHOLD", 30))
|
713
713
|
|
714
714
|
|
715
|
+
def get_script_execution_timeout() -> int:
|
716
|
+
"""
|
717
|
+
获取脚本执行的超时时间(秒)。
|
718
|
+
|
719
|
+
返回:
|
720
|
+
int: 超时时间,默认为300秒(5分钟)
|
721
|
+
"""
|
722
|
+
return int(GLOBAL_CONFIG_DATA.get("JARVIS_SCRIPT_EXECUTION_TIMEOUT", 300))
|
723
|
+
|
724
|
+
|
715
725
|
def is_enable_git_repo_jca_switch() -> bool:
|
716
726
|
"""
|
717
727
|
是否启用:在初始化环境前检测Git仓库并提示可切换到代码开发模式(jca)
|
@@ -746,3 +756,26 @@ def is_immediate_abort() -> bool:
|
|
746
756
|
默认关闭
|
747
757
|
"""
|
748
758
|
return GLOBAL_CONFIG_DATA.get("JARVIS_IMMEDIATE_ABORT", False) is True
|
759
|
+
|
760
|
+
|
761
|
+
def is_non_interactive() -> bool:
|
762
|
+
"""
|
763
|
+
获取是否启用非交互模式。
|
764
|
+
|
765
|
+
返回:
|
766
|
+
bool: 如果启用非交互模式则返回True,默认为False
|
767
|
+
"""
|
768
|
+
# 优先读取环境变量,确保 CLI 标志生效且不被配置覆盖
|
769
|
+
try:
|
770
|
+
import os
|
771
|
+
v = os.getenv("JARVIS_NON_INTERACTIVE")
|
772
|
+
if v is not None:
|
773
|
+
val = str(v).strip().lower()
|
774
|
+
if val in ("1", "true", "yes", "on"):
|
775
|
+
return True
|
776
|
+
if val in ("0", "false", "no", "off"):
|
777
|
+
return False
|
778
|
+
except Exception:
|
779
|
+
# 忽略环境变量解析异常,回退到配置
|
780
|
+
pass
|
781
|
+
return GLOBAL_CONFIG_DATA.get("JARVIS_NON_INTERACTIVE", False) is True
|
jarvis/jarvis_utils/input.py
CHANGED
@@ -366,6 +366,9 @@ class FileCompleter(Completer):
|
|
366
366
|
def user_confirm(tip: str, default: bool = True) -> bool:
|
367
367
|
"""提示用户确认是/否问题"""
|
368
368
|
try:
|
369
|
+
from jarvis.jarvis_utils.config import is_non_interactive
|
370
|
+
if is_non_interactive():
|
371
|
+
return default
|
369
372
|
suffix = "[Y/n]" if default else "[y/N]"
|
370
373
|
ret = get_single_line_input(f"{tip} {suffix}: ")
|
371
374
|
return default if ret == "" else ret.lower() == "y"
|
@@ -663,6 +666,9 @@ def get_multiline_input(tip: str, print_on_empty: bool = True) -> str:
|
|
663
666
|
preset: Optional[str] = None
|
664
667
|
preset_cursor: Optional[int] = None
|
665
668
|
while True:
|
669
|
+
from jarvis.jarvis_utils.config import is_non_interactive
|
670
|
+
if is_non_interactive():
|
671
|
+
return "我无法与你交互,所有的事情你都自我决策,如果无法决策,就完成任务"
|
666
672
|
user_input = _get_multiline_input_internal(
|
667
673
|
tip, preset=preset, preset_cursor=preset_cursor
|
668
674
|
)
|
@@ -1,16 +1,16 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
3
|
-
jarvis/jarvis_agent/agent_manager.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=nXZdIlK3JANzS2OXYhyGTfXHFCA3Sxt4SPv2LQJaElU,73
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=e3K_Ee9x6iadYIvZAurfBxMRGlCzxooGWQUl69_5YBg,49251
|
3
|
+
jarvis/jarvis_agent/agent_manager.py,sha256=2VTGfwXViNF9y4xUYGPQA0LGzITdha3JDzOBLLFdSBM,3635
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
5
|
-
jarvis/jarvis_agent/config.py,sha256=
|
5
|
+
jarvis/jarvis_agent/config.py,sha256=7rSYmgx9hI-PnWA2PLjubOxAbH7_NEDmnDvy6iAnPbQ,3362
|
6
6
|
jarvis/jarvis_agent/config_editor.py,sha256=hlb9EYxKWcR_qdW2O89CgNDdciR9Isi743JU_1gD8j4,1927
|
7
7
|
jarvis/jarvis_agent/edit_file_handler.py,sha256=7xkEvlER6pNHtxyGad_ol23NeDGsYMunq4XmTAx86kw,24722
|
8
8
|
jarvis/jarvis_agent/event_bus.py,sha256=pRdfk7d0OG18K6yNfWlCvAh_dW5p9sBtT2Yc3jGmzgo,1519
|
9
9
|
jarvis/jarvis_agent/events.py,sha256=rmFQ37PasImCh7OCdCzNBvubk-kHwcUiYLgzmL0t0_4,3689
|
10
10
|
jarvis/jarvis_agent/file_context_handler.py,sha256=2MPn_O_2llX39meFg272Cjk3wMPn5nmgbGMUyX06YQo,2113
|
11
11
|
jarvis/jarvis_agent/file_methodology_manager.py,sha256=LnhgTx5xQXCBK8esjCkFbgFm9iEyFX7TryUlC40Kzpw,4428
|
12
|
-
jarvis/jarvis_agent/jarvis.py,sha256=
|
13
|
-
jarvis/jarvis_agent/main.py,sha256=
|
12
|
+
jarvis/jarvis_agent/jarvis.py,sha256=GqLHYUMZRlr_W4A16NVZSA8YMBTqcMz87ZxnctlmcCQ,47142
|
13
|
+
jarvis/jarvis_agent/main.py,sha256=IgS7d3rng2vFlu983OUeCkOAosKjFAn1sFCk3gT9J9Q,4563
|
14
14
|
jarvis/jarvis_agent/memory_manager.py,sha256=WSyUffx9xTmkcj4QrSLEfsjI3sTMUwZmkkC9_N_gTjo,8042
|
15
15
|
jarvis/jarvis_agent/methodology_share_manager.py,sha256=AB_J9BwRgaeENQfL6bH83FOLeLrgHhppMb7psJNevKs,6874
|
16
16
|
jarvis/jarvis_agent/output_handler.py,sha256=P7oWpXBGFfOsWq7cIhS_z9crkQ19ES7qU5pM92KKjAs,1172
|
@@ -22,14 +22,18 @@ jarvis/jarvis_agent/run_loop.py,sha256=OWdJSq1dLC6xPx4EQBfSnD_rb3IwszwZp4KbXYiJt
|
|
22
22
|
jarvis/jarvis_agent/session_manager.py,sha256=5wVcaZGwJ9cEKTQglSbqyxUDJ2fI5KxYN8C8L16UWLw,3024
|
23
23
|
jarvis/jarvis_agent/share_manager.py,sha256=MF2RlomcgPxF8nVUk28DP6IRddZ_tot5l_YRvy0qXSQ,8726
|
24
24
|
jarvis/jarvis_agent/shell_input_handler.py,sha256=wiAPjB-9uTkcLszbO5dlOUwIfaeR39RgRcZhahIGqoA,2018
|
25
|
+
jarvis/jarvis_agent/stdio_redirect.py,sha256=xqF-sENitpefCT3TA9oRwATFqbDrU2dvqM-UiMZRhbE,9944
|
25
26
|
jarvis/jarvis_agent/task_analyzer.py,sha256=JXc-63hnTD7oSX-nIfRcgxqCMhh4fM4QYVc7C1gp--M,7813
|
26
27
|
jarvis/jarvis_agent/task_manager.py,sha256=lme_aN8vaF_a4Tvv2kaSEnWATy8RPSjogTxeLnEYZdg,6504
|
27
28
|
jarvis/jarvis_agent/tool_executor.py,sha256=k73cKhZEZpljvui4ZxALlFEIE-iLzJ32Softsmiwzqk,1896
|
28
29
|
jarvis/jarvis_agent/tool_share_manager.py,sha256=Do08FRxis0ynwR2a6iRoa6Yq0qCP8NkuhMbPrimaxMA,5169
|
29
30
|
jarvis/jarvis_agent/user_interaction.py,sha256=tifFN49GkO_Q80sqOTVmhxwbNWTazF3K0cr8AnnvzdU,1453
|
30
31
|
jarvis/jarvis_agent/utils.py,sha256=ldgfuNTNu4JU7Y1LtystBl85OC6H3A4OMycg0XBt_Cs,1615
|
32
|
+
jarvis/jarvis_agent/web_bridge.py,sha256=h15PXuPWWfZynWt8bPW4BDeCpIVoIOlRXfO0je6HDx4,6673
|
33
|
+
jarvis/jarvis_agent/web_output_sink.py,sha256=sZ6WbLZnuCdT5dS9d8msHY_g-pnj-dvML-I6uJ7-sbc,1733
|
34
|
+
jarvis/jarvis_agent/web_server.py,sha256=U2A35vhaIoBCz0Gh37tpyYBLPaJnylOEZlOWEKf-Tho,23596
|
31
35
|
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=
|
36
|
+
jarvis/jarvis_code_agent/code_agent.py,sha256=hKna15DuCKUeosMYjARf6eajlQk3gl-rJDlJ9JpqqHc,37944
|
33
37
|
jarvis/jarvis_code_agent/lint.py,sha256=_qLJB_bC3PuoHG-j4EGOnYzNGO26jHlKLbkysfyQW1c,3954
|
34
38
|
jarvis/jarvis_code_analysis/code_review.py,sha256=Z0JsvyVPPHPm6rfo4fqaQr7CdZKIllo9jqStzV0i_-o,34470
|
35
39
|
jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=LIXAYa1sW3l7foP6kohLWnE98I_EQ0T7z5bYKHq6rJA,78
|
@@ -52,7 +56,7 @@ jarvis/jarvis_code_analysis/checklists/shell.py,sha256=aRFYhQQvTgbYd-uY5pc8UHIUA
|
|
52
56
|
jarvis/jarvis_code_analysis/checklists/sql.py,sha256=vR0T6qC7b4dURjJVAd7kSVxyvZEQXPG1Jqc2sNTGp5c,2355
|
53
57
|
jarvis/jarvis_code_analysis/checklists/swift.py,sha256=TPx4I6Gupvs6tSerRKmTSKEPQpOLEbH2Y7LXg1uBgxc,2566
|
54
58
|
jarvis/jarvis_code_analysis/checklists/web.py,sha256=25gGD7pDadZQybNFvALYxWvK0VRjGQb1NVJQElwjyk0,3943
|
55
|
-
jarvis/jarvis_data/config_schema.json,sha256=
|
59
|
+
jarvis/jarvis_data/config_schema.json,sha256=IlQ2u6lNvn1y31NNr544cUkH8GS9wQSbWJCiOlGjZMo,14497
|
56
60
|
jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
|
57
61
|
jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
62
|
jarvis/jarvis_git_squash/main.py,sha256=BRbsEQVXwseVFKliVqV8_JPh1om6QT6dLTHw0jQ7OE0,2474
|
@@ -65,10 +69,10 @@ jarvis/jarvis_memory_organizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
65
69
|
jarvis/jarvis_memory_organizer/memory_organizer.py,sha256=CMFL46vvtpcTI6oS3CAlYteR6xAlwCkvVJmMT22uDRw,26295
|
66
70
|
jarvis/jarvis_methodology/main.py,sha256=uiNzk5b5O6xdvRhsOuD7ubxdd2tPcDsFFnvmes8uH8I,11370
|
67
71
|
jarvis/jarvis_multi_agent/__init__.py,sha256=fBWmW5S9gpEEYzCBJizyE2q0Jj2LUzj4yh7sfoe3Qrc,7170
|
68
|
-
jarvis/jarvis_multi_agent/main.py,sha256=
|
72
|
+
jarvis/jarvis_multi_agent/main.py,sha256=vh3fV2YIrg5xJ9cj8jttYvjmqRqBlLW4RkSV6upxiGw,2995
|
69
73
|
jarvis/jarvis_platform/__init__.py,sha256=WLQHSiE87PPket2M50_hHzjdMIgPIBx2VF8JfB_NNRk,105
|
70
74
|
jarvis/jarvis_platform/ai8.py,sha256=g8JkqPGs9SEbqstNMCc5rCHO0QcPHX9LNvb7HMWwB-Q,11471
|
71
|
-
jarvis/jarvis_platform/base.py,sha256=
|
75
|
+
jarvis/jarvis_platform/base.py,sha256=7T0m5acGo0hN9GxqqRkeNu77d7wTQ4AHwm9aYQVarCM,15983
|
72
76
|
jarvis/jarvis_platform/human.py,sha256=jWjW8prEag79e6ddqTPV4nz_Gz6zFBfO4a1EbvP8QWA,4908
|
73
77
|
jarvis/jarvis_platform/kimi.py,sha256=KLsf9udAsPRMbQ2JkBeiAlXkupCBwdtMaJ-hpH4Jdkc,15711
|
74
78
|
jarvis/jarvis_platform/openai.py,sha256=4YapmkmJmPGfrjktORcIejlB98b83Wsi_48zjBymHAc,9500
|
@@ -99,7 +103,7 @@ jarvis/jarvis_tools/ask_user.py,sha256=M6DdLNryCE8y1JcdZHEifUgZkPUEPNKc-zDW5p0Mb
|
|
99
103
|
jarvis/jarvis_tools/base.py,sha256=tFZkRlbV_a-pbjM-ci9AYmXVJm__FXuzVWKbQEyz4Ao,1639
|
100
104
|
jarvis/jarvis_tools/clear_memory.py,sha256=8DOq6dHLemfKTJqu227PWBIp8Iu5K7EXwINzL8DYk8M,8205
|
101
105
|
jarvis/jarvis_tools/edit_file.py,sha256=UcJNTVCDEmRaQsN_7_Ip2LjrTDm4wWzj2deuZHiBvLI,9026
|
102
|
-
jarvis/jarvis_tools/execute_script.py,sha256=
|
106
|
+
jarvis/jarvis_tools/execute_script.py,sha256=kjl-c6OmQPEeGqEjbuEGoGhb2nAiQoYzz2_2_Y3tIlY,8277
|
103
107
|
jarvis/jarvis_tools/file_analyzer.py,sha256=jzVb8fAJn3dWwpCiYH-Wuxva4kpHqBB2_V3x3mzY0Gs,4158
|
104
108
|
jarvis/jarvis_tools/generate_new_tool.py,sha256=tJz0YtfDwyH9y00VEWw3Btqr9JCNhvtI8BN9i5hYk_M,8560
|
105
109
|
jarvis/jarvis_tools/methodology.py,sha256=_K4GIDUodGEma3SvNRo7Qs5rliijgNespVLyAPN35JU,5233
|
@@ -110,7 +114,7 @@ jarvis/jarvis_tools/retrieve_memory.py,sha256=hhhGSr7jebPHICY9oEKICyI8mfqsRtKjh5
|
|
110
114
|
jarvis/jarvis_tools/rewrite_file.py,sha256=CuvjWPTbUaPbex9FKSmw_Ru4r6R-CX_3vqTqCTp8nHA,6959
|
111
115
|
jarvis/jarvis_tools/save_memory.py,sha256=RQtNxcpU53FFv_EBjH0i0oyQ7jWubm-trD1BHuqaGjI,6985
|
112
116
|
jarvis/jarvis_tools/search_web.py,sha256=Hi8WBxcRH02qjOF1qcJP2qSqs3kVOKGFAARfh548Ii4,6370
|
113
|
-
jarvis/jarvis_tools/sub_agent.py,sha256=
|
117
|
+
jarvis/jarvis_tools/sub_agent.py,sha256=mZqMyHgDXpZgFWxq8lwwCst2SDXbNyeX7_87fDuA_DQ,8725
|
114
118
|
jarvis/jarvis_tools/sub_code_agent.py,sha256=vVPcGKfgyhbZzl8vp2HHbgR1oQzC0TlS0G3THoZgU5Q,9453
|
115
119
|
jarvis/jarvis_tools/virtual_tty.py,sha256=L7-J00ARQvIa25T45Hhqg2eCBl6W2LFgqDlWMWf-7dk,25275
|
116
120
|
jarvis/jarvis_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -118,21 +122,21 @@ jarvis/jarvis_tools/cli/main.py,sha256=WL2GNV7WqYl7G1-btRGvCkzDCMk4fPfNvzCrnUFVP
|
|
118
122
|
jarvis/jarvis_utils/__init__.py,sha256=67h0ldisGlh3oK4DAeNEL2Bl_VsI3tSmfclasyVlueM,850
|
119
123
|
jarvis/jarvis_utils/builtin_replace_map.py,sha256=z8iAqsbZUiGFaozxG1xSu128op8udqHOeEw-GxNt4bU,1708
|
120
124
|
jarvis/jarvis_utils/clipboard.py,sha256=D3wzQeqg_yiH7Axs4d6MRxyNa9XxdnenH-ND2uj2WVQ,2967
|
121
|
-
jarvis/jarvis_utils/config.py,sha256=
|
125
|
+
jarvis/jarvis_utils/config.py,sha256=vdScoPR-07nv9nJJV8kV5t-VQvvZhOH8eJUXfPG5IWs,22361
|
122
126
|
jarvis/jarvis_utils/embedding.py,sha256=x6mrkL7Bc3qgfuBDsjc4fg4nKG8ofGxVLVVydbsb8PY,2838
|
123
127
|
jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
|
124
128
|
jarvis/jarvis_utils/fzf.py,sha256=vCs0Uh5dUqGbWzXn2JCtLLCOYE2B39ZNdNveR9PK4DA,1681
|
125
129
|
jarvis/jarvis_utils/git_utils.py,sha256=zxjdxbFb_X6aYo-w1fbMx3d2n1ScbmmaAYlE3wGaaSg,24071
|
126
130
|
jarvis/jarvis_utils/globals.py,sha256=7Xvf9HY6jYJL4vSD1F1WCoxHkHCAyltJUYt4V9gGVU4,8865
|
127
131
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
128
|
-
jarvis/jarvis_utils/input.py,sha256=
|
132
|
+
jarvis/jarvis_utils/input.py,sha256=muopeZc68N-_tM7ERI2aazqernLumF-sQqS_JfWI0jI,36879
|
129
133
|
jarvis/jarvis_utils/methodology.py,sha256=z_renvRGgHiC-XTQPuN6rvrJ_ffHlwxK_b1BU_jmNAQ,12800
|
130
134
|
jarvis/jarvis_utils/output.py,sha256=y2fVcao_2ZowFl0IxUrJZCi8T6ZM0z-iPzpk8T8eLxc,13623
|
131
135
|
jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
|
132
136
|
jarvis/jarvis_utils/utils.py,sha256=uMtfaStxDtp2i9AFIxwtPKgSxLwQxw8Z2rXsX-ZGlis,72728
|
133
|
-
jarvis_ai_assistant-0.
|
134
|
-
jarvis_ai_assistant-0.
|
135
|
-
jarvis_ai_assistant-0.
|
136
|
-
jarvis_ai_assistant-0.
|
137
|
-
jarvis_ai_assistant-0.
|
138
|
-
jarvis_ai_assistant-0.
|
137
|
+
jarvis_ai_assistant-0.4.0.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
138
|
+
jarvis_ai_assistant-0.4.0.dist-info/METADATA,sha256=K2JtrCGOAwMGOrFlsDW4D0rFQDNFMdjVbf02_GjhDkI,18751
|
139
|
+
jarvis_ai_assistant-0.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
140
|
+
jarvis_ai_assistant-0.4.0.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
|
141
|
+
jarvis_ai_assistant-0.4.0.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
142
|
+
jarvis_ai_assistant-0.4.0.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.33.dist-info → jarvis_ai_assistant-0.4.0.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|