Skip to content

Commit 1e80633

Browse files
committed
address greptile comments
1 parent e1c5737 commit 1e80633

8 files changed

Lines changed: 55 additions & 18 deletions

File tree

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components/output-select/output-select.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useMemo } from 'react'
55
import { RepeatIcon, SplitIcon } from 'lucide-react'
66
import { Combobox, type ComboboxOptionGroup } from '@/components/emcn'
77
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
8+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
89
import { getBlock } from '@/blocks'
910
import { useWorkflowDiffStore } from '@/stores/workflow-diff/store'
1011
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
@@ -120,6 +121,8 @@ export function OutputSelect({
120121
: `block-${block.id}`
121122

122123
const blockConfig = getBlock(block.type)
124+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
125+
const effectiveTriggerMode = Boolean(block.triggerMode && isTriggerCapable)
123126

124127
let outputsToProcess: Record<string, unknown> = {}
125128
const rawSubBlockValues =
@@ -135,8 +138,8 @@ export function OutputSelect({
135138
}
136139

137140
outputsToProcess = getEffectiveBlockOutputs(block.type, subBlocks, {
138-
triggerMode: Boolean(block.triggerMode),
139-
preferToolOutputs: !block.triggerMode,
141+
triggerMode: effectiveTriggerMode,
142+
preferToolOutputs: !effectiveTriggerMode,
140143
}) as Record<string, unknown>
141144

142145
if (Object.keys(outputsToProcess).length === 0) return

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
getEffectiveBlockOutputType,
1919
getOutputPathsFromSchema,
2020
} from '@/lib/workflows/blocks/block-outputs'
21+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
2122
import { TRIGGER_TYPES } from '@/lib/workflows/triggers/triggers'
2223
import { KeyboardNavigationHandler } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/components/keyboard-navigation-handler'
2324
import type {
@@ -214,7 +215,8 @@ const getOutputTypeForPath = (
214215

215216
const subBlocks =
216217
mergedSubBlocksOverride ?? useWorkflowStore.getState().blocks[blockId]?.subBlocks
217-
const triggerMode = Boolean(block?.triggerMode && blockConfig?.triggers?.enabled)
218+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
219+
const triggerMode = Boolean(block?.triggerMode && isTriggerCapable)
218220

219221
return getEffectiveBlockOutputType(block?.type ?? '', outputPath, subBlocks, {
220222
triggerMode,
@@ -1074,9 +1076,12 @@ export const TagDropdown: React.FC<TagDropdownProps> = ({
10741076
blockTags = [normalizedBlockName]
10751077
}
10761078
} else {
1079+
const sourceBlockConfig = getBlock(sourceBlock.type)
1080+
const isTriggerCapable = sourceBlockConfig ? hasTriggerCapability(sourceBlockConfig) : false
1081+
const effectiveTriggerMode = Boolean(sourceBlock.triggerMode && isTriggerCapable)
10771082
const outputPaths = getEffectiveBlockOutputPaths(sourceBlock.type, mergedSubBlocks, {
1078-
triggerMode: Boolean(sourceBlock.triggerMode),
1079-
preferToolOutputs: !sourceBlock.triggerMode,
1083+
triggerMode: effectiveTriggerMode,
1084+
preferToolOutputs: !effectiveTriggerMode,
10801085
})
10811086
const allTags = outputPaths.map((path) => `${normalizedBlockName}.${path}`)
10821087

@@ -1319,9 +1324,14 @@ export const TagDropdown: React.FC<TagDropdownProps> = ({
13191324
blockTags = [normalizedBlockName]
13201325
}
13211326
} else {
1327+
const accessibleBlockConfig = getBlock(accessibleBlock.type)
1328+
const isTriggerCapable = accessibleBlockConfig
1329+
? hasTriggerCapability(accessibleBlockConfig)
1330+
: false
1331+
const effectiveTriggerMode = Boolean(accessibleBlock.triggerMode && isTriggerCapable)
13221332
const outputPaths = getEffectiveBlockOutputPaths(accessibleBlock.type, mergedSubBlocks, {
1323-
triggerMode: Boolean(accessibleBlock.triggerMode),
1324-
preferToolOutputs: !accessibleBlock.triggerMode,
1333+
triggerMode: effectiveTriggerMode,
1334+
preferToolOutputs: !effectiveTriggerMode,
13251335
})
13261336
const allTags = outputPaths.map((path) => `${normalizedBlockName}.${path}`)
13271337

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/hooks/use-block-connections.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { useShallow } from 'zustand/react/shallow'
22
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
33
import { BlockPathCalculator } from '@/lib/workflows/blocks/block-path-calculator'
4+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
5+
import { getBlock } from '@/blocks'
46
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
57
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
68
import { useWorkflowStore } from '@/stores/workflows/workflow/store'
@@ -87,10 +89,13 @@ export function useBlockConnections(blockId: string) {
8789

8890
// Get merged subblocks for this source block
8991
const mergedSubBlocks = getMergedSubBlocks(sourceId)
92+
const blockConfig = getBlock(sourceBlock.type)
93+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
94+
const effectiveTriggerMode = Boolean(sourceBlock.triggerMode && isTriggerCapable)
9095

9196
const blockOutputs = getEffectiveBlockOutputs(sourceBlock.type, mergedSubBlocks, {
92-
triggerMode: Boolean(sourceBlock.triggerMode),
93-
preferToolOutputs: !sourceBlock.triggerMode,
97+
triggerMode: effectiveTriggerMode,
98+
preferToolOutputs: !effectiveTriggerMode,
9499
})
95100

96101
const outputFields: Field[] = Object.entries(blockOutputs).map(

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-block-output-fields.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import { useMemo } from 'react'
44
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
5+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
56
import type { SchemaField } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/connection-blocks/components/field-item/field-item'
67
import { getBlock } from '@/blocks'
78
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
@@ -139,9 +140,11 @@ export function useBlockOutputFields({
139140
return []
140141
}
141142

143+
const isTriggerCapable = hasTriggerCapability(blockConfig)
144+
const effectiveTriggerMode = Boolean(triggerMode && isTriggerCapable)
142145
const baseOutputs = getEffectiveBlockOutputs(blockType, mergedSubBlocks, {
143-
triggerMode: Boolean(triggerMode),
144-
preferToolOutputs: !triggerMode,
146+
triggerMode: effectiveTriggerMode,
147+
preferToolOutputs: !effectiveTriggerMode,
145148
}) as Record<string, any>
146149
if (Object.keys(baseOutputs).length === 0) {
147150
return []

apps/sim/executor/utils/block-data.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
2+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
3+
import { getBlock } from '@/blocks/registry'
24
import { isTriggerBehavior, normalizeName } from '@/executor/constants'
35
import type { ExecutionContext } from '@/executor/types'
46
import type { OutputSchema } from '@/executor/utils/block-reference'
@@ -36,7 +38,9 @@ function getRegistrySchema(block: SerializedBlock): OutputSchema | undefined {
3638
if (!blockType) return undefined
3739

3840
const subBlocks = paramsToSubBlocks(block.config?.params)
39-
const triggerMode = isTriggerBehavior(block)
41+
const blockConfig = getBlock(blockType)
42+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
43+
const triggerMode = Boolean(isTriggerBehavior(block) && isTriggerCapable)
4044
const outputs = getEffectiveBlockOutputs(blockType, subBlocks, {
4145
triggerMode,
4246
preferToolOutputs: !triggerMode,

apps/sim/lib/copilot/orchestrator/tool-executor/workflow-tools/queries.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import {
1515
loadWorkflowFromNormalizedTables,
1616
} from '@/lib/workflows/persistence/utils'
1717
import { isInputDefinitionTrigger } from '@/lib/workflows/triggers/input-definition-triggers'
18+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
19+
import { getBlock } from '@/blocks/registry'
1820
import { normalizeName } from '@/executor/constants'
1921
import type { Loop, Parallel } from '@/stores/workflows/workflow/types'
2022
import {
@@ -343,7 +345,9 @@ export async function executeGetBlockOutputs(
343345
continue
344346
}
345347

346-
const triggerMode = Boolean(block.triggerMode)
348+
const blockConfig = getBlock(block.type)
349+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
350+
const triggerMode = Boolean(block.triggerMode && isTriggerCapable)
347351
const outputs = getEffectiveBlockOutputPaths(block.type, block.subBlocks, {
348352
triggerMode,
349353
preferToolOutputs: !triggerMode,
@@ -489,7 +493,9 @@ export async function executeGetBlockUpstreamReferences(
489493
? getSubflowInsidePaths(block.type, accessibleBlockId, loops, parallels)
490494
: ['results']
491495
} else {
492-
const triggerMode = Boolean(block.triggerMode)
496+
const blockConfig = getBlock(block.type)
497+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
498+
const triggerMode = Boolean(block.triggerMode && isTriggerCapable)
493499
outputPaths = getEffectiveBlockOutputPaths(block.type, block.subBlocks, {
494500
triggerMode,
495501
preferToolOutputs: !triggerMode,

apps/sim/lib/copilot/tools/server/workflow/edit-workflow/builders.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { createLogger } from '@sim/logger'
33
import type { PermissionGroupConfig } from '@/lib/permission-groups/types'
44
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
55
import { buildCanonicalIndex, isCanonicalPair } from '@/lib/workflows/subblocks/visibility'
6+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
67
import { getAllBlocks } from '@/blocks/registry'
78
import type { BlockConfig } from '@/blocks/types'
89
import { TRIGGER_RUNTIME_SUBBLOCK_IDS } from '@/triggers/constants'
@@ -39,6 +40,8 @@ export function createBlockFromParams(
3940

4041
// Determine outputs based on trigger mode
4142
const triggerMode = params.triggerMode || false
43+
const isTriggerCapable = blockConfig ? hasTriggerCapability(blockConfig) : false
44+
const effectiveTriggerMode = Boolean(triggerMode && isTriggerCapable)
4245
let outputs: Record<string, any>
4346

4447
if (params.outputs) {
@@ -55,8 +58,8 @@ export function createBlockFromParams(
5558
})
5659
}
5760
outputs = getEffectiveBlockOutputs(params.type, subBlocks, {
58-
triggerMode,
59-
preferToolOutputs: !triggerMode,
61+
triggerMode: effectiveTriggerMode,
62+
preferToolOutputs: !effectiveTriggerMode,
6063
})
6164
} else {
6265
outputs = {}

apps/sim/stores/workflows/utils.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { v4 as uuidv4 } from 'uuid'
33
import { DEFAULT_DUPLICATE_OFFSET } from '@/lib/workflows/autolayout/constants'
44
import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
55
import { mergeSubblockStateWithValues } from '@/lib/workflows/subblocks'
6+
import { hasTriggerCapability } from '@/lib/workflows/triggers/trigger-utils'
67
import { TriggerUtils } from '@/lib/workflows/triggers/triggers'
78
import { getBlock } from '@/blocks'
89
import { isAnnotationOnlyBlock, normalizeName } from '@/executor/constants'
@@ -188,9 +189,11 @@ export function prepareBlockState(options: PrepareBlockStateOptions): BlockState
188189
})
189190
}
190191

192+
const isTriggerCapable = hasTriggerCapability(blockConfig)
193+
const effectiveTriggerMode = Boolean(triggerMode && isTriggerCapable)
191194
const outputs = getEffectiveBlockOutputs(type, subBlocks, {
192-
triggerMode,
193-
preferToolOutputs: !triggerMode,
195+
triggerMode: effectiveTriggerMode,
196+
preferToolOutputs: !effectiveTriggerMode,
194197
})
195198

196199
return {

0 commit comments

Comments
 (0)