Skip to content

feat: Add FRM connector list config#4958

Open
muditbhutani wants to merge 2 commits into
mainfrom
feat/frm-connector-list-config
Open

feat: Add FRM connector list config#4958
muditbhutani wants to merge 2 commits into
mainfrom
feat/frm-connector-list-config

Conversation

@muditbhutani

Copy link
Copy Markdown
Collaborator

Type of Change

  • New feature

Description

Adds FRM (Fraud & Risk Management) connectors to the live-mode connector_list_for_live config pipeline, bringing FRM in line with how paymentProcessors, payoutProcessors, threedsAuthProcessors and vaultProcessors are already configured.

Previously the FRM processor selection screen always rendered the hardcoded FRMInfo.frmList, with no way to control which FRM connectors are surfaced in live mode via config. This wires FRM through the same config.tomlgetConnectorListForLive → Recoil atom flow as the other connector categories.

Changes

  • config/config.toml — add frmProcessors key under [default.connector_list_for_live].
  • ConnectorListForLiveFromConfigTypes.res — add frmProcessorsLiveList to the connectorListForLive record.
  • ConnectorListForLiveFromConfigUtils.res — extract frmProcessors from config (typed via FRMPlayer) with a frmConnectorListForLive fallback when config is empty.
  • ConnectorUtils.res — add the frmConnectorListForLive default list.
  • FRMSelect.res — use frmProcessorsLiveList when isLiveMode is enabled, otherwise the existing frmList.

Motivation and Context

Closes #4946

How did you test it?

  • npm run re:build compiles cleanly with no type errors.
  • Verified generated output: FRMSelect.res.js resolves featureFlagDetails.isLiveMode ? frmProcessorsLiveList : FRMInfo.frmList.
  • The config strings (signifyd, riskified, cybersourcedecisionmanager) match the FRMPlayer branch of getConnectorNameTypeFromString, so they resolve to the correct FRM(...) variants.

Checklist

  • I formatted the code npm run re:format
  • My changes generate no new warnings

Add FRM connectors to the live-mode connector_list_for_live config
pipeline, mirroring paymentProcessors, payoutProcessors, threedsAuth
and vaultProcessors.

- Add frmProcessors key to [default.connector_list_for_live] in config.toml
- Add frmProcessorsLiveList to connectorListForLive type
- Extract frmProcessors in getConnectorListForLive with frmConnectorListForLive fallback
- FRMSelect uses the live list when isLiveMode is enabled

Closes #4946
@muditbhutani muditbhutani requested a review from a team as a code owner June 9, 2026 20:32
@semanticdiff-com

Copy link
Copy Markdown

Review changes with  SemanticDiff

@github-actions github-actions Bot added the R-ready-for-review PR is ready for reviewing label Jun 9, 2026

@XyneSpaces XyneSpaces left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated Review Summary

PR: feat: Add FRM connector list config
Reviewer: XyneSpaces Automation

Findings

Found 1 critical issue that will break compilation:


🚨 Critical: Typo in FRM connector variant name

File: src/screens/Connectors/ConnectorUtils.res

The added frmConnectorListForLive uses FRM(Riskifyed) but the correct variant name in the codebase is RISKIFIED (spelled with "-ied", not "-yed").

Current (incorrect):

let frmConnectorListForLive: array<connectorTypes> = [
  FRM(CybersourceDecisionManager),
  FRM(Signifyd),
  FRM(Riskifyed),  // ❌ Wrong spelling
]

Should be:

let frmConnectorListForLive: array<connectorTypes> = [
  FRM(CybersourceDecisionManager),
  FRM(Signifyd),
  FRM(Riskified),  // ✅ Correct spelling
]

This typo will cause a compilation error since the variant Riskifyed does not exist in the FRMPlayer type definition.


Positive Notes

  • Clean implementation following the existing pattern for paymentProcessorsLiveList, payoutProcessorsLiveList, etc.
  • Proper fallback to default list when config is empty
  • Good use of FRMPlayer connector type for typed extraction
  • Consistent with the existing config → atom → component consumption flow

Verdict: 🔴 Changes Requested — Fix the variant typo before merge.

Comment thread src/screens/Connectors/ConnectorUtils.res

@XyneSpaces XyneSpaces left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review: FRM Connector List Config

Following the control-center review checklist:

Tier 1 — High Signal Issues

Naming Consistency — Pattern follows existing paymentProcessors, payoutProcessors convention. Field name frmProcessorsLiveList is consistent with siblings.

⚠️ Naming Inconsistency Found: In ConnectorUtils.res, line adds FRM(Riskifyed) but the variant name should be Riskified (typo: "Riskifyed" vs "Riskified"). Please verify this matches the actual variant definition in the codebase.

Other Findings

Feature Flag Gating — Correctly uses featureFlagDetails.isLiveMode to toggle between config-driven and hardcoded lists.

Blast Radius — New field frmProcessorsLiveList added to record type; fallback pattern mirrors other processor types.

Minor Suggestion

In config/config.toml, the config uses lowercase strings: ["signifyd","riskified","cybersourcedecisionmanager"]. Consider adding a comment noting these must match the string representations expected by getConnectorNameTypeFromString for the FRMPlayer branch.

Comment thread src/screens/Connectors/ConnectorUtils.res
@XyneSpaces

Copy link
Copy Markdown
Collaborator

📋 Review Summary

Overall Assessment:Looks good with minor note

Key Findings

Severity Finding
⚠️ Minor Possible typo: Riskifyed → should verify this matches the actual variant name (likely Riskified)

What was reviewed

  • ✅ Naming consistency with existing connector list patterns
  • ✅ Feature flag gating implementation
  • ✅ Blast radius analysis for new record field
  • ✅ Config → type resolution flow

Action Items

  • Verify Riskifyed variant name is correct (or fix to Riskified)

Reviewed by: Hyperswitch Reviewer Agent

let vaultProcessorList: array<connectorTypes> = [VaultProcessor(VGS)]

let frmConnectorListForLive: array<connectorTypes> = [
FRM(CybersourceDecisionManager),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should cybersourcedecisionmanager be added to prod? It was just added for a demo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

R-ready-for-review PR is ready for reviewing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Add FRM connector list config

4 participants