Component Catalog
Every pipeline component shipped in force-app/main/default/classes/. Use this as the lookup when authoring pipeline JSON or building components in Studio. 75 types across 4 base classes.
AI nodes. LLM-backed
All extend BaseLLMNode. Inherit shared LLM stage config keys. Differ in default Component_Type__c lookup, prompt shape, and output validation.
| Type | Role | Config |
|---|---|---|
LLMChat | Single-turn chat completion. Generic. | messages (alternative to prompt) |
LLMGenerator | Free-form generation. Looser defaults than LLMChat. | — |
LLMSummarizer | Summarisation. Defaults `summarizeMaxTokens` (400) + `summarizeTemperature` (0.3). | maxTokens, style |
LLMClassifier | Pick one label from a closed enum. | outputSchema.enum |
LLMExtractor | Extract structured fields from unstructured text. | outputSchema.properties |
LLMRewriter | Rewrite text per style instruction. | style, tone |
LLMTranslator | Translate text to target locale. | targetLanguage |
LLMValidator | Pass/fail evaluation against a rubric. | rubric |
LLMCritic | Multi-criterion scoring. Surfaces `__meta.scores`. | criteria[] |
LLMQuestionAnswer | RAG-style Q&A. Pairs with a retrieval stage. | context placeholder |
LLMAnalyzer | Multi-axis analysis (sentiment + intent + entities). | axes[] |
LLMImprover | Self-improvement loop on a draft. | iterations, criteria |
LLMSelector | Pick best of N candidates. | candidates |
LLMEmbedder | Returns vector embedding for text. | model must have IsEmbedding__c = true |
ComplianceEvaluator | Specialised LLMValidator pinned to a compliance prompt. | policyKey |
AI nodes. Non-LLM
| Type | Role | Provider interface |
|---|---|---|
AudioTranscriber | Speech-to-text | AudioProvider.AudioTranscriber |
TextToSpeech | Text-to-speech | AudioProvider.TextToSpeech |
DocumentReader | OCR + layout extraction | DocumentProvider.DocumentReader |
FormExtractor | Structured form extraction (key-value) | DocumentProvider.FormExtractor |
KnowledgeQuery | Search a Knowledge index | VectorDBProvider.KnowledgeQuery |
RAGRetriever | Vector retrieval for RAG | VectorDBProvider.RAGRetriever |
Operators. Data transform + IO
All extend BaseOperator. Pure functions of context unless flagged otherwise.
| Type | Role |
|---|---|
SoqlQuery | Run SOQL under user mode. FLS-honoured. |
DmlOperation | Insert/update/delete records. |
HttpCallout | Outbound HTTP via Named Credential. URL allowlist enforced. |
EmailSender | Messaging.SingleEmailMessage send. |
Logger | Emit FMLog line. Honours enableVerboseDebugLogs gate. |
TemplateRenderer | Render Visualforce / string template. |
DataMapper | Map fields between two SObject shapes. |
JsonTransformOperator | JSONPath-style transform. |
Filter | Predicate filter on a list. |
Aggregate | count / sum / avg / min / max / group_by on a list. |
MergeData | Merge records by key. |
Split | Partition input into branches by predicate. |
OutputRouter | Route to one of N named outputs by predicate. |
CombinerNode | Concatenate/zip stage outputs. |
VariableSet | Write to context.variables. |
PipelineOutput | Set the pipeline's terminal output. |
Validate | Schema-validate input; throws on failure. |
Guard | Predicate gate. Skips downstream stages on failure. |
RuleChecker | Evaluate one or more declarative rules. |
PolicyLookup | Resolve a policy from FM_Pii_Policy__mdt or similar. |
RateLimiter | Per-key rolling rate cap. |
DelayOperator | Sleep N ms (sync) or yield (async). |
CacheOperator | LRU lookup against local.FMLLMCache. |
FileParser | Parse CSV/JSON/XML attachment. |
InvocableApex | Call any @InvocableMethod. Bridge for legacy code. |
WebhookWaiterAsync | Block on inbound webhook. Async via FM_Signal__c. |
Flow control. Branch, loop, recover, fan-out
All extend BaseFlowControl. These steer the executor; many cause the runner to yield, fan-out, or push a sub-frame.
| Type | Role |
|---|---|
ConditionalFlowControl | if / else branch on expression. |
Router | Multi-way dispatch by stage-id mapping. |
SwitchRouter | switch on expression; cases → branches. |
ForEach | Iterate a list. Optional parallel fan-out via parallelism. Cap forEachMaxItems (500). |
LoopExecutor | Generic while-loop with break/continue. |
BreakLoop | Exits nearest ForEach / LoopExecutor. |
ContinueLoop | Skips to next iteration. |
ReturnEarly | Terminates pipeline with current output as result. |
TryCatch | Catches downstream errors; finally always runs. |
RetryHandler | Exponential-backoff retry around a sub-tree. |
CircuitBreaker | Fail-fast / buffered modes. Buffered writes to FM_Circuit_Queue__c. |
TimeoutHandler | Wall-clock timeout around a sub-tree. |
ParallelExecutor | Async fan-out across N branches. Joins via ExecutionState.asyncTokens. |
WaitForSignal | Suspend until FM_Signal__c row matches. |
SubPipeline | Recursive pipeline call. Inputs resolved like a normal stage. |
Org Chat private components
Five components only used inside the org_chat_phase_1 pipeline. Not in the Studio palette.
OrgChatDecompose— planner LLM step (REL-3 enriched with relationship hints)OrgChatPickObject— pick the target SObject from the user query + allowlistOrgChatBuildSoql— build SOQL usingFMSchemaCatalog.toPromptTextWithRelsOrgChatGuardSoql— validate SOQL viaFMSoqlValidator(REL-2 child-subquery aware)OrgChatShapeResponse— shape rows + summary for the LWC turn
Adding a new component
- Subclass
BaseNode,BaseOperator, orBaseFlowControl(orBaseLLMNodefor LLM stages). - Implement
executeImpl(context, config)(orexecuteAsyncfor async-capable operators). - Register the type string in
FM_Component_Type__mdt. - Add a Studio palette descriptor in
Flow_Node_Type__mdt. - Write
<YourClass>_Test.clscovering happy path + at least one error path.
Related
- Pipeline Studio — visual authoring
- Pipeline Authoring (AI-assisted) — LLM generates pipeline JSON
- Pipeline Cookbook — 12 recipes