prebid.js 9.52.0 → 9.53.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/.circleci/config.yml +27 -4
  2. package/creative/crossDomain.js +4 -2
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adagioUtils.js +1 -1
  10. package/dist/addefendBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adlooxRtdProvider.js +1 -1
  13. package/dist/adqueryBidAdapter.js +1 -1
  14. package/dist/adrelevantisBidAdapter.js +1 -1
  15. package/dist/adstirBidAdapter.js +1 -1
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgAnalyticsAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/agmaAnalyticsAdapter.js +1 -1
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aniviewBidAdapter.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/asoBidAdapter.js +1 -1
  28. package/dist/axonixBidAdapter.js +1 -1
  29. package/dist/beopBidAdapter.js +1 -1
  30. package/dist/bidglassBidAdapter.js +1 -1
  31. package/dist/big-richmediaBidAdapter.js +1 -1
  32. package/dist/bitmediaBidAdapter.js +1 -1
  33. package/dist/bridBidAdapter.js +1 -1
  34. package/dist/bridgeuppBidAdapter.js +1 -1
  35. package/dist/bridgewellBidAdapter.js +1 -1
  36. package/dist/brightMountainMediaBidAdapter.js +1 -1
  37. package/dist/carodaBidAdapter.js +1 -1
  38. package/dist/chromeAiRtdProvider.js +1 -0
  39. package/dist/chtnwBidAdapter.js +1 -1
  40. package/dist/chunk-core.js +1 -1
  41. package/dist/concertBidAdapter.js +1 -1
  42. package/dist/connectadBidAdapter.js +1 -1
  43. package/dist/consumableBidAdapter.js +1 -1
  44. package/dist/contxtfulBidAdapter.js +1 -1
  45. package/dist/conversantAnalyticsAdapter.js +1 -1
  46. package/dist/conversantBidAdapter.js +1 -1
  47. package/dist/craftBidAdapter.js +1 -1
  48. package/dist/criteoBidAdapter.js +1 -1
  49. package/dist/cwireBidAdapter.js +1 -1
  50. package/dist/dailymotionBidAdapter.js +1 -1
  51. package/dist/debugging-standalone.js +1 -1
  52. package/dist/dependencies.json +10 -2
  53. package/dist/dspxBidAdapter.js +1 -1
  54. package/dist/dxkultureBidAdapter.js +1 -1
  55. package/dist/eplanningBidAdapter.js +1 -1
  56. package/dist/equativBidAdapter.js +1 -1
  57. package/dist/eskimiBidAdapter.js +1 -1
  58. package/dist/euidIdSystem.js +1 -1
  59. package/dist/exadsBidAdapter.js +1 -1
  60. package/dist/excoBidAdapter.js +1 -1
  61. package/dist/fanAdapter.js +1 -1
  62. package/dist/feedadBidAdapter.js +1 -1
  63. package/dist/finativeBidAdapter.js +1 -1
  64. package/dist/freewheel-sspBidAdapter.js +1 -1
  65. package/dist/gmosspBidAdapter.js +1 -1
  66. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  67. package/dist/greenbidsBidAdapter.js +1 -1
  68. package/dist/greenbidsRtdProvider.js +1 -1
  69. package/dist/gridBidAdapter.js +1 -1
  70. package/dist/gumgumBidAdapter.js +1 -1
  71. package/dist/h12mediaBidAdapter.js +1 -1
  72. package/dist/hypelabBidAdapter.js +1 -1
  73. package/dist/id5AnalyticsAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/imdsBidAdapter.js +1 -1
  76. package/dist/improvedigitalBidAdapter.js +1 -1
  77. package/dist/inmobiBidAdapter.js +1 -1
  78. package/dist/insticatorBidAdapter.js +1 -1
  79. package/dist/intentIqAnalyticsAdapter.js +1 -1
  80. package/dist/ixBidAdapter.js +1 -1
  81. package/dist/jixieBidAdapter.js +1 -1
  82. package/dist/jixieIdSystem.js +1 -0
  83. package/dist/justpremiumBidAdapter.js +1 -1
  84. package/dist/kargoBidAdapter.js +1 -1
  85. package/dist/kimberliteBidAdapter.js +1 -1
  86. package/dist/konduitAnalyticsAdapter.js +1 -1
  87. package/dist/kueezBidAdapter.js +1 -1
  88. package/dist/lassoBidAdapter.js +1 -1
  89. package/dist/lifestreetBidAdapter.js +1 -1
  90. package/dist/liveIntentId.js +1 -1
  91. package/dist/logicadBidAdapter.js +1 -1
  92. package/dist/loglyliftBidAdapter.js +1 -1
  93. package/dist/luceadBidAdapter.js +1 -1
  94. package/dist/mabidderBidAdapter.js +1 -1
  95. package/dist/madsenseBidAdapter.js +1 -1
  96. package/dist/magniteAnalyticsAdapter.js +1 -1
  97. package/dist/malltvAnalyticsAdapter.js +1 -1
  98. package/dist/marsmediaBidAdapter.js +1 -1
  99. package/dist/mediafuseBidAdapter.js +1 -1
  100. package/dist/medianetBidAdapter.js +1 -1
  101. package/dist/medianetUtils.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/missenaBidAdapter.js +1 -1
  105. package/dist/mobilefuseBidAdapter.js +1 -1
  106. package/dist/nextMillenniumBidAdapter.js +1 -1
  107. package/dist/nexx360Utils.js +1 -1
  108. package/dist/nobidAnalyticsAdapter.js +1 -1
  109. package/dist/nobidBidAdapter.js +1 -1
  110. package/dist/nodalsAiRtdProvider.js +1 -1
  111. package/dist/not-for-prod/prebid.js +175 -173
  112. package/dist/oguryBidAdapter.js +1 -1
  113. package/dist/onetagBidAdapter.js +1 -1
  114. package/dist/ooloAnalyticsAdapter.js +1 -1
  115. package/dist/openxBidAdapter.js +1 -1
  116. package/dist/optidigitalBidAdapter.js +1 -1
  117. package/dist/orbidderBidAdapter.js +1 -1
  118. package/dist/ortb2.5Translator.js +1 -1
  119. package/dist/outbrainBidAdapter.js +1 -1
  120. package/dist/ozoneBidAdapter.js +1 -1
  121. package/dist/pixfutureBidAdapter.js +1 -1
  122. package/dist/prebidServerBidAdapter.js +1 -1
  123. package/dist/publinkIdSystem.js +1 -1
  124. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  125. package/dist/pubmaticBidAdapter.js +1 -1
  126. package/dist/pubmaticRtdProvider.js +1 -1
  127. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  128. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  129. package/dist/pxyzBidAdapter.js +1 -1
  130. package/dist/quantcastBidAdapter.js +1 -1
  131. package/dist/readpeakBidAdapter.js +1 -1
  132. package/dist/relaidoBidAdapter.js +1 -1
  133. package/dist/relevatehealthBidAdapter.js +1 -1
  134. package/dist/retailspotBidAdapter.js +1 -1
  135. package/dist/rhythmoneBidAdapter.js +1 -1
  136. package/dist/riseUtils.js +1 -1
  137. package/dist/rubiconBidAdapter.js +1 -1
  138. package/dist/seedingAllianceBidAdapter.js +1 -1
  139. package/dist/seedtagBidAdapter.js +1 -1
  140. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  141. package/dist/sharethroughBidAdapter.js +1 -1
  142. package/dist/showheroes-bsBidAdapter.js +1 -1
  143. package/dist/smaatoBidAdapter.js +1 -1
  144. package/dist/smartadserverBidAdapter.js +1 -1
  145. package/dist/smartxBidAdapter.js +1 -1
  146. package/dist/smilewantedBidAdapter.js +1 -1
  147. package/dist/snigelBidAdapter.js +1 -1
  148. package/dist/sonobiBidAdapter.js +1 -1
  149. package/dist/sovrnBidAdapter.js +1 -1
  150. package/dist/sparteoBidAdapter.js +1 -1
  151. package/dist/sspBCBidAdapter.js +1 -1
  152. package/dist/stvBidAdapter.js +1 -1
  153. package/dist/sublimeBidAdapter.js +1 -1
  154. package/dist/taboolaBidAdapter.js +1 -1
  155. package/dist/tappxBidAdapter.js +1 -1
  156. package/dist/targetVideoBidAdapter.js +1 -1
  157. package/dist/teadsBidAdapter.js +1 -1
  158. package/dist/terceptAnalyticsAdapter.js +1 -1
  159. package/dist/themoneytizerBidAdapter.js +1 -1
  160. package/dist/trionBidAdapter.js +1 -1
  161. package/dist/tripleliftBidAdapter.js +1 -1
  162. package/dist/ttdBidAdapter.js +1 -1
  163. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  164. package/dist/uid2IdSystem.js +1 -1
  165. package/dist/underdogmediaBidAdapter.js +1 -1
  166. package/dist/undertoneBidAdapter.js +1 -1
  167. package/dist/unrulyBidAdapter.js +1 -1
  168. package/dist/userId.js +1 -1
  169. package/dist/vidazooUtils.js +1 -1
  170. package/dist/videobyteBidAdapter.js +1 -1
  171. package/dist/visxBidAdapter.js +1 -1
  172. package/dist/vuukleBidAdapter.js +1 -1
  173. package/dist/widespaceBidAdapter.js +1 -1
  174. package/dist/winrBidAdapter.js +1 -1
  175. package/dist/yahooAdsBidAdapter.js +1 -1
  176. package/dist/yandexBidAdapter.js +1 -1
  177. package/dist/yieldmoBidAdapter.js +1 -1
  178. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  179. package/gulpfile.js +12 -6
  180. package/integrationExamples/chromeai/japanese.html +224 -0
  181. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  182. package/karma.conf.maker.js +7 -7
  183. package/karmaRunner.js +3 -3
  184. package/libraries/liveIntentId/shared.js +16 -0
  185. package/modules/.submodules.json +1 -0
  186. package/modules/aniviewBidAdapter.js +32 -23
  187. package/modules/chromeAiRtdProvider.js +421 -0
  188. package/modules/chromeAiRtdProvider.md +230 -0
  189. package/modules/fanAdapter.js +318 -124
  190. package/modules/ixBidAdapter.js +5 -0
  191. package/modules/jixieIdSystem.js +186 -0
  192. package/modules/ozoneBidAdapter.js +214 -336
  193. package/modules/prebidServerBidAdapter/index.js +59 -35
  194. package/modules/pubmaticRtdProvider.js +418 -4
  195. package/modules/pubmaticRtdProvider.md +12 -2
  196. package/modules/relevatehealthBidAdapter.js +20 -130
  197. package/modules/relevatehealthBidAdapter.md +1 -2
  198. package/modules/sovrnBidAdapter.js +4 -4
  199. package/modules/teadsBidAdapter.js +5 -0
  200. package/modules/ttdBidAdapter.js +5 -4
  201. package/modules/userId/index.js +30 -31
  202. package/package.json +5 -4
  203. package/src/adapterManager.js +3 -0
  204. package/test/spec/libraries/cmUtils_spec.js +17 -12
  205. package/test/spec/modules/aniviewBidAdapter_spec.js +15 -2
  206. package/test/spec/modules/chromeAiRtdProvider_spec.js +393 -0
  207. package/test/spec/modules/dgkeywordRtdProvider_spec.js +5 -2
  208. package/test/spec/modules/euidIdSystem_spec.js +9 -3
  209. package/test/spec/modules/fanAdapter_spec.js +264 -268
  210. package/test/spec/modules/id5IdSystem_spec.js +57 -101
  211. package/test/spec/modules/identityLinkIdSystem_spec.js +1 -0
  212. package/test/spec/modules/idxIdSystem_spec.js +2 -75
  213. package/test/spec/modules/instreamTracking_spec.js +15 -18
  214. package/test/spec/modules/ixBidAdapter_spec.js +26 -0
  215. package/test/spec/modules/jixieIdSystem_spec.js +303 -0
  216. package/test/spec/modules/liveIntentExternalIdSystem_spec.js +5 -0
  217. package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +5 -0
  218. package/test/spec/modules/liveIntentIdSystem_spec.js +38 -0
  219. package/test/spec/modules/lmpIdSystem_spec.js +2 -81
  220. package/test/spec/modules/ozoneBidAdapter_spec.js +511 -658
  221. package/test/spec/modules/prebidServerBidAdapter_spec.js +72 -2
  222. package/test/spec/modules/pubmaticBidAdapter_spec.js +411 -126
  223. package/test/spec/modules/pubmaticRtdProvider_spec.js +946 -2
  224. package/test/spec/modules/raynRtdProvider_spec.js +18 -22
  225. package/test/spec/modules/relevatehealthBidAdapter_spec.js +9 -39
  226. package/test/spec/modules/sharedIdSystem_spec.js +3 -3
  227. package/test/spec/modules/sovrnBidAdapter_spec.js +71 -3
  228. package/test/spec/modules/teadsBidAdapter_spec.js +9 -4
  229. package/test/spec/modules/ttdBidAdapter_spec.js +24 -2
  230. package/test/spec/modules/uid2IdSystem_helpers.js +5 -2
  231. package/test/spec/modules/userId_spec.js +142 -387
  232. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +13 -12
  233. package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -69
  234. package/wdio.shared.conf.js +2 -2
  235. package/CLAUDE.md +0 -1
@@ -0,0 +1,230 @@
1
+ # Chrome AI RTD Provider
2
+
3
+ ## Overview
4
+
5
+ The Chrome AI RTD Provider is a Prebid.js Real-Time Data (RTD) module that enhances bidding by leveraging Chrome's built-in AI capabilities. It can automatically detect page language using the [Chrome AI Language Detection API](https://developer.chrome.com/docs/ai/language-detection) and generate page summaries or keywords using the [Chrome AI Summarizer API](https://developer.chrome.com/docs/ai/summarizer-api). This information is added to the OpenRTB bid request objects, allowing bid adapters to optimize bids based on content language and context.
6
+
7
+ ## Features
8
+
9
+ - Automatic language detection using the Chrome AI Language Detection API.
10
+ - Automatic page summarization or keyword generation using the Chrome AI Summarizer API.
11
+ - Caching of detected language and summaries/keywords in localStorage to reduce redundant API calls (configurable for summarizer).
12
+ - Configurable options for both language detection (e.g., confidence threshold) and summarization (e.g., type, format, length).
13
+ - Flexible ORTB2 path configuration for placing detected data.
14
+ - Ability to enable/disable each feature independently.
15
+ - Compatible with the Prebid.js RTD framework.
16
+
17
+ ## Integration
18
+
19
+ ### Build Setup
20
+
21
+ To include the Chrome AI RTD Provider in your Prebid.js build, use the following command:
22
+
23
+ ```bash
24
+ gulp build --modules=rtdModule,chromeAiRtdProvider
25
+ ```
26
+
27
+ ### Basic Integration
28
+
29
+ Add the Chrome AI RTD Provider to your Prebid.js configuration:
30
+
31
+ ```javascript
32
+ pbjs.setConfig({
33
+ realTimeData: {
34
+ dataProviders: [{
35
+ name: 'chromeAi',
36
+ waitForIt: true // Optional: delays the auction until language detection completes
37
+ }]
38
+ }
39
+ });
40
+ ```
41
+
42
+ ### Advanced Configuration
43
+
44
+ Configure language detection and summarization with additional options:
45
+
46
+ ```javascript
47
+ pbjs.setConfig({
48
+ realTimeData: {
49
+ dataProviders: [{
50
+ name: 'chromeAi',
51
+ waitForIt: true, // Set to true if auction should wait for both enabled features
52
+ params: {
53
+ languageDetector: {
54
+ enabled: true, // Set to false to disable language detection
55
+ confidence: 0.9, // Set minimum confidence threshold (0.0 - 1.0)
56
+ ortb2Path: 'site.content.language' // Default path for language
57
+ },
58
+ summarizer: {
59
+ enabled: false, // Set to true to enable summarization/keyword generation
60
+ type: 'headline', // 'headline','key-points', 'tldr' or 'teaser'
61
+ format: 'markdown', // 'plain-text' or 'markdown'
62
+ length: 'short', // 'short', 'medium', or 'long'
63
+ ortb2Path: 'site.content.keywords', // Path for summary/keywords
64
+ cacheInLocalStorage: true // Whether to cache generated summary/keywords
65
+ }
66
+ }
67
+ }]
68
+ }
69
+ });
70
+ ```
71
+
72
+ ## Configuration Options
73
+
74
+ | Parameter | Scope | Type | Description | Default |
75
+ |-----------|-------|------|-------------|---------|
76
+ | `waitForIt` | Optional | Boolean | Whether to delay auction for data retrieval | `false` |
77
+ | `languageDetector.enabled` | Optional | Boolean | Enable or disable language detection | `true` |
78
+ | `languageDetector.confidence` | Optional | Number | Minimum confidence threshold for detected language (0.0 - 1.0) | `0.8` |
79
+ | `languageDetector.ortb2Path` | Optional | String | Path in ORTB2 to store the detected language | `'site.content.language'` |
80
+ | `summarizer.enabled` | Optional | Boolean | Enable or disable summarization/keyword generation | `false` |
81
+ | `summarizer.type` | Optional | String | Type of summary: `'headline'`, `'key-points'`, `'tldr'`, or `'teaser'` | `'headline'` |
82
+ | `summarizer.format` | Optional | String | Format of the summary: `'plain-text'` or `'markdown'` | `'mark-down'` |
83
+ | `summarizer.length` | Optional | String | Length of the summary: `'short'`, `'medium'`, or `'long'` | `'short'` |
84
+ | `summarizer.ortb2Path` | Optional | String | Path in ORTB2 to store the generated summary/keywords | `'site.content.keywords'` |
85
+ | `summarizer.cacheInLocalStorage` | Optional | Boolean | Whether to cache the generated summary/keywords in localStorage | `true` |
86
+
87
+ ## How It Works
88
+
89
+ The module initializes configured features (language detection, summarization) asynchronously.
90
+
91
+ ### Language Detection (`languageDetector`)
92
+ 1. **Data Prioritization**: On initialization or when `getBidRequestData` is called, the module first checks for existing language information in this order:
93
+ - Auction-specific ORTB2 data (from `reqBidsConfigObj` passed to `getBidRequestData`).
94
+ - Data cached in localStorage for the current page URL (from a previous detection).
95
+ 2. **API Call**: If no language is found and the feature is enabled, it attempts to detect the language of the visible page content using the Chrome AI Language Detection API.
96
+ - The API's `availability()` method is checked. If 'unavailable', detection is skipped. If 'after-download', the module may proceed if the model downloads.
97
+ 3. **Data Handling**: The detected language (if it meets the confidence threshold) is:
98
+ - Stored in localStorage for future page loads on the same URL.
99
+ - Added to the OpenRTB bid requests at the configured `languageDetector.ortb2Path` (default: `site.content.language`).
100
+
101
+ ### Summarization / Keyword Generation (`summarizer`)
102
+ 1. **Data Prioritization**: Similar to language detection, it checks for existing summary/keywords:
103
+ - Auction-specific ORTB2 data.
104
+ - Data cached in localStorage (if `cacheInLocalStorage: true`).
105
+ 2. **API Call**: If no data is found and the feature is enabled, it attempts to generate a summary/keywords from the page content using the Chrome AI Summarizer API.
106
+ - The API's `availability()` method is checked. If 'unavailable', summarization is skipped. If 'after-download', the module may proceed.
107
+ 3. **Data Handling**: The generated summary/keywords are:
108
+ - Stored in localStorage (if `cacheInLocalStorage: true`).
109
+ - Added to the OpenRTB bid requests at the configured `summarizer.ortb2Path` (default: `site.content.keywords`).
110
+
111
+ If `waitForIt: true` is set in the RTD config, the auction will be delayed until all enabled and available Chrome AI features complete their processing.
112
+
113
+ ## Requirements
114
+
115
+ - The browser must support the Chrome AI APIs being used (Language Detection, Summarizer).
116
+ - The specific Chrome AI models (e.g., for language detection or summarization) must be 'available' or become 'available-after-download'. The module handles these states.
117
+ - Sufficient text content must be available on the page (minimum 20 characters for language detection and summarization).
118
+ - If using the `waitForIt: true` option, consider the potential impact on auction latency.
119
+
120
+ ## Limitations
121
+
122
+ - Relies on browser support for Chrome AI APIs.
123
+ - Requires sufficient and meaningful visible text content on the page for accurate results.
124
+ - Language detection may not be accurate for pages with multiple languages mixed together.
125
+ - Summarization quality depends on the page content and the capabilities of the underlying Chrome AI model.
126
+
127
+ ## Browser Compatibility
128
+
129
+ - Chrome: 138(Beta)+
130
+ - Firefox, Safari: Not supported (lacks Chrome AI API)
131
+
132
+ ## Example Use Cases
133
+
134
+ ### Standard Implementation
135
+
136
+ ```javascript
137
+ pbjs.setConfig({
138
+ realTimeData: {
139
+ dataProviders: [{
140
+ name: 'chromeAi',
141
+ waitForIt: true
142
+ }]
143
+ }
144
+ });
145
+ ```
146
+
147
+ ### Disable Language Detection for Specific Sites
148
+
149
+ ```javascript
150
+ pbjs.setConfig({
151
+ realTimeData: {
152
+ dataProviders: [{
153
+ name: 'chromeAi',
154
+ params: {
155
+ languageDetector: {
156
+ enabled: false
157
+ }
158
+ }
159
+ }]
160
+ }
161
+ });
162
+ ```
163
+
164
+ ### Higher Confidence Requirement for Language Detection
165
+
166
+ ```javascript
167
+ pbjs.setConfig({
168
+ realTimeData: {
169
+ dataProviders: [{
170
+ name: 'chromeAi',
171
+ waitForIt: true,
172
+ params: {
173
+ languageDetector: {
174
+ enabled: true,
175
+ confidence: 0.95 // Only use high-confidence detections
176
+ }
177
+ }
178
+ }]
179
+ }
180
+ });
181
+ ```
182
+
183
+ ### Enable Summarizer with Custom Settings
184
+
185
+ ```javascript
186
+ pbjs.setConfig({
187
+ realTimeData: {
188
+ dataProviders: [{
189
+ name: 'chromeAi',
190
+ waitForIt: true,
191
+ params: {
192
+ languageDetector: {
193
+ enabled: false // Example: only using summarizer
194
+ },
195
+ summarizer: {
196
+ enabled: true,
197
+ type: 'teaser',
198
+ format: 'markdown', // In markdown format
199
+ length: 'medium',
200
+ ortb2Path: 'site.ext.data.summary', // Custom ORTB2 path
201
+ }
202
+ }
203
+ }]
204
+ }
205
+ });
206
+ ```
207
+
208
+ ## Integration with Other Modules
209
+
210
+ The Chrome AI RTD Provider is compatible with other Prebid.js modules and can be used alongside other RTD providers:
211
+
212
+ ```javascript
213
+ pbjs.setConfig({
214
+ realTimeData: {
215
+ dataProviders: [
216
+ {
217
+ name: 'chromeAi',
218
+ waitForIt: false
219
+ },
220
+ {
221
+ name: 'anotherProvider',
222
+ waitForIt: true,
223
+ params: {
224
+ // other provider config
225
+ }
226
+ }
227
+ ]
228
+ }
229
+ });
230
+ ```