fix(conditions): make outputs correct (#2437)

This commit is contained in:
Vikhyath Mondreti
2025-12-17 17:15:16 -08:00
committed by GitHub
parent 731997f768
commit 26ca37328a
5 changed files with 7 additions and 16 deletions

View File

@@ -106,26 +106,24 @@ Different block types produce different output structures. Here's what you can e
<Tab>
```json
{
"content": "Original content passed through",
"conditionResult": true,
"selectedPath": {
"blockId": "2acd9007-27e8-4510-a487-73d3b825e7c1",
"blockType": "agent",
"blockTitle": "Follow-up Agent"
},
"selectedConditionId": "condition-1"
"selectedOption": "condition-1"
}
```
### Condition Block Output Fields
- **content**: The original content passed through
- **conditionResult**: Boolean result of the condition evaluation
- **selectedPath**: Information about the selected path
- **blockId**: ID of the next block in the selected path
- **blockType**: Type of the next block
- **blockTitle**: Title of the next block
- **selectedConditionId**: ID of the selected condition
- **selectedOption**: ID of the selected condition
</Tab>
<Tab>

View File

@@ -4,14 +4,13 @@ import type { BlockConfig } from '@/blocks/types'
interface ConditionBlockOutput {
success: boolean
output: {
content: string
conditionResult: boolean
selectedPath: {
blockId: string
blockType: string
blockTitle: string
}
selectedConditionId: string
selectedOption: string
}
}
@@ -40,9 +39,8 @@ export const ConditionBlock: BlockConfig<ConditionBlockOutput> = {
},
inputs: {},
outputs: {
content: { type: 'string', description: 'Condition evaluation content' },
conditionResult: { type: 'boolean', description: 'Condition result' },
selectedPath: { type: 'json', description: 'Selected execution path' },
selectedConditionId: { type: 'string', description: 'Selected condition identifier' },
selectedOption: { type: 'string', description: 'Selected condition option ID' },
},
}

View File

@@ -170,7 +170,6 @@ describe('ConditionBlockHandler', () => {
blockType: 'target',
blockTitle: 'Target Block 1',
},
selectedConditionId: 'cond1',
selectedOption: 'cond1',
}
@@ -210,7 +209,6 @@ describe('ConditionBlockHandler', () => {
blockType: 'target',
blockTitle: 'Target Block 2',
},
selectedConditionId: 'else1',
selectedOption: 'else1',
}
@@ -371,7 +369,7 @@ describe('ConditionBlockHandler', () => {
const result = await handler.execute(contextWithoutSource, mockBlock, inputs)
expect(result).toHaveProperty('conditionResult', true)
expect(result).toHaveProperty('selectedConditionId', 'cond1')
expect(result).toHaveProperty('selectedOption', 'cond1')
})
it('should throw error if target block is missing', async () => {
@@ -419,7 +417,6 @@ describe('ConditionBlockHandler', () => {
expect((result as any).conditionResult).toBe(false)
expect((result as any).selectedPath).toBeNull()
expect((result as any).selectedConditionId).toBeNull()
expect((result as any).selectedOption).toBeNull()
expect(mockContext.decisions.condition.has(mockBlock.id)).toBe(false)
})
@@ -438,6 +435,6 @@ describe('ConditionBlockHandler', () => {
const result = await handler.execute(mockContext, mockBlock, inputs)
expect(mockContext.decisions.condition.get(mockBlock.id)).toBe('else1')
expect((result as any).selectedConditionId).toBe('else1')
expect((result as any).selectedOption).toBe('else1')
})
})

View File

@@ -117,7 +117,6 @@ export class ConditionBlockHandler implements BlockHandler {
...((sourceOutput as any) || {}),
conditionResult: false,
selectedPath: null,
selectedConditionId: null,
selectedOption: null,
}
}
@@ -139,7 +138,6 @@ export class ConditionBlockHandler implements BlockHandler {
blockTitle: targetBlock.metadata?.name || DEFAULTS.BLOCK_TITLE,
},
selectedOption: selectedCondition.id,
selectedConditionId: selectedCondition.id,
}
}

View File

@@ -83,7 +83,7 @@ export interface NormalizedBlockOutput {
blockType?: string
blockTitle?: string
}
selectedConditionId?: string
selectedOption?: string
conditionResult?: boolean
result?: any
stdout?: string