( workspaceDir: string, logger: LoggerLike, state: SessionState, config: OpenClawConfig, options: FoundationScanConfig, )
| 898 | } |
| 899 | |
| 900 | export async function detectFoundationScan( |
| 901 | workspaceDir: string, |
| 902 | logger: LoggerLike, |
| 903 | state: SessionState, |
| 904 | config: OpenClawConfig, |
| 905 | options: FoundationScanConfig, |
| 906 | ): Promise<Warning | null> { |
| 907 | const mergedOptions = merge({}, DEFAULT_FOUNDATION_SCAN_CONFIG, options) as Required<FoundationScanConfig>; |
| 908 | |
| 909 | logger?.info(`[FoundationScan] start foundation scan, workspace=${workspaceDir}, options=${JSON.stringify(mergedOptions)}`); |
| 910 | |
| 911 | if (mergedOptions.detectMisConfiguration.enable) { |
| 912 | const misConfigurationWarning = detectMisConfiguration(workspaceDir, logger, config); |
| 913 | if (misConfigurationWarning) { |
| 914 | return misConfigurationWarning; |
| 915 | } |
| 916 | } else { |
| 917 | logger?.info("[FoundationScan] detectMisConfiguration is disabled, skip."); |
| 918 | } |
| 919 | |
| 920 | if (mergedOptions.detectMaliciousSkills.enable) { |
| 921 | const maliciousSkillWarning = await detectMaliciousSkills(workspaceDir, logger, state, config, mergedOptions); |
| 922 | if (maliciousSkillWarning) { |
| 923 | return maliciousSkillWarning; |
| 924 | } |
| 925 | } else { |
| 926 | logger?.info("[FoundationScan] detectMaliciousSkills is disabled, skip."); |
| 927 | } |
| 928 | |
| 929 | logger?.info("[FoundationScan] foundation scan completed, no warning."); |
| 930 | return null; |
| 931 | } |
no test coverage detected