Hmbown/CodeWhale · error · anyhow::Error
source is not a valid plugin bundle: no plugin.json, kimi.pl
Error message
source is not a valid plugin bundle: no plugin.json, kimi.plugin.json, or plugin.toml
What it means
Error "source is not a valid plugin bundle: no plugin.json, kimi.plugin.json, or plugin.toml" thrown in Hmbown/CodeWhale.
Source
Thrown at crates/tui/src/plugins/install/stage.rs:95
let name = validated.manifest.plugin.name.clone();
validate_skill_name_segment(&name).map_err(|error| {
anyhow::anyhow!("[plugin].name is not a safe directory name: {error:#}")
})?;
Ok((name, validated.content_hash))
}
/// Copy a local bundle directory into staging. Symlinks anywhere in the
/// source are rejected; a stale `.installed-from` marker is never copied so
/// provenance always reflects *this* install.
pub(super) fn stage_local_copy(
source: &Path,
user_plugins_dir: &Path,
max_size: u64,
) -> Result<StagedPlugin> {
// Validate the source first; this also rejects symlinked roots/manifests.
let manifest_path =
crate::plugins::agent_plugin::resolve_manifest_path(source).ok_or_else(|| {
anyhow::anyhow!(
"source is not a valid plugin bundle: no plugin.json, kimi.plugin.json, or plugin.toml"
)
})?;
PluginManifest::validate_from_path(&manifest_path)
.map_err(|error| anyhow::anyhow!("source is not a valid plugin bundle: {error}"))?;
let canonical_source = source
.canonicalize()
.with_context(|| format!("failed to resolve {}", source.display()))?;
if let Ok(canonical_plugins) = user_plugins_dir.canonicalize()
&& (canonical_source == canonical_plugins
|| canonical_source.starts_with(&canonical_plugins))
{
bail!(
"cannot install a bundle from inside the user plugins directory {}; \
it is already in place",
canonical_plugins.display()
);
}View on GitHub (pinned to 8880682c63)
When it happens
Trigger: Thrown at crates/tui/src/plugins/install/stage.rs:95 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Hmbown/CodeWhale@8880682c63 (2026-08-16).
Data as JSON: /api/errors/281260c41819d7c6.
Report an issue: GitHub.