FlowProxy β Always-On Tracing + Debug Mode (v1.53.0)
Make your class partial and the generator emits a FlowProxy alongside the diagram constants β no manual observer wiring required.
// 1. Add 'partial' to the class:
public partial class OrderService
{
[ResultFlow]
public Result<Order> Process(int userId, int productId) =>
FindUser(userId)
.Bind(_ => FindProduct(productId))
.Map(p => new Order(userId, p.Id, p.Price));
}
// 2. Always-on tracing β wraps the real method, seeds exact pipelineId + nodeIds:
var ringBuffer = new RingBufferObserver(capacity: 50);
PipelineObserver.Register(ringBuffer);
var result = svc.Flow.Process(userId, productId); // same signature as the real method
PipelineObserver.Unregister();
ringBuffer.Save(); // β reslava-traces.json β VSIX Debug panel auto-opens
// 3. Single-trace debug β one execution, auto-saved, no setup:
svc.Flow.Debug.Process(userId, productId);
// β reslava-debug-Process.json in bin/
// β VSIX file watcher fires β Debug panel opens with the trace
Static class variant β Flow is a static property on the class itself:
public static partial class MathService
{
[ResultFlow]
public static Result<int> Triple(int i) => Result<int>.Ok(i).Map(x => x * 3);
}
MathService.Flow.Triple(5); // always-on
MathService.Flow.Debug.Triple(5); // debug β reslava-debug-Triple.json
REF004 diagnostic β fires when a [ResultFlow] class is not partial. A one-click code fix adds partial to the class declaration β no need to type it manually.