Return non-agent directory names reserved by the app under the profile root.
These directories are created by the app for its own use and must never
appear in the agent picker — even if they contain an AGENTS.md file
(e.g. after dcode -a plugins stamps the marker via memory setup):
bin/ holds the managed rg binary when the shared installation
directory is unwritable (managed_tools.FALLBACK_BIN_DIR).plugins/ holds installed plugin state (_constants, re-exported by
plugins.store).conversation_history/ holds offloaded per-thread archives (offload).agent/ is deliberately absent: ProfilePaths.default_skills_dir names it,
but nothing reads that field yet, so reserving it would block a legitimate
agent name for a directory the app does not actually create.
Each name is derived from the module that owns it. That keeps a single
source of truth instead of a copy here. FALLBACK_BIN_DIR is the bin
constant that lives under the profile root. The preferred BIN_DIR is
installation-scoped. Deriving from BIN_DIR would reserve a profile name
from an unrelated path.
DEFAULT_PLUGIN_DIRNAME comes from _constants, not plugins.store.
Importing plugins.store loads the plugins package __init__, which
pulls in pydantic through plugins.models. This function runs on the
startup path, so that import would cost every launch about 65 ms.
The result is cached since the reserved set is constant for the process.