1- from PySide6 .QtCore import QStringListModel
21from PySide6 .QtWidgets import QCompleter
32from PySide6 .QtCore import Qt
43from AgentCrew .modules .llm .model_registry import ModelRegistry
54
65
76class GuiModelCompleter :
87 """GUI completer for model commands."""
9-
8+
109 def __init__ (self ):
1110 self .registry = ModelRegistry .get_instance ()
12-
11+
1312 def get_completions (self , text ):
1413 """Get model completions for GUI."""
1514 if not text .startswith ("/model " ):
1615 return []
17-
16+
1817 word_after_command = text [7 :] # Remove "/model "
19-
18+
2019 # Get all available models from the registry
2120 all_models = []
2221 for provider in self .registry .get_providers ():
2322 for model in self .registry .get_models_by_provider (provider ):
2423 all_models .append ((model .id , model .name , provider ))
25-
24+
2625 # Filter models based on what the user has typed
2726 completions = []
2827 for model_id , model_name , provider in all_models :
2928 if model_id .startswith (word_after_command ):
3029 completions .append (f"{ provider } /{ model_id } " )
31-
30+
3231 return completions
3332
3433
3534class GuiAgentCompleter :
3635 """GUI completer for agent commands."""
37-
36+
3837 def __init__ (self ):
3938 from AgentCrew .modules .agents .manager import AgentManager
39+
4040 self .agent_manager = AgentManager .get_instance ()
41-
41+
4242 def get_completions (self , text ):
4343 """Get agent completions for GUI."""
4444 if not text .startswith ("/agent " ):
4545 return []
46-
46+
4747 word_after_command = text [7 :] # Remove "/agent "
48-
48+
4949 # Get all available agents from the manager
5050 completions = []
5151 for agent_name , agent in self .agent_manager .agents .items ():
5252 if agent_name .startswith (word_after_command ):
5353 completions .append (agent_name )
54-
54+
5555 return completions
5656
5757
5858class GuiJumpCompleter :
5959 """GUI completer for jump commands."""
60-
60+
6161 def __init__ (self , message_handler = None ):
6262 self .message_handler = message_handler
63-
63+
6464 def get_completions (self , text ):
6565 """Get jump completions for GUI."""
6666 if not text .startswith ("/jump " ):
6767 return []
68-
68+
6969 word_after_command = text [6 :] # Remove "/jump "
70-
70+
7171 conversation_turns = (
7272 self .message_handler .conversation_turns if self .message_handler else []
7373 )
74-
74+
7575 completions = []
7676 for i , turn in enumerate (conversation_turns , 1 ):
7777 turn_str = str (i )
7878 if turn_str .startswith (word_after_command ):
7979 completions .append (turn_str )
80-
80+
8181 return completions
8282
8383
8484class GuiMCPCompleter :
8585 """GUI completer for MCP commands."""
86-
86+
8787 def __init__ (self , message_handler = None ):
8888 if message_handler :
8989 self .mcp_service = message_handler .mcp_manager .mcp_service
9090 else :
9191 self .mcp_service = None
92-
92+
9393 def get_completions (self , text ):
9494 """Get MCP completions for GUI."""
9595 if not text .startswith ("/mcp " ):
9696 return []
97-
97+
9898 word_after_command = text [5 :] # Remove "/mcp "
99-
99+
100100 completions = []
101101 if self .mcp_service and hasattr (self .mcp_service , "server_prompts" ):
102102 for server_id , prompts in self .mcp_service .server_prompts .items ():
@@ -106,17 +106,17 @@ def get_completions(self, text):
106106 full_name = f"{ server_id } /{ prompt_name } "
107107 if full_name .startswith (word_after_command ):
108108 completions .append (full_name )
109-
109+
110110 return completions
111111
112112
113113class GuiCommandCompleter :
114114 """GUI completer for all commands."""
115-
115+
116116 def __init__ (self ):
117117 self .commands = [
118118 "/clear" ,
119- "/copy" ,
119+ "/copy" ,
120120 "/debug" ,
121121 "/think" ,
122122 "/consolidate" ,
@@ -131,30 +131,30 @@ def __init__(self):
131131 "/exit" ,
132132 "/quit" ,
133133 ]
134-
134+
135135 def get_completions (self , text ):
136136 """Get command completions for GUI."""
137137 if not text .startswith ("/" ):
138138 return []
139-
139+
140140 completions = []
141141 for command in self .commands :
142142 if command .startswith (text ):
143143 completions .append (command )
144-
144+
145145 return completions
146146
147147
148148class GuiChatCompleter :
149149 """Combined GUI completer for chat commands."""
150-
150+
151151 def __init__ (self , message_handler = None ):
152152 self .model_completer = GuiModelCompleter ()
153153 self .agent_completer = GuiAgentCompleter ()
154154 self .jump_completer = GuiJumpCompleter (message_handler )
155155 self .mcp_completer = GuiMCPCompleter (message_handler )
156156 self .command_completer = GuiCommandCompleter ()
157-
157+
158158 def get_completions (self , text ):
159159 """Get all completions for the given text."""
160160 if text .startswith ("/model " ):
@@ -169,7 +169,7 @@ def get_completions(self, text):
169169 return self .command_completer .get_completions (text )
170170 else :
171171 return []
172-
172+
173173 def create_qt_completer (self , parent = None ):
174174 """Create a QCompleter instance for Qt widgets."""
175175 completer = QCompleter (parent )
0 commit comments