tool_pool.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. from .models import PortingModule
  4. from .permissions import ToolPermissionContext
  5. from .tools import get_tools
  6. @dataclass(frozen=True)
  7. class ToolPool:
  8. tools: tuple[PortingModule, ...]
  9. simple_mode: bool
  10. include_mcp: bool
  11. def as_markdown(self) -> str:
  12. lines = [
  13. '# Tool Pool',
  14. '',
  15. f'Simple mode: {self.simple_mode}',
  16. f'Include MCP: {self.include_mcp}',
  17. f'Tool count: {len(self.tools)}',
  18. ]
  19. lines.extend(f'- {tool.name} — {tool.source_hint}' for tool in self.tools[:15])
  20. return '\n'.join(lines)
  21. def assemble_tool_pool(
  22. simple_mode: bool = False,
  23. include_mcp: bool = True,
  24. permission_context: ToolPermissionContext | None = None,
  25. ) -> ToolPool:
  26. return ToolPool(
  27. tools=get_tools(simple_mode=simple_mode, include_mcp=include_mcp, permission_context=permission_context),
  28. simple_mode=simple_mode,
  29. include_mcp=include_mcp,
  30. )