Skip to content

Commit 3a11d99

Browse files
committed
fix(agentphone): validate numeric inputs and metadata JSON
1 parent d995d6f commit 3a11d99

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

apps/sim/blocks/blocks/agentphone.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { toError } from '@sim/utils/errors'
12
import { AgentPhoneIcon } from '@/components/icons'
23
import type { BlockConfig } from '@/blocks/types'
34
import { AuthMode, IntegrationType } from '@/blocks/types'
@@ -562,16 +563,24 @@ export const AgentPhoneBlock: BlockConfig = {
562563
if (callsSearch) rest.search = callsSearch
563564
}
564565

566+
const toFiniteNumber = (value: unknown, field: string): number => {
567+
const parsed = Number(value)
568+
if (!Number.isFinite(parsed)) {
569+
throw new Error(`Invalid numeric value for ${field}: ${String(value)}`)
570+
}
571+
return parsed
572+
}
573+
565574
if (operation === 'get_conversation' && messageLimit !== undefined && messageLimit !== '') {
566-
rest.messageLimit = Number(messageLimit)
575+
rest.messageLimit = toFiniteNumber(messageLimit, 'Message Limit')
567576
}
568577

569578
if (
570579
(operation === 'get_number_messages' || operation === 'get_conversation_messages') &&
571580
messagesLimit !== undefined &&
572581
messagesLimit !== ''
573582
) {
574-
rest.limit = Number(messagesLimit)
583+
rest.limit = toFiniteNumber(messagesLimit, 'Limit')
575584
}
576585

577586
if (
@@ -580,19 +589,19 @@ export const AgentPhoneBlock: BlockConfig = {
580589
limit !== undefined &&
581590
limit !== ''
582591
) {
583-
rest.limit = Number(limit)
592+
rest.limit = toFiniteNumber(limit, 'Limit')
584593
}
585594

586595
if (offset !== undefined && offset !== '') {
587-
rest.offset = Number(offset)
596+
rest.offset = toFiniteNumber(offset, 'Offset')
588597
}
589598

590599
if (operation === 'get_usage_daily' && usageDays !== undefined && usageDays !== '') {
591-
rest.days = Number(usageDays)
600+
rest.days = toFiniteNumber(usageDays, 'Days')
592601
}
593602

594603
if (operation === 'get_usage_monthly' && usageMonths !== undefined && usageMonths !== '') {
595-
rest.months = Number(usageMonths)
604+
rest.months = toFiniteNumber(usageMonths, 'Months')
596605
}
597606

598607
if (operation === 'update_conversation' && metadata !== undefined) {
@@ -601,8 +610,8 @@ export const AgentPhoneBlock: BlockConfig = {
601610
} else if (typeof metadata === 'string') {
602611
try {
603612
rest.metadata = JSON.parse(metadata)
604-
} catch {
605-
rest.metadata = metadata
613+
} catch (error) {
614+
throw new Error(`Invalid JSON for Metadata: ${toError(error).message}`)
606615
}
607616
} else {
608617
rest.metadata = metadata

0 commit comments

Comments
 (0)