windmill-labs/windmill · error

Unknown workspace dependencies file format: ${path}. Valid f

Error message

Unknown workspace dependencies file format: ${path}. Valid files: package.json, requirements.in, composer.json, go.mod, modules.json

What it means

`pushWorkspaceDependencies` maps the dependencies file path to a (language, filename) pair via `workspaceDependenciesPathToLanguageAndFilename`. If the path doesn't match one of the supported files — package.json, requirements.in, composer.json, go.mod, modules.json — it throws this error listing the valid formats.

Source

Thrown at cli/src/commands/dependencies/dependencies.ts:49

  );
}

const command = new Command()
  .alias("deps")
  .description("workspace dependencies related commands")
  .command("push", "Push workspace dependencies from a local file")
  .arguments("<file_path:string>")
  .action(push as any);

export async function pushWorkspaceDependencies(
  workspace: string,
  path: string,
  _befObj: any,
  newDependenciesContent: string,
): Promise<void> {
  const res = workspaceDependenciesPathToLanguageAndFilename(path);
  if (!res) {
    throw new Error(
      `Unknown workspace dependencies file format: ${path}. ` +
      `Valid files: package.json, requirements.in, composer.json, go.mod, modules.json`
    );
  }

  const { language, name } = res;

  const displayName = name
    ? `named dependencies "${name}"`
    : `workspace default dependencies`;

  // Fetch remote workspace dependencies and compare content directly
  try {
    const remoteDeps = await wmill.getLatestWorkspaceDependencies({
      workspace,
      language,
      name,
    });

View on GitHub (pinned to e474e8803c)

Solutions

  1. Rename/convert to a supported file: package.json, requirements.in, composer.json, go.mod, or modules.json.
  2. For Python, generate requirements.in (pip-tools style) and push that.
  3. If it's a lockfile, push the manifest file it derives from instead.

Example fix

// before
wmill dependency push requirements.txt
// after
wmill dependency push requirements.in
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = ['package.json','requirements.in','composer.json','go.mod','modules.json'];
if (!SUPPORTED.includes(path.basename(path_))) throw new Error(`unsupported deps file: ${path_}`);

Type guard

null

Try / catch

try { await pushWorkspaceDependencies(file, ...) } catch (e) { if (String(e).includes('Unknown workspace dependencies file format')) convertToSupportedFormat(file); else throw e; }

Prevention

When it happens

Trigger: Calling `wmill dependency push` (or the underlying pushWorkspaceDependencies) with e.g. requirements.txt, Pipfile, pyproject.toml, yarn.lock, or any non-standard filename that Windmill cannot map to a language.

Common situations: Python projects using requirements.txt instead of requirements.in; Node monorepos passing a lockfile; monorepo subdirectory package.json with an unusual name like package.client.json; typos in the filename.

Related errors


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