diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx index d49f836322..aa42ccd76d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx @@ -721,7 +721,7 @@ export const TagDropdown: React.FC = ({ if (currentLoop && isLoopBlock) { containingLoopBlockId = blockId const loopType = currentLoop.loopType || 'for' - const contextualTags: string[] = ['index', 'currentIteration'] + const contextualTags: string[] = ['index'] if (loopType === 'forEach') { contextualTags.push('currentItem') contextualTags.push('items') @@ -743,7 +743,7 @@ export const TagDropdown: React.FC = ({ const [loopId, loop] = containingLoop containingLoopBlockId = loopId const loopType = loop.loopType || 'for' - const contextualTags: string[] = ['index', 'currentIteration'] + const contextualTags: string[] = ['index'] if (loopType === 'forEach') { contextualTags.push('currentItem') contextualTags.push('items') @@ -1214,10 +1214,7 @@ export const TagDropdown: React.FC = ({ blockGroup && (blockGroup.blockType === 'loop' || blockGroup.blockType === 'parallel') ) { - if ( - !tag.includes('.') && - ['index', 'currentItem', 'items', 'currentIteration'].includes(tag) - ) { + if (!tag.includes('.') && ['index', 'currentItem', 'items'].includes(tag)) { processedTag = `${blockGroup.blockType}.${tag}` } else { processedTag = tag @@ -1500,9 +1497,6 @@ export const TagDropdown: React.FC = ({ } else if (nestedTag.key === 'items') { displayIcon = 'I' tagDescription = 'array' - } else if (nestedTag.key === 'currentIteration') { - displayIcon = '#' - tagDescription = 'number' } } else if (nestedTag.fullTag) { const tagParts = nestedTag.fullTag.split('.') diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts index 7d626c51e8..2569335cfc 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-accessible-reference-prefixes.ts @@ -38,6 +38,7 @@ export function useAccessibleReferencePrefixes(blockId?: string | null): Set { if (!loop?.nodes) return if (loop.nodes.includes(blockId)) { + accessibleIds.add(loop.id) // Add the loop block itself loop.nodes.forEach((nodeId) => accessibleIds.add(nodeId)) } }) @@ -46,6 +47,7 @@ export function useAccessibleReferencePrefixes(blockId?: string | null): Set { if (!parallel?.nodes) return if (parallel.nodes.includes(blockId)) { + accessibleIds.add(parallel.id) // Add the parallel block itself parallel.nodes.forEach((nodeId) => accessibleIds.add(nodeId)) } }) diff --git a/apps/sim/executor/__test-utils__/executor-mocks.ts b/apps/sim/executor/__test-utils__/executor-mocks.ts index de543a4b03..052a861988 100644 --- a/apps/sim/executor/__test-utils__/executor-mocks.ts +++ b/apps/sim/executor/__test-utils__/executor-mocks.ts @@ -521,7 +521,6 @@ export const createParallelExecutionState = (options?: { completedExecutions?: number executionResults?: Map activeIterations?: Set - currentIteration?: number parallelType?: 'count' | 'collection' }) => ({ parallelCount: options?.parallelCount ?? 3, @@ -530,7 +529,6 @@ export const createParallelExecutionState = (options?: { completedExecutions: options?.completedExecutions ?? 0, executionResults: options?.executionResults ?? new Map(), activeIterations: options?.activeIterations ?? new Set(), - currentIteration: options?.currentIteration ?? 1, parallelType: options?.parallelType, }) @@ -555,7 +553,7 @@ export const createParallelManagerMock = (options?: { } const parallelState = context.parallelExecutions?.get(parallelId) - if (!parallelState || parallelState.currentIteration === 0) { + if (!parallelState) { continue } @@ -667,7 +665,6 @@ export const createParallelBlockHandler = vi.fn().mockImplementation(() => { completedExecutions: 0, executionResults: new Map(), activeIterations: new Set(), - currentIteration: 1, } context.parallelExecutions.set(parallelId, parallelState) diff --git a/apps/sim/executor/orchestrators/loop.ts b/apps/sim/executor/orchestrators/loop.ts index 93dde42b0a..7a566a8236 100644 --- a/apps/sim/executor/orchestrators/loop.ts +++ b/apps/sim/executor/orchestrators/loop.ts @@ -23,7 +23,6 @@ export interface LoopContinuationResult { shouldExit: boolean selectedRoute: LoopRoute aggregatedResults?: NormalizedBlockOutput[][] - currentIteration?: number } export class LoopOrchestrator { @@ -149,7 +148,6 @@ export class LoopOrchestrator { shouldContinue: true, shouldExit: false, selectedRoute: EDGE.LOOP_CONTINUE, - currentIteration: scope.iteration, } } @@ -166,7 +164,6 @@ export class LoopOrchestrator { shouldExit: true, selectedRoute: EDGE.LOOP_EXIT, aggregatedResults: results, - currentIteration: scope.iteration, } } diff --git a/apps/sim/executor/orchestrators/node.ts b/apps/sim/executor/orchestrators/node.ts index f200a7d235..57d05f50d5 100644 --- a/apps/sim/executor/orchestrators/node.ts +++ b/apps/sim/executor/orchestrators/node.ts @@ -94,7 +94,6 @@ export class NodeExecutionOrchestrator { shouldContinue: true, shouldExit: false, selectedRoute: continuationResult.selectedRoute, - loopIteration: continuationResult.currentIteration, } } diff --git a/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts b/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts index 80a0db47db..88cd14e1da 100644 --- a/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts +++ b/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts @@ -912,7 +912,7 @@ const SPECIAL_BLOCKS_METADATA: Record = { type: 'string', required: false, description: "Condition to evaluate (for 'while' and 'doWhile' loopType)", - example: ' < 10', + example: ' < 10', }, maxConcurrency: { type: 'number', diff --git a/apps/sim/providers/utils.test.ts b/apps/sim/providers/utils.test.ts index 608a9384c8..ce498b548f 100644 --- a/apps/sim/providers/utils.test.ts +++ b/apps/sim/providers/utils.test.ts @@ -147,9 +147,6 @@ describe('Model Capabilities', () => { 'azure/model-router', // GPT-5.1 models don't support temperature (removed in our implementation) 'gpt-5.1', - 'gpt-5.1-mini', - 'gpt-5.1-nano', - 'gpt-5.1-codex', 'azure/gpt-5.1', 'azure/gpt-5.1-mini', 'azure/gpt-5.1-nano', @@ -228,9 +225,6 @@ describe('Model Capabilities', () => { expect(getMaxTemperature('deepseek-r1')).toBeUndefined() // GPT-5.1 models don't support temperature expect(getMaxTemperature('gpt-5.1')).toBeUndefined() - expect(getMaxTemperature('gpt-5.1-mini')).toBeUndefined() - expect(getMaxTemperature('gpt-5.1-nano')).toBeUndefined() - expect(getMaxTemperature('gpt-5.1-codex')).toBeUndefined() expect(getMaxTemperature('azure/gpt-5.1')).toBeUndefined() expect(getMaxTemperature('azure/gpt-5.1-mini')).toBeUndefined() expect(getMaxTemperature('azure/gpt-5.1-nano')).toBeUndefined() @@ -325,9 +319,6 @@ describe('Model Capabilities', () => { it.concurrent('should have correct models in MODELS_WITH_REASONING_EFFORT', () => { // Should contain GPT-5.1 models that support reasoning effort expect(MODELS_WITH_REASONING_EFFORT).toContain('gpt-5.1') - expect(MODELS_WITH_REASONING_EFFORT).toContain('gpt-5.1-mini') - expect(MODELS_WITH_REASONING_EFFORT).toContain('gpt-5.1-nano') - expect(MODELS_WITH_REASONING_EFFORT).toContain('gpt-5.1-codex') expect(MODELS_WITH_REASONING_EFFORT).toContain('azure/gpt-5.1') expect(MODELS_WITH_REASONING_EFFORT).toContain('azure/gpt-5.1-mini') expect(MODELS_WITH_REASONING_EFFORT).toContain('azure/gpt-5.1-nano') @@ -354,9 +345,6 @@ describe('Model Capabilities', () => { it.concurrent('should have correct models in MODELS_WITH_VERBOSITY', () => { // Should contain GPT-5.1 models that support verbosity expect(MODELS_WITH_VERBOSITY).toContain('gpt-5.1') - expect(MODELS_WITH_VERBOSITY).toContain('gpt-5.1-mini') - expect(MODELS_WITH_VERBOSITY).toContain('gpt-5.1-nano') - expect(MODELS_WITH_VERBOSITY).toContain('gpt-5.1-codex') expect(MODELS_WITH_VERBOSITY).toContain('azure/gpt-5.1') expect(MODELS_WITH_VERBOSITY).toContain('azure/gpt-5.1-mini') expect(MODELS_WITH_VERBOSITY).toContain('azure/gpt-5.1-nano') diff --git a/apps/sim/stores/workflows/workflow/types.ts b/apps/sim/stores/workflows/workflow/types.ts index 17dbc1ca70..f0244ab7b3 100644 --- a/apps/sim/stores/workflows/workflow/types.ts +++ b/apps/sim/stores/workflows/workflow/types.ts @@ -100,7 +100,6 @@ export interface LoopBlock { width: number height: number executionState: { - currentIteration: number isExecuting: boolean startTime: null | number endTime: null | number