mirror of
https://github.com/HKUDS/OpenSpace.git
synced 2026-08-28 05:15:00 +00:00
107 lines
3.3 KiB
Python
107 lines
3.3 KiB
Python
"""Built-in OpenSpace tools that are not tied to a single backend module.
|
|
|
|
Imports are intentionally lazy. Some tools pull in heavier optional runtime
|
|
stacks (for example WebFetchTool -> LLMClient -> LiteLLM); importing this
|
|
package should not initialize those stacks when a caller only needs a different
|
|
tool module.
|
|
"""
|
|
|
|
from importlib import import_module
|
|
from typing import Any
|
|
|
|
|
|
_EXPORT_MODULES = {
|
|
"ASK_USER_QUESTION_TOOL_NAME": ".ask_user_tool",
|
|
"AskUserQuestionTool": ".ask_user_tool",
|
|
"AnswerAnnotation": ".ask_user_tool",
|
|
"BRIEF_TOOL_NAME": ".brief_tool",
|
|
"BriefTool": ".brief_tool",
|
|
"CONFIG_TOOL_NAME": ".config_tool",
|
|
"ConfigTool": ".config_tool",
|
|
"Question": ".ask_user_tool",
|
|
"QuestionOption": ".ask_user_tool",
|
|
"MemoryReadTool": ".memory_tools",
|
|
"MemoryTarget": ".memory_tools",
|
|
"MemoryWriteTool": ".memory_tools",
|
|
"LSP_TOOL_NAME": ".lsp_tool",
|
|
"LSPTool": ".lsp_tool",
|
|
"SCHEDULE_CRON_CREATE_TOOL_NAME": ".schedule_cron_tool",
|
|
"SCHEDULE_CRON_DELETE_TOOL_NAME": ".schedule_cron_tool",
|
|
"SCHEDULE_CRON_LIST_TOOL_NAME": ".schedule_cron_tool",
|
|
"ScheduleCronCreateTool": ".schedule_cron_tool",
|
|
"ScheduleCronDeleteTool": ".schedule_cron_tool",
|
|
"ScheduleCronListTool": ".schedule_cron_tool",
|
|
"SLEEP_TOOL_NAME": ".sleep_tool",
|
|
"SleepTool": ".sleep_tool",
|
|
"NOTEBOOK_EDIT_TOOL_ALIAS": ".notebook_edit_tool",
|
|
"ensure_memory_file": ".memory_tools",
|
|
"format_memory_targets": ".memory_tools",
|
|
"get_relative_memory_path": ".memory_tools",
|
|
"list_memory_targets": ".memory_tools",
|
|
"NOTEBOOK_EDIT_TOOL_NAME": ".notebook_edit_tool",
|
|
"NotebookEditTool": ".notebook_edit_tool",
|
|
"TaskGetTool": ".task_tools",
|
|
"TaskListTool": ".task_tools",
|
|
"TaskStopTool": ".task_tools",
|
|
"SendMessageTool": ".team_tools",
|
|
"TeamCreateTool": ".team_tools",
|
|
"TeamDeleteTool": ".team_tools",
|
|
"TodoItem": ".todo_tool",
|
|
"TodoWriteTool": ".todo_tool",
|
|
"TODO_WRITE_TOOL_NAME": ".todo_tool",
|
|
"WebFetchTool": ".web_fetch_tool",
|
|
"WebSearchTool": ".web_search_tool",
|
|
}
|
|
|
|
__all__ = [
|
|
"ASK_USER_QUESTION_TOOL_NAME",
|
|
"AskUserQuestionTool",
|
|
"AnswerAnnotation",
|
|
"BRIEF_TOOL_NAME",
|
|
"BriefTool",
|
|
"CONFIG_TOOL_NAME",
|
|
"ConfigTool",
|
|
"MemoryReadTool",
|
|
"MemoryTarget",
|
|
"MemoryWriteTool",
|
|
"LSP_TOOL_NAME",
|
|
"LSPTool",
|
|
"SCHEDULE_CRON_CREATE_TOOL_NAME",
|
|
"SCHEDULE_CRON_DELETE_TOOL_NAME",
|
|
"SCHEDULE_CRON_LIST_TOOL_NAME",
|
|
"ScheduleCronCreateTool",
|
|
"ScheduleCronDeleteTool",
|
|
"ScheduleCronListTool",
|
|
"SLEEP_TOOL_NAME",
|
|
"SleepTool",
|
|
"NOTEBOOK_EDIT_TOOL_ALIAS",
|
|
"NOTEBOOK_EDIT_TOOL_NAME",
|
|
"NotebookEditTool",
|
|
"Question",
|
|
"QuestionOption",
|
|
"SendMessageTool",
|
|
"TaskGetTool",
|
|
"TaskListTool",
|
|
"TaskStopTool",
|
|
"TeamCreateTool",
|
|
"TeamDeleteTool",
|
|
"TodoItem",
|
|
"TodoWriteTool",
|
|
"TODO_WRITE_TOOL_NAME",
|
|
"WebFetchTool",
|
|
"WebSearchTool",
|
|
"ensure_memory_file",
|
|
"format_memory_targets",
|
|
"get_relative_memory_path",
|
|
"list_memory_targets",
|
|
]
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
module_name = _EXPORT_MODULES.get(name)
|
|
if module_name is None:
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
module = import_module(module_name, __name__)
|
|
value = getattr(module, name)
|
|
globals()[name] = value
|
|
return value
|