{"record":{"id":"cc49dc12fc1370c6","repo":"windmill-labs/windmill","slug":"unknown-workspace-dependencies-file-format-path","errorCode":null,"errorMessage":"Unknown workspace dependencies file format: ${path}. Valid files: package.json, requirements.in, composer.json, go.mod, modules.json","messagePattern":"Unknown workspace dependencies file format: (.+?)\\. Valid files: package\\.json, requirements\\.in, composer\\.json, go\\.mod, modules\\.json","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/src/commands/dependencies/dependencies.ts","lineNumber":49,"sourceCode":"  );\n}\n\nconst command = new Command()\n  .alias(\"deps\")\n  .description(\"workspace dependencies related commands\")\n  .command(\"push\", \"Push workspace dependencies from a local file\")\n  .arguments(\"<file_path:string>\")\n  .action(push as any);\n\nexport async function pushWorkspaceDependencies(\n  workspace: string,\n  path: string,\n  _befObj: any,\n  newDependenciesContent: string,\n): Promise<void> {\n  const res = workspaceDependenciesPathToLanguageAndFilename(path);\n  if (!res) {\n    throw new Error(\n      `Unknown workspace dependencies file format: ${path}. ` +\n      `Valid files: package.json, requirements.in, composer.json, go.mod, modules.json`\n    );\n  }\n\n  const { language, name } = res;\n\n  const displayName = name\n    ? `named dependencies \"${name}\"`\n    : `workspace default dependencies`;\n\n  // Fetch remote workspace dependencies and compare content directly\n  try {\n    const remoteDeps = await wmill.getLatestWorkspaceDependencies({\n      workspace,\n      language,\n      name,\n    });","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/dependencies/dependencies.ts#L31-L67","documentation":"`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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Rename/convert to a supported file: package.json, requirements.in, composer.json, go.mod, or modules.json.","For Python, generate requirements.in (pip-tools style) and push that.","If it's a lockfile, push the manifest file it derives from instead."],"exampleFix":"// before\nwmill dependency push requirements.txt\n// after\nwmill dependency push requirements.in","handlingStrategy":"validation","validationCode":"const SUPPORTED = ['package.json','requirements.in','composer.json','go.mod','modules.json'];\nif (!SUPPORTED.includes(path.basename(path_))) throw new Error(`unsupported deps file: ${path_}`);","typeGuard":"null","tryCatchPattern":"try { await pushWorkspaceDependencies(file, ...) } catch (e) { if (String(e).includes('Unknown workspace dependencies file format')) convertToSupportedFormat(file); else throw e; }","preventionTips":["Only push the five supported filenames","Generate requirements.in with pip-compile for Python projects","Push manifests, not lockfiles","Map project type -> supported file in your deploy scripts"],"tags":["cli","validation","dependencies","unsupported-format"],"backgroundTag":"unsupported-file-format","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}