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

  1. Rename the file to the expected dependency filename format for its language (matching what `wmill sync pull` produced)
  2. Remove non-dependency files from the dependencies folder
  3. Re-run `wmill sync pull` to see the canonical filenames your CLI version expects
  4. 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

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


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/9e31abe4067b1dc7. Report an issue: GitHub.