windmill-labs/windmill · error · Error
Unknown workspace dependencies file format: ${change.path}
Error message
Unknown workspace dependencies file format: ${change.path} What it means
`wmill sync delete` handles workspace dependency files (e.g. Python requirements or other dependency manifests) by parsing the filename with `workspaceDependenciesPathToLanguageAndFilename` to learn the dependency name and language for the delete API. When the filename doesn't correspond to any known format, this error is thrown. It prevents issuing a malformed dependency-delete call.
Source
Thrown at cli/src/commands/sync/sync.ts:6463
await wmill.deleteGroup({
workspace: workspaceId,
name: removeSuffix(
removePathPrefix(change.path, "groups"),
".group.json",
),
});
break;
case "workspace_dependencies":
const relativePath = removePathPrefix(
change.path,
"dependencies",
);
const res = workspaceDependenciesPathToLanguageAndFilename(
change.path,
);
if (!res) {
throw new Error(
`Unknown workspace dependencies file format: ${change.path}`,
);
}
const { name, language } = res;
await wmill.deleteWorkspaceDependencies({
workspace: workspaceId,
language,
name,
});
break;
default:
break;
}
if (stateTarget) {
try {
await rm(stateTarget);View on GitHub (pinned to e474e8803c)
Solutions
- Rename the file to the expected dependency filename format for its language (matching what `wmill sync pull` produced)
- Remove non-dependency files from the dependencies folder
- Re-run `wmill sync pull` to see the canonical filenames your CLI version expects
- Check CLI/workspace version compatibility if the format recently changed
Example fix
// before workspace_dependencies/requirements.txt.bak // after: rename to canonical form or delete the stray file rm workspace_dependencies/requirements.txt.bak
Defensive patterns
Strategy: validation
Validate before calling
const DEP_RE = /^(python|bash|nodejs|deno|go|php|nu|ruby|csharp|r)_/i; // prefix check
export function looksLikeDepFile(p: string): boolean {
const base = p.split("/").pop() ?? "";
return DEP_RE.test(base) && /\.(txt|json|yaml)$/.test(base);
} Try / catch
try {
await wmill.sync.delete(opts);
} catch (e) {
if (String(e.message).startsWith("Unknown workspace dependencies file format")) {
console.warn("skipping non-dependency file");
}
} Prevention
- Keep only files produced by sync pull in the dependencies folder
- Add .gitignore rules for editor backup files (*~, *.bak)
- Re-pull to learn canonical filenames after CLI upgrades
When it happens
Trigger: `wmill sync delete` processes a file under the workspace dependencies directory whose name does not match the expected `{language}_{name}....` patterns (e.g. an unknown extension, extra segments, or a file placed there by hand).
Common situations: Manually dropping notes/backup files (deps.txt, requirements.txt.bak) into the dependencies sync folder; a windmill version change that altered the expected filename layout; renamed files losing the language prefix.
Related errors
- Invalid native trigger path: ${change.path}
- Invalid native trigger file path: ${filePath}. Expected form
- Skipping unrecognized workspace dependencies file: ${k}
- Could not auto-fill missing lockfile entries: ${e instanceof
- ⚠ server-side lock generation FAILED for ${f.path} — the dep
AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03).
Data as JSON: /api/errors/9e31abe4067b1dc7.
Report an issue: GitHub.