ba6f016d49
- Extract MetadataStore from SubtitleMetadataStore (alfred/infrastructure/metadata/).
Generic load/save + typed update helpers (update_parse, update_probe, update_tmdb)
for the per-release .alfred/metadata.yaml.
- SubtitleMetadataStore becomes a thin facade — owns subtitle_history shape,
delegates I/O to MetadataStore.
- Agent._execute_tool_call auto-persists successful analyze_release / probe_media /
find_media_imdb_id results to the release's .alfred file. find_media_imdb_id
follows release_focus when it has no path argument.
- New tools:
· read_release_metadata(release_path) — cacheable, key=release_path.
Returns the .alfred content or has_metadata=false.
· query_library(name) — substring scan across configured library roots.
- Both new tools added to CORE_TOOLS (always visible).
55 lines
1.8 KiB
YAML
55 lines
1.8 KiB
YAML
name: query_library
|
|
|
|
summary: >
|
|
Find release folders across all configured library roots whose name
|
|
contains a substring (case-insensitive).
|
|
|
|
description: |
|
|
Scans every configured library root (movies, tv_shows, …) at depth 1
|
|
and returns folders whose name contains the query. For each match,
|
|
reports whether a `.alfred/metadata.yaml` exists — handy to spot
|
|
releases that have not been inspected yet. Does not recurse into
|
|
seasons / episodes; one entry per release folder.
|
|
|
|
when_to_use: |
|
|
- To answer "do I already have X?" without listing whole library
|
|
roots one by one.
|
|
- To pick the release_path to feed read_release_metadata or any
|
|
inspector tool.
|
|
|
|
when_not_to_use: |
|
|
- To list the *whole* library — that scan should live behind a
|
|
dedicated tool (not implemented yet).
|
|
- To browse a single root — use list_folder instead, it's cheaper
|
|
and doesn't open every library.
|
|
|
|
next_steps: |
|
|
- When one match is found: feed its path to read_release_metadata or
|
|
analyze_release.
|
|
- When several match: surface the indexed list to the user and ask
|
|
which one they mean.
|
|
|
|
parameters:
|
|
name:
|
|
description: Case-insensitive substring of the release name to look for.
|
|
why_needed: |
|
|
Library folders are named after the release (Title.Year.... or
|
|
Title (Year)). A substring is enough to catch typical user
|
|
phrasings ("foundation", "inception 2010").
|
|
example: foundation
|
|
|
|
returns:
|
|
ok:
|
|
description: Scan completed (possibly zero matches).
|
|
fields:
|
|
status: "'ok'"
|
|
query: The query string as received.
|
|
match_count: Number of matching folders.
|
|
matches: "List of {collection, name, path, has_metadata}."
|
|
|
|
error:
|
|
description: Scan could not run.
|
|
fields:
|
|
error: Short error code (no_libraries, empty_name).
|
|
message: Human-readable explanation.
|