Skip to content

Commit 8994bd5

Browse files
committed
fix(trigger_dev): guard the path params the timeout sweep left behind
42 user-or-llm path params were on bare encodeURIComponent, which leaves a dot segment intact. The shared env-var URL builder covers 15 of them, including the DELETE and PUT shapes. queueName and taskIdentifier stay separator-tolerant: the Trigger.dev SDK special-cases a slash inside a queue parameter, so rejecting one would refuse a value the provider treats as legal. No exploitable consequence was demonstrated -- every collapsed route probed returns 404.
1 parent e33b055 commit 8994bd5

29 files changed

Lines changed: 477 additions & 29 deletions

apps/sim/tools/trigger_dev/activate_schedule.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
TRIGGER_DEV_SCHEDULE_OUTPUTS,
1010
} from '@/tools/trigger_dev/utils'
1111
import type { ToolConfig } from '@/tools/types'
12+
import { safeUrlPathSegment } from '@/tools/url-path'
1213

1314
export const triggerDevActivateScheduleTool: ToolConfig<
1415
TriggerDevScheduleIdParams,
@@ -36,7 +37,7 @@ export const triggerDevActivateScheduleTool: ToolConfig<
3637

3738
request: {
3839
url: (params) =>
39-
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${encodeURIComponent(params.scheduleId.trim())}/activate`,
40+
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${safeUrlPathSegment(params.scheduleId, 'scheduleId')}/activate`,
4041
method: 'POST',
4142
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4243
},

apps/sim/tools/trigger_dev/add_run_tags.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TRIGGER_DEV_API_BASE,
99
} from '@/tools/trigger_dev/utils'
1010
import type { ToolConfig } from '@/tools/types'
11+
import { safeUrlPathSegment } from '@/tools/url-path'
1112

1213
export const triggerDevAddRunTagsTool: ToolConfig<
1314
TriggerDevAddRunTagsParams,
@@ -42,7 +43,7 @@ export const triggerDevAddRunTagsTool: ToolConfig<
4243

4344
request: {
4445
url: (params) =>
45-
`${TRIGGER_DEV_API_BASE}/api/v1/runs/${encodeURIComponent(params.runId.trim())}/tags`,
46+
`${TRIGGER_DEV_API_BASE}/api/v1/runs/${safeUrlPathSegment(params.runId, 'runId')}/tags`,
4647
method: 'POST',
4748
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4849
body: (params) => ({ tags: splitCommaSeparated(params.tags) }),

apps/sim/tools/trigger_dev/batch_trigger_task.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
import {
66
buildTriggerDevHeaders,
77
parseJsonInput,
8+
safeTriggerDevPathSegment,
89
TRIGGER_DEV_API_BASE,
910
} from '@/tools/trigger_dev/utils'
1011
import type { ToolConfig } from '@/tools/types'
@@ -43,7 +44,7 @@ export const triggerDevBatchTriggerTaskTool: ToolConfig<
4344

4445
request: {
4546
url: (params) =>
46-
`${TRIGGER_DEV_API_BASE}/api/v1/tasks/${encodeURIComponent(params.taskIdentifier.trim())}/batch`,
47+
`${TRIGGER_DEV_API_BASE}/api/v1/tasks/${safeTriggerDevPathSegment(params.taskIdentifier, 'taskIdentifier')}/batch`,
4748
method: 'POST',
4849
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4950
body: (params) => {

apps/sim/tools/trigger_dev/cancel_run.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { TriggerDevRunActionResponse, TriggerDevRunIdParams } from '@/tools/trigger_dev/types'
22
import { buildTriggerDevHeaders, TRIGGER_DEV_API_BASE } from '@/tools/trigger_dev/utils'
33
import type { ToolConfig } from '@/tools/types'
4+
import { safeUrlPathSegment } from '@/tools/url-path'
45

56
export const triggerDevCancelRunTool: ToolConfig<
67
TriggerDevRunIdParams,
@@ -29,7 +30,7 @@ export const triggerDevCancelRunTool: ToolConfig<
2930

3031
request: {
3132
url: (params) =>
32-
`${TRIGGER_DEV_API_BASE}/api/v2/runs/${encodeURIComponent(params.runId.trim())}/cancel`,
33+
`${TRIGGER_DEV_API_BASE}/api/v2/runs/${safeUrlPathSegment(params.runId, 'runId')}/cancel`,
3334
method: 'POST',
3435
headers: (params) => buildTriggerDevHeaders(params.apiKey),
3536
},

apps/sim/tools/trigger_dev/complete_waitpoint_token.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TRIGGER_DEV_API_BASE,
99
} from '@/tools/trigger_dev/utils'
1010
import type { ToolConfig } from '@/tools/types'
11+
import { safeUrlPathSegment } from '@/tools/url-path'
1112

1213
export const triggerDevCompleteWaitpointTokenTool: ToolConfig<
1314
TriggerDevCompleteWaitpointTokenParams,
@@ -43,7 +44,7 @@ export const triggerDevCompleteWaitpointTokenTool: ToolConfig<
4344

4445
request: {
4546
url: (params) =>
46-
`${TRIGGER_DEV_API_BASE}/api/v1/waitpoints/tokens/${encodeURIComponent(params.waitpointId.trim())}/complete`,
47+
`${TRIGGER_DEV_API_BASE}/api/v1/waitpoints/tokens/${safeUrlPathSegment(params.waitpointId, 'waitpointId')}/complete`,
4748
method: 'POST',
4849
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4950
body: (params) => {

apps/sim/tools/trigger_dev/deactivate_schedule.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
TRIGGER_DEV_SCHEDULE_OUTPUTS,
1010
} from '@/tools/trigger_dev/utils'
1111
import type { ToolConfig } from '@/tools/types'
12+
import { safeUrlPathSegment } from '@/tools/url-path'
1213

1314
export const triggerDevDeactivateScheduleTool: ToolConfig<
1415
TriggerDevScheduleIdParams,
@@ -36,7 +37,7 @@ export const triggerDevDeactivateScheduleTool: ToolConfig<
3637

3738
request: {
3839
url: (params) =>
39-
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${encodeURIComponent(params.scheduleId.trim())}/deactivate`,
40+
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${safeUrlPathSegment(params.scheduleId, 'scheduleId')}/deactivate`,
4041
method: 'POST',
4142
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4243
},

apps/sim/tools/trigger_dev/delete_schedule.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
TRIGGER_DEV_API_BASE,
99
} from '@/tools/trigger_dev/utils'
1010
import type { ToolConfig } from '@/tools/types'
11+
import { safeUrlPathSegment } from '@/tools/url-path'
1112

1213
export const triggerDevDeleteScheduleTool: ToolConfig<
1314
TriggerDevScheduleIdParams,
@@ -35,7 +36,7 @@ export const triggerDevDeleteScheduleTool: ToolConfig<
3536

3637
request: {
3738
url: (params) =>
38-
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${encodeURIComponent(params.scheduleId.trim())}`,
39+
`${TRIGGER_DEV_API_BASE}/api/v1/schedules/${safeUrlPathSegment(params.scheduleId, 'scheduleId')}`,
3940
method: 'DELETE',
4041
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4142
},

apps/sim/tools/trigger_dev/get_batch.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { TriggerDevBatchIdParams, TriggerDevGetBatchResponse } from '@/tools/trigger_dev/types'
22
import { buildTriggerDevHeaders, TRIGGER_DEV_API_BASE } from '@/tools/trigger_dev/utils'
33
import type { ToolConfig } from '@/tools/types'
4+
import { safeUrlPathSegment } from '@/tools/url-path'
45

56
export const triggerDevGetBatchTool: ToolConfig<
67
TriggerDevBatchIdParams,
@@ -29,7 +30,7 @@ export const triggerDevGetBatchTool: ToolConfig<
2930

3031
request: {
3132
url: (params) =>
32-
`${TRIGGER_DEV_API_BASE}/api/v1/batches/${encodeURIComponent(params.batchId.trim())}`,
33+
`${TRIGGER_DEV_API_BASE}/api/v1/batches/${safeUrlPathSegment(params.batchId, 'batchId')}`,
3334
method: 'GET',
3435
headers: (params) => buildTriggerDevHeaders(params.apiKey),
3536
},

apps/sim/tools/trigger_dev/get_batch_results.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
TRIGGER_DEV_RUN_RESULT_PROPERTIES,
1010
} from '@/tools/trigger_dev/utils'
1111
import type { ToolConfig } from '@/tools/types'
12+
import { safeUrlPathSegment } from '@/tools/url-path'
1213

1314
export const triggerDevGetBatchResultsTool: ToolConfig<
1415
TriggerDevBatchIdParams,
@@ -37,7 +38,7 @@ export const triggerDevGetBatchResultsTool: ToolConfig<
3738

3839
request: {
3940
url: (params) =>
40-
`${TRIGGER_DEV_API_BASE}/api/v1/batches/${encodeURIComponent(params.batchId.trim())}/results`,
41+
`${TRIGGER_DEV_API_BASE}/api/v1/batches/${safeUrlPathSegment(params.batchId, 'batchId')}/results`,
4142
method: 'GET',
4243
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4344
},

apps/sim/tools/trigger_dev/get_deployment.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
TRIGGER_DEV_DEPLOYMENT_PROPERTIES,
1010
} from '@/tools/trigger_dev/utils'
1111
import type { ToolConfig } from '@/tools/types'
12+
import { safeUrlPathSegment } from '@/tools/url-path'
1213

1314
export const triggerDevGetDeploymentTool: ToolConfig<
1415
TriggerDevGetDeploymentParams,
@@ -37,7 +38,7 @@ export const triggerDevGetDeploymentTool: ToolConfig<
3738

3839
request: {
3940
url: (params) =>
40-
`${TRIGGER_DEV_API_BASE}/api/v1/deployments/${encodeURIComponent(params.deploymentId.trim())}`,
41+
`${TRIGGER_DEV_API_BASE}/api/v1/deployments/${safeUrlPathSegment(params.deploymentId, 'deploymentId')}`,
4142
method: 'GET',
4243
headers: (params) => buildTriggerDevHeaders(params.apiKey),
4344
},

0 commit comments

Comments
 (0)