mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-07 06:42:39 +02:00
Add shared tool permission types and markdown file reader.
This commit is contained in:
parent
30cd530ac6
commit
77f52af6cc
2 changed files with 53 additions and 0 deletions
|
|
@ -0,0 +1,14 @@
|
||||||
|
"""Load markdown files shipped alongside a route package."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from importlib import resources
|
||||||
|
|
||||||
|
|
||||||
|
def read_md_file(package: str, stem: str) -> str:
|
||||||
|
"""Load ``{stem}.md`` from ``package`` via importlib resources, or return empty."""
|
||||||
|
ref = resources.files(package).joinpath(f"{stem}.md")
|
||||||
|
if not ref.is_file():
|
||||||
|
return ""
|
||||||
|
text = ref.read_text(encoding="utf-8")
|
||||||
|
return text.rstrip("\n")
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
"""Typed tool-permission rows: allow vs ask (``name`` + optional ``tool``)."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import NotRequired, TypedDict
|
||||||
|
|
||||||
|
from langchain_core.tools import BaseTool
|
||||||
|
|
||||||
|
|
||||||
|
class ToolPermissionItem(TypedDict):
|
||||||
|
"""``name`` is always set; ``tool`` is present when a bound tool exists."""
|
||||||
|
|
||||||
|
name: str
|
||||||
|
tool: NotRequired[BaseTool]
|
||||||
|
|
||||||
|
|
||||||
|
class ToolsPermissions(TypedDict):
|
||||||
|
"""Same shape for native factories and MCP name-only policy rows."""
|
||||||
|
|
||||||
|
allow: list[ToolPermissionItem]
|
||||||
|
ask: list[ToolPermissionItem]
|
||||||
|
|
||||||
|
|
||||||
|
def tool_permission_row(tool: BaseTool) -> ToolPermissionItem:
|
||||||
|
"""Build one allow/ask row for a loaded tool."""
|
||||||
|
return {"name": getattr(tool, "name", "") or "", "tool": tool}
|
||||||
|
|
||||||
|
|
||||||
|
def merge_tools_permissions(
|
||||||
|
base: ToolsPermissions,
|
||||||
|
extra: ToolsPermissions | None,
|
||||||
|
) -> ToolsPermissions:
|
||||||
|
"""Concatenate allow/ask lists (e.g. native factory + MCP bucket) before building HITL maps."""
|
||||||
|
if not extra:
|
||||||
|
return base
|
||||||
|
return {
|
||||||
|
"allow": [*base["allow"], *extra["allow"]],
|
||||||
|
"ask": [*base["ask"], *extra["ask"]],
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue