(traceBundles: TraceBundle[])
| 469 | } |
| 470 | |
| 471 | function formatTraceResults(traceBundles: TraceBundle[]) { |
| 472 | return traceBundles.map(({ trace, relatedTraces, relabels }) => { |
| 473 | const payload = |
| 474 | typeof trace.payload === 'string' |
| 475 | ? (JSON.parse(trace.payload) as GetRelevantFilesPayload) |
| 476 | : (trace.payload as GetRelevantFilesPayload) |
| 477 | |
| 478 | const timestamp = |
| 479 | trace.created_at instanceof Date |
| 480 | ? trace.created_at.toISOString() |
| 481 | : new Date( |
| 482 | (trace.created_at as BigQueryTimestamp)?.value ?? trace.created_at, |
| 483 | ).toISOString() |
| 484 | |
| 485 | const query = extractQueryFromMessages(payload.messages) |
| 486 | const outputs: Record<string, string> = { |
| 487 | base: payload.output || '', |
| 488 | } |
| 489 | |
| 490 | relabels.forEach((relabel) => { |
| 491 | if (relabel.model && relabel.payload?.output) { |
| 492 | outputs[relabel.model] = relabel.payload.output |
| 493 | } |
| 494 | }) |
| 495 | |
| 496 | const expandedFilesTrace = relatedTraces.find( |
| 497 | (t) => t.type === 'get-expanded-file-context-for-training', |
| 498 | ) |
| 499 | if (expandedFilesTrace?.payload) { |
| 500 | outputs['files-uploaded'] = ( |
| 501 | expandedFilesTrace.payload as GetRelevantFilesPayload |
| 502 | ).output |
| 503 | } |
| 504 | |
| 505 | return { |
| 506 | timestamp, |
| 507 | query, |
| 508 | outputs, |
| 509 | } |
| 510 | }) |
| 511 | } |
| 512 | |
| 513 | function extractQueryFromMessages(messages: unknown): string { |
| 514 | const items = Array.isArray(messages) ? messages : [] |
no test coverage detected