This commit is contained in:
kuberwastaken 2026-03-31 16:25:52 +05:30
commit ec53fcbe95
1905 changed files with 513762 additions and 0 deletions

View file

@ -0,0 +1,38 @@
import { validateBoundedIntEnvVar } from '../envValidation.js'
import { getTaskOutputPath } from './diskOutput.js'
export const TASK_MAX_OUTPUT_UPPER_LIMIT = 160_000
export const TASK_MAX_OUTPUT_DEFAULT = 32_000
export function getMaxTaskOutputLength(): number {
const result = validateBoundedIntEnvVar(
'TASK_MAX_OUTPUT_LENGTH',
process.env.TASK_MAX_OUTPUT_LENGTH,
TASK_MAX_OUTPUT_DEFAULT,
TASK_MAX_OUTPUT_UPPER_LIMIT,
)
return result.effective
}
/**
* Format task output for API consumption, truncating if too large.
* When truncated, includes a header with the file path and returns
* the last N characters that fit within the limit.
*/
export function formatTaskOutput(
output: string,
taskId: string,
): { content: string; wasTruncated: boolean } {
const maxLen = getMaxTaskOutputLength()
if (output.length <= maxLen) {
return { content: output, wasTruncated: false }
}
const filePath = getTaskOutputPath(taskId)
const header = `[Truncated. Full output: ${filePath}]\n\n`
const availableSpace = maxLen - header.length
const truncated = output.slice(-availableSpace)
return { content: header + truncated, wasTruncated: true }
}