Docs / Component Catalog

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.

TypeRoleConfig
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

TypeRoleProvider interface
AudioTranscriberSpeech-to-textAudioProvider.AudioTranscriber
TextToSpeechText-to-speechAudioProvider.TextToSpeech
DocumentReaderOCR + layout extractionDocumentProvider.DocumentReader
FormExtractorStructured form extraction (key-value)DocumentProvider.FormExtractor
KnowledgeQuerySearch a Knowledge indexVectorDBProvider.KnowledgeQuery
RAGRetrieverVector retrieval for RAGVectorDBProvider.RAGRetriever

Operators. Data transform + IO

All extend BaseOperator. Pure functions of context unless flagged otherwise.

TypeRole
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.

TypeRole
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 + allowlist
  • OrgChatBuildSoql — build SOQL using FMSchemaCatalog.toPromptTextWithRels
  • OrgChatGuardSoql — validate SOQL via FMSoqlValidator (REL-2 child-subquery aware)
  • OrgChatShapeResponse — shape rows + summary for the LWC turn

Adding a new component

  1. Subclass BaseNode, BaseOperator, or BaseFlowControl (or BaseLLMNode for LLM stages).
  2. Implement executeImpl(context, config) (or executeAsync for async-capable operators).
  3. Register the type string in FM_Component_Type__mdt.
  4. Add a Studio palette descriptor in Flow_Node_Type__mdt.
  5. Write <YourClass>_Test.cls covering happy path + at least one error path.

Related