fix(variables): Fix resolution on double < (#2016)

* Fix variable <>

* Ling

* Clean
This commit is contained in:
Siddharth Ganesan
2025-11-15 15:09:01 -08:00
committed by GitHub
parent fca92a7499
commit 949f9287cf
7 changed files with 90 additions and 36 deletions

View File

@@ -5,6 +5,7 @@ import type { LoopScope } from '@/executor/execution/state'
import type { BlockStateController } from '@/executor/execution/types'
import type { ExecutionContext, NormalizedBlockOutput } from '@/executor/types'
import type { LoopConfigWithNodes } from '@/executor/types/loop'
import { replaceValidReferences } from '@/executor/utils/reference-validation'
import {
buildSentinelEndId,
buildSentinelStartId,
@@ -271,16 +272,14 @@ export class LoopOrchestrator {
}
try {
const referencePattern = /<([^>]+)>/g
let evaluatedCondition = condition
logger.info('Evaluating loop condition', {
originalCondition: condition,
iteration: scope.iteration,
workflowVariables: ctx.workflowVariables,
})
evaluatedCondition = evaluatedCondition.replace(referencePattern, (match) => {
// Use generic utility for smart variable reference replacement
const evaluatedCondition = replaceValidReferences(condition, (match) => {
const resolved = this.resolver.resolveSingleReference(ctx, '', match, scope)
logger.info('Resolved variable reference in loop condition', {
reference: match,