Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ dependencies = [
'nltk',
'fastapi == 0.114.0',
'fastapi-utils == 0.7.0',
'jinja2 == 3.1.6',
'uvicorn[standard] == 0.30.6',
'dataclasses_json == 0.6.7',
'websockets == 13.1',
Expand Down
2 changes: 1 addition & 1 deletion src/hackingBuddyGPT/cli/wintermute.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import argparse
import sys

from hackingBuddyGPT.usecases.base import use_cases
from hackingBuddyGPT.usecases.usecase import use_cases
from hackingBuddyGPT.utils.configurable import CommandMap, InvalidCommand, Parseable, instantiate


Expand Down
59 changes: 58 additions & 1 deletion src/hackingBuddyGPT/strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
from dataclasses import dataclass
from mako.template import Template
from hackingBuddyGPT.capability import capabilities_to_simple_text_handler
from hackingBuddyGPT.usecases.base import UseCase
from hackingBuddyGPT.usecases.usecase import UseCase
from hackingBuddyGPT.utils import llm_util
from hackingBuddyGPT.utils.histories import HistoryCmdOnly, HistoryFull, HistoryNone
from hackingBuddyGPT.utils.openai.openai_lib import OpenAILib
from hackingBuddyGPT.utils.openai.openai_llm import OpenAIConnection
from hackingBuddyGPT.utils.logging import log_conversation, Logger, log_param, log_section
from hackingBuddyGPT.utils.capability_manager import CapabilityManager
Expand Down Expand Up @@ -140,3 +141,59 @@ def check_success(self, cmd:str, result:str) -> bool:

def postprocess_commands(self, cmd:str) -> List[str]:
return [cmd]

@dataclass
class SimpleStrategy(UseCase, abc.ABC):
max_turns: int = 10

llm: OpenAILib = None

log: Logger = log_param

_got_root: bool = False

_capabilities: CapabilityManager = None

def init(self):
super().init()
self._capabilities = CapabilityManager(self.log)

@abc.abstractmethod
def perform_round(self, turn: int):
pass

def before_run(self):
pass

def after_run(self):
pass

def run(self, configuration):
self.configuration = configuration
self.log.start_run(self.get_name(), self.serialize_configuration(configuration))

self.before_run()

turn = 1
try:
while turn <= self.max_turns and not self._got_root:
with self.log.section(f"round {turn}"):
self.log.console.log(f"[yellow]Starting turn {turn} of {self.max_turns}")

self._got_root = self.perform_round(turn)

turn += 1

self.after_run()

# write the final result to the database and console
if self._got_root:
self.log.run_was_success()
else:
self.log.run_was_failure("maximum turn number reached")

return self._got_root
except Exception:
import traceback
self.log.run_was_failure("exception occurred", details=f":\n\n{traceback.format_exc()}")
raise
124 changes: 0 additions & 124 deletions src/hackingBuddyGPT/usecases/agents.py

This file was deleted.

162 changes: 0 additions & 162 deletions src/hackingBuddyGPT/usecases/base.py

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from mako.template import Template

from hackingBuddyGPT.capabilities import SSHRunCommand
from hackingBuddyGPT.usecases.base import UseCase, use_case
from hackingBuddyGPT.usecases.usecase import UseCase, use_case
from hackingBuddyGPT.utils.connectors.ssh_connection import SSHConnection
from hackingBuddyGPT.utils.openai.openai_llm import OpenAIConnection

Expand Down
2 changes: 1 addition & 1 deletion src/hackingBuddyGPT/usecases/linux_privesc.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from hackingBuddyGPT.capabilities import SSHRunCommand, SSHTestCredential
from hackingBuddyGPT.strategies import CommandStrategy
from hackingBuddyGPT.usecases.base import use_case
from hackingBuddyGPT.usecases.usecase import use_case
from hackingBuddyGPT.utils import llm_util
from hackingBuddyGPT.utils.logging import log_conversation
from hackingBuddyGPT.utils.rag import RagBackground
Expand Down
Loading
Loading