Skip to content

Commit 96eb075

Browse files
committed
Fix sanitizationg
1 parent c93dd74 commit 96eb075

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

apps/sim/app/api/templates/approved/sanitized/route.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,33 @@ export async function GET(request: NextRequest) {
7777
// The template.state is already credential-sanitized, now sanitize for copilot
7878
const copilotSanitized = sanitizeForCopilot(template.state as any)
7979

80+
// Defensively remove any outputs fields that might have leaked through
81+
// This ensures runtime execution data is never sent to copilot
82+
if (copilotSanitized?.blocks) {
83+
Object.values(copilotSanitized.blocks).forEach((block: any) => {
84+
if (block && typeof block === 'object') {
85+
delete block.outputs
86+
delete block.position
87+
delete block.height
88+
delete block.layout
89+
delete block.horizontalHandles
90+
91+
// Also clean nested nodes recursively
92+
if (block.nestedNodes) {
93+
Object.values(block.nestedNodes).forEach((nestedBlock: any) => {
94+
if (nestedBlock && typeof nestedBlock === 'object') {
95+
delete nestedBlock.outputs
96+
delete nestedBlock.position
97+
delete nestedBlock.height
98+
delete nestedBlock.layout
99+
delete nestedBlock.horizontalHandles
100+
}
101+
})
102+
}
103+
}
104+
})
105+
}
106+
80107
// Extract description from details
81108
const details = template.details as { tagline?: string; about?: string } | null
82109
const description = details?.tagline || details?.about || ''

apps/sim/lib/workflows/json-sanitizer.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,7 @@ export function sanitizeForCopilot(state: WorkflowState): CopilotWorkflowState {
349349
})
350350
}
351351

352+
// Create clean result without runtime data (outputs, positions, layout, etc.)
352353
const result: CopilotBlockState = {
353354
type: block.type,
354355
name: block.name,
@@ -361,6 +362,9 @@ export function sanitizeForCopilot(state: WorkflowState): CopilotWorkflowState {
361362
if (block.advancedMode !== undefined) result.advancedMode = block.advancedMode
362363
if (block.triggerMode !== undefined) result.triggerMode = block.triggerMode
363364

365+
// Note: outputs, position, height, layout, horizontalHandles are intentionally excluded
366+
// These are runtime/UI-specific fields not needed for copilot understanding
367+
364368
return result
365369
}
366370

0 commit comments

Comments
 (0)