Skip to content

Commit 7fd959c

Browse files
committed
fix: consistently strip HTML from tool input before JSON parsing
1 parent 9b3971d commit 7fd959c

File tree

7 files changed

+14
-9
lines changed

7 files changed

+14
-9
lines changed

packages/components/nodes/tools/OpenAPIToolkit/OpenAPIToolkit.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import $RefParser from '@apidevtools/json-schema-ref-parser'
55
import { z, ZodSchema, ZodTypeAny } from 'zod'
66
import { defaultCode, DynamicStructuredTool, howToUseCode } from './core'
77
import { DataSource } from 'typeorm'
8+
import { getBaseClasses, getVars, stripHTMLFromToolInput } from '../../../src/utils'
89

910
class OpenAPIToolkit_Tools implements INode {
1011
label: string
@@ -80,7 +81,7 @@ class OpenAPIToolkit_Tools implements INode {
8081
const _headers = nodeData.inputs?.headers as string
8182
const removeNulls = nodeData.inputs?.removeNulls as boolean
8283

83-
const headers = typeof _headers === 'object' ? _headers : _headers ? JSON.parse(_headers) : {}
84+
const headers = typeof _headers === 'object' ? _headers : _headers ? JSON.parse(stripHTMLFromToolInput(_headers)) : {}
8485

8586
let data
8687
if (yamlFileBase64.startsWith('FILE-STORAGE::')) {

packages/components/nodes/tools/RequestsDelete/core.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { z } from 'zod'
22
import { DynamicStructuredTool } from '../OpenAPIToolkit/core'
33
import { secureFetch } from '../../../src/httpSecurity'
4+
import { stripHTMLFromToolInput } from '../../../src/utils'
45

56
export const desc = `Use this when you need to execute a DELETE request to remove data from a website.`
67

@@ -22,7 +23,7 @@ const createRequestsDeleteSchema = (queryParamsSchema?: string) => {
2223
// If queryParamsSchema is provided, parse it and add dynamic query params
2324
if (queryParamsSchema) {
2425
try {
25-
const parsedSchema = JSON.parse(queryParamsSchema)
26+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(queryParamsSchema))
2627
const queryParamsObject: Record<string, z.ZodTypeAny> = {}
2728

2829
Object.entries(parsedSchema).forEach(([key, config]: [string, any]) => {
@@ -108,7 +109,7 @@ export class RequestsDeleteTool extends DynamicStructuredTool {
108109

109110
if (this.queryParamsSchema && params.queryParams && Object.keys(params.queryParams).length > 0) {
110111
try {
111-
const parsedSchema = JSON.parse(this.queryParamsSchema)
112+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(this.queryParamsSchema))
112113
const pathParams: Array<{ key: string; value: string }> = []
113114

114115
Object.entries(params.queryParams).forEach(([key, value]) => {

packages/components/nodes/tools/RequestsGet/core.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { z } from 'zod'
22
import { DynamicStructuredTool } from '../OpenAPIToolkit/core'
33
import { secureFetch } from '../../../src/httpSecurity'
4+
import { stripHTMLFromToolInput } from '../../../src/utils'
45

56
export const desc = `Use this when you need to execute a GET request to get data from a website.`
67

@@ -22,7 +23,7 @@ const createRequestsGetSchema = (queryParamsSchema?: string) => {
2223
// If queryParamsSchema is provided, parse it and add dynamic query params
2324
if (queryParamsSchema) {
2425
try {
25-
const parsedSchema = JSON.parse(queryParamsSchema)
26+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(queryParamsSchema))
2627
const queryParamsObject: Record<string, z.ZodTypeAny> = {}
2728

2829
Object.entries(parsedSchema).forEach(([key, config]: [string, any]) => {
@@ -108,7 +109,7 @@ export class RequestsGetTool extends DynamicStructuredTool {
108109

109110
if (this.queryParamsSchema && params.queryParams && Object.keys(params.queryParams).length > 0) {
110111
try {
111-
const parsedSchema = JSON.parse(this.queryParamsSchema)
112+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(this.queryParamsSchema))
112113
const pathParams: Array<{ key: string; value: string }> = []
113114

114115
Object.entries(params.queryParams).forEach(([key, value]) => {

packages/components/nodes/tools/RequestsPost/RequestsPost.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class RequestsPost_Tools implements INode {
144144
obj.headers = parsedHeaders
145145
}
146146
if (body) {
147-
const parsedBody = typeof body === 'object' ? body : JSON.parse(body)
147+
const parsedBody = typeof body === 'object' ? body : JSON.parse(stripHTMLFromToolInput(body))
148148
obj.body = parsedBody
149149
}
150150

packages/components/nodes/tools/RequestsPost/core.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { z } from 'zod'
22
import { DynamicStructuredTool } from '../OpenAPIToolkit/core'
33
import { secureFetch } from '../../../src/httpSecurity'
4+
import { stripHTMLFromToolInput } from '../../../src/utils'
45

56
export const desc = `Use this when you want to execute a POST request to create or update a resource.`
67

@@ -27,7 +28,7 @@ const createRequestsPostSchema = (bodySchema?: string) => {
2728
// If bodySchema is provided, parse it and add dynamic body params
2829
if (bodySchema) {
2930
try {
30-
const parsedSchema = JSON.parse(bodySchema)
31+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(bodySchema))
3132
const bodyParamsObject: Record<string, z.ZodTypeAny> = {}
3233

3334
Object.entries(parsedSchema).forEach(([key, config]: [string, any]) => {

packages/components/nodes/tools/RequestsPut/RequestsPut.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class RequestsPut_Tools implements INode {
144144
obj.headers = parsedHeaders
145145
}
146146
if (body) {
147-
const parsedBody = typeof body === 'object' ? body : JSON.parse(body)
147+
const parsedBody = typeof body === 'object' ? body : JSON.parse(stripHTMLFromToolInput(body))
148148
obj.body = parsedBody
149149
}
150150

packages/components/nodes/tools/RequestsPut/core.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { z } from 'zod'
22
import { DynamicStructuredTool } from '../OpenAPIToolkit/core'
33
import { secureFetch } from '../../../src/httpSecurity'
4+
import { stripHTMLFromToolInput } from '../../../src/utils'
45

56
export const desc = `Use this when you want to execute a PUT request to update or replace a resource.`
67

@@ -27,7 +28,7 @@ const createRequestsPutSchema = (bodySchema?: string) => {
2728
// If bodySchema is provided, parse it and add dynamic body params
2829
if (bodySchema) {
2930
try {
30-
const parsedSchema = JSON.parse(bodySchema)
31+
const parsedSchema = JSON.parse(stripHTMLFromToolInput(bodySchema))
3132
const bodyParamsObject: Record<string, z.ZodTypeAny> = {}
3233

3334
Object.entries(parsedSchema).forEach(([key, config]: [string, any]) => {

0 commit comments

Comments
 (0)