MCPcopy Create free account
hub / github.com/ShipSecAI/studio / toTraceError

Method toTraceError

backend/src/trace/trace.service.ts:164–202  ·  view source on GitHub ↗
(error: unknown)

Source from the content-addressed store, hash-verified

162 }
163
164 private toTraceError(error: unknown): TraceEventPayload['error'] {
165 if (!error) {
166 return undefined;
167 }
168
169 if (typeof error === 'string') {
170 return { message: error };
171 }
172
173 if (typeof error === 'object' && error !== null) {
174 const errObj = error as Record<string, unknown>;
175
176 // Extract fieldErrors if present and valid
177 let fieldErrors: Record<string, string[]> | undefined;
178 if (
179 'fieldErrors' in errObj &&
180 errObj.fieldErrors !== null &&
181 typeof errObj.fieldErrors === 'object'
182 ) {
183 const fieldErrorsObj = errObj.fieldErrors as Record<string, unknown>;
184 const isValidFieldErrors = Object.values(fieldErrorsObj).every(
185 (value) => Array.isArray(value) && value.every((item) => typeof item === 'string'),
186 );
187 if (isValidFieldErrors) {
188 fieldErrors = fieldErrorsObj as Record<string, string[]>;
189 }
190 }
191
192 return {
193 message: typeof errObj.message === 'string' ? errObj.message : String(error),
194 type: typeof errObj.type === 'string' ? errObj.type : undefined,
195 stack: typeof errObj.stack === 'string' ? errObj.stack : undefined,
196 details: this.toRecord(errObj.details),
197 fieldErrors,
198 };
199 }
200
201 return { message: String(error) };
202 }
203
204 private parseMetadata(metadataRaw: unknown): TraceEventMetadata | undefined {
205 if (!metadataRaw || typeof metadataRaw !== 'object' || Array.isArray(metadataRaw)) {

Callers 1

mapRecordToEventMethod · 0.95

Calls 1

toRecordMethod · 0.95

Tested by

no test coverage detected