fix fallback case

This commit is contained in:
Vikhyath Mondreti
2026-02-06 11:25:35 -08:00
parent e13bbc1cdd
commit fc7194b170
12 changed files with 75 additions and 45 deletions

View File

@@ -34,8 +34,9 @@ export function DocumentSelector({
previewContextValues,
})
const [knowledgeBaseIdFromStore] = useSubBlockValue(blockId, 'knowledgeBaseId')
const knowledgeBaseIdValue =
resolvePreviewContextValue(previewContextValues?.knowledgeBaseId) ?? knowledgeBaseIdFromStore
const knowledgeBaseIdValue = previewContextValues
? resolvePreviewContextValue(previewContextValues.knowledgeBaseId)
: knowledgeBaseIdFromStore
const normalizedKnowledgeBaseId =
typeof knowledgeBaseIdValue === 'string' && knowledgeBaseIdValue.trim().length > 0
? knowledgeBaseIdValue

View File

@@ -78,8 +78,9 @@ export function DocumentTagEntry({
})
const [knowledgeBaseIdFromStore] = useSubBlockValue(blockId, 'knowledgeBaseId')
const knowledgeBaseIdValue =
resolvePreviewContextValue(previewContextValues?.knowledgeBaseId) ?? knowledgeBaseIdFromStore
const knowledgeBaseIdValue = previewContextValues
? resolvePreviewContextValue(previewContextValues.knowledgeBaseId)
: knowledgeBaseIdFromStore
const knowledgeBaseId =
typeof knowledgeBaseIdValue === 'string' && knowledgeBaseIdValue.trim().length > 0
? knowledgeBaseIdValue

View File

@@ -63,43 +63,55 @@ export function FileSelectorInput({
const [domainValueFromStore] = useSubBlockValue(blockId, 'domain')
const connectedCredential =
resolvePreviewContextValue(previewContextValues?.credential) ?? blockValues.credential
const domainValue =
resolvePreviewContextValue(previewContextValues?.domain) ?? domainValueFromStore
const connectedCredential = previewContextValues
? resolvePreviewContextValue(previewContextValues.credential)
: blockValues.credential
const domainValue = previewContextValues
? resolvePreviewContextValue(previewContextValues.domain)
: domainValueFromStore
const teamIdValue = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.teamId) ??
resolveDependencyValue('teamId', blockValues, canonicalIndex, canonicalModeOverrides),
previewContextValues
? resolvePreviewContextValue(previewContextValues.teamId)
: resolveDependencyValue('teamId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues?.teamId, blockValues, canonicalIndex, canonicalModeOverrides]
)
const siteIdValue = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.siteId) ??
resolveDependencyValue('siteId', blockValues, canonicalIndex, canonicalModeOverrides),
previewContextValues
? resolvePreviewContextValue(previewContextValues.siteId)
: resolveDependencyValue('siteId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues?.siteId, blockValues, canonicalIndex, canonicalModeOverrides]
)
const collectionIdValue = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.collectionId) ??
resolveDependencyValue('collectionId', blockValues, canonicalIndex, canonicalModeOverrides),
previewContextValues
? resolvePreviewContextValue(previewContextValues.collectionId)
: resolveDependencyValue(
'collectionId',
blockValues,
canonicalIndex,
canonicalModeOverrides
),
[previewContextValues?.collectionId, blockValues, canonicalIndex, canonicalModeOverrides]
)
const projectIdValue = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.projectId) ??
resolveDependencyValue('projectId', blockValues, canonicalIndex, canonicalModeOverrides),
previewContextValues
? resolvePreviewContextValue(previewContextValues.projectId)
: resolveDependencyValue('projectId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues?.projectId, blockValues, canonicalIndex, canonicalModeOverrides]
)
const planIdValue = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.planId) ??
resolveDependencyValue('planId', blockValues, canonicalIndex, canonicalModeOverrides),
previewContextValues
? resolvePreviewContextValue(previewContextValues.planId)
: resolveDependencyValue('planId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues?.planId, blockValues, canonicalIndex, canonicalModeOverrides]
)

View File

@@ -31,8 +31,9 @@ export function FolderSelectorInput({
}: FolderSelectorInputProps) {
const [storeValue] = useSubBlockValue(blockId, subBlock.id)
const [credentialFromStore] = useSubBlockValue(blockId, 'credential')
const connectedCredential =
resolvePreviewContextValue(previewContextValues?.credential) ?? credentialFromStore
const connectedCredential = previewContextValues
? resolvePreviewContextValue(previewContextValues.credential)
: credentialFromStore
const { collaborativeSetSubblockValue } = useCollaborativeWorkflow()
const { activeWorkflowId } = useWorkflowRegistry()
const [selectedFolderId, setSelectedFolderId] = useState<string>('')

View File

@@ -57,8 +57,9 @@ export function InputMapping({
}: InputMappingProps) {
const [mapping, setMapping] = useSubBlockValue(blockId, subBlockId)
const [storeWorkflowId] = useSubBlockValue(blockId, 'workflowId')
const selectedWorkflowId =
resolvePreviewContextValue(previewContextValues?.workflowId) ?? storeWorkflowId
const selectedWorkflowId = previewContextValues
? resolvePreviewContextValue(previewContextValues.workflowId)
: storeWorkflowId
const inputController = useSubBlockInput({
blockId,

View File

@@ -70,8 +70,9 @@ export function KnowledgeTagFilters({
const overlayRefs = useRef<Record<string, HTMLDivElement>>({})
const [knowledgeBaseIdFromStore] = useSubBlockValue(blockId, 'knowledgeBaseId')
const knowledgeBaseIdValue =
resolvePreviewContextValue(previewContextValues?.knowledgeBaseId) ?? knowledgeBaseIdFromStore
const knowledgeBaseIdValue = previewContextValues
? resolvePreviewContextValue(previewContextValues.knowledgeBaseId)
: knowledgeBaseIdFromStore
const knowledgeBaseId =
typeof knowledgeBaseIdValue === 'string' && knowledgeBaseIdValue.trim().length > 0
? knowledgeBaseIdValue

View File

@@ -55,10 +55,13 @@ export function McpDynamicArgs({
const workspaceId = params.workspaceId as string
const { mcpTools, isLoading } = useMcpTools(workspaceId)
const [toolFromStore] = useSubBlockValue(blockId, 'tool')
const selectedTool = resolvePreviewContextValue(previewContextValues?.tool) ?? toolFromStore
const selectedTool = previewContextValues
? resolvePreviewContextValue(previewContextValues.tool)
: toolFromStore
const [schemaFromStore] = useSubBlockValue(blockId, '_toolSchema')
const cachedSchema =
resolvePreviewContextValue(previewContextValues?._toolSchema) ?? schemaFromStore
const cachedSchema = previewContextValues
? resolvePreviewContextValue(previewContextValues._toolSchema)
: schemaFromStore
const [toolArgs, setToolArgs] = useSubBlockValue(blockId, subBlockId)
const selectedToolConfig = mcpTools.find((tool) => tool.id === selectedTool)

View File

@@ -35,7 +35,9 @@ export function McpToolSelector({
const [, setSchemaCache] = useSubBlockValue(blockId, '_toolSchema')
const [serverFromStore] = useSubBlockValue(blockId, 'server')
const serverValue = resolvePreviewContextValue(previewContextValues?.server) ?? serverFromStore
const serverValue = previewContextValues
? resolvePreviewContextValue(previewContextValues.server)
: serverFromStore
const label = subBlock.placeholder || 'Select tool'

View File

@@ -56,15 +56,19 @@ export function ProjectSelectorInput({
return (workflowValues as Record<string, Record<string, unknown>>)[blockId] || {}
})
const connectedCredential =
resolvePreviewContextValue(previewContextValues?.credential) ?? blockValues.credential
const jiraDomain = resolvePreviewContextValue(previewContextValues?.domain) ?? jiraDomainFromStore
const connectedCredential = previewContextValues
? resolvePreviewContextValue(previewContextValues.credential)
: blockValues.credential
const jiraDomain = previewContextValues
? resolvePreviewContextValue(previewContextValues.domain)
: jiraDomainFromStore
const linearTeamId = useMemo(
() =>
resolvePreviewContextValue(previewContextValues?.teamId) ??
resolveDependencyValue('teamId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues?.teamId, blockValues, canonicalIndex, canonicalModeOverrides]
previewContextValues
? resolvePreviewContextValue(previewContextValues.teamId)
: resolveDependencyValue('teamId', blockValues, canonicalIndex, canonicalModeOverrides),
[previewContextValues, blockValues, canonicalIndex, canonicalModeOverrides]
)
const serviceId = subBlock.serviceId || ''

View File

@@ -67,8 +67,9 @@ export function SheetSelectorInput({
[blockValues, canonicalIndex, canonicalModeOverrides]
)
const connectedCredential =
resolvePreviewContextValue(previewContextValues?.credential) ?? connectedCredentialFromStore
const connectedCredential = previewContextValues
? resolvePreviewContextValue(previewContextValues.credential)
: connectedCredentialFromStore
const spreadsheetId = previewContextValues
? (resolvePreviewContextValue(previewContextValues.spreadsheetId) ??
resolvePreviewContextValue(previewContextValues.manualSpreadsheetId))

View File

@@ -59,11 +59,15 @@ export function SlackSelectorInput({
const [botToken] = useSubBlockValue(blockId, 'botToken')
const [connectedCredential] = useSubBlockValue(blockId, 'credential')
const effectiveAuthMethod =
resolvePreviewContextValue(previewContextValues?.authMethod) ?? authMethod
const effectiveBotToken = resolvePreviewContextValue(previewContextValues?.botToken) ?? botToken
const effectiveCredential =
resolvePreviewContextValue(previewContextValues?.credential) ?? connectedCredential
const effectiveAuthMethod = previewContextValues
? resolvePreviewContextValue(previewContextValues.authMethod)
: authMethod
const effectiveBotToken = previewContextValues
? resolvePreviewContextValue(previewContextValues.botToken)
: botToken
const effectiveCredential = previewContextValues
? resolvePreviewContextValue(previewContextValues.credential)
: connectedCredential
const [_selectedValue, setSelectedValue] = useState<string | null>(null)
const serviceId = subBlock.serviceId || ''

View File

@@ -33,14 +33,13 @@ export class SnapshotService implements ISnapshotService {
const existingSnapshot = await this.getSnapshotByHash(workflowId, stateHash)
if (existingSnapshot) {
// The hash covers functional data only (blocks, edges, loops, etc.).
// Refresh the stored state so that presentation-only fields like
// metadata.name and positions stay up to date.
let refreshedState: WorkflowState = existingSnapshot.stateData
try {
await db
.update(workflowExecutionSnapshots)
.set({ stateData: state })
.where(eq(workflowExecutionSnapshots.id, existingSnapshot.id))
refreshedState = state
} catch (error) {
logger.warn(
`Failed to refresh snapshot stateData for ${existingSnapshot.id}, continuing with existing data`,
@@ -52,7 +51,7 @@ export class SnapshotService implements ISnapshotService {
`Reusing existing snapshot for workflow ${workflowId} (hash: ${stateHash.slice(0, 12)}...)`
)
return {
snapshot: { ...existingSnapshot, stateData: state },
snapshot: { ...existingSnapshot, stateData: refreshedState },
isNew: false,
}
}