(params: {
messages: Message[]
logger: Logger
})
| 398 | } |
| 399 | |
| 400 | export function getPreviouslyReadFiles(params: { |
| 401 | messages: Message[] |
| 402 | logger: Logger |
| 403 | }): { |
| 404 | path: string |
| 405 | content: string |
| 406 | referencedBy?: Record<string, string[]> |
| 407 | }[] { |
| 408 | const { messages, logger } = params |
| 409 | const files: ReturnType<typeof getPreviouslyReadFiles> = [] |
| 410 | for (const message of messages) { |
| 411 | if (message.role !== 'tool') continue |
| 412 | if (message.toolName === 'read_files') { |
| 413 | try { |
| 414 | files.push( |
| 415 | ...( |
| 416 | message as CodebuffToolMessage<'read_files'> |
| 417 | ).content[0].value.filter( |
| 418 | ( |
| 419 | file, |
| 420 | ): file is typeof file & { contentOmittedForLength: undefined } => |
| 421 | !('contentOmittedForLength' in file), |
| 422 | ), |
| 423 | ) |
| 424 | } catch (error) { |
| 425 | logger.error( |
| 426 | { error: getErrorObject(error), message }, |
| 427 | 'Error parsing read_files output from message', |
| 428 | ) |
| 429 | } |
| 430 | } |
| 431 | |
| 432 | if (message.toolName === 'find_files') { |
| 433 | try { |
| 434 | const v = (message as CodebuffToolMessage<'find_files'>).content[0] |
| 435 | .value |
| 436 | if ('message' in v) { |
| 437 | continue |
| 438 | } |
| 439 | files.push( |
| 440 | ...v.filter( |
| 441 | ( |
| 442 | file, |
| 443 | ): file is typeof file & { contentOmittedForLength: undefined } => |
| 444 | !('contentOmittedForLength' in file), |
| 445 | ), |
| 446 | ) |
| 447 | } catch (error) { |
| 448 | logger.error( |
| 449 | { error: getErrorObject(error), message }, |
| 450 | 'Error parsing find_files output from message', |
| 451 | ) |
| 452 | } |
| 453 | } |
| 454 | } |
| 455 | return files |
| 456 | } |
no test coverage detected