abhigyanpatwari/GitNexus · error · Error
${name} must be a non-negative integer <= ${max}, got "${raw
Error message
${name} must be a non-negative integer <= ${max}, got "${raw}" What it means
Thrown by parseNonNegativeIntegerEnv() in http-client.ts when GITNEXUS_EMBEDDING_MIN_INTERVAL_MS passes the digits-only regex but Number(raw) is not a safe integer, is negative, or exceeds the max (300000ms = 5 minutes). The ceiling prevents an accidental multi-hour pacing interval that would stall every batch.
Source
Thrown at gitnexus/src/core/embeddings/http-client.ts:73
if (!/^\d+$/u.test(raw)) {
throw new Error(`${name} must be a positive integer, got "${raw}"`);
}
const parsed = Number(raw);
if (!Number.isSafeInteger(parsed) || parsed <= 0 || parsed > max) {
throw new Error(`${name} must be a positive integer <= ${max}, got "${raw}"`);
}
return parsed;
};
const parseNonNegativeIntegerEnv = (name: string, fallback: number, max: number): number => {
const raw = process.env[name];
if (raw === undefined || raw === '') return fallback;
if (!/^\d+$/u.test(raw)) {
throw new Error(`${name} must be a non-negative integer, got "${raw}"`);
}
const parsed = Number(raw);
if (!Number.isSafeInteger(parsed) || parsed < 0 || parsed > max) {
throw new Error(`${name} must be a non-negative integer <= ${max}, got "${raw}"`);
}
return parsed;
};
const cancelledError = (): DOMException =>
new DOMException('Embedding request cancelled', 'AbortError');
const throwIfAborted = (signal?: AbortSignal): void => {
if (signal?.aborted) throw cancelledError();
};
const abortableSleep = (ms: number, signal?: AbortSignal): Promise<void> => {
throwIfAborted(signal);
if (ms <= 0) return Promise.resolve();
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
signal?.removeEventListener('abort', onAbort);
resolve();View on GitHub (pinned to d540b00184)
Solutions
- Set GITNEXUS_EMBEDDING_MIN_INTERVAL_MS to a value between 0 and 300000 inclusive.
- Unset it to accept the default of 0 (no pacing).
- If the endpoint needs stricter rate limiting than 5 min between calls, raise the retry/backoff config instead.
Example fix
# before export GITNEXUS_EMBEDDING_MIN_INTERVAL_MS=600000 # after export GITNEXUS_EMBEDDING_MIN_INTERVAL_MS=300000 # the 5-minute ceiling
Defensive patterns
Strategy: validation
Validate before calling
const v = process.env.GITNEXUS_EMBEDDING_MIN_INTERVAL_MS;
if (v !== undefined && v !== '') {
const n = Number(v);
if (!Number.isSafeInteger(n) || n < 0 || n > 300_000) {
throw new Error('GITNEXUS_EMBEDDING_MIN_INTERVAL_MS must be 0..300000 ms.');
}
} Type guard
const isWithinNonNegativeCeiling = (v: string, max: number): boolean => {
const n = Number(v);
return Number.isSafeInteger(n) && n >= 0 && n <= max;
}; Prevention
- Keep GITNEXUS_EMBEDDING_MIN_INTERVAL_MS between 0 and 300000 (5 min) inclusive.
- Unset it (or 0) to disable pacing.
- For stricter rate limits, tune retry/backoff rather than the min interval.
When it happens
Trigger: readConfig() at http-client.ts:199. Fires on e.g. GITNEXUS_EMBEDDING_MIN_INTERVAL_MS=999999 (over 5 min ceiling) or a value beyond Number.MAX_SAFE_INTEGER.
Common situations: Setting a huge interval to rate-limit a strict endpoint without realizing the cap exists; copy-pasting a microseconds value where milliseconds were expected.
Related errors
- ${name} must be a positive integer <= ${max}, got "${raw}"
- ${name} must be a positive integer, got "${raw}"
- ${name} must be a non-negative integer, got "${raw}"
- GITNEXUS_EMBEDDING_DIMS must be a positive integer, got "${r
- ${name} must be a positive integer, got "${value}"
AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12).
Data as JSON: /api/errors/0369e473e569803d.
Report an issue: GitHub.