81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
"""
|
|
Watch History skill — fetch the user's Jellyfin watch history.
|
|
|
|
Currently a placeholder — returns a "coming soon" message.
|
|
The auth gate (`requires_auth=["jellyfin"]`) is already active:
|
|
users who haven't linked Jellyfin will be prompted to /login first.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from skills import Skill, register, ToolResult
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Tool definitions
|
|
# ---------------------------------------------------------------------------
|
|
|
|
TOOLS = [
|
|
{
|
|
"type": "function",
|
|
"function": {
|
|
"name": "watch_history",
|
|
"description": (
|
|
"Get the user's recent Jellyfin watch history — movies and TV "
|
|
"episodes they have watched, sorted by most recent. "
|
|
"Call this when a user asks about their watching activity."
|
|
),
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"limit": {
|
|
"type": "integer",
|
|
"description": "How many items to return (default 10, max 20)",
|
|
}
|
|
},
|
|
},
|
|
},
|
|
}
|
|
]
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Executor (placeholder)
|
|
# ---------------------------------------------------------------------------
|
|
|
|
async def _execute(tool_name: str, args: dict) -> ToolResult:
|
|
if tool_name == "watch_history":
|
|
return ToolResult.ok(
|
|
"👷 **Watch History — Coming Soon!**\n\n"
|
|
"This feature is currently being built. Soon you'll be able to "
|
|
"see your recently watched movies and TV episodes right here.\n\n"
|
|
"In the meantime, you can check your watch history directly in Jellyfin."
|
|
)
|
|
return ToolResult.fail(f"Unknown tool: {tool_name}")
|
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Skill registration
|
|
# ---------------------------------------------------------------------------
|
|
|
|
watch_history_skill = Skill(
|
|
name="watch_history",
|
|
description="User's Jellyfin watch history (coming soon)",
|
|
requires_auth=["jellyfin"],
|
|
prompt_fragment="""## Watch History
|
|
|
|
You can fetch the user's Jellyfin watch history with the `watch_history` tool.
|
|
Call it when users ask things like:
|
|
- "what have I watched?"
|
|
- "show my watch history"
|
|
- "what did I watch recently?"
|
|
- "what was the last movie I saw?"
|
|
- "what TV shows have I been watching?"
|
|
|
|
The tool is currently a **placeholder** — it returns a "coming soon" message.
|
|
Tell the user this feature is being worked on and will be available soon.""",
|
|
tools=TOOLS,
|
|
execute=_execute,
|
|
)
|
|
|
|
register(watch_history_skill)
|