39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
from dataclasses import dataclass, field, is_dataclass
|
|
from typing import Type, TypedDict, Literal, Dict, List, Tuple, Optional
|
|
import tyro
|
|
import os.path as osp
|
|
from abc import ABC, abstractmethod
|
|
import glob
|
|
from loguru import logger
|
|
|
|
from deepagents.backends.utils import create_file_data
|
|
from deepagents.backends import LocalShellBackend
|
|
|
|
from lang_agent.config import InstantiateConfig
|
|
from lang_agent.fs_bkends import BaseFilesystemBackend
|
|
|
|
|
|
@tyro.conf.configure(tyro.conf.SuppressFixed)
|
|
@dataclass
|
|
class LocalShellConfig(InstantiateConfig):
|
|
_target:Type = field(default_factory=lambda:LocalShell)
|
|
|
|
workspace_dir:str = "./workspace"
|
|
"""path to workspace directory"""
|
|
|
|
skills_dir:str = "./workspace/skills"
|
|
"""path to directory containing skill files"""
|
|
|
|
rt_skills_dir:str = "/skills"
|
|
"""path to directory with skills in runtime directory"""
|
|
|
|
|
|
class LocalShell(BaseFilesystemBackend):
|
|
def __init__(self, config:LocalShellConfig):
|
|
self.config = config
|
|
self._build_backend()
|
|
|
|
def _build_backend(self):
|
|
self.backend = LocalShellBackend(root_dir=self.config.workspace_dir,
|
|
virtual_mode=True,
|
|
env={"PATH": "/usr/bin:/bin"}) |