windmill-labs/windmill · error · Error

Missing trigger information

Error message

Missing trigger information

What it means

In frontend/src/lib/components/DeployWorkspace.svelte:287, rec() computes dependencies of a deploy item. For kind 'trigger' it needs additionalInformation.triggers (populated by the deploy query); when that is absent it throws "Missing trigger information" because it cannot resolve the trigger's dependency (path/schedule/etc.).

Source

Thrown at frontend/src/lib/components/DeployWorkspace.svelte:287

						}
						return []
					} else if (typeof obj == 'object' && obj != null) {
						return Object.values(obj).flatMap((x) => recObj(x))
					} else {
						return []
					}
				}

				return [
					...recObj(res.value),
					...(res.resource_type == 'ai_agent' ? agentResourceDependencies(res.value) : []),
					{ kind: 'resource_type' as Kind, path: res.resource_type }
				]
			} else if (kind == 'trigger') {
				if (additionalInformation?.triggers) {
					return getTriggerDependency(additionalInformation.triggers.kind, path, $workspaceStore!)
				}
				throw new Error('Missing trigger information')
			} else if (kind == 'script') {
				const imports = await WorkspaceService.getImports({
					workspace: $workspaceStore!,
					importerPath: path
				})
				return imports.map((importedPath) => ({ kind: 'script' as Kind, path: importedPath }))
			}
			return []
		}
		let toProcess = [{ kind, path }]
		let processedSet = new Set<string>()
		let processed: { kind: Kind; path: string }[] = []
		while (toProcess.length > 0) {
			const { kind, path } = toProcess.pop()!
			const key = `${kind}:${path}`
			if (processedSet.has(key)) {
				continue
			}

View on GitHub (pinned to e474e8803c)

Solutions

  1. Refresh the deployment view so additionalInformation is re-fetched
  2. Verify the trigger still exists in the workspace
  3. Re-select the trigger in the deploy list so its metadata loads
  4. Report if it reproduces on a fresh deploy preview
Defensive patterns

Strategy: try-catch

Validate before calling

if (kind === 'trigger' && !additionalInformation?.triggers?.kind) {
  throw new Error(`Trigger ${path} is missing dependency metadata — refresh the deploy view`);
}

Type guard

function hasTriggerInfo(info: unknown): info is { triggers: { kind: string } } {
  return !!info && typeof info === 'object' && 'triggers' in info && !!(info as any).triggers?.kind;
}

Try / catch

try {
  deps = await rec(item);
} catch (e) {
  if (e.message === 'Missing trigger information') {
    sendUserToast('Trigger metadata missing — reload the deployment view', true);
    return;
  }
  throw e;
}

Prevention

When it happens

Trigger: Deploying a trigger whose dependency data was not loaded into additionalInformation.triggers — e.g. the trigger item came from a stale/partial deployment preview, or the trigger was deleted/changed server-side between listing and deploy.

Common situations: Stale deploy view after the trigger was deleted in another tab; partial failed fetch of trigger details; deploying via an item shape that predates the triggers field.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/028cfd3f87b1f56b. Report an issue: GitHub.