langgenius/dify · error · CreateReleaseSubmissionBlockedError
unsupportedDslMode
unsupportedDslMode
Error message
unsupportedDslMode
What it means
Thrown by the create-release submission atom when releaseSourceMode is 'dsl' but createReleaseIsWorkflowDslContentAtom is false. The release DSL import path only accepts workflow DSL content; if the parsed/provided DSL does not validate as workflow DSL, submission is blocked with the 'unsupportedDslMode' reason via CreateReleaseSubmissionBlockedError.
Source
Thrown at web/features/deployments/create-release/state/index.ts:534
const submittedReleaseName = value.releaseName.trim()
if (get(isCheckingCreateReleaseContentAtom) || !submittedReleaseName) return undefined
if (get(createReleaseHasNameConflictAtom)) return undefined
if (!canCheckReleaseSourceContent(get) || !get(createReleaseContentReadyAtom)) return undefined
const appInstanceId = requiredAppInstanceId(get)
const commonCreateReleaseRequest = {
appInstanceId,
displayName: submittedReleaseName,
description: value.releaseDescription.trim() || undefined,
createAppInstance: false,
}
if (releaseSourceMode === 'dsl') {
if (!get(createReleaseIsWorkflowDslContentAtom))
throw new CreateReleaseSubmissionBlockedError('unsupportedDslMode')
return await get(createReleaseMutationAtom).mutateAsync({
body: {
...commonCreateReleaseRequest,
dsl: get(createReleaseEncodedDslContentAtom),
},
})
}
if (!sourceAppId) return undefined
return await get(createReleaseMutationAtom).mutateAsync({
body: {
...commonCreateReleaseRequest,
sourceAppId,
},
})
})View on GitHub (pinned to ef8544b173)
Solutions
- Confirm the DSL file being imported is a workflow app export (check the 'mode' or 'app' field in the DSL JSON).
- If importing a chatflow, route through the chatflow-compatible release path instead.
- Pre-validate the DSL content type before enabling submit, and show a clear 'workflow DSL required' message.
- Ensure createReleaseContentReadyAtom and createReleaseIsWorkflowDslContentAtom are derived from the same parsed payload to avoid divergence.
Example fix
// before
if (releaseSourceMode === 'dsl') {
if (!get(createReleaseIsWorkflowDslContentAtom))
throw new CreateReleaseSubmissionBlockedError('unsupportedDslMode')
// after - gate the UI and give a reason
if (releaseSourceMode === 'dsl' && !get(createReleaseIsWorkflowDslContentAtom)) {
set(createReleaseDslModeErrorAtom, 'workflow-dsl-required')
return undefined
} Defensive patterns
Strategy: validation
Validate before calling
// Validate DSL is workflow-type before enabling submit const isWorkflowDsl = useAtomValue(createReleaseIsWorkflowDslContentAtom) const canSubmit = releaseSourceMode !== 'dsl' || isWorkflowDsl
Type guard
function isWorkflowDslContent(parsed: unknown): boolean {
return !!parsed && typeof parsed === 'object'
&& (parsed as { app?: { mode?: string } }).app?.mode === 'workflow'
} Try / catch
try {
await submitCreateRelease(value)
} catch (e) {
if (e instanceof CreateReleaseSubmissionBlockedError && e.reason === 'unsupportedDslMode') {
setDslError('Only workflow DSL is supported for release import.')
return
}
throw e
} Prevention
- Disable the DSL import submit button when createReleaseIsWorkflowDslContentAtom is false.
- Show the detected DSL app.mode to the user so they understand the mismatch.
- Derive createReleaseContentReadyAtom and the workflow-type atom from the same parsed source.
- Reject chatflow/agent DSL files at the file-accept step with a clear message.
When it happens
Trigger: Triggered when the user selects DSL import mode but supplies a chatflow DSL, agent DSL, or malformed/non-workflow DSL file, so createReleaseIsWorkflowDslContentAtom resolves false.
Common situations: User exports a chatflow app DSL and tries to import it through the release flow that only accepts workflow DSL, the DSL version is incompatible with the current parser, or the content readiness atom passed but the workflow-type check did not.
Related errors
- deployFailed
- Missing required deployment binding.
- Missing required deployment environment variable.
- Knowledge creation failed during create
- Knowledge creation failed during policy
AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12).
Data as JSON: /api/errors/9c6be54745dcbd6d.
Report an issue: GitHub.