Skip to content

Commit

Permalink
Fix workspace crashing (#5041)
Browse files Browse the repository at this point in the history
Signed-off-by: Merwane Hamadi <merwanehamadi@gmail.com>
  • Loading branch information
waynehamadi committed Jul 24, 2023
1 parent 7b4cd8c commit 60d0f5e
Show file tree
Hide file tree
Showing 8 changed files with 11 additions and 18 deletions.
5 changes: 2 additions & 3 deletions agbenchmark/benchmarks.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ def bootstrap_agent(task, continuous_mode) -> Agent:
config.plain_output = True
command_registry = get_command_registry(config)
config.memory_backend = "no_memory"
Workspace.set_workspace_directory(config)
Workspace.build_file_logger_path(config, config.workspace_path)
config.workspace_path = Workspace.set_workspace_directory(config)
config.file_logger_path = Workspace.build_file_logger_path(config.workspace_path)
ai_config = AIConfig(
ai_name="Auto-GPT",
ai_role="a multi-purpose AI assistant.",
Expand All @@ -41,7 +41,6 @@ def bootstrap_agent(task, continuous_mode) -> Agent:
ai_config=ai_config,
config=config,
triggering_prompt=DEFAULT_TRIGGERING_PROMPT,
workspace_directory=str(config.workspace_path),
)


Expand Down
4 changes: 1 addition & 3 deletions autogpt/agents/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import json
import time
from datetime import datetime
from pathlib import Path
from typing import TYPE_CHECKING, Any, Optional

if TYPE_CHECKING:
Expand Down Expand Up @@ -37,7 +36,6 @@ def __init__(
command_registry: CommandRegistry,
memory: VectorMemory,
triggering_prompt: str,
workspace_directory: str | Path,
config: Config,
cycle_budget: Optional[int] = None,
):
Expand All @@ -52,7 +50,7 @@ def __init__(
self.memory = memory
"""VectorMemoryProvider used to manage the agent's context (TODO)"""

self.workspace = Workspace(workspace_directory, config.restrict_to_workspace)
self.workspace = Workspace(config.workspace_path, config.restrict_to_workspace)
"""Workspace that the agent has access to, e.g. for reading/writing files."""

self.created_at = datetime.now().strftime("%Y%m%d_%H%M%S")
Expand Down
7 changes: 4 additions & 3 deletions autogpt/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,12 @@ def run_auto_gpt(
# TODO: have this directory live outside the repository (e.g. in a user's
# home directory) and have it come in as a command line argument or part of
# the env file.
Workspace.set_workspace_directory(config, workspace_directory)
config.workspace_path = Workspace.set_workspace_directory(
config, workspace_directory
)

# HACK: doing this here to collect some globals that depend on the workspace.
Workspace.build_file_logger_path(config, config.workspace_path)
config.file_logger_path = Workspace.build_file_logger_path(config.workspace_path)

config.plugins = scan_plugins(config, config.debug_mode)
# Create a CommandRegistry instance and scan default folder
Expand Down Expand Up @@ -192,7 +194,6 @@ def run_auto_gpt(
memory=memory,
command_registry=command_registry,
triggering_prompt=DEFAULT_TRIGGERING_PROMPT,
workspace_directory=workspace_directory,
ai_config=ai_config,
config=config,
)
Expand Down
8 changes: 4 additions & 4 deletions autogpt/workspace/workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,21 +144,21 @@ def _sanitize_path(
return full_path

@staticmethod
def build_file_logger_path(config: Config, workspace_directory: Path):
def build_file_logger_path(workspace_directory: Path) -> str:
file_logger_path = workspace_directory / "file_logger.txt"
if not file_logger_path.exists():
with file_logger_path.open(mode="w", encoding="utf-8") as f:
f.write("File Operation Logger ")
config.file_logger_path = str(file_logger_path)
return str(file_logger_path)

@staticmethod
def set_workspace_directory(
config: Config, workspace_directory: Optional[str | Path] = None
) -> None:
) -> Path:
if workspace_directory is None:
workspace_directory = config.workdir / "auto_gpt_workspace"
elif type(workspace_directory) == str:
workspace_directory = Path(workspace_directory)
# TODO: pass in the ai_settings file and the env file and have them cloned into
# the workspace directory so we can bind them to the agent.
config.workspace_path = Workspace.make_workspace(workspace_directory)
return Workspace.make_workspace(workspace_directory)
1 change: 0 additions & 1 deletion docs/challenges/building_challenges.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ def kubernetes_agent(
config=ai_config,
next_action_count=0,
triggering_prompt=DEFAULT_TRIGGERING_PROMPT,
workspace_directory=workspace.root,
)

return agent
Expand Down
1 change: 0 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,4 @@ def agent(config: Config, workspace: Workspace) -> Agent:
ai_config=ai_config,
config=config,
triggering_prompt=DEFAULT_TRIGGERING_PROMPT,
workspace_directory=workspace.root,
)
1 change: 0 additions & 1 deletion tests/integration/agent_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ def dummy_agent(config: Config, memory_json_file, workspace: Workspace):
ai_config=ai_config,
config=config,
triggering_prompt="dummy triggering prompt",
workspace_directory=workspace.root,
)

return agent
2 changes: 0 additions & 2 deletions tests/unit/test_message_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,13 @@ def agent(config: Config):
command_registry = MagicMock()
ai_config = AIConfig(ai_name="Test AI")
triggering_prompt = "Triggering prompt"
workspace_directory = "workspace_directory"

agent = Agent(
memory=memory,
command_registry=command_registry,
ai_config=ai_config,
config=config,
triggering_prompt=triggering_prompt,
workspace_directory=workspace_directory,
)
return agent

Expand Down

0 comments on commit 60d0f5e

Please sign in to comment.