{"record":{"id":"06441b220e8be07d","repo":"windmill-labs/windmill","slug":"unknown-capturetriggerkind-kind","errorCode":null,"errorMessage":"Unknown CaptureTriggerKind: ${kind}","messagePattern":"Unknown CaptureTriggerKind: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"frontend/src/lib/components/triggers.ts","lineNumber":91,"sourceCode":"\t\t\treturn 'routes'\n\t\tcase 'websocket':\n\t\t\treturn 'websockets'\n\t\tcase 'kafka':\n\t\t\treturn 'kafka'\n\t\tcase 'nats':\n\t\t\treturn 'nats'\n\t\tcase 'mqtt':\n\t\t\treturn 'mqtt'\n\t\tcase 'amqp':\n\t\t\treturn 'amqp'\n\t\tcase 'sqs':\n\t\t\treturn 'sqs'\n\t\tcase 'postgres':\n\t\t\treturn 'postgres'\n\t\tcase 'gcp':\n\t\t\treturn 'gcp'\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown CaptureTriggerKind: ${kind}`)\n\t}\n}\n","sourceCodeStart":73,"sourceCodeEnd":94,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/frontend/src/lib/components/triggers.ts#L73-L94","documentation":"captureTriggerKindToTriggerKind maps a CaptureTriggerKind (used by capture/install flows) to the UI TriggerKind. Any kind outside the exhaustive switch (webhook, email, default_email, http, websocket, kafka, nats, mqtt, amqp, sqs, postgres, gcp) hits the default branch and throws. It is a guard against unknown/unsupported capture trigger kinds reaching the UI.","triggerScenarios":"handleClick on a captured trigger whose `kind` string is not one of the 12 supported values — e.g. a kind added to the capture payload but not to this mapper, a typo, or stale data from an older/other version.","commonSituations":"Importing a project bundle produced by a newer Windmill version that supports extra trigger kinds; hand-edited capture configs; backend/frontend version skew during upgrades.","solutions":["Add the missing kind to the switch statement in captureTriggerKindToTriggerKind (and to the CaptureTriggerKind union).","Check the version skew: if the data comes from a newer backend, upgrade the frontend.","Inspect the offending `kind` value in the error message and correct the capture config/project bundle.","Update the shared enum/type definitions so the compiler flags unmapped kinds."],"exampleFix":"// before\ncase 'gcp':\n  return 'gcp'\ndefault:\n  throw new Error(`Unknown CaptureTriggerKind: ${kind}`)\n// after\ncase 'gcp':\n  return 'gcp'\ncase 'azure':\n  return 'azure'\ndefault:\n  console.warn(`Unknown CaptureTriggerKind: ${kind}, skipping`)\n  return undefined","handlingStrategy":"type-guard","validationCode":"const KNOWN: ReadonlySet<string> = new Set(['webhook','email','default_email','http','websocket','kafka','nats','mqtt','amqp','sqs','postgres','gcp'])\nfunction isKnownCaptureKind(kind: string): boolean {\n  return KNOWN.has(kind)\n}","typeGuard":"function isCaptureTriggerKind(k: string): k is CaptureTriggerKind {\n  return ['webhook','email','default_email','http','websocket','kafka','nats','mqtt','amqp','sqs','postgres','gcp'].includes(k)\n}","tryCatchPattern":"try {\n  const triggerKind = captureTriggerKindToTriggerKind(kind)\n} catch (e) {\n  console.warn('Skipping unknown captured trigger kind', kind)\n  return\n}","preventionTips":["Keep the CaptureTriggerKind union and the switch in sync — add both when adding a kind","Validate imported/captured data kinds before mapping","Check for frontend/backend version skew when data comes from another deployment","Never feed unvalidated strings from templates or storage into the mapper"],"tags":["triggers","enum-mapping","version-skew"],"backgroundTag":"invalid-enum-value","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"}