function failInvalidOption(message: string): never { thrownew AcpRuntimeError("ACP_INVALID_RUNTIME_OPTION", message);
}
function validateNoControlChars(value: string, field: string): string { for (let i = 0; i < value.length; i += 1) { const code = value.charCodeAt(i); if (code < 32 || code === 127) {
failInvalidOption(`${field} must not include control characters.`);
}
} return value;
}
function validateBoundedText(params: { value: unknown; field: string; maxLength: number }): string { const normalized = normalizeText(params.value); if (!normalized) {
failInvalidOption(`${params.field} must not be empty.`);
} if (normalized.length > params.maxLength) {
failInvalidOption(`${params.field} must be at most ${params.maxLength} characters.`);
} return validateNoControlChars(normalized, params.field);
}
function validateBackendOptionKey(rawKey: unknown): string { const key = validateBoundedText({
value: rawKey,
field: "ACP config key",
maxLength: MAX_BACKEND_OPTION_KEY_LENGTH,
}); if (!SAFE_OPTION_KEY_RE.test(key)) {
failInvalidOption( "ACP config key must use letters, numbers, dots, colons, underscores, or dashes.",
);
} return key;
}
export function validateRuntimeCwdInput(rawCwd: unknown): string { const cwd = validateBoundedText({
value: rawCwd,
field: "Working directory",
maxLength: MAX_CWD_LENGTH,
}); if (!isAbsolute(cwd)) {
failInvalidOption(`Working directory must be an absolute path. Received "${cwd}".`);
} return cwd;
}
export function validateRuntimeTimeoutSecondsInput(rawTimeout: unknown): number { if (typeof rawTimeout !== "number" || !Number.isFinite(rawTimeout)) {
failInvalidOption("Timeout must be a positive integer in seconds.");
} const timeout = Math.round(rawTimeout); if (timeout < MIN_TIMEOUT_SECONDS || timeout > MAX_TIMEOUT_SECONDS) {
failInvalidOption(
`Timeout must be between ${MIN_TIMEOUT_SECONDS} and ${MAX_TIMEOUT_SECONDS} seconds.`,
);
} return timeout;
}
export function parseRuntimeTimeoutSecondsInput(rawTimeout: unknown): number { const normalized = normalizeText(rawTimeout); if (!normalized || !/^\d+$/.test(normalized)) {
failInvalidOption("Timeout must be a positive integer in seconds.");
} return validateRuntimeTimeoutSecondsInput(Number.parseInt(normalized, 10));
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
(vorverarbeitet am 2026-06-06)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.