CI / lint (push) Successful in 57s
CI / security (push) Successful in 39s
CI / test (push) Successful in 1m12s
CI / build (push) Successful in 36s
CI / e2e (push) Successful in 10m22s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
Le .gitignore exclut _*.py, donc backend/tools/__init__.py n'etait pas versionne et la CI echouait a l'import (unknown location). Remplacement par une facade api.py qui enregistre les outils et reexporte l'API publique. Tests adaptes.
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
"""Public facade for the AI tool layer.
|
|
|
|
Importing this module registers all built-in tools (via
|
|
``backend.tools.service``) and re-exports the public API. Consumers (agent
|
|
loop, MCP server, tests) should import from here rather than from individual
|
|
submodules.
|
|
|
|
Note: ObsiGate uses implicit namespace packages (no tracked ``__init__.py``,
|
|
which ``.gitignore`` excludes via ``_*.py``), hence this explicit facade.
|
|
"""
|
|
|
|
from backend.tools import service as _service # noqa: F401 (registers tools)
|
|
from backend.tools.context import (
|
|
ToolConfirmationRequired,
|
|
ToolContext,
|
|
ToolError,
|
|
ToolMode,
|
|
ToolNotFoundError,
|
|
ToolPermissionError,
|
|
ToolRisk,
|
|
ToolScope,
|
|
ToolValidationError,
|
|
resolve_safe_path,
|
|
)
|
|
from backend.tools.registry import (
|
|
ToolSpec,
|
|
call_tool,
|
|
get_tool,
|
|
get_tool_schemas,
|
|
list_tools,
|
|
tool,
|
|
)
|
|
from backend.tools.schemas import ToolResult
|
|
|
|
__all__ = [
|
|
"ToolConfirmationRequired",
|
|
"ToolContext",
|
|
"ToolError",
|
|
"ToolMode",
|
|
"ToolNotFoundError",
|
|
"ToolPermissionError",
|
|
"ToolResult",
|
|
"ToolRisk",
|
|
"ToolScope",
|
|
"ToolSpec",
|
|
"ToolValidationError",
|
|
"call_tool",
|
|
"get_tool",
|
|
"get_tool_schemas",
|
|
"list_tools",
|
|
"resolve_safe_path",
|
|
"tool",
|
|
]
|