{"record":{"id":"327cde86fbcb0f35","repo":"windmill-labs/windmill","slug":"from-opts-from-is-a-macros-library-d","errorCode":null,"errorMessage":"--from '${opts.from}' is a `// macros` library — definition-only, injected into consuming scripts at run time, never a runnable step.","messagePattern":"--from '(.+?)' is a `// macros` library — definition-only, injected into consuming scripts at run time, never a runnable step\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"cli/src/commands/pipeline/pipeline.ts","lineNumber":743,"sourceCode":"  let runAll = false;\n  let start: string | undefined;\n  if (opts.from) {\n    const resolved = resolveToken(graph, opts.from);\n    if (!resolved) {\n      // Distinguish \"no match\" from \"ambiguous short name\" (resolveToken\n      // returns undefined for both) so the hint is actionable.\n      const matches = graph.runnables.filter(\n        (r) => r.usage_kind === \"script\" && (r.path.split(\"/\").pop() ?? r.path) === opts.from,\n      );\n      if (matches.length > 1) {\n        throw new Error(\n          `--from '${opts.from}' matches multiple scripts (${matches.map((r) => r.path).sort().join(\", \")}) — pass the full path.`,\n        );\n      }\n      throw new Error(`--from '${opts.from}' matched no script in f/${f}.`);\n    }\n    if (macroLibPaths.has(scriptPathOf(resolved))) {\n      throw new Error(\n        `--from '${opts.from}' is a \\`// macros\\` library — definition-only, injected into consuming scripts at run time, never a runnable step.`,\n      );\n    }\n    // A `--local` display-only node (a non-`// pipeline` DuckDB script surfaced\n    // only because it calls a macro) has no previewable content — reject it\n    // clearly rather than admitting it and silently producing an empty plan.\n    if (notRunnablePaths.has(scriptPathOf(resolved))) {\n      throw new Error(\n        `--from '${opts.from}' isn't a \\`// pipeline\\` script — it appears in the local graph only as a macro consumer (lineage). Mark it \\`// pipeline\\` to run it.`,\n      );\n    }\n    if (!resolved.startsWith(\"script:\")) {\n      throw new Error(\n        `--from '${opts.from}' is an asset, not a runnable — start a run from a script (assets are produced, not run).`,\n      );\n    }\n    if (!fromEligible.has(resolved)) {\n      throw new Error(","sourceCodeStart":725,"sourceCodeEnd":761,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/pipeline/pipeline.ts#L725-L761","documentation":"Kind guard for --from in the pipeline run command: the token resolved to a node that is a // macros library — a definition-only script whose exports get injected into consuming scripts at run time. Macros libraries are never executable steps, so they cannot start a run. The input at fault is a --from pointing at a macros library path.","triggerScenarios":"Thrown at cli/src/commands/pipeline/pipeline.ts:743 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Start the run from a consuming // pipeline script instead — the macros library will be injected automatically","If this script was mislabeled, remove the // macros marker so it becomes a normal runnable script"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}