Truncate shortens text to fit within the given token budget.
Returns the original text unchanged if it fits. Appends a truncation marker
when content is cut.
TruncateSourceFiles truncates a collection of source file contents
to fit within a total token budget. Files are included in order until
the budget is exhausted.