MCPcopy Index your code
hub / github.com/simstudioai/sim / parseFileParserResponse

Function parseFileParserResponse

apps/sim/tools/file/parser.ts:86–176  ·  view source on GitHub ↗
(response: Response)

Source from the content-addressed store, hash-verified

84}
85
86const parseFileParserResponse = async (response: Response): Promise<FileParserOutput> => {
87 logger.info('Received response status:', response.status)
88
89 const result: unknown = await response.json()
90 logger.info('Response parsed successfully')
91
92 // Handle multiple files response
93 if (isRecord(result) && Array.isArray(result.results)) {
94 logger.info('Processing multiple files response')
95
96 const failedResults = result.results.filter(
97 (fileResult) => isRecord(fileResult) && fileResult.success === false
98 )
99 if (failedResults.length === result.results.length) {
100 const firstError = failedResults.find(
101 (fileResult) => isRecord(fileResult) && typeof fileResult.error === 'string'
102 )
103 return {
104 success: false,
105 output: {
106 files: [],
107 combinedContent: '',
108 },
109 error:
110 isRecord(firstError) && typeof firstError.error === 'string'
111 ? firstError.error
112 : 'Failed to parse files',
113 }
114 }
115
116 // Extract individual file results
117 const fileResults: FileParseResult[] = result.results
118 .filter((fileResult) => !(isRecord(fileResult) && fileResult.success === false))
119 .map((fileResult) => normalizeFileParseResult(fileResult))
120
121 const processedFiles = fileResults.flatMap((file) => (file.file ? [file.file] : []))
122
123 // Combine all file contents with clear dividers
124 const combinedContent = fileResults
125 .map((file, index) => {
126 const divider = `\n${'='.repeat(80)}\n`
127
128 return file.content + (index < fileResults.length - 1 ? divider : '')
129 })
130 .join('\n')
131
132 // Create the base output
133 const output: FileParserOutputData = {
134 files: fileResults,
135 combinedContent,
136 ...(processedFiles.length > 0 && { processedFiles }),
137 }
138 const error = typeof result.error === 'string' ? result.error : undefined
139
140 return {
141 success: true,
142 output,
143 ...(error ? { error } : {}),

Callers 1

Calls 4

normalizeFileParseResultFunction · 0.85
infoMethod · 0.80
joinMethod · 0.80
isRecordFunction · 0.70

Tested by

no test coverage detected