import type { EnvironmentDeployment, RuntimeInstanceStatus as RuntimeInstanceStatusValue } from '@dify/contracts/enterprise/types.gen' import { RuntimeInstanceStatus } from '@dify/contracts/enterprise/types.gen' const DEPLOYMENT_STATUS_POLLING_INTERVAL = 3000 export function isUndeployedDeploymentRow(row: EnvironmentDeployment) { const status = row.status return status === RuntimeInstanceStatus.RUNTIME_INSTANCE_STATUS_UNDEPLOYED || (status === RuntimeInstanceStatus.RUNTIME_INSTANCE_STATUS_UNSPECIFIED && !row.currentRelease && !row.desiredRelease && !row.currentDeployment) } export function hasRuntimeInstanceDeployment(row: EnvironmentDeployment) { return !isUndeployedDeploymentRow(row) } export function isAvailableDeploymentTarget(row: EnvironmentDeployment) { return isUndeployedDeploymentRow(row) } export function isRuntimeDeploymentInProgress(status?: RuntimeInstanceStatusValue) { return status === RuntimeInstanceStatus.RUNTIME_INSTANCE_STATUS_DEPLOYING || status === RuntimeInstanceStatus.RUNTIME_INSTANCE_STATUS_UNDEPLOYING } export function deploymentStatusPollingInterval(rows?: EnvironmentDeployment[]) { return rows?.some(row => isRuntimeDeploymentInProgress(row.status)) ? DEPLOYMENT_STATUS_POLLING_INTERVAL : false }