feat(markdown): prefer tool description in callout title

This commit is contained in:
hh
2026-08-07 18:24:06 +02:00
parent 7d1e0b365d
commit 0e7dc263ad
@@ -42,9 +42,11 @@ USER_SCAFFOLD = "### User:\n"
# contain ``` and we get language syntax highlighting in Obsidian for free.
FENCE = "````"
# Used when a tool input mentions a path/file we can dangle in the
# callout title — purely cosmetic.
_PATH_KEYS = ("path", "file", "filename", "url", "command", "query")
# Input keys we dangle after the tool name in the callout title, best
# first — purely cosmetic. ``description`` wins because when a tool
# offers one it's a human-written summary of the call, which beats a
# truncated shell command or path.
_TITLE_KEYS = ("description", "path", "file", "filename", "url", "command", "query")
def render_user_text(content: str) -> str:
@@ -114,9 +116,9 @@ def append_to_body(existing: str, new_block: str) -> str:
def summarize_tool_input(name: str, tool_input: object) -> str:
"""Build the ``[!tool]- <summary>`` title string.
Tries to pick a single salient field (``path``, ``command``, etc.)
from the input dict so the collapsed callout shows something
meaningful in Obsidian. Falls back to just the tool name.
Tries to pick a single salient field (``description``, ``path``,
``command``, etc.) from the input dict so the collapsed callout shows
something meaningful in Obsidian. Falls back to just the tool name.
"""
if not isinstance(tool_input, dict):
return name
@@ -125,7 +127,7 @@ def summarize_tool_input(name: str, tool_input: object) -> str:
# cast keeps the rest of the function readable without sprinkling
# per-line type narrowing on every ``.get`` call.
d = cast("dict[str, Any]", tool_input)
for key in _PATH_KEYS:
for key in _TITLE_KEYS:
value = d.get(key)
if isinstance(value, str) and value:
short = value if len(value) <= 60 else value[:57] + "..."