File size: 1,413 Bytes
1397957
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from typing import Dict, Any, List, Optional
from .tool import BaseTool
import os
import importlib.util


class ToolRegistry:
    """๋„๊ตฌ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ - ๋„๊ตฌ ๋“ฑ๋ก ๋ฐ ๊ด€๋ฆฌ"""

    def __init__(self):
        self._tools: Dict[str, BaseTool] = {}

    def register(self, tool: BaseTool) -> None:
        """๋„๊ตฌ ๋“ฑ๋ก"""
        self._tools[tool.id] = tool

    def get(self, tool_id: str) -> Optional[BaseTool]:
        """๋„๊ตฌ ID๋กœ ์กฐํšŒ"""
        return self._tools.get(tool_id)

    def list(self) -> List[BaseTool]:
        """๋“ฑ๋ก๋œ ๋ชจ๋“  ๋„๊ตฌ ๋ชฉ๋ก ๋ฐ˜ํ™˜"""
        return list(self._tools.values())

    def get_schema(self) -> List[Dict[str, Any]]:
        """๋ชจ๋“  ๋„๊ตฌ์˜ ์Šคํ‚ค๋งˆ ๋ฐ˜ํ™˜"""
        return [tool.get_schema() for tool in self._tools.values()]

    def load_from_directory(self, path: str) -> None:
        """
        ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋„๊ตฌ๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œ
        (๋‚˜์ค‘์— ๊ตฌํ˜„ ๊ฐ€๋Šฅ - ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ)
        """
        if not os.path.exists(path):
            raise ValueError(f"Directory not found: {path}")

        # ํ–ฅํ›„ ๊ตฌํ˜„: .py ํŒŒ์ผ์„ ์Šค์บ”ํ•˜๊ณ  BaseTool ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ์ฐพ์•„ ์ž๋™ ๋“ฑ๋ก
        # ํ˜„์žฌ๋Š” placeholder
        pass


# ์ „์—ญ ์‹ฑ๊ธ€ํ†ค ์ธ์Šคํ„ด์Šค
_registry = ToolRegistry()


def get_registry() -> ToolRegistry:
    """์ „์—ญ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜"""
    return _registry