jarvis-ai-assistant 0.1.116__py3-none-any.whl → 0.1.118__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.

@@ -1,6 +1,3 @@
1
-
2
-
3
-
4
1
  import re
5
2
  from typing import Any, Dict, List, Optional, Tuple
6
3
 
@@ -34,41 +31,67 @@ class MultiAgent(OutputHandler):
34
31
  self.main_agent_name = main_agent_name
35
32
 
36
33
  def prompt(self) -> str:
37
- return """
38
- - Send Message Rules
39
- !!! CRITICAL ACTION RULES !!!
40
- You can ONLY perform ONE action per turn:
41
- - ENSURE USE ONLY ONE TOOL EVERY TURN (file_operation, ask_user, etc.)
42
- - OR SEND ONE MESSAGE TO ANOTHER AGENT
43
- - NEVER DO BOTH IN THE SAME TURN
44
-
45
- 2. Message Format:
46
- <SEND_MESSAGE>
47
- to: agent_name # Target agent name
48
- content: |
49
- message_content # Message content, multi-line must be separated by newlines
50
- </SEND_MESSAGE>
51
-
52
- 3. Message Handling:
53
- - After sending a message, WAIT for response
54
- - Process response before next action
55
- - Never send multiple messages at once
56
- - Never combine message with tool calls
57
-
58
- 4. If Multiple Actions Needed:
59
- a. Choose most important action first
60
- b. Wait for response/result
61
- c. Plan next action based on response
62
- d. Execute next action in new turn
63
-
64
- - Remember:
65
- - First action will be executed
66
- - Additional actions will be IGNORED
67
- - Always process responses before new actions
68
- - You should send message to other to continue the task if you are nothing to do
69
- - If you receive a message from other agent, you should handle it and reply to sender
70
-
71
- You can send message to following agents: """ + "\n".join([f"{c.name}: {c.description}" for c in self.agents_config])
34
+ return f"""
35
+ # 🤖 Message Handling System
36
+ You are part of a multi-agent system that communicates through structured messages.
37
+
38
+ # 🎯 Core Rules
39
+ ## Critical Action Rules
40
+ - Execute ONLY ONE action per turn:
41
+ - Either use ONE tool (file_operation, ask_user, etc.)
42
+ - OR send ONE message to another agent
43
+ - NEVER combine both in same turn
44
+
45
+ ## Message Flow Control
46
+ - Wait for response after sending message
47
+ - Process response before next action
48
+ - Never send multiple messages at once
49
+ - Never combine messages with tool calls
50
+
51
+ # 📝 Message Format
52
+ ```
53
+ <SEND_MESSAGE>
54
+ to: agent_name # Target agent name
55
+ content: |
56
+ message_content # Message content
57
+ use multiple lines # If needed
58
+ with proper indentation
59
+ </SEND_MESSAGE>
60
+ ```
61
+
62
+ # 🔄 Action Sequence
63
+ 1. Choose Most Important Action
64
+ - Evaluate priority
65
+ - Select ONE action
66
+ - Execute action
67
+
68
+ 2. Wait for Response
69
+ - Process result/response
70
+ - Plan next action
71
+ - Wait for next turn
72
+
73
+ 3. Handle Responses
74
+ - Process incoming messages
75
+ - Reply to sender when needed
76
+ - Continue task based on response
77
+
78
+ # 👥 Available Agents
79
+ {chr(10).join([f"- {c.name}: {c.description}" for c in self.agents_config])}
80
+
81
+ # ❗ Important Rules
82
+ 1. ONE action per turn only
83
+ 2. Wait for responses
84
+ 3. Process before next action
85
+ 4. Reply to messages
86
+ 5. Forward task if needed
87
+
88
+ # 💡 Tips
89
+ - First action will be executed
90
+ - Additional actions will be ignored
91
+ - Always process responses first
92
+ - Send message to continue task if needed
93
+ - Handle and reply to received messages
94
+ """
72
95
 
73
96
  def can_handle(self, response: str) -> bool:
74
97
  return len(self._extract_send_msg(response)) > 0
jarvis/jarvis_rag/main.py CHANGED
@@ -642,32 +642,64 @@ class RAGTool:
642
642
  def ask(self, question: str) -> Optional[str]:
643
643
  """Ask questions about documents with enhanced context building"""
644
644
  try:
645
- # 搜索相关文档
646
645
  results = self.search(question)
647
646
  if not results:
648
647
  return None
649
648
 
650
- # 构建提示词
651
- prompt = f"""Based on the following document fragments, please answer the user's question accurately and comprehensively.
652
-
649
+ prompt = f"""
650
+ # 🤖 Role Definition
651
+ You are a document analysis expert who provides accurate and comprehensive answers based on provided documents.
652
+
653
+ # 🎯 Core Responsibilities
654
+ - Analyze document fragments thoroughly
655
+ - Answer questions accurately
656
+ - Reference source documents
657
+ - Identify missing information
658
+ - Maintain professional tone
659
+
660
+ # 📋 Answer Requirements
661
+ ## Content Quality
662
+ - Base answers strictly on provided documents
663
+ - Be specific and precise
664
+ - Include relevant quotes when helpful
665
+ - Indicate any information gaps
666
+ - Use professional language
667
+
668
+ ## Answer Structure
669
+ 1. Direct Answer
670
+ - Clear and concise response
671
+ - Based on document evidence
672
+ - Professional terminology
673
+
674
+ 2. Supporting Details
675
+ - Relevant document quotes
676
+ - File references
677
+ - Context explanation
678
+
679
+ 3. Information Gaps (if any)
680
+ - Missing information
681
+ - Additional context needed
682
+ - Potential limitations
683
+
684
+ # 🔍 Analysis Context
653
685
  Question: {question}
654
686
 
655
- Relevant documents (ordered by relevance):
687
+ Relevant Documents (by relevance):
656
688
  """
657
- # 添加上下文,控制长度
689
+
690
+ # Add context with length control
658
691
  available_count = self.max_token_count - get_context_token_count(prompt) - 1000
659
692
  current_count = 0
660
693
 
661
694
  for doc, score in results:
662
695
  doc_content = f"""
663
- [Score: {score:.3f}] {doc.metadata['file_path']}:
696
+ ## Document Fragment [Score: {score:.3f}]
697
+ Source: {doc.metadata['file_path']}
698
+ ```
664
699
  {doc.content}
700
+ ```
665
701
  ---
666
702
  """
667
- prompt += "Answer Format:\n"
668
- prompt += "1. Answer the question accurately and comprehensively.\n"
669
- prompt += "2. If the documents don't fully answer the question, please indicate what information is missing.\n"
670
- prompt += "3. Reference the documents in the answer.\n"
671
703
  if current_count + get_context_token_count(doc_content) > available_count:
672
704
  PrettyOutput.print(
673
705
  "由于上下文长度限制,部分内容被省略",
@@ -677,14 +709,19 @@ Relevant documents (ordered by relevance):
677
709
 
678
710
  prompt += doc_content
679
711
  current_count += get_context_token_count(doc_content)
680
-
681
- prompt += "\nIf the documents don't fully answer the question, please indicate what information is missing."
682
-
683
- # 使用 normal 平台处理文档问答
712
+
713
+ prompt += """
714
+ # ❗ Important Rules
715
+ 1. Only use provided documents
716
+ 2. Be precise and accurate
717
+ 3. Quote sources when relevant
718
+ 4. Indicate missing information
719
+ 5. Maintain professional tone
720
+ 6. Answer in user's language
721
+ """
722
+
684
723
  model = PlatformRegistry.get_global_platform_registry().get_normal_platform()
685
- response = model.chat_until_success(prompt)
686
-
687
- return response
724
+ return model.chat_until_success(prompt)
688
725
 
689
726
  except Exception as e:
690
727
  PrettyOutput.print(f"回答失败:{str(e)}", OutputType.ERROR)
@@ -46,24 +46,49 @@ def process_request(request: str) -> Optional[str]:
46
46
  current_path = os.getcwd()
47
47
 
48
48
  # Set system prompt
49
- system_message = f"""You are a shell command generation assistant.
49
+ system_message = """
50
+ # 🤖 Role Definition
51
+ You are a shell command generation expert who converts natural language requirements into precise shell commands.
50
52
 
51
- Your only task is to convert user's natural language requirements into corresponding shell commands.
53
+ # 🎯 Core Responsibilities
54
+ - Convert natural language to shell commands
55
+ - Generate accurate and efficient commands
56
+ - Follow strict output format rules
57
+ - Maintain command simplicity
52
58
 
53
- Strict requirements:
54
- 1. Only return the shell command itself
55
- 2. Do not add any markers (like ```, /**/, // etc.)
56
- 3. Do not add any explanations or descriptions
57
- 4. Do not add any line breaks or extra spaces
58
- 5. If multiple commands are needed, connect them with &&
59
+ # 📋 Output Requirements
60
+ ## Format Rules
61
+ 1. Return ONLY the command
62
+ 2. NO markers (```, /*, //)
63
+ 3. NO explanations
64
+ 4. NO line breaks
65
+ 5. NO extra spaces
66
+ 6. Multiple commands: use &&
59
67
 
60
- Example input:
61
- "Find all Python files in the current directory"
68
+ ## Command Style
69
+ - Use standard shell syntax
70
+ - Keep commands concise
71
+ - Follow best practices
72
+ - Ensure proper quoting
73
+ - Handle spaces correctly
62
74
 
63
- Example output:
64
- find . -name "*.py"
75
+ # 📝 Example Format
76
+ Input: "Find all Python files in the current directory"
77
+ Output: find . -name "*.py"
65
78
 
66
- Remember: Only return the command itself, without any additional content.
79
+ # Critical Rules
80
+ 1. ONLY output the command
81
+ 2. NO additional content
82
+ 3. NO formatting markers
83
+ 4. NO explanations
84
+ 5. ONE line only
85
+
86
+ # 💡 Command Guidelines
87
+ - Use standard tools
88
+ - Prefer portable syntax
89
+ - Handle edge cases
90
+ - Escape special chars
91
+ - Quote when needed
67
92
  """
68
93
  model.set_system_message(system_message)
69
94
 
@@ -13,7 +13,10 @@ from jarvis.jarvis_utils import OutputType, PrettyOutput, get_context_token_coun
13
13
 
14
14
 
15
15
  tool_call_help = """
16
- Tool Usage Format
16
+ # 🛠️ Tool Usage System
17
+ You are using a tool execution system that requires precise formatting and strict rules.
18
+
19
+ # 📋 Tool Call Format
17
20
  <TOOL_CALL>
18
21
  name: tool_name
19
22
  arguments:
@@ -21,31 +24,51 @@ arguments:
21
24
  param2: value2
22
25
  </TOOL_CALL>
23
26
 
24
- STRICT RULES:
25
- - EXECUTE ONLY ONE TOOL AT EVERY TURN
26
- - TOOL EXECUTION MUST STRICTLY FOLLOW THE TOOL USAGE FORMAT
27
- - WAIT FOR USER TO PROVIDE EXECUTION RESULTS
28
- - DON'T ASSUME OR IMAGINE RESULTS
29
- - DON'T CREATE FAKE DIALOGUES
30
- - IF CURRENT INFORMATION IS INSUFFICIENT, YOU MAY ASK THE USER FOR MORE INFORMATION
31
- - NOT ALL PROBLEM-SOLVING STEPS ARE MANDATORY, SKIP AS APPROPRIATE
32
- - Request user guidance when multiple iterations show no progress
33
- - ALWAYS use | syntax for string parameters to prevent parsing errors
34
- Example:
35
- <TOOL_CALL>
36
- name: execute_shell
37
- arguments:
38
- command: |
39
- git status --porcelain
40
- </TOOL_CALL>
41
- <TOOL_CALL>
42
- name: execute_shell
43
- arguments:
44
- command: |
45
- git commit -m "fix bug"
46
- </TOOL_CALL>
47
-
48
- - If you can start executing the task, please start directly without asking the user if you can begin.
27
+ # ❗ Critical Rules
28
+ 1. ONE Tool Per Turn
29
+ - Execute only ONE tool at a time
30
+ - Wait for results before next action
31
+
32
+ 2. Strict Format Adherence
33
+ - Follow exact format shown above
34
+ - Use proper YAML indentation
35
+ - Include all required parameters
36
+
37
+ 3. Result Handling
38
+ - Wait for execution results
39
+ - Never assume outcomes
40
+ - Don't create fake responses
41
+ - Don't imagine dialogues
42
+
43
+ 4. Information Management
44
+ - Ask user if info is insufficient
45
+ - Skip unnecessary steps
46
+ - Request guidance if stuck
47
+ - Don't proceed with incomplete info
48
+
49
+ # 📝 String Parameter Format
50
+ ALWAYS use | syntax for string parameters:
51
+
52
+ <TOOL_CALL>
53
+ name: execute_shell
54
+ arguments:
55
+ command: |
56
+ git status --porcelain
57
+ </TOOL_CALL>
58
+
59
+ # 💡 Best Practices
60
+ - Start execution immediately when ready
61
+ - No need to ask for permission to begin
62
+ - Use proper string formatting
63
+ - Monitor progress and adjust
64
+ - Request help when stuck
65
+
66
+ # ⚠️ Common Mistakes to Avoid
67
+ - Multiple tool calls at once
68
+ - Missing | for string parameters
69
+ - Assuming tool results
70
+ - Creating fictional dialogues
71
+ - Proceeding without required info
49
72
  """
50
73
 
51
74
  class ToolRegistry(OutputHandler):
@@ -244,7 +267,10 @@ class ToolRegistry(OutputHandler):
244
267
  args = tool_call["arguments"]
245
268
 
246
269
  tool_call_help = """
247
- Tool Usage Format:
270
+ # 🛠️ Tool Usage System
271
+ You are using a tool execution system that requires precise formatting and strict rules.
272
+
273
+ # 📋 Tool Call Format
248
274
 
249
275
  <TOOL_CALL>
250
276
  name: tool_name
@@ -252,6 +278,52 @@ arguments:
252
278
  param1: value1
253
279
  param2: value2
254
280
  </TOOL_CALL>
281
+
282
+ # ❗ Critical Rules
283
+ 1. ONE Tool Per Turn
284
+ - Execute only ONE tool at a time
285
+ - Wait for results before next action
286
+
287
+ 2. Strict Format Adherence
288
+ - Follow exact format shown above
289
+ - Use proper YAML indentation
290
+ - Include all required parameters
291
+
292
+ 3. Result Handling
293
+ - Wait for execution results
294
+ - Never assume outcomes
295
+ - Don't create fake responses
296
+ - Don't imagine dialogues
297
+
298
+ 4. Information Management
299
+ - Ask user if info is insufficient
300
+ - Skip unnecessary steps
301
+ - Request guidance if stuck
302
+ - Don't proceed with incomplete info
303
+
304
+ # 📝 String Parameter Format
305
+ ALWAYS use | syntax for string parameters:
306
+
307
+ <TOOL_CALL>
308
+ name: execute_shell
309
+ arguments:
310
+ command: |
311
+ git status --porcelain
312
+ </TOOL_CALL>
313
+
314
+ # 💡 Best Practices
315
+ - Start execution immediately when ready
316
+ - No need to ask for permission to begin
317
+ - Use proper string formatting
318
+ - Monitor progress and adjust
319
+ - Request help when stuck
320
+
321
+ # ⚠️ Common Mistakes to Avoid
322
+ - Multiple tool calls at once
323
+ - Missing | for string parameters
324
+ - Assuming tool results
325
+ - Creating fictional dialogues
326
+ - Proceeding without required info
255
327
  """
256
328
 
257
329
  if isinstance(args, str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.1.116
3
+ Version: 0.1.118
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -1,20 +1,21 @@
1
- jarvis/__init__.py,sha256=auL2YXQX-_S1mgO9Yyo0mfHN657i7dn_WX2B-daZ5gc,51
2
- jarvis/jarvis_agent/__init__.py,sha256=949RsfwtecmezrWWU5VNCUbMZx2FXDToZBuHopEiRtc,21599
1
+ jarvis/__init__.py,sha256=pldnDiA6Ptlt4JRbZTIl8LsJJu4e1uAw6zK0WJbtrPA,51
2
+ jarvis/jarvis_agent/__init__.py,sha256=g5ig3AdJeR4ANY5hKpmtFr843vgTlxb5WoSc-6FBFkM,21618
3
3
  jarvis/jarvis_agent/output_handler.py,sha256=kJeFTjjSu0K_2p0wyhq2veSZuhRXoaFC_8wVaoBKX0w,401
4
4
  jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- jarvis/jarvis_code_agent/code_agent.py,sha256=F7SifQk7M-M8HUf8MORFqgNI8MVZIAHPAckCgCnJHtQ,7795
5
+ jarvis/jarvis_code_agent/code_agent.py,sha256=D8og7lZ5j1eKNNz-kY2E5YM-MsiuFzJvCuJZc7Kz3J8,7630
6
6
  jarvis/jarvis_code_agent/file_select.py,sha256=uxNA0ODy7NHMDNnCS9tFhttQ-omILUya7OjX3WuhSfo,8850
7
- jarvis/jarvis_code_agent/patch.py,sha256=Xhaa_OOrZRC9WuDD9LvR5YPJdVekOyuiYlesIoU6ITE,5375
8
- jarvis/jarvis_code_agent/relevant_files.py,sha256=0woLVR0umeIoi2kVCjz1gTJODEyP57Z_SzktunuitdE,3330
7
+ jarvis/jarvis_code_agent/patch.py,sha256=i4AZYoxwv0igeC5oe9ls5mwYVNdcnL-yzOkcshKC-JM,6355
8
+ jarvis/jarvis_code_agent/relevant_files.py,sha256=u9wae9sn-XLaUoSK69-LRLomHWcE-K1y7W10BFdmQVE,3402
9
9
  jarvis/jarvis_codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- jarvis/jarvis_codebase/main.py,sha256=1kJ4c2qG9j0tZfUmYB-FEYr5QoAkgs4Rbr038L0usf4,39336
10
+ jarvis/jarvis_codebase/main.py,sha256=bvyYACCBNTrlJvaUCcJAJ8gUklKjy2HrMEfKjGYKtVQ,39779
11
+ jarvis/jarvis_dev/main.py,sha256=C8uLge20ZO9smGLUAvHjQlsWBOMI1HQ-WSSDBbdGGRk,21284
11
12
  jarvis/jarvis_lsp/base.py,sha256=_7pdbMKjdtYBW0DsRbjIodDHM3J7df-YgXHejN_WIrU,4490
12
13
  jarvis/jarvis_lsp/cpp.py,sha256=sYQHEl0FoVC5Iw2pJvvGKpeNLD95XjNuTOINvdZLgME,4986
13
14
  jarvis/jarvis_lsp/go.py,sha256=3soEuID2XV65zaxyR70RxNsvtm02l9PEZ46F_nsDdqY,5311
14
15
  jarvis/jarvis_lsp/python.py,sha256=_Vo2pPwVh_vAsyS0XowXMbT4Syd78naPEZj586bi004,4747
15
16
  jarvis/jarvis_lsp/registry.py,sha256=x7OFlW10AWQ_tWEbHWkdpngoFHTP3t1vSyGxVVLk46w,9933
16
17
  jarvis/jarvis_lsp/rust.py,sha256=ZvUoOZm9GWLl3kobfByBuTGrQ8aM2dLuNxS_NHr1aQQ,5542
17
- jarvis/jarvis_multi_agent/__init__.py,sha256=-NY3KqwFjEcSUICXn99aiZIg7fBK9wuZo8uZhxHY45E,6087
18
+ jarvis/jarvis_multi_agent/__init__.py,sha256=Z6QaRZrqUUa6r6Pe_KZi34Ymle5amQe1N-AINxiOi1c,6011
18
19
  jarvis/jarvis_platform/__init__.py,sha256=mrOt67nselz_H1gX9wdAO4y2DY5WPXzABqJbr5Des8k,63
19
20
  jarvis/jarvis_platform/ai8.py,sha256=AO42OVzrwQMDY74TR2B4gtrsfeRVxJRf5OmHBM3cVQY,11948
20
21
  jarvis/jarvis_platform/base.py,sha256=8iYNCe7PGSs9sDG66jeNDr2TYzWUYBiGVvKgHTDsFLg,2641
@@ -27,9 +28,9 @@ jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
27
28
  jarvis/jarvis_platform_manager/main.py,sha256=Ja0f-PiYxABIj-Ioh9NNZuqy0dB2Jk7dhrObgzgXApw,20958
28
29
  jarvis/jarvis_platform_manager/openai_test.py,sha256=BAoZgOJ431gjjbbdgiX-ARfI0aLXK_cRLAQQJzQI6MI,5200
29
30
  jarvis/jarvis_rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- jarvis/jarvis_rag/main.py,sha256=U5h8PbVatNuZ5uFpXNV77W3TXSOGG8CrZ3huqfpPre0,31326
31
+ jarvis/jarvis_rag/main.py,sha256=2Nq5d5DBXdZ35_KEeHkdKJPFzxKgxt9bkwp1PMHpLzI,31754
31
32
  jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- jarvis/jarvis_smart_shell/main.py,sha256=73tSL1nCXNCPGXeLAiFq6cckv3ot5Vt5QyPkSAXhMcE,4038
33
+ jarvis/jarvis_smart_shell/main.py,sha256=ZD_rqV-2S3xA1jW1TPEzM4PHLBYOjZFtgJZxHpZZ0TE,4476
33
34
  jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
35
  jarvis/jarvis_tools/ask_codebase.py,sha256=MF7zeBqVDa7T45JxDR9mePA92kzZm5bQ9op8o5Qo9lM,3003
35
36
  jarvis/jarvis_tools/ask_user.py,sha256=tIyiKk9F8xchjQ3Yh5fMQjhpflQTuh75HTuXMftGxZY,1827
@@ -51,14 +52,14 @@ jarvis/jarvis_tools/methodology.py,sha256=JvHV6rHhC6fbPuSqC6UHFaGEE39d4g7zFLodR7
51
52
  jarvis/jarvis_tools/rag.py,sha256=ZhmvwVUHBFsttDRdVncc-S-a-XVOy5jbdNd7Vk4uTlk,4942
52
53
  jarvis/jarvis_tools/read_code.py,sha256=rt5m-bcXY0W-WLrGgr5xG08KxB1nNGD5UD0TSj7v7lg,6826
53
54
  jarvis/jarvis_tools/read_webpage.py,sha256=7QamwBi5s7lD-jTcjD0wsBvkmWPRC9-K-0JkGgeTpvs,3063
54
- jarvis/jarvis_tools/registry.py,sha256=Kvec2iS9FPm9yScn3ef68HjtvnM98hLesdA-5jTTWec,13232
55
+ jarvis/jarvis_tools/registry.py,sha256=XefDvujSfqKX2uLA6tnoJFg5kyBNW0iNAAJZocfIz9w,14836
55
56
  jarvis/jarvis_tools/search.py,sha256=NHrFpAqg6dtws_9wLJvIZimjeJ-kekETi0Bg0AWMG08,11437
56
57
  jarvis/jarvis_tools/select_code_files.py,sha256=242K79SiNF_gY7fpThY3xoi2ihfgJdjB27X1jKkeXK0,1889
57
58
  jarvis/jarvis_tools/tool_generator.py,sha256=jdniHyKcEyF9KyouudrCoZBH3czZmQXc3ns0_trZ3yU,6332
58
59
  jarvis/jarvis_utils/__init__.py,sha256=2GbATVP6NXe8obg2YYArNRAeSj0X4-GCULZrMiHh3fw,29885
59
- jarvis_ai_assistant-0.1.116.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
60
- jarvis_ai_assistant-0.1.116.dist-info/METADATA,sha256=JKKbhXVCkjyFGh6oo5txk5cv48exb112sNO7kWVJuwU,13701
61
- jarvis_ai_assistant-0.1.116.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
62
- jarvis_ai_assistant-0.1.116.dist-info/entry_points.txt,sha256=vjXpb5GC60FGbIqnVdr4hfoVzQQJLP_QRgNkkld5kPw,487
63
- jarvis_ai_assistant-0.1.116.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
64
- jarvis_ai_assistant-0.1.116.dist-info/RECORD,,
60
+ jarvis_ai_assistant-0.1.118.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
61
+ jarvis_ai_assistant-0.1.118.dist-info/METADATA,sha256=a4gMaF2av-L9FcCFNP3kJ4q9awwYdwIoiA-pDrL4Xvc,13701
62
+ jarvis_ai_assistant-0.1.118.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
63
+ jarvis_ai_assistant-0.1.118.dist-info/entry_points.txt,sha256=YgRAus5Rz4xVwB6DxWKokQd0zoKIjyRdyvmp8J5CI0w,528
64
+ jarvis_ai_assistant-0.1.118.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
65
+ jarvis_ai_assistant-0.1.118.dist-info/RECORD,,
@@ -3,6 +3,7 @@ jarvis = jarvis.jarvis_agent:main
3
3
  jarvis-code-agent = jarvis.jarvis_code_agent.code_agent:main
4
4
  jarvis-code-review = jarvis.jarvis_tools.code_review:main
5
5
  jarvis-codebase = jarvis.jarvis_codebase.main:main
6
+ jarvis-dev = jarvis.jarvis_dev.main:main
6
7
  jarvis-git-commit = jarvis.jarvis_tools.git_commiter:main
7
8
  jarvis-platform-manager = jarvis.jarvis_platform_manager.main:main
8
9
  jarvis-rag = jarvis.jarvis_rag.main:main