Skip to content

Commit 7f0f902

Browse files
authored
fix(router): fixed routing issue with workflow block, added tests (#739)
* fixed routing issue with workflow block, added tests * add new dmeo * change console to logger * new demo * changed all console to logger
1 parent 7739917 commit 7f0f902

File tree

23 files changed

+732
-98
lines changed

23 files changed

+732
-98
lines changed

apps/sim/app/api/tools/confluence/pages/route.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { NextResponse } from 'next/server'
2+
import { createLogger } from '@/lib/logs/console-logger'
23
import { getConfluenceCloudId } from '@/tools/confluence/utils'
34

5+
const logger = createLogger('ConfluencePages')
6+
47
export const dynamic = 'force-dynamic'
58

69
export async function POST(request: Request) {
@@ -39,7 +42,7 @@ export async function POST(request: Request) {
3942
const queryString = queryParams.toString()
4043
const url = queryString ? `${baseUrl}?${queryString}` : baseUrl
4144

42-
console.log(`Fetching Confluence pages from: ${url}`)
45+
logger.info(`Fetching Confluence pages from: ${url}`)
4346

4447
// Make the request to Confluence API with OAuth Bearer token
4548
const response = await fetch(url, {
@@ -50,23 +53,23 @@ export async function POST(request: Request) {
5053
},
5154
})
5255

53-
console.log('Response status:', response.status, response.statusText)
56+
logger.info('Response status:', response.status, response.statusText)
5457

5558
if (!response.ok) {
56-
console.error(`Confluence API error: ${response.status} ${response.statusText}`)
59+
logger.error(`Confluence API error: ${response.status} ${response.statusText}`)
5760
let errorMessage
5861

5962
try {
6063
const errorData = await response.json()
61-
console.error('Error details:', JSON.stringify(errorData, null, 2))
64+
logger.error('Error details:', JSON.stringify(errorData, null, 2))
6265
errorMessage = errorData.message || `Failed to fetch Confluence pages (${response.status})`
6366
} catch (e) {
64-
console.error('Could not parse error response as JSON:', e)
67+
logger.error('Could not parse error response as JSON:', e)
6568

6669
// Try to get the response text for more context
6770
try {
6871
const text = await response.text()
69-
console.error('Response text:', text)
72+
logger.error('Response text:', text)
7073
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
7174
} catch (_textError) {
7275
errorMessage = `Failed to fetch Confluence pages: ${response.status} ${response.statusText}`
@@ -77,13 +80,13 @@ export async function POST(request: Request) {
7780
}
7881

7982
const data = await response.json()
80-
console.log('Confluence API response:', `${JSON.stringify(data, null, 2).substring(0, 300)}...`)
81-
console.log(`Found ${data.results?.length || 0} pages`)
83+
logger.info('Confluence API response:', `${JSON.stringify(data, null, 2).substring(0, 300)}...`)
84+
logger.info(`Found ${data.results?.length || 0} pages`)
8285

8386
if (data.results && data.results.length > 0) {
84-
console.log('First few pages:')
87+
logger.info('First few pages:')
8588
for (const page of data.results.slice(0, 3)) {
86-
console.log(`- ${page.id}: ${page.title}`)
89+
logger.info(`- ${page.id}: ${page.title}`)
8790
}
8891
}
8992

@@ -99,7 +102,7 @@ export async function POST(request: Request) {
99102
})),
100103
})
101104
} catch (error) {
102-
console.error('Error fetching Confluence pages:', error)
105+
logger.error('Error fetching Confluence pages:', error)
103106
return NextResponse.json(
104107
{ error: (error as Error).message || 'Internal server error' },
105108
{ status: 500 }

apps/sim/app/api/workspaces/route.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ import crypto from 'crypto'
22
import { and, desc, eq, isNull } from 'drizzle-orm'
33
import { NextResponse } from 'next/server'
44
import { getSession } from '@/lib/auth'
5+
import { createLogger } from '@/lib/logs/console-logger'
56
import { db } from '@/db'
67
import { permissions, workflow, workflowBlocks, workspace } from '@/db/schema'
78

9+
const logger = createLogger('Workspaces')
10+
811
// Get all workspaces for the current user
912
export async function GET() {
1013
const session = await getSession()
@@ -244,12 +247,12 @@ async function createWorkspace(userId: string, name: string) {
244247
updatedAt: now,
245248
})
246249

247-
console.log(
248-
`Created workspace ${workspaceId} with initial workflow ${workflowId} for user ${userId}`
250+
logger.info(
251+
`Created workspace ${workspaceId} with initial workflow ${workflowId} for user ${userId}`
249252
)
250253
})
251254
} catch (error) {
252-
console.error(`Failed to create workspace ${workspaceId} with initial workflow:`, error)
255+
logger.error(`Failed to create workspace ${workspaceId} with initial workflow:`, error)
253256
throw error
254257
}
255258

@@ -276,7 +279,7 @@ async function migrateExistingWorkflows(userId: string, workspaceId: string) {
276279
return // No orphaned workflows to migrate
277280
}
278281

279-
console.log(
282+
logger.info(
280283
`Migrating ${orphanedWorkflows.length} workflows to workspace ${workspaceId} for user ${userId}`
281284
)
282285

@@ -308,6 +311,6 @@ async function ensureWorkflowsHaveWorkspace(userId: string, defaultWorkspaceId:
308311
})
309312
.where(and(eq(workflow.userId, userId), isNull(workflow.workspaceId)))
310313

311-
console.log(`Fixed ${orphanedWorkflows.length} orphaned workflows for user ${userId}`)
314+
logger.info(`Fixed ${orphanedWorkflows.length} orphaned workflows for user ${userId}`)
312315
}
313316
}

apps/sim/app/workspace/[workspaceId]/templates/[id]/page.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { and, eq } from 'drizzle-orm'
22
import { notFound } from 'next/navigation'
33
import { getSession } from '@/lib/auth'
4+
import { createLogger } from '@/lib/logs/console-logger'
45
import { db } from '@/db'
56
import { templateStars, templates } from '@/db/schema'
67
import type { Template } from '../templates'
78
import TemplateDetails from './template'
89

10+
const logger = createLogger('TemplatePage')
11+
912
interface TemplatePageProps {
1013
params: Promise<{
1114
workspaceId: string
@@ -58,7 +61,7 @@ export default async function TemplatePage({ params }: TemplatePageProps) {
5861

5962
// Validate that required fields are present
6063
if (!template.id || !template.name || !template.author) {
61-
console.error('Template missing required fields:', {
64+
logger.error('Template missing required fields:', {
6265
id: template.id,
6366
name: template.name,
6467
author: template.author,
@@ -100,9 +103,9 @@ export default async function TemplatePage({ params }: TemplatePageProps) {
100103
isStarred,
101104
}
102105

103-
console.log('Template from DB:', template)
104-
console.log('Serialized template:', serializedTemplate)
105-
console.log('Template state from DB:', template.state)
106+
logger.info('Template from DB:', template)
107+
logger.info('Serialized template:', serializedTemplate)
108+
logger.info('Template state from DB:', template.state)
106109

107110
return (
108111
<TemplateDetails

apps/sim/app/workspace/[workspaceId]/templates/[id]/template.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ export default function TemplateDetails({
143143
const renderWorkflowPreview = () => {
144144
// Follow the same pattern as deployed-workflow-card.tsx
145145
if (!template?.state) {
146-
console.log('Template has no state:', template)
146+
logger.info('Template has no state:', template)
147147
return (
148148
<div className='flex h-full items-center justify-center text-center'>
149149
<div className='text-muted-foreground'>
@@ -154,10 +154,10 @@ export default function TemplateDetails({
154154
)
155155
}
156156

157-
console.log('Template state:', template.state)
158-
console.log('Template state type:', typeof template.state)
159-
console.log('Template state blocks:', template.state.blocks)
160-
console.log('Template state edges:', template.state.edges)
157+
logger.info('Template state:', template.state)
158+
logger.info('Template state type:', typeof template.state)
159+
logger.info('Template state blocks:', template.state.blocks)
160+
logger.info('Template state edges:', template.state.edges)
161161

162162
try {
163163
return (

apps/sim/app/workspace/[workspaceId]/templates/templates.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export default function Templates({ initialTemplates, currentUserId }: Templates
9292

9393
const handleCreateNew = () => {
9494
// TODO: Open create template modal or navigate to create page
95-
console.log('Create new template')
95+
logger.info('Create new template')
9696
}
9797

9898
// Handle star change callback from template card

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/variables/variables.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ import {
1717
import { Input } from '@/components/ui/input'
1818
import { ScrollArea } from '@/components/ui/scroll-area'
1919
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
20+
import { createLogger } from '@/lib/logs/console-logger'
2021
import { validateName } from '@/lib/utils'
2122
import { useVariablesStore } from '@/stores/panel/variables/store'
2223
import type { Variable, VariableType } from '@/stores/panel/variables/types'
2324
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
2425

26+
const logger = createLogger('Variables')
27+
2528
export function Variables() {
2629
const { activeWorkflowId, workflows } = useWorkflowRegistry()
2730
const {
@@ -190,7 +193,7 @@ export function Variables() {
190193

191194
return undefined // Valid object
192195
} catch (e) {
193-
console.log('Object parsing error:', e)
196+
logger.info('Object parsing error:', e)
194197
return 'Invalid object syntax'
195198
}
196199
case 'array':
@@ -215,7 +218,7 @@ export function Variables() {
215218

216219
return undefined // Valid array
217220
} catch (e) {
218-
console.log('Array parsing error:', e)
221+
logger.info('Array parsing error:', e)
219222
return 'Invalid array syntax'
220223
}
221224
default:

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/components/file-selector/components/confluence-file-selector.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
CommandList,
1414
} from '@/components/ui/command'
1515
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
16+
import { createLogger } from '@/lib/logs/console-logger'
1617
import {
1718
type Credential,
1819
getProviderIdFromServiceId,
@@ -21,6 +22,8 @@ import {
2122
} from '@/lib/oauth'
2223
import { OAuthRequiredModal } from '../../credential-selector/components/oauth-required-modal'
2324

25+
const logger = createLogger('ConfluenceFileSelector')
26+
2427
export interface ConfluenceFileInfo {
2528
id: string
2629
name: string
@@ -138,7 +141,7 @@ export function ConfluenceFileSelector({
138141
}
139142
}
140143
} catch (error) {
141-
console.error('Error fetching credentials:', error)
144+
logger.error('Error fetching credentials:', error)
142145
} finally {
143146
setIsLoading(false)
144147
}
@@ -205,7 +208,7 @@ export function ConfluenceFileSelector({
205208
onFileInfoChange?.(data.file)
206209
}
207210
} catch (error) {
208-
console.error('Error fetching page info:', error)
211+
logger.error('Error fetching page info:', error)
209212
setError((error as Error).message)
210213
} finally {
211214
setIsLoading(false)
@@ -247,7 +250,7 @@ export function ConfluenceFileSelector({
247250

248251
if (!tokenResponse.ok) {
249252
const errorData = await tokenResponse.json()
250-
console.error('Access token error:', errorData)
253+
logger.error('Access token error:', errorData)
251254

252255
// If there's a token error, we might need to reconnect the account
253256
setError('Authentication failed. Please reconnect your Confluence account.')
@@ -259,7 +262,7 @@ export function ConfluenceFileSelector({
259262
const accessToken = tokenData.accessToken
260263

261264
if (!accessToken) {
262-
console.error('No access token returned')
265+
logger.error('No access token returned')
263266
setError('Authentication failed. Please reconnect your Confluence account.')
264267
setIsLoading(false)
265268
return
@@ -281,12 +284,12 @@ export function ConfluenceFileSelector({
281284

282285
if (!response.ok) {
283286
const errorData = await response.json()
284-
console.error('Confluence API error:', errorData)
287+
logger.error('Confluence API error:', errorData)
285288
throw new Error(errorData.error || 'Failed to fetch pages')
286289
}
287290

288291
const data = await response.json()
289-
console.log(`Received ${data.files?.length || 0} files from API`)
292+
logger.info(`Received ${data.files?.length || 0} files from API`)
290293
setFiles(data.files || [])
291294

292295
// If we have a selected file ID, find the file info
@@ -301,7 +304,7 @@ export function ConfluenceFileSelector({
301304
}
302305
}
303306
} catch (error) {
304-
console.error('Error fetching pages:', error)
307+
logger.error('Error fetching pages:', error)
305308
setError((error as Error).message)
306309
setFiles([])
307310
} finally {

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/components/tool-input/tool-input.tsx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { useCallback, useEffect, useState } from 'react'
2+
import { logger } from '@trigger.dev/sdk/v3'
23
import { PlusIcon, WrenchIcon, XIcon } from 'lucide-react'
34
import { Button } from '@/components/ui/button'
45
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
@@ -684,34 +685,25 @@ export function ToolInput({
684685
}
685686

686687
const handleOperationChange = (toolIndex: number, operation: string) => {
687-
console.log('🔄 handleOperationChange called:', { toolIndex, operation, isPreview, disabled })
688-
689688
if (isPreview || disabled) {
690-
console.log('❌ Early return: preview or disabled')
689+
logger.info('❌ Early return: preview or disabled')
691690
return
692691
}
693692

694693
const tool = selectedTools[toolIndex]
695-
console.log('🔧 Current tool:', tool)
696694

697695
const newToolId = getToolIdForOperation(tool.type, operation)
698-
console.log('🆔 getToolIdForOperation result:', { toolType: tool.type, operation, newToolId })
699696

700697
if (!newToolId) {
701-
console.log('❌ Early return: no newToolId')
698+
logger.info('❌ Early return: no newToolId')
702699
return
703700
}
704701

705702
// Get parameters for the new tool
706703
const toolParams = getToolParametersConfig(newToolId, tool.type)
707-
console.log('📋 getToolParametersConfig result:', {
708-
newToolId,
709-
toolType: tool.type,
710-
toolParams,
711-
})
712704

713705
if (!toolParams) {
714-
console.log('❌ Early return: no toolParams')
706+
logger.info('❌ Early return: no toolParams')
715707
return
716708
}
717709

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -605,9 +605,9 @@ export function useWorkflowExecution() {
605605
}
606606

607607
try {
608-
console.log('Executing debug step with blocks:', pendingBlocks)
608+
logger.info('Executing debug step with blocks:', pendingBlocks)
609609
const result = await executor!.continueExecution(pendingBlocks, debugContext!)
610-
console.log('Debug step execution result:', result)
610+
logger.info('Debug step execution result:', result)
611611

612612
if (isDebugSessionComplete(result)) {
613613
await handleDebugSessionComplete(result)
@@ -660,7 +660,7 @@ export function useWorkflowExecution() {
660660
let currentContext = { ...debugContext! }
661661
let currentPendingBlocks = [...pendingBlocks]
662662

663-
console.log('Starting resume execution with blocks:', currentPendingBlocks)
663+
logger.info('Starting resume execution with blocks:', currentPendingBlocks)
664664

665665
// Continue execution until there are no more pending blocks
666666
let iterationCount = 0

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ const WorkflowContent = React.memo(() => {
402402
}
403403

404404
const { type } = event.detail
405-
console.log('🛠️ Adding block from toolbar:', type)
406405

407406
if (!type) return
408407
if (type === 'connectionBlock') return

0 commit comments

Comments
 (0)