@@ -181,3 +181,49 @@ export const selectPredictBottomSheetEnabledFlag = createSelector(
181181 ) ,
182182 ) ?? false ,
183183) ;
184+
185+ /**
186+ * Selector for Predict CLOB v2 enablement
187+ *
188+ * Uses version-gated feature flag `predictClobV2` from remote config.
189+ * Falls back to `false` if remote flag is unavailable or invalid.
190+ *
191+ * @returns {boolean } True if CLOB v2 is enabled and version requirement is met
192+ */
193+ export const selectPredictClobV2EnabledFlag = createSelector (
194+ selectRemoteFeatureFlags ,
195+ ( remoteFeatureFlags ) =>
196+ validatedVersionGatedFeatureFlag (
197+ unwrapRemoteFeatureFlag < VersionGatedFeatureFlag > (
198+ remoteFeatureFlags ?. predictClobV2 ,
199+ ) ,
200+ ) ?? false ,
201+ ) ;
202+
203+ /**
204+ * Selector for Predict CLOB v2 legacy host override.
205+ *
206+ * When `predictClobV2` is enabled and `predictClobV2UseLegacyClobHost` is also enabled,
207+ * returns the legacy v2 CLOB host URL for internal RC testing during the migration window.
208+ * Otherwise returns `undefined` so the protocol uses the canonical host.
209+ *
210+ * @returns {string | undefined } The legacy v2 CLOB host URL, or undefined.
211+ */
212+ export const selectPredictClobV2ClobBaseUrlFlag = createSelector (
213+ selectPredictClobV2EnabledFlag ,
214+ selectRemoteFeatureFlags ,
215+ ( predictClobV2Enabled , remoteFeatureFlags ) => {
216+ if ( ! predictClobV2Enabled ) {
217+ return undefined ;
218+ }
219+
220+ const useLegacy =
221+ validatedVersionGatedFeatureFlag (
222+ unwrapRemoteFeatureFlag < VersionGatedFeatureFlag > (
223+ remoteFeatureFlags ?. predictClobV2UseLegacyClobHost ,
224+ ) ,
225+ ) ?? false ;
226+
227+ return useLegacy ? LEGACY_V2_CLOB_BASE_URL : undefined ;
228+ } ,
229+ ) ;
0 commit comments