2
0
Files
bot/packages/radar/index.ts
2024-07-02 11:03:33 +02:00

86 lines
2.0 KiB
TypeScript

import { env } from '@typebot.io/env'
type Params = {
debug: boolean
}
export const computeRiskLevel = (typebot: any, params?: Params) => {
const stringifiedTypebot = JSON.stringify(typebot)
console.log(
'debug cumulative',
env.RADAR_CUMULATIVE_KEYWORDS?.forEach((set) =>
set.forEach((keyword) =>
keyword.forEach((k) => {
console.log(
`(?<!(https?://|@)[^\\s"]*)\\b${k}${k.includes('$') ? '' : `\\b`}`
)
})
)
)
)
if (
env.RADAR_HIGH_RISK_KEYWORDS?.some((keyword) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${keyword}${
keyword.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
)
) {
if (params?.debug) {
console.log(
'High risk keywords detected:',
env.RADAR_HIGH_RISK_KEYWORDS?.find((keyword) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${keyword}${
keyword.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
)
)
}
return 100
}
if (
env.RADAR_CUMULATIVE_KEYWORDS?.some((set) =>
set.every((keyword) =>
keyword.some((k) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${k}${k.includes('$') ? '' : `\\b`}`,
'gi'
).test(stringifiedTypebot)
)
)
)
) {
if (params?.debug) {
console.log(
'Cumulative keywords detected:',
env.RADAR_CUMULATIVE_KEYWORDS?.find((set) =>
set.every((keyword) =>
keyword.some((k) =>
new RegExp(
`(?<!(https?://|@)[^\\s"]*)\\b${k}${
k.includes('$') ? '' : `\\b`
}`,
'gi'
).test(stringifiedTypebot)
)
)
)
)
}
return 100
}
if (
env.RADAR_INTERMEDIATE_RISK_KEYWORDS?.some((keyword) =>
stringifiedTypebot.toLowerCase().includes(keyword)
)
)
return 50
return 0
}