How microsoft/power-fx works
Power Fx is a strongly typed formula language for expressing business logic. A typical host configures an engine, submits a formula for parsing and checking, then evaluates it and obtains a value; the interpreter adds mutable variables and formula recalculation. The repository also includes editor-protocol support and connectors for invoking external services and working with tabular data. The map follows the sampled engine, interpreter, connector, and language-server evidence; many domain capabilities are identified only by the file tree, so their internal links are omitted rather than inferred.
Main entry points: Engine.cs Formula engine · RecalcEngine.cs Recalculation engine · PowerPlatformConnectorClient.cs Connector client · HttpFunctionInvoker.cs HTTP invocation
Components 20
Language Core
- Engine configuration
src/libraries/Microsoft.PowerFx.Core/Public/Config/PowerFxConfig.cs - Formula engine
src/libraries/Microsoft.PowerFx.Core/Public/Engine.cs - Formula parser
src/libraries/Microsoft.PowerFx.Core/Parser/TexlParser.cs - Formula types
src/libraries/Microsoft.PowerFx.Core/Public/Types/FormulaType.cs - Built-in functions
src/libraries/Microsoft.PowerFx.Core/Texl/Builtins/Text.cs - Intellisense
src/libraries/Microsoft.PowerFx.Core/Texl/Intellisense/Intellisense.cs
Evaluation Runtime
- Recalculation engine
src/libraries/Microsoft.PowerFx.Interpreter/RecalcEngine.cs - Evaluation worker
src/libraries/Microsoft.PowerFx.Interpreter/RecalcEngineWorker.cs - Runtime services
src/libraries/Microsoft.PowerFx.Interpreter/Environment/BasicServiceProvider.cs
Data Connectors
- Connector client
src/libraries/Microsoft.PowerFx.Connectors/PowerPlatformConnectorClient.cs - Connector client API
src/libraries/Microsoft.PowerFx.Connectors/PowerPlatformConnectorClient2.cs - HTTP invocation
src/libraries/Microsoft.PowerFx.Connectors/Execution/HttpFunctionInvoker.cs - Request serialization
src/libraries/Microsoft.PowerFx.Connectors/Execution/OpenApiJsonSerializer.cs - Tabular data services
src/libraries/Microsoft.PowerFx.Connectors/Tabular/Services/CdpDataSource.cs
Editor Services
- Language server
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/LanguageServer/LanguageServer.cs - Operation handlers
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Handlers/Completions/CompletionsLanguageServerOperationHandler.cs - Operation context
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Handlers/LanguageServerOperationContext.cs - Natural-language hooks
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Public/NLHandler.cs
Other components
- Formula host
- Editor client
Connections 19
- Formula host → Engine configuration: configures
- Formula host → Formula engine: submits formulas
- Formula engine → Engine configuration: uses config
src/libraries/Microsoft.PowerFx.Core/Public/Engine.cs - Formula engine → Formula parser: parses formulas
- Formula engine → Formula types: builds types
src/libraries/Microsoft.PowerFx.Core/Public/Engine.cs - Formula engine → Built-in functions: registers functions
src/libraries/Microsoft.PowerFx.Core/Public/Engine.cs - Formula engine → Intellisense: computes suggestions
src/libraries/Microsoft.PowerFx.Core/Public/Engine.cs - Recalculation engine → Formula engine: extends
src/libraries/Microsoft.PowerFx.Interpreter/RecalcEngine.cs - Recalculation engine → Evaluation worker: evaluates formulas
src/libraries/Microsoft.PowerFx.Interpreter/RecalcEngineWorker.cs - Recalculation engine → Runtime services: uses services
- Connector client → Connector client API: uses API
src/libraries/Microsoft.PowerFx.Connectors/PowerPlatformConnectorClient.cs - Connector client → HTTP invocation: invokes functions
- HTTP invocation → Request serialization: serializes requests
- Tabular data services → Connector client: uses connector
- Editor client → Language server: sends requests
- Language server → Operation handlers: dispatches operations
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/LanguageServer/LanguageServer.cs - Operation handlers → Operation context: uses context
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Handlers/Completions/CompletionsLanguageServerOperationHandler.cs - Operation context → Natural-language hooks: gets NL handler
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Handlers/LanguageServerOperationContext.cs - Natural-language hooks → Formula engine: receives engine
src/libraries/Microsoft.PowerFx.LanguageServerProtocol/Public/NLHandler.cs