main
py 58 lines 1.89 KB
Raw
1 from helpers.api import ApiHandler, Input, Output, Request, Response
2 from helpers import subagents
3 from typing import TYPE_CHECKING
4
5 if TYPE_CHECKING:
6 from helpers import projects
7
8 class Subagents(ApiHandler):
9 async def process(self, input: Input, request: Request) -> Output:
10 action = input.get("action", "")
11 ctxid = input.get("context_id", None)
12
13 if ctxid:
14 _context = self.use_context(ctxid)
15
16 try:
17 if action == "list":
18 data = self.get_subagents_list()
19 elif action == "load":
20 data = self.load_agent(input.get("name", None))
21 elif action == "save":
22 data = self.save_agent(input.get("name", None), input.get("data", None))
23 elif action == "delete":
24 data = self.delete_agent(input.get("name", None))
25 else:
26 raise Exception("Invalid action")
27
28 return {
29 "ok": True,
30 "data": data,
31 }
32 except Exception as e:
33 return {
34 "ok": False,
35 "error": str(e),
36 }
37
38 def get_subagents_list(self):
39 return subagents.get_agents_list()
40
41 def load_agent(self, name: str|None):
42 if name is None:
43 raise Exception("Subagent name is required")
44 return subagents.load_agent_data(name)
45
46 def save_agent(self, name:str|None, data: dict|None):
47 if name is None:
48 raise Exception("Subagent name is required")
49 if data is None:
50 raise Exception("Subagent data is required")
51 subagent = subagents.SubAgent(**data)
52 subagents.save_agent_data(name, subagent)
53 return subagents.load_agent_data(name)
54
55 def delete_agent(self, name: str|None):
56 if name is None:
57 raise Exception("Subagent name is required")
58 subagents.delete_agent_data(name)