Conversation
… C# 15 (#1) * feat: add Operator (MCP tools) micro-agent role Introduce a new Operator role — a lightweight micro-agent that connects the council to MCP (Model Context Protocol) servers and exposes their tools (web search, filesystem, Notion, PostgreSQL, debate history, etc.) to debate participants. - Participants delegate tasks at any moment via the [[OPERATOR: task]] marker - Operator uses its own cheaper LLM to plan tool calls, execute MCP tools and interpret results, optionally reusing the council's compression strategy - Wired through all debate strategies (Standard/Critique/Consensus), CouncilExecutor, CouncilBuilder and DI options (Delibera:Operator) - DI-initializable; supports stdio and HTTP MCP transports - Per-round Operator interactions rendered in the final Markdown report - Adds ModelContextProtocol package, console --operator flag, example & docs * feat: upgrade to .NET 10 / C# 15, high-perf optimizations & MCP tools example - Bump LangVersion to preview (C# 15) in both projects - Update Microsoft.SourceLink.GitHub to 10.0.300 (other deps already at latest .NET 10 versions) - Perf: SIMD-vectorized CosineSimilarity (ReadOnlySpan<float> + Vector<float>) - Perf: TokenCounter ReadOnlySpan<char> overload (alloc-free word counting) - Perf: CompressionCache.ComputeKey uses ArrayPool<T> + stackalloc SHA-256 - Add OperatorMcpToolsExample (browser via @playwright/mcp, Marp presentations) + --operator-mcp flag - Fix nullable warning in Program.cs - Add Russian docs: docs/NET10-Upgrade-RU.md * docs: Add English version of .NET 10 upgrade documentation * docs: Update README and QuickStart with Operator role documentation --------- Co-authored-by: techbuzzz <victor.buzin@users.noreply.github.com> Co-authored-by: Delibera Agent <agent@delibera.local>
…tor) [v10.1.1] (#2) Add first-class interop with the standard Microsoft.Extensions.AI v10.7.0 abstractions while preserving the existing public API (additive only). - Delibera.Core: add Microsoft.Extensions.AI 10.7.0; bump 10.1.0 -> 10.1.1 - ChatClientLLMProvider: ILLMProvider implemented over IChatClient (+ streaming) - EmbeddingGeneratorProvider: IEmbeddingProvider over IEmbeddingGenerator - MicrosoftAIExtensions: AsLLMProvider/AsEmbeddingProvider/AsChatClient bridges + WithMiddleware (logging + function invocation) - ILLMProvider: additive default ChatStreamAsync (non-breaking) - OllamaProvider: expose native AsChatClient()/AsEmbeddingGenerator() - ProviderFactory.CreateFromChatClient + DI AddDeliberaChatClient/EmbeddingGenerator - ConsoleApp: --msai example - tests: new Delibera.Core.Tests (20 tests, fakes; no live network) - docs: README/README-RU/QuickStart/CHANGELOG + solution file
Refactored expression-bodied members to full block-bodied methods for improved consistency and maintainability. Updated method/property implementations, reordered some fields, and enhanced property clarity. Restored or moved obsolete/compatibility methods. Improved disposal patterns in factories and clarified null/empty handling. No changes to core business logic; focus is on code style and API consistency.
Major overhaul of README.md for clarity and completeness: - Expanded intro, features, and quick start with prerequisites - Improved code samples and formatting throughout - Added detailed sections for DI, Microsoft.Extensions.AI interop, context compression, RAG, Operator, and output files - Provided a more comprehensive appsettings.json example - Updated NuGet dependencies table and all repo links - README.md no longer included in NuGet package in .csproj - Numerous minor language, formatting, and consistency fixes
Added icon.png as the NuGet package icon via <PackageIcon> and ensured README.md is packed with the package for better documentation.
Introduce top-level crash guard and color-coded log streaming in Program.cs. Add OnLog and OnError events to CouncilExecutor and ICouncilExecutor for real-time observability. Refactor error handling to use new events. Update AskAllAsync to disambiguate responses by role and display name. Improve console output formatting and banner.
- Integrate Microsoft.Extensions.Logging throughout debate pipeline; add WithLogger, DI logger injection, and ICouncilExecutor.Logger - Enforce response language via WithResponseLanguage and config; inject strict directive into all prompts - Support parallel Operator requests per round, bounded by MaxDegreeOfParallelism (builder/config) - Introduce DebateExecutionOptions to bundle logger, language, and parallelism for strategies - Rename LogLevel to ExecutionLogLevel to avoid naming clash; add mapping to Microsoft log levels - Update DI, configuration, README, and CHANGELOG for new features - Minor refactoring and improved comments throughout
…sertions - Restore DebateScenario, StandardDebate, CritiqueDebate, ConsensusDebate and CouncilBuilder to the pre-merge (v10.2.0) content; the merge commit had duplicated code blocks and garbled CollectResponsesAsync, breaking the build. - Re-add the FluentAssertions package reference to the test project (lost during the merge), required by the YandexGptProvider tests brought in from main. - Verified: dotnet build -> 0 errors, 0 warnings; dotnet test -> 31/31 passed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Description
Bumps Delibera to v10.2.0 with three features requested by NuGet consumers:
Microsoft.Extensions.Logging support — inject your own
ILogger/ILoggerFactoryand every debate event (Chairman opening, Knowledge Keeper queries, compression, Operator interactions, participant responses, errors) is forwarded to the host's logging pipeline, in addition to the in-memoryExecutionLogcollection and theOnLog/OnErrorevents.ICouncilBuilder.WithLogger(ILogger?),ICouncilExecutor.Logger,AddDelibera(services, IConfiguration, ILoggerFactory, string?).ExecutionLogevents flow to the logger viaExecutionLogSink.Emit(...)with a structuredEventId(Source); errors useILogger.LogError(ex, ...).DebateExecutionOptionsrecord bundles the logger (plus response-language + parallelism) threaded through strategies via a newIDebateStrategyWithOptionsinterface (default method onIDebateStrategykeeps custom strategies working unchanged).Performance — parallel Operator requests —
[[OPERATOR: …]]tasks delegated by participants within a round now run concurrently viaParallel.ForEachAsync, bounded byMaxDegreeOfParallelism(0 = unbounded, default). All Delibera-shipped strategies (StandardDebate,CritiqueDebate,ConsensusDebate) opt in via the newExecuteAsync(..., DebateExecutionOptions, ...)overload.ICouncilBuilder.WithMaxDegreeOfParallelism(int),CouncilOptions.MaxDegreeOfParallelism.Response-language enforcement — force every model (participants, Chairman, Knowledge Keeper, Operator) to answer in a specific language, regardless of the prompt or retrieved RAG context. Delibera injects a strict directive into every system prompt: "You MUST answer exclusively in {language}. Never use any other language…".
ICouncilBuilder.WithResponseLanguage(string?),CouncilOptions.ResponseLanguage.Breaking change
LogLevelenum (inDelibera.Core.Models) toExecutionLogLevelto avoid the name clash withMicrosoft.Extensions.Logging.LogLevel, which is now referenced throughout the framework. Consumers that referencedLogLevel.Infoetc. directly should switch toExecutionLogLevel.Info. AddedExecutionLog.ToMicrosoftLogLevel()to bridge the two worlds. This is the only source-breaking change; the legacyIDebateStrategy.ExecuteAsync(...)overload is preserved via a default method so custom strategies keep working.Configuration (
appsettings.json){ "Delibera": { "ResponseLanguage": "Russian", "MaxDegreeOfParallelism": 0 } }README.md,src/Delibera.Core/README.md, andCHANGELOG.mdare updated with full examples for each new feature. NuGet package metadata bumped to 10.2.0 with updated release notes.Related Issues
N/A — requested directly by maintainers.
Type of Change
Checklist
dotnet build --configuration Release)README.md,QuickStart.md)Additional Notes
LogLevel→ExecutionLogLevel). All other additions are additive and backward compatible: the legacyIDebateStrategy.ExecuteAsync(...)overload delegates to the new one via a default interface method, so existing custom strategies continue to work without recompilation.develop; this is the cumulative diff frommaintodevelop. Reviewers should focus on the latest commit (0e37696 Add logging, language enforcement, and parallel Operator) for the v10.2.0 changes.dotnet build --configuration Release→ 0 errors, 0 warnings;dotnet test --configuration Release→ 20/20 passed.