jarvis-ai-assistant 0.1.159__py3-none-any.whl → 0.1.161__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

@@ -11,10 +11,10 @@ import json
11
11
  import tempfile
12
12
  from typing import Dict, Optional
13
13
 
14
- from jarvis.jarvis_utils.config import INPUT_WINDOW_REVERSE_SIZE, get_max_input_token_count, get_data_dir
15
- from jarvis.jarvis_utils.embedding import get_context_token_count
14
+ from jarvis.jarvis_utils.config import get_data_dir
16
15
  from jarvis.jarvis_utils.output import PrettyOutput, OutputType
17
16
  from jarvis.jarvis_platform.registry import PlatformRegistry
17
+ from jarvis.jarvis_utils.utils import is_context_overflow
18
18
 
19
19
  def _get_methodology_directory() -> str:
20
20
  """
@@ -101,7 +101,7 @@ def load_methodology(user_input: str) -> str:
101
101
  返回:
102
102
  str: 相关的方法论提示,如果未找到方法论则返回空字符串
103
103
  """
104
- from yaspin import yaspin
104
+ from yaspin import yaspin # type: ignore
105
105
 
106
106
  # 获取方法论目录
107
107
  methodology_dir = _get_methodology_directory()
@@ -121,33 +121,21 @@ def load_methodology(user_input: str) -> str:
121
121
 
122
122
  # 获取当前平台
123
123
  platform = PlatformRegistry().get_normal_platform()
124
+ if not platform:
125
+ return ""
126
+
127
+ # 构建基础提示信息
128
+ base_prompt = f"""以下是所有可用的方法论内容:
129
+
130
+ """
131
+ # 构建完整内容
132
+ full_content = base_prompt
133
+ for problem_type, content in methodologies.items():
134
+ full_content += f"## {problem_type}\n\n{content}\n\n---\n\n"
124
135
 
125
- # 检查是否需要特殊处理大文件
126
- if get_context_token_count(user_input) > get_max_input_token_count() - INPUT_WINDOW_REVERSE_SIZE:
127
- # 创建临时文件
128
- with yaspin(text="创建方法论临时文件...", color="yellow") as spinner:
129
- temp_file_path = _create_methodology_temp_file(methodologies)
130
- if not temp_file_path:
131
- spinner.text = "创建方法论临时文件失败"
132
- spinner.fail("❌")
133
- return ""
134
- spinner.text = f"创建方法论临时文件完成: {temp_file_path}"
135
- spinner.ok("✅")
136
-
137
- # 尝试上传文件
138
- upload_success = False
139
- try:
140
- if platform.upload_files([temp_file_path]):
141
- upload_success = True
142
- spinner.write("✅ 成功上传方法论文件")
143
- else:
144
- spinner.write("⚠️ 上传方法论文件失败,将使用chat_with_files处理")
145
- except Exception as e:
146
- spinner.write(f"⚠️ 上传文件时出错: {str(e)}")
147
- upload_success = False
148
-
149
- # 构建提示信息
150
- prompt = f"""请根据以下方法论内容,总结出与以下用户需求相关的方法论: {user_input}
136
+ # 添加用户输入和输出要求
137
+ full_content += f"""
138
+ 请根据以上方法论内容,总结出与以下用户需求相关的方法论: {user_input}
151
139
 
152
140
  请按以下格式回复:
153
141
  ### 与该任务/需求相关的方法论
@@ -157,24 +145,48 @@ def load_methodology(user_input: str) -> str:
157
145
  [总结的方法论内容]
158
146
 
159
147
  如果没有匹配的方法论,请输出:没有历史方法论可参考
160
- 除以上要求外,不要输出任何内容"""
161
-
162
- if upload_success:
163
- # 使用上传的文件
164
- return platform.chat_until_success(prompt)
165
- else:
166
- # 使用chat_with_files处理大文件
167
- from jarvis.jarvis_utils.utils import chat_with_files
168
- return chat_with_files([temp_file_path], platform, prompt, "")
169
- else:
170
- # 上下文足够,直接在prompt中包含方法论内容
171
- prompt = f"""以下是所有可用的方法论内容:
172
-
148
+ 除以上要求外,不要输出任何内容
173
149
  """
174
- for problem_type, content in methodologies.items():
175
- prompt += f"## {problem_type}\n\n{content}\n\n---\n\n"
176
-
177
- prompt += f"""
150
+
151
+ # 检查内容是否过大
152
+ is_large_content = is_context_overflow(full_content)
153
+ temp_file_path = None
154
+
155
+ try:
156
+ if is_large_content:
157
+ # 创建临时文件
158
+ with yaspin(text="创建方法论临时文件...", color="yellow") as spinner:
159
+ temp_file_path = _create_methodology_temp_file(methodologies)
160
+ if not temp_file_path:
161
+ spinner.text = "创建方法论临时文件失败"
162
+ spinner.fail("❌")
163
+ return ""
164
+ spinner.text = f"创建方法论临时文件完成: {temp_file_path}"
165
+ spinner.ok("✅")
166
+
167
+ # 尝试上传文件
168
+ if hasattr(platform, 'upload_files'):
169
+ platform.set_suppress_output(False)
170
+ upload_success = platform.upload_files([temp_file_path])
171
+
172
+ if upload_success:
173
+ # 使用上传的文件生成摘要
174
+ return platform.chat_until_success(base_prompt + f"""
175
+ 请根据已上传的方法论文件内容,总结出与以下用户需求相关的方法论: {user_input}
176
+
177
+ 请按以下格式回复:
178
+ ### 与该任务/需求相关的方法论
179
+ 1. [方法论名字]
180
+ 2. [方法论名字]
181
+ ### 根据以上方法论,总结出方法论内容
182
+ [总结的方法论内容]
183
+
184
+ 如果没有匹配的方法论,请输出:没有历史方法论可参考
185
+ 除以上要求外,不要输出任何内容
186
+ """)
187
+ elif hasattr(platform, 'chat_big_content'):
188
+ # 如果上传失败但支持大内容处理,使用chat_big_content
189
+ return platform.chat_big_content(full_content, base_prompt + f"""
178
190
  请根据以上方法论内容,总结出与以下用户需求相关的方法论: {user_input}
179
191
 
180
192
  请按以下格式回复:
@@ -185,22 +197,20 @@ def load_methodology(user_input: str) -> str:
185
197
  [总结的方法论内容]
186
198
 
187
199
  如果没有匹配的方法论,请输出:没有历史方法论可参考
188
- 除以上要求外,不要输出任何内容"""
189
- return platform.chat_until_success(prompt)
200
+ 除以上要求外,不要输出任何内容
201
+ """)
202
+
203
+ # 如果内容不大或上传失败,直接使用chat_until_success
204
+ return platform.chat_until_success(full_content)
205
+
206
+ finally:
207
+ # 清理临时文件
208
+ if temp_file_path and os.path.exists(temp_file_path):
209
+ try:
210
+ os.remove(temp_file_path)
211
+ except Exception:
212
+ pass
190
213
 
191
214
  except Exception as e:
192
215
  PrettyOutput.print(f"加载方法论失败: {str(e)}", OutputType.ERROR)
193
- # 清理临时文件
194
- if 'temp_file_path' in locals() and temp_file_path and os.path.exists(temp_file_path):
195
- try:
196
- os.remove(temp_file_path)
197
- except:
198
- pass
199
216
  return ""
200
- finally:
201
- # 确保清理临时文件
202
- if 'temp_file_path' in locals() and temp_file_path and os.path.exists(temp_file_path):
203
- try:
204
- os.remove(temp_file_path)
205
- except:
206
- pass
@@ -3,8 +3,8 @@ import time
3
3
  import hashlib
4
4
  from pathlib import Path
5
5
  from typing import List, Any, Callable
6
- from jarvis.jarvis_utils.config import get_max_input_token_count, get_data_dir
7
- from jarvis.jarvis_utils.embedding import get_context_token_count, split_text_into_chunks
6
+ from jarvis.jarvis_utils.config import INPUT_WINDOW_REVERSE_SIZE, get_max_input_token_count, get_data_dir
7
+ from jarvis.jarvis_utils.embedding import get_context_token_count
8
8
  from jarvis.jarvis_utils.input import get_single_line_input
9
9
  from jarvis.jarvis_utils.output import PrettyOutput, OutputType
10
10
  def init_env() -> None:
@@ -130,13 +130,6 @@ def is_long_context(files: List[str]) -> bool:
130
130
  return total_tokens > threshold
131
131
 
132
132
 
133
- def chat_with_files(files: List[str], platform: Any, prompt_prefix: str, prompt_suffix: str) -> str:
134
- from jarvis.jarvis_platform.base import BasePlatform
135
- from jarvis.jarvis_tools.file_operation import FileOperationTool
136
- platform_: BasePlatform = platform
137
- file_content = FileOperationTool().execute({"operation":"read", "files":files})["stdout"]
138
- file_content_chuck = split_text_into_chunks(file_content, get_max_input_token_count()-2048)
139
- platform_.chat_until_success(prompt_prefix)
140
- for file_content_chunk in file_content_chuck:
141
- platform_.chat_until_success(file_content_chunk)
142
- return platform_.chat_until_success(prompt_suffix)
133
+ def is_context_overflow(file_content: str) -> bool:
134
+ """判断文件内容是否超出上下文限制"""
135
+ return get_context_token_count(file_content) > get_max_input_token_count() - INPUT_WINDOW_REVERSE_SIZE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.159
3
+ Version: 0.1.161
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
@@ -194,7 +194,7 @@ jarvis-methodology --help
194
194
  ### 环境变量配置
195
195
  | 变量名称 | 默认值 | 说明 |
196
196
  |----------|--------|------|
197
- | `JARVIS_MAX_TOKEN_COUNT` | 102400000 | 上下文最大token数量 |
197
+ | `JARVIS_MAX_TOKEN_COUNT` | 102400000 | 上下文窗口的最大token数量 |
198
198
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
199
199
  | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能(任务判定完成的时候会自动终止) |
200
200
  | `JARVIS_SHELL_NAME` | bash | 系统shell名称 |
@@ -1,15 +1,15 @@
1
- jarvis/__init__.py,sha256=_IZ4qsot_luvb5GqI5sZmjlOdVcITvyPV8qcjgeUK4Y,50
1
+ jarvis/__init__.py,sha256=QWWtos1GX-JOz_aue7aQXOahh3dflFGkma4f0P1yuuU,50
2
2
  jarvis/jarvis_agent/__init__.py,sha256=tii6khwfG971MJiMfKSLwlKTjB3iEv8ITE3JqYSkfQA,24824
3
3
  jarvis/jarvis_agent/builtin_input_handler.py,sha256=3rRA-7v_VUSFG1s7tTKhriq9vv0nsa3t69ReV0xH5gs,1505
4
- jarvis/jarvis_agent/file_input_handler.py,sha256=auBbBfS4Ux5ksczeRe9LtsmMm4hKrPxinW5leE9Rtyc,3575
5
- jarvis/jarvis_agent/jarvis.py,sha256=6Bp_Y-E3RN6bDmDs5lN3uALL_Dhq-p_aIuVNELG1vtw,5898
4
+ jarvis/jarvis_agent/file_input_handler.py,sha256=88VqJLe3oO9GtIRsqyx3KwZl10Apob2ddFMH3HQ2RMg,3413
5
+ jarvis/jarvis_agent/jarvis.py,sha256=lkgB6Djfkd1YVnsVnSeqjmB2t-R8lj_Y9E6Mw4HmpdI,5874
6
6
  jarvis/jarvis_agent/main.py,sha256=Jlw_Tofh2C-sMVnkeOZBrwWJOWNH3IhsKDUn-WBlgU8,2602
7
7
  jarvis/jarvis_agent/output_handler.py,sha256=4limQ-Kf-YYvQjT5SMjJIyyvD1DVG8tINv1A_qbv4ho,405
8
- jarvis/jarvis_agent/patch.py,sha256=LjOlnd6AoG9RyzphmCdv9J514-aOX_bXG67lXXQxEvo,23673
8
+ jarvis/jarvis_agent/patch.py,sha256=9wUPtnH_C1WYHWnWBT_it6pI2-zrhGIb0xYyNkLgbFI,23744
9
9
  jarvis/jarvis_agent/shell_input_handler.py,sha256=9IoGQCe6FF4HA2V5S11q63AtnWDZFpNeRd3hcqCAlBw,1237
10
10
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- jarvis/jarvis_code_agent/code_agent.py,sha256=vi_g-LWdD5nn3RQsC1X8G2iNK8SrBADwFLUkflqtvKE,13723
12
- jarvis/jarvis_code_analysis/code_review.py,sha256=wCnj2qr4QhIvcItn8aOCqDqjrEjRnw7mtYHhlkK29xE,30599
11
+ jarvis/jarvis_code_agent/code_agent.py,sha256=XW-EWiHQWFWQS08y1cudXna3w3Ka8-H29yO4PigWFxY,17979
12
+ jarvis/jarvis_code_analysis/code_review.py,sha256=gB9Xo0-FT6zciDzZb3jF6zxxWA_Aj8QU5008Tmu_Tr4,30192
13
13
  jarvis/jarvis_code_analysis/checklists/__init__.py,sha256=PCjlyxLa939613cAzS7pfEPgP57setO-1RvcdzzPivw,54
14
14
  jarvis/jarvis_code_analysis/checklists/c_cpp.py,sha256=8lfWmhImAxeTBdHPOgVXDjMllaq280Qki1ZOOSDBnvk,1293
15
15
  jarvis/jarvis_code_analysis/checklists/csharp.py,sha256=fg35Iima2nIsirEmAjianfAybVjwRYml9BtbSQFff7w,2396
@@ -35,7 +35,7 @@ jarvis/jarvis_git_details/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
35
35
  jarvis/jarvis_git_details/main.py,sha256=YowncVxYyJ3y2EvGrZhAJeR4yizXp6aB3dqvoYTepFY,6117
36
36
  jarvis/jarvis_git_squash/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  jarvis/jarvis_git_squash/main.py,sha256=xBNkAl7_8_pQC-C6RcUImA1mEU4KTqhjtA57rG_mMJ8,2179
38
- jarvis/jarvis_git_utils/git_commiter.py,sha256=hP4rQqqKtgu9kw46oK9V8rOwG2IqxAXgNuv0YHX-Qd0,13712
38
+ jarvis/jarvis_git_utils/git_commiter.py,sha256=85hHml5rgz59YbePDD0t5c9e4kcb8yF1db8s8uj7x1I,11980
39
39
  jarvis/jarvis_lsp/base.py,sha256=f-76xgNijfQ4G3Q0t8IfOGtCu-q2TSQ7a_in6XwDb_8,2030
40
40
  jarvis/jarvis_lsp/cpp.py,sha256=ekci2M9_UtkCSEe9__72h26Gat93r9_knL2VmFr8X5M,3141
41
41
  jarvis/jarvis_lsp/go.py,sha256=sSypuQSP5X2YtrVMC8XCc5nXkgfG93SO7sC89lHzoR8,3458
@@ -45,13 +45,13 @@ jarvis/jarvis_lsp/rust.py,sha256=ICmQs5UVdMZwn5KjaF1YRXBCLUMtGF8Z9IwE5rqWkrU,368
45
45
  jarvis/jarvis_mcp/__init__.py,sha256=gi74_Yz5nsEFhrAyCg1Ovxsj-hLweLjMGoOaceL2yx4,2090
46
46
  jarvis/jarvis_mcp/sse_mcp_client.py,sha256=Qd09ymgZmxQvaFUzz8I3AI46v6AqmMbGaF0iBbExAGY,23459
47
47
  jarvis/jarvis_mcp/stdio_mcp_client.py,sha256=DtRO4dqBoxI8W0H0rVR5zxZLR0theKxRAQ-qzQE9qPg,11806
48
- jarvis/jarvis_methodology/main.py,sha256=i0sOKeGf9-87M0jY4q6sgw4dAPt800PHiZjseLAQmO0,11782
48
+ jarvis/jarvis_methodology/main.py,sha256=JrUqWKN0gQeiO_tY2Tn14pnT_jClqlNgpbBfoc-q8SM,11812
49
49
  jarvis/jarvis_multi_agent/__init__.py,sha256=SX8lBErhltKyYRM-rymrMz3sJ0Zl3hBXrpsPdFgzkQc,4399
50
50
  jarvis/jarvis_multi_agent/main.py,sha256=aGuUC3YQmahabqwDwZXJjfQLYsZ3KIZdf8DZDlVNMe4,1543
51
51
  jarvis/jarvis_platform/__init__.py,sha256=oD9i4ugZ2q6Hys3noLOvzPUUHqE2PJ_Je1r2dLLTscw,80
52
- jarvis/jarvis_platform/base.py,sha256=um9_BZgOJSg0nlmywYGAxwFRL-8409OnlvfgQkh5RUo,3406
52
+ jarvis/jarvis_platform/base.py,sha256=OfVG7jw-0han9yEooJLL0Sk3ZlgzItZwJOgRxZdFLfs,4085
53
53
  jarvis/jarvis_platform/human.py,sha256=WCzvBtQUMN7ys4rQl6UT7Zdp4x5RaGv1U4vBx7ROxfo,2438
54
- jarvis/jarvis_platform/kimi.py,sha256=GgUekusFzx2842K-PrES3c2oprLbPCjQhbyjU0UKycg,16637
54
+ jarvis/jarvis_platform/kimi.py,sha256=Wno9PFZ92v9fjBHS29sFUwoc6gk6akD7yelVaWOpp-Q,16667
55
55
  jarvis/jarvis_platform/registry.py,sha256=wvXTKXqAoW6GPaLKCPYhRB9QhVe1xfoVbVPBZAxl_uA,7716
56
56
  jarvis/jarvis_platform/yuanbao.py,sha256=9nIyg5Xx9rdUaJAK_Tj8HumOT5mwpa-V907dZGot-4E,21811
57
57
  jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -67,15 +67,15 @@ jarvis/jarvis_tools/code_plan.py,sha256=jNa2rs4J3Fam8Q_RHE2_QvVch21TPp-Zfv-W6iQ3
67
67
  jarvis/jarvis_tools/create_code_agent.py,sha256=SRiQXZf57ViIDh6YSEmJkcoSKft0-y3iDfWF8f1bvZU,3387
68
68
  jarvis/jarvis_tools/create_sub_agent.py,sha256=wGiHukvi58wb1AKW5beP7R8VvApOn8TOeGmtXsmcETE,3001
69
69
  jarvis/jarvis_tools/execute_script.py,sha256=AeuC3yZIg-nBq_LTIyqxu-lG_uLG63lvwO28A6dRDYA,5715
70
- jarvis/jarvis_tools/file_analyzer.py,sha256=XCsFB4dZ9qy2q929hqi1rTngj6AtRtIaPx_W7lJAcpQ,4814
71
- jarvis/jarvis_tools/file_operation.py,sha256=sB1x0zI1dULXV7FG17wkiMQ7mQAEnXVd_5rakQ0Thik,9109
70
+ jarvis/jarvis_tools/file_analyzer.py,sha256=EVl7WqGgZoaQXqEX8vLynpqZDE3aug1hVBJbycT7YiY,4844
71
+ jarvis/jarvis_tools/file_operation.py,sha256=zbc1zX_aJ-9x1wpuUUbZOgg0aN8f5sd9ryaCQ-bi870,9124
72
72
  jarvis/jarvis_tools/find_methodology.py,sha256=TIUrezAql6wY3-wqnOPfGrO0tqS5N_-eU6YimCzaepM,2268
73
73
  jarvis/jarvis_tools/lsp_get_diagnostics.py,sha256=IYqv8jQwSK71sZpDBRolSDnYii8t0M7fzLthhMYTeGk,5322
74
74
  jarvis/jarvis_tools/methodology.py,sha256=gnlJojY4Dg5v9AAB5xcpKqpPIHs0tOYVtzTHkwOrWk0,5214
75
75
  jarvis/jarvis_tools/read_code.py,sha256=_X6D3AIgRD9YplSDnFhXOm8wQAZMA3pkkXy31SG33l0,6041
76
- jarvis/jarvis_tools/read_webpage.py,sha256=1AXXEX69fPJsPL7PBZDM1G4Z-MM13pUt34JXitsAFM4,2022
77
- jarvis/jarvis_tools/registry.py,sha256=ZI5MHhtHm6UvdarvIVu0Kg8BuqV4MIVvVGwOa8yWh74,27531
78
- jarvis/jarvis_tools/search_web.py,sha256=hMrcSnKcjH6YcV8WY4tangEid7y1L-QbyeXDlBofoy8,756
76
+ jarvis/jarvis_tools/read_webpage.py,sha256=ECcMnPnUpIeiSA1IRdUf7uLWMe34Ian9pExSxekwpcg,2025
77
+ jarvis/jarvis_tools/registry.py,sha256=6md5Fm-Uv0dhTHj0qubHRj0VQkNIcNn0A1cshBOQY5o,27109
78
+ jarvis/jarvis_tools/search_web.py,sha256=p1oahjSmSeBO9ZzgWkxIHsfcAGah22ju0xipXmuqnzg,759
79
79
  jarvis/jarvis_tools/virtual_tty.py,sha256=Rpn9VXUG17LQsY87F_O6UCjN_opXB05mpwozxYf-xVI,16372
80
80
  jarvis/jarvis_utils/__init__.py,sha256=KMg-KY5rZIhGTeOD5e2Xo5CU7DX1DUz4ULWAaTQ-ZNw,825
81
81
  jarvis/jarvis_utils/builtin_replace_map.py,sha256=Dt8YL4Sk5uALTMPT_n-lhshRWvFWPRPwV4stASOecQ8,4290
@@ -84,14 +84,14 @@ jarvis/jarvis_utils/embedding.py,sha256=_Q-VurYHQZSsyISClTFjadDaNqNPBMqJe58lMM6b
84
84
  jarvis/jarvis_utils/file_processors.py,sha256=oNtVlz2JHcQ60NS6sgI-VsvYXOnsQgFUEVenznCXHC4,2952
85
85
  jarvis/jarvis_utils/git_utils.py,sha256=j_Jw6h7JD91XhMf0WD3MAH4URkLUBrrYCLnuLm1GeN4,5630
86
86
  jarvis/jarvis_utils/globals.py,sha256=Ed2d6diWXCgI74HVV_tI4qW7yXxLpNvQKN2yG0IH9hc,3388
87
- jarvis/jarvis_utils/input.py,sha256=zvL-JQSJvkmsZB7ApJsaVpk46BkpmJA3I_BnWSl_D-4,7299
88
- jarvis/jarvis_utils/methodology.py,sha256=OKD3OwScJgpTilrAt38Iu5Xlp3_i6joPZB82TE8PAZw,7592
87
+ jarvis/jarvis_utils/input.py,sha256=3mQO_Ys1DGQQWCrw_zD9hnTF4Xd6vyQUrer8IastzvQ,7408
88
+ jarvis/jarvis_utils/methodology.py,sha256=a1QJLqZ-_RwhL6i7C6mixhT1BmOvZ0mKmh3PTOiNT9M,7744
89
89
  jarvis/jarvis_utils/output.py,sha256=BmWdB1bmizv0xfU4Z___9p_xQodorriIcEgADVq9fk0,8416
90
90
  jarvis/jarvis_utils/tag.py,sha256=YtXBYuZWy8j8YbeQX2qRrHRQl6Gp2Vt7W4p-2yjo0a4,405
91
- jarvis/jarvis_utils/utils.py,sha256=Qds24SeHJZShb1w4CBp3uKT3zUiltAUFyvh_KfxvBkM,4936
92
- jarvis_ai_assistant-0.1.159.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
93
- jarvis_ai_assistant-0.1.159.dist-info/METADATA,sha256=gID-zAYn10pXQXEjVrrgbu8m188dW2HV7QhOMlcyyDU,12660
94
- jarvis_ai_assistant-0.1.159.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
95
- jarvis_ai_assistant-0.1.159.dist-info/entry_points.txt,sha256=cKz_9SEpOvElTubKPMZMAdskD4GHz-NyKWRNssIVAWE,973
96
- jarvis_ai_assistant-0.1.159.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
97
- jarvis_ai_assistant-0.1.159.dist-info/RECORD,,
91
+ jarvis/jarvis_utils/utils.py,sha256=neokG_C9Djw6shwLcBxpQmRF5KFp9P6v52bMJMEFozg,4487
92
+ jarvis_ai_assistant-0.1.161.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
93
+ jarvis_ai_assistant-0.1.161.dist-info/METADATA,sha256=PTeWyHsD_SrHmxv5-gk0NhC43jV3q8K1FH4QPD6rwEM,12669
94
+ jarvis_ai_assistant-0.1.161.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
95
+ jarvis_ai_assistant-0.1.161.dist-info/entry_points.txt,sha256=cKz_9SEpOvElTubKPMZMAdskD4GHz-NyKWRNssIVAWE,973
96
+ jarvis_ai_assistant-0.1.161.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
97
+ jarvis_ai_assistant-0.1.161.dist-info/RECORD,,