/ src / utils / timeouts.ts
timeouts.ts
 1  // Constants for timeout values
 2  const DEFAULT_TIMEOUT_MS = 120_000 // 2 minutes
 3  const MAX_TIMEOUT_MS = 600_000 // 10 minutes
 4  
 5  type EnvLike = Record<string, string | undefined>
 6  
 7  /**
 8   * Get the default timeout for bash operations in milliseconds
 9   * Checks BASH_DEFAULT_TIMEOUT_MS environment variable or returns 2 minutes default
10   * @param env Environment variables to check (defaults to process.env for production use)
11   */
12  export function getDefaultBashTimeoutMs(env: EnvLike = process.env): number {
13    const envValue = env.BASH_DEFAULT_TIMEOUT_MS
14    if (envValue) {
15      const parsed = parseInt(envValue, 10)
16      if (!isNaN(parsed) && parsed > 0) {
17        return parsed
18      }
19    }
20    return DEFAULT_TIMEOUT_MS
21  }
22  
23  /**
24   * Get the maximum timeout for bash operations in milliseconds
25   * Checks BASH_MAX_TIMEOUT_MS environment variable or returns 10 minutes default
26   * @param env Environment variables to check (defaults to process.env for production use)
27   */
28  export function getMaxBashTimeoutMs(env: EnvLike = process.env): number {
29    const envValue = env.BASH_MAX_TIMEOUT_MS
30    if (envValue) {
31      const parsed = parseInt(envValue, 10)
32      if (!isNaN(parsed) && parsed > 0) {
33        // Ensure max is at least as large as default
34        return Math.max(parsed, getDefaultBashTimeoutMs(env))
35      }
36    }
37    // Always ensure max is at least as large as default
38    return Math.max(MAX_TIMEOUT_MS, getDefaultBashTimeoutMs(env))
39  }