Conversation
Brings the final deferred feature from v10.2.6 roadmap into main. Zero forced dependencies in Delibera.Core — IFileContentReader extensibility point lets users register their preferred document parser per extension. 48 new tests; all 307 tests pass. No breaking changes.
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.
Both
developandmainare pushed. Here's the PR description for you to paste into the GitHub UI (create PR fromdevelop→main):Pull Request
Description
v10.2.7 introduces the Multi-Modal Council (F-06) — the final feature from the original v10.2.6 roadmap that was deferred at plan time. This PR brings images, diagrams, and documents into the debate with zero forced dependencies in
Delibera.Core.What's new
Delibera.Core/Attachments/— new namespace withIFileContentReaderas the single extensibility point for document parsing. The core package ships no PDF/DOCX libraries; users register a reader per extension viaWithFileReader.PlainTextFileReader(.txt .md .json .xml .cs .yml .csv .html),ImageFileReader(.png .jpg .jpeg .webp .gif →BinaryPartswith correctMediaType),FallbackFileReader(graceful placeholder, never throws),DelegateFileContentReader(lambda adapter).MemberCapabilitiesflags enum (Text,Vision) onCouncilMemberwithSupportsVisioncomputed property. Auto-detected from model name viaModelContextWindowRegistry.SupportsVision(10+ known vision patterns: llava, gemma3, gpt-4o, claude-3, qwen-vl, internvl, pixtral, llama4, …).CouncilBuilderfluent API:WithAttachment(path),WithAttachment(path, description),WithFileReader(ext, reader),WithFileReader(ext, lambda),AddMember(model, provider, role, MemberCapabilities, persona?).CouncilExecutorreads attachments and injects text content into the debate context. Binary parts available for futureMicrosoft.Extensions.AIImageContentrouting.AddFileReader(extension, factory)registers readers viaIServiceProvider.MultiModalExample(--multimodal) demo.Design principle: zero external dependencies
Delibera.Coreships no PDF, DOCX, or other document-parsing library. Instead, it exposesIFileContentReader— users register a reader per file extension using their preferred library. This keeps the core package lean and gives users full control over their dependency graph. Optional adapter packages (e.g.Delibera.Adapters.PdfPig) can be published as separate NuGets.Related Issues
Closes the F-06 item from the v10.2.6 roadmap (
docs/v10.2.6.md). F-06 was deferred from v10.2.6 at plan time and is now delivered in v10.2.7.Type of Change
Checklist
dotnet build src/Delibera.slnx) — 13 warnings are pre-existing XML doc cref issues, no new warnings introducedIFileContentReader,FileReadResult,BinaryAttachment,FileAttachment,FileContentReaderRegistry,MemberCapabilities, all readers,WithAttachment,WithFileReader,AddMemberoverload)CHANGELOG.mdwith full v10.2.7 entry,Delibera.Core.csprojDescription/Tags/ReleaseNotes)MultiModalTests.cs, all 307 tests pass (up from 259 in v10.2.6)Additional Notes
AddMemberoverload withMemberCapabilitiesis additive; existing callers get auto-detection for free.WithAttachmentandWithFileReaderare opt-in.Delibera.Core. Document format adapters (PDF, DOCX, …) are published as separate optional packages.ImageContentrouting: the current implementation injects attachment text content into the debate context (the foundation). Full per-memberMicrosoft.Extensions.AIImageContentmessage construction for vision-capable models is a future enhancement that requires refactoring the strategy layer's message-building path — theBinaryPartsare already available onFileReadResultandMemberCapabilities.Visionis detected, so the plumbing is in place.