{"record":{"id":"418580e198ff5fba","repo":"windmill-labs/windmill","slug":"invalid-runnable-runnableid-debuginfo-mu","errorCode":null,"errorMessage":"Invalid runnable '${runnableId}': ${debugInfo}. Must have either inlineScript (for inline type) or type=\"path\" with runType and path fields","messagePattern":"Invalid runnable '(.+?)': (.+?)\\. Must have either inlineScript \\(for inline type\\) or type=\"path\" with runType and path fields","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/src/commands/app/dev.ts","lineNumber":1873,"sourceCode":"    runnable.path\n  ) {\n    // Path-based runnables have type: \"path\" (or legacy \"runnableByPath\") and runType: \"script\"|\"hubscript\"|\"flow\"\n    const prefix = runnable.runType;\n    requestBody.path = prefix !== \"hubscript\"\n      ? `${prefix}/${runnable.path}`\n      : `script/${runnable.path}`;\n  } else {\n    // Neither inline script nor valid path-based runnable\n    const debugInfo =\n      `type=${(runnable as any).type}, runType=${(runnable as any).runType}, ` +\n      `path=${(runnable as any).path}, hasInlineScript=${!!(runnable as any)\n        .inlineScript}`;\n    log.error(\n      colors.red(\n        `[executeRunnable] Invalid runnable configuration for '${runnableId}': ${debugInfo}`,\n      ),\n    );\n    throw new Error(\n      `Invalid runnable '${runnableId}': ${debugInfo}. ` +\n        `Must have either inlineScript (for inline type) or type=\"path\" with runType and path fields`,\n    );\n  }\n\n  const uuid = await wmill.executeComponent({\n    workspace,\n    path: appPath,\n    requestBody,\n  });\n\n  return uuid;\n}\n\nconst ITERATIONS_BEFORE_SLOW_REFRESH = 10;\nconst ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;\nconst QUEUE_LOG_INTERVAL_MS = 5000;\n","sourceCodeStart":1855,"sourceCodeEnd":1891,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/app/dev.ts#L1855-L1891","documentation":"Shape validation in the dev server's runnable executor: the runnable object must be either an inline script (has inlineScript) or a path-based reference (type 'path' or legacy 'runnableByPath' plus runType 'script'|'hubscript'|'flow' and a path). It is neither — the debugInfo in the message dumps the actual type/runType/path/hasInlineScript values so the malformed field is visible. The faulting input is a single runnable entry in the app's runnables (often hand-edited YAML/JSON or an app exported from an incompatible version).","triggerScenarios":"Thrown at cli/src/commands/app/dev.ts:1873 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the dumped debugInfo: whichever of type/runType/path/inlineScript is wrong points at the broken runnable entry","Fix the runnable definition: give it a valid inlineScript, or set type: \"path\" with runType (script|hubscript|flow) and path","If the app was exported from another Windmill version, re-create the runnable in the editor so it serializes in the current format"],"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"}