{"record":{"id":"f22cedf8623b52ae","repo":"windmill-labs/windmill","slug":"s-is-not-supported","errorCode":null,"errorMessage":"{s} is not supported","messagePattern":"(.+?) is not supported","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/parsers/windmill-parser-nu/src/lib.rs","lineNumber":188,"sourceCode":"            // \"binary\" => Typ::Bytes,\n            \"datetime\" => Typ::Datetime,\n            \"any\" => Typ::Unknown,\n            \"bool\" => Typ::Bool,\n            // Lists\n            \"list\" | \"list<any>\" | \"list<nothing>\" => Typ::List(Box::new(Typ::Unknown)),\n            \"list<number>\" => Typ::List(Box::new(Typ::Float)),\n            \"list<bool>\" => Typ::List(Box::new(Typ::Bool)),\n            \"list<string>\" => Typ::List(Box::new(Typ::Str(None))),\n            // list<float/int> is not supported\n            // Records and Tables\n            // TODO: Support in V1?\n            s if s.contains(\"record<\") => {\n                bail!(\"typed records are not supported, use `ident: record`\")\n            }\n            s if s.contains(\"table<\") => {\n                bail!(\"typed tables are not supported, use `ident: table`\")\n            }\n            s => bail!(\"{s} is not supported\"),\n        };\n        Ok(typ)\n    }\n    fn parse_default(\n        content: &str,\n        ctx: &[&str],\n        i: usize,\n        skip: &mut usize,\n    ) -> anyhow::Result<Value> {\n        let mut c = content.replace(\"=\", \"\").trim().to_owned();\n\n        fn parse_object_literal(\n            (open, close): (char, char),\n            mut c_2: String,\n            ctx: &[&str],\n            i: usize,\n            skip: &mut usize,\n        ) -> anyhow::Result<String> {","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/parsers/windmill-parser-nu/src/lib.rs#L170-L206","documentation":"This is the catch-all arm of the Nushell type parser: any type string not in the supported list (string, int, float, number, record, table, nothing, datetime, any, bool, and the few `list<...>` variants) is rejected with `{s} is not supported`. Each unsupported type name is interpolated into the message so you can see exactly which annotation failed.","triggerScenarios":"Using a Nushell type outside the supported set in `def main` — e.g. `duration`, `filesize`, `range`, `closure`, `path`, `binary`, `list<int>`, `list<float>`, `cell-path`, or any custom/typo'd type name.","commonSituations":"Typos in type names (`strin` instead of `string`); Nushell types added in newer versions (duration, filesize) that the parser predates; `list<int>`/`list<float>` which are explicitly not supported despite lists in general being supported; custom type aliases.","solutions":["Read the interpolated type name in the message and replace it with a supported one: string, int, float, number, bool, any, nothing, record, table, datetime, list, list<any>, list<number>, list<bool>, list<string>.","Replace `list<int>`/`list<float>` with `list<number>` or `list` — those element types are explicitly unsupported.","Use `any` for types like duration/filesize/range and convert inside the script (`into duration`, etc.).","Fix typos in the annotation (`strin:` → `string:`); drop custom type aliases from the deployed signature.","Remove `binary` annotations (commented as unsupported) and pass bytes as `any`."],"exampleFix":"// before\ndef main [wait: duration = 10sec]\n// after\ndef main [wait: any = 10sec] {\n  let wait = ($wait | into duration)\n}","handlingStrategy":"validation","validationCode":"const SUPPORTED_NU_TYPES = new Set(['string','int','float','number','record','table','nothing','datetime','any','bool','list','list<any>','list<nothing>','list<number>','list<bool>','list<string>']);\nfunction validateNuType(t) {\n  const c = t.replace(':', '').trim();\n  return SUPPORTED_NU_TYPES.has(c) ? null : `type '${c}' is not supported; use one of string,int,float,number,bool,any,nothing,record,table,datetime,list,list<number>,list<bool>,list<string>`;\n}","typeGuard":null,"tryCatchPattern":"try {\n  const sig = parseNuSignature(source);\n} catch (e) {\n  const m = String(e).match(/^(.*) is not supported$/s);\n  if (m) throw new Error(`Unsupported Nushell type '${m[1]}' in def main — replace with a supported annotation (string/int/float/number/bool/any/record/table/datetime/list...)`);\n  throw e;\n}","preventionTips":["Check parameter types against the supported list before deploying","Remember list<int>/list<float> are NOT supported — use list<number> or list","Use `any` plus in-body conversion for duration/filesize/range/binary","Watch for typos in type names and custom type aliases"],"tags":["nushell","parser","unsupported-type","type-annotation"],"backgroundTag":"unsupported-type-signature","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"}