cleanup

frdel committed Jun 12, 2025 at 16:39 UTC 490f469ca7041b02b6e2957c1ee6c9f33808fd09
11 files changed +163 -240
prompts/hacker/agent.system.main.environment.md new
+7
@@ -0,0 +1,7 @@
1 +## Environment
2 +live in kali linux docker container use debian kali packages
3 +agent zero framework is python project in /a0 folder
4 +linux fully root accessible via terminal
5 +utilize kali hacking tools for job
6 +wordlists need downloading
7 +consider fact running in docker for network operations
\ No newline at end of file
prompts/reflection/agent.system.main.communication.md deleted
-28
@@ -1,28 +0,0 @@
1 -
2 -## Communication
3 -
4 -respond valid json with fields
5 -thoughts: decompose ➔ create decision trees ➔ forest of thoughts
6 -reflection: question logical frameworks ➔ refine thoughts ➔ perform metareflection
7 -math requires katex $...$ delims, only use in response tool
8 -tool_name: use tool name
9 -tool_args: key value pairs tool arguments
10 -no other text
11 -
12 -### Response example
13 -
14 -~~~json
15 -{
16 - "thoughts": [
17 - "...",
18 - ],
19 - "reflection": [
20 - "...",
21 - ],
22 - "tool_name": "name_of_tool",
23 - "tool_args": {
24 - "arg1": "val1",
25 - "arg2": "val2"
26 - }
27 -}
28 -~~~
prompts/reflection/agent.system.main.solving.md deleted
-36
@@ -1,36 +0,0 @@
1 -## Problem solving
2 -
3 -0 think
4 -thoughts: decision trees forming
5 -never assume always verify
6 -model missing variables
7 -reflection: metareflection
8 -reflect and adapt
9 -
10 -
11 -1 check memories solutions instruments prefer instruments
12 -
13 -2 use knowledge_tool for online sources
14 -seek simple solutions compatible with tools
15 -prefer opensource python nodejs terminal tools
16 -
17 -3 refine
18 -validate widen approach
19 -prefer simple compatible solutions
20 -favor open-source Python Node.js Linux terminal tools
21 -
22 -4 solve or delegate
23 -tools solve subtasks
24 -you can use subordinates for specific subtasks
25 -call_subordinate tool
26 -always describe role for new subordinate
27 -they must execute their assigned tasks
28 -
29 -5 task reporting
30 -consolidate explain status
31 -present results verify with tools
32 -don't accept failure retry with fixes be high-agency
33 -save useful info with memorize tool
34 -fullfil initial user task
35 -response_tool reports final result
36 -responses need response_tool
prompts/reflection/agent.system.main.tips.md deleted
-20
@@ -1,20 +0,0 @@
1 -
2 -## General operation manual
3 -
4 -reason refine execute tasks
5 -avoid repetition ensure progress
6 -never assume success
7 -memory refers to knowledge_tool and memorize_tool not own knowledge
8 -beware cognitive biases
9 -
10 -## Instruments
11 -
12 -instruments are programs to solve tasks
13 -instrument descriptions in prompt executed with code_execution_tool
14 -
15 -## Best practices
16 -
17 -python nodejs linux libraries for solutions
18 -use tools to simplify tasks
19 -sometimes tools are unnecessary
20 -never rely on aging memories like time date etc
python/helpers/tunnel_manager.py
+1 -1
@@ -35,7 +35,7 @@ class TunnelManager:
35 config = FlareConfig(port=port, verbose=True)
36 self.tunnel = FlareTunnel(config)
37 else: # Default to serveo
38 - config = ServeoConfig(port=port)
38 + config = ServeoConfig(port=port) # type: ignore
39 self.tunnel = ServeoTunnel(config)
40
41 self.tunnel.start()
python/tools/browser._py new
+61
@@ -0,0 +1,61 @@
1 +# import asyncio
2 +# from dataclasses import dataclass
3 +# import time
4 +# from python.helpers.tool import Tool, Response
5 +# from python.helpers import files, rfc_exchange
6 +# from python.helpers.print_style import PrintStyle
7 +# from python.helpers.browser import Browser as BrowserManager
8 +# import uuid
9 +
10 +
11 +# @dataclass
12 +# class State:
13 +# browser: BrowserManager
14 +
15 +
16 +# class Browser(Tool):
17 +
18 +# async def execute(self, **kwargs):
19 +# raise NotImplementedError
20 +
21 +# def get_log_object(self):
22 +# return self.agent.context.log.log(
23 +# type="browser",
24 +# heading=f"{self.agent.agent_name}: Using tool '{self.name}'",
25 +# content="",
26 +# kvps=self.args,
27 +# )
28 +
29 +# # async def after_execution(self, response, **kwargs):
30 +# # await self.agent.hist_add_tool_result(self.name, response.message)
31 +
32 +# async def save_screenshot(self):
33 +# await self.prepare_state()
34 +# path = files.get_abs_path("tmp/browser", f"{uuid.uuid4()}.png")
35 +# await self.state.browser.screenshot(path, True)
36 +# return "img://" + path
37 +
38 +# async def prepare_state(self, reset=False):
39 +# self.state = self.agent.get_data("_browser_state")
40 +# if not self.state or reset:
41 +# self.state = State(browser=BrowserManager())
42 +# self.agent.set_data("_browser_state", self.state)
43 +
44 +# def update_progress(self, text):
45 +# progress = f"Browser: {text}"
46 +# self.log.update(progress=text)
47 +# self.agent.context.log.set_progress(progress)
48 +
49 +# def cleanup_history(self):
50 +# def cleanup_message(msg):
51 +# if not msg.ai and isinstance(msg.content, dict) and "tool_name" in msg.content and str(msg.content["tool_name"]).startswith("browser_"):
52 +# if not msg.summary:
53 +# msg.summary = "browser content removed to save space"
54 +
55 +# for msg in self.agent.history.current.messages:
56 +# cleanup_message(msg)
57 +
58 +# for prev in self.agent.history.topics:
59 +# if not prev.summary:
60 +# for msg in prev.messages:
61 +# cleanup_message(msg)
python/tools/browser.py deleted
-61
@@ -1,61 +0,0 @@
1 -import asyncio
2 -from dataclasses import dataclass
3 -import time
4 -from python.helpers.tool import Tool, Response
5 -from python.helpers import files, rfc_exchange
6 -from python.helpers.print_style import PrintStyle
7 -from python.helpers.browser import Browser as BrowserManager
8 -import uuid
9 -
10 -
11 -@dataclass
12 -class State:
13 - browser: BrowserManager
14 -
15 -
16 -class Browser(Tool):
17 -
18 - async def execute(self, **kwargs):
19 - raise NotImplementedError
20 -
21 - def get_log_object(self):
22 - return self.agent.context.log.log(
23 - type="browser",
24 - heading=f"{self.agent.agent_name}: Using tool '{self.name}'",
25 - content="",
26 - kvps=self.args,
27 - )
28 -
29 - # async def after_execution(self, response, **kwargs):
30 - # await self.agent.hist_add_tool_result(self.name, response.message)
31 -
32 - async def save_screenshot(self):
33 - await self.prepare_state()
34 - path = files.get_abs_path("tmp/browser", f"{uuid.uuid4()}.png")
35 - await self.state.browser.screenshot(path, True)
36 - return "img://" + path
37 -
38 - async def prepare_state(self, reset=False):
39 - self.state = self.agent.get_data("_browser_state")
40 - if not self.state or reset:
41 - self.state = State(browser=BrowserManager())
42 - self.agent.set_data("_browser_state", self.state)
43 -
44 - def update_progress(self, text):
45 - progress = f"Browser: {text}"
46 - self.log.update(progress=text)
47 - self.agent.context.log.set_progress(progress)
48 -
49 - def cleanup_history(self):
50 - def cleanup_message(msg):
51 - if not msg.ai and isinstance(msg.content, dict) and "tool_name" in msg.content and str(msg.content["tool_name"]).startswith("browser_"):
52 - if not msg.summary:
53 - msg.summary = "browser content removed to save space"
54 -
55 - for msg in self.agent.history.current.messages:
56 - cleanup_message(msg)
57 -
58 - for prev in self.agent.history.topics:
59 - if not prev.summary:
60 - for msg in prev.messages:
61 - cleanup_message(msg)
python/tools/browser_do._py new
+64
@@ -0,0 +1,64 @@
1 +# import asyncio
2 +# from python.helpers.tool import Tool, Response
3 +# from python.tools.browser import Browser
4 +# from python.helpers.browser import NoPageError
5 +# import asyncio
6 +
7 +
8 +# class BrowserDo(Browser):
9 +
10 +# async def execute(self, fill=[], press=[], click=[], execute="", **kwargs):
11 +# await self.prepare_state()
12 +# result = ""
13 +# try:
14 +# if fill:
15 +# self.update_progress("Filling fields...")
16 +# for f in fill:
17 +# await self.state.browser.fill(f["selector"], f["text"])
18 +# await self.state.browser.wait(0.5)
19 +# if press:
20 +# self.update_progress("Pressing keys...")
21 +# if fill:
22 +# await self.state.browser.wait(1)
23 +# for p in press:
24 +# await self.state.browser.press(p)
25 +# await self.state.browser.wait(0.5)
26 +# if click:
27 +# self.update_progress("Clicking...")
28 +# if fill:
29 +# await self.state.browser.wait(1)
30 +# for c in click:
31 +# await self.state.browser.click(c)
32 +# await self.state.browser.wait(0.5)
33 +# if execute:
34 +# if fill or press or click:
35 +# await self.state.browser.wait(1)
36 +# self.update_progress("Executing...")
37 +# result = await self.state.browser.execute(execute)
38 +# self.log.update(result=result)
39 +
40 +# self.update_progress("Retrieving...")
41 +# await self.state.browser.wait_for_action()
42 +# dom = await self.state.browser.get_clean_dom()
43 +# if result:
44 +# response = f"Result:\n{result}\n\nDOM:\n{dom}"
45 +# else:
46 +# response = dom
47 +# self.update_progress("Taking screenshot...")
48 +# screenshot = await self.save_screenshot()
49 +# self.log.update(screenshot=screenshot)
50 +# except Exception as e:
51 +# response = str(e)
52 +# self.log.update(error=response)
53 +
54 +# try:
55 +# screenshot = await self.save_screenshot()
56 +# dom = await self.state.browser.get_clean_dom()
57 +# response = f"Error:\n{response}\n\nDOM:\n{dom}"
58 +# self.log.update(screenshot=screenshot)
59 +# except Exception:
60 +# pass
61 +
62 +# self.cleanup_history()
63 +# self.update_progress("Done")
64 +# return Response(message=response, break_loop=False)
python/tools/browser_do.py deleted
-64
@@ -1,64 +0,0 @@
1 -import asyncio
2 -from python.helpers.tool import Tool, Response
3 -from python.tools.browser import Browser
4 -from python.helpers.browser import NoPageError
5 -import asyncio
6 -
7 -
8 -class BrowserDo(Browser):
9 -
10 - async def execute(self, fill=[], press=[], click=[], execute="", **kwargs):
11 - await self.prepare_state()
12 - result = ""
13 - try:
14 - if fill:
15 - self.update_progress("Filling fields...")
16 - for f in fill:
17 - await self.state.browser.fill(f["selector"], f["text"])
18 - await self.state.browser.wait(0.5)
19 - if press:
20 - self.update_progress("Pressing keys...")
21 - if fill:
22 - await self.state.browser.wait(1)
23 - for p in press:
24 - await self.state.browser.press(p)
25 - await self.state.browser.wait(0.5)
26 - if click:
27 - self.update_progress("Clicking...")
28 - if fill:
29 - await self.state.browser.wait(1)
30 - for c in click:
31 - await self.state.browser.click(c)
32 - await self.state.browser.wait(0.5)
33 - if execute:
34 - if fill or press or click:
35 - await self.state.browser.wait(1)
36 - self.update_progress("Executing...")
37 - result = await self.state.browser.execute(execute)
38 - self.log.update(result=result)
39 -
40 - self.update_progress("Retrieving...")
41 - await self.state.browser.wait_for_action()
42 - dom = await self.state.browser.get_clean_dom()
43 - if result:
44 - response = f"Result:\n{result}\n\nDOM:\n{dom}"
45 - else:
46 - response = dom
47 - self.update_progress("Taking screenshot...")
48 - screenshot = await self.save_screenshot()
49 - self.log.update(screenshot=screenshot)
50 - except Exception as e:
51 - response = str(e)
52 - self.log.update(error=response)
53 -
54 - try:
55 - screenshot = await self.save_screenshot()
56 - dom = await self.state.browser.get_clean_dom()
57 - response = f"Error:\n{response}\n\nDOM:\n{dom}"
58 - self.log.update(screenshot=screenshot)
59 - except Exception:
60 - pass
61 -
62 - self.cleanup_history()
63 - self.update_progress("Done")
64 - return Response(message=response, break_loop=False)
python/tools/browser_open._py new
+30
@@ -0,0 +1,30 @@
1 +# import asyncio
2 +# from python.helpers.tool import Tool, Response
3 +# from python.tools import browser
4 +# from python.tools.browser import Browser
5 +
6 +
7 +# class BrowserOpen(Browser):
8 +
9 +# async def execute(self, url="", **kwargs):
10 +# self.update_progress("Initializing...")
11 +# await self.prepare_state()
12 +
13 +# try:
14 +# if url:
15 +# self.update_progress("Opening page...")
16 +# await self.state.browser.open(url)
17 +
18 +# self.update_progress("Retrieving...")
19 +# await self.state.browser.wait_for_action()
20 +# response = await self.state.browser.get_clean_dom()
21 +# self.update_progress("Taking screenshot...")
22 +# screenshot = await self.save_screenshot()
23 +# self.log.update(screenshot=screenshot)
24 +# except Exception as e:
25 +# response = str(e)
26 +# self.log.update(error=response)
27 +
28 +# self.cleanup_history()
29 +# self.update_progress("Done")
30 +# return Response(message=response, break_loop=False)
python/tools/browser_open.py deleted
-30
@@ -1,30 +0,0 @@
1 -import asyncio
2 -from python.helpers.tool import Tool, Response
3 -from python.tools import browser
4 -from python.tools.browser import Browser
5 -
6 -
7 -class BrowserOpen(Browser):
8 -
9 - async def execute(self, url="", **kwargs):
10 - self.update_progress("Initializing...")
11 - await self.prepare_state()
12 -
13 - try:
14 - if url:
15 - self.update_progress("Opening page...")
16 - await self.state.browser.open(url)
17 -
18 - self.update_progress("Retrieving...")
19 - await self.state.browser.wait_for_action()
20 - response = await self.state.browser.get_clean_dom()
21 - self.update_progress("Taking screenshot...")
22 - screenshot = await self.save_screenshot()
23 - self.log.update(screenshot=screenshot)
24 - except Exception as e:
25 - response = str(e)
26 - self.log.update(error=response)
27 -
28 - self.cleanup_history()
29 - self.update_progress("Done")
30 - return Response(message=response, break_loop=False)