| | | 1 | | using NexusLabs.Needlr.Injection; |
| | | 2 | | |
| | | 3 | | namespace NexusLabs.Needlr.AgentFramework.Workflows; |
| | | 4 | | |
| | | 5 | | /// <summary> |
| | | 6 | | /// Syringe extension to register graph workflow services alongside the |
| | | 7 | | /// agent framework. Call after <c>UsingAgentFramework()</c> in the syringe |
| | | 8 | | /// fluent chain. |
| | | 9 | | /// </summary> |
| | | 10 | | /// <example> |
| | | 11 | | /// <code> |
| | | 12 | | /// var provider = new Syringe() |
| | | 13 | | /// .UsingReflection() |
| | | 14 | | /// .UsingAgentFramework(af => af.Configure(...)) |
| | | 15 | | /// .UsingGraphWorkflows() |
| | | 16 | | /// .BuildServiceProvider(config); |
| | | 17 | | /// |
| | | 18 | | /// var runner = provider.GetRequiredService<IGraphWorkflowRunner>(); |
| | | 19 | | /// var result = await runner.RunGraphAsync("my-graph", "input"); |
| | | 20 | | /// </code> |
| | | 21 | | /// </example> |
| | | 22 | | public static class SyringeGraphWorkflowExtensions |
| | | 23 | | { |
| | | 24 | | /// <summary> |
| | | 25 | | /// Registers <see cref="IGraphWorkflowRunner"/> and its dependencies. |
| | | 26 | | /// Must be called after <c>UsingAgentFramework()</c>. |
| | | 27 | | /// </summary> |
| | | 28 | | public static ConfiguredSyringe UsingGraphWorkflows( |
| | | 29 | | this ConfiguredSyringe syringe) => |
| | 36 | 30 | | syringe.UsingPostPluginRegistrationCallback( |
| | 72 | 31 | | services => services.AddGraphWorkflowRunner()); |
| | | 32 | | } |