Coverage for .claude/hooks/moai/lib/hook_config.py: 0.00%

41 statements  

« prev     ^ index     » next       coverage.py v7.11.3, created at 2025-11-19 08:00 +0900

1#!/usr/bin/env python3 

2# Hook Configuration Utilities 

3 

4""" 

5Hook-related configuration and utility functions 

6- Load Hook timeout configuration 

7- Check graceful degradation settings 

8""" 

9 

10import json 

11import logging 

12from pathlib import Path 

13 

14logger = logging.getLogger(__name__) 

15 

16 

17def load_hook_timeout() -> int: 

18 """ 

19 Load Hook timeout configuration from .moai/config/config.json 

20 

21 Returns: 

22 int: timeout value (milliseconds), returns default 5000 if configuration not found 

23 """ 

24 try: 

25 config_path = Path(".moai/config/config.json") 

26 if not config_path.exists(): 

27 return 5000 # Default value 

28 

29 with open(config_path, 'r', encoding='utf-8') as f: 

30 config = json.load(f) 

31 

32 # Get timeout_ms value from hooks section 

33 hooks_config = config.get("hooks", {}) 

34 timeout_ms = hooks_config.get("timeout_ms", 5000) 

35 

36 return int(timeout_ms) 

37 except (json.JSONDecodeError, FileNotFoundError, KeyError, ValueError): 

38 logger.warning("Failed to load hook timeout from config, using default 5000ms") 

39 return 5000 

40 

41 

42def get_graceful_degradation() -> bool: 

43 """ 

44 Load graceful_degradation configuration from .moai/config/config.json 

45 

46 Returns: 

47 bool: graceful_degradation configuration value, returns default True if configuration not found 

48 """ 

49 try: 

50 config_path = Path(".moai/config/config.json") 

51 if not config_path.exists(): 

52 return True # Default value 

53 

54 with open(config_path, 'r', encoding='utf-8') as f: 

55 config = json.load(f) 

56 

57 # Get graceful_degradation value from hooks section 

58 hooks_config = config.get("hooks", {}) 

59 return hooks_config.get("graceful_degradation", True) 

60 except (json.JSONDecodeError, FileNotFoundError, KeyError): 

61 logger.warning("Failed to load graceful_degradation from config, using default True") 

62 return True 

63 

64 

65def get_hook_execution_config() -> dict: 

66 """ 

67 Load all Hook execution related configuration 

68 

69 Returns: 

70 dict: Hook configuration dictionary 

71 """ 

72 try: 

73 config_path = Path(".moai/config/config.json") 

74 if not config_path.exists(): 

75 return { 

76 "timeout_ms": 5000, 

77 "graceful_degradation": True 

78 } 

79 

80 with open(config_path, 'r', encoding='utf-8') as f: 

81 config = json.load(f) 

82 

83 hooks_config = config.get("hooks", {}) 

84 

85 return { 

86 "timeout_ms": hooks_config.get("timeout_ms", 5000), 

87 "graceful_degradation": hooks_config.get("graceful_degradation", True) 

88 } 

89 except (json.JSONDecodeError, FileNotFoundError): 

90 logger.warning("Failed to load hook config, using defaults") 

91 return { 

92 "timeout_ms": 5000, 

93 "graceful_degradation": True 

94 }