The marketplace install screen now turns the installer's new failure reasons into error messages. A plugin-directory-unavailable failure shows a general "Failed to install plugin" message. The success message is now built by a helper that can add a note about copies of the plugin in other projects.
The install flow, including bulk installs of several plugins, now tells the installer which part of Claude Code started it (a surface value). The tengu_plugin_installed and tengu_plugin_install_failed telemetry events gain surface and replaced fields, and the record of installed plugins can now store a directoryRepositoryKey.
A failed install now ends with a message on screen instead of an unhandled reason. A dependency directory that cannot be reached is reported only as a general failure, so the message itself will not tell you which dependency caused it.
The finding does not say which `surface` values exist or where each one comes from.