( content: string, ext: string, maxTokens?: number, )
| 753 | } |
| 754 | |
| 755 | async function validateContentTokens( |
| 756 | content: string, |
| 757 | ext: string, |
| 758 | maxTokens?: number, |
| 759 | ): Promise<void> { |
| 760 | const effectiveMaxTokens = |
| 761 | maxTokens ?? getDefaultFileReadingLimits().maxTokens |
| 762 | |
| 763 | const tokenEstimate = roughTokenCountEstimationForFileType(content, ext) |
| 764 | if (!tokenEstimate || tokenEstimate <= effectiveMaxTokens / 4) return |
| 765 | |
| 766 | const tokenCount = await countTokensWithAPI(content) |
| 767 | const effectiveCount = tokenCount ?? tokenEstimate |
| 768 | |
| 769 | if (effectiveCount > effectiveMaxTokens) { |
| 770 | throw new MaxFileReadTokenExceededError(effectiveCount, effectiveMaxTokens) |
| 771 | } |
| 772 | } |
| 773 | |
| 774 | type ImageResult = { |
| 775 | type: 'image' |
no test coverage detected