Skip to content

v10.2.7: F-06 Multi-Modal Council (Vision + Documents)#9

Merged
techbuzzz merged 1 commit into
developfrom
main
Jul 7, 2026
Merged

v10.2.7: F-06 Multi-Modal Council (Vision + Documents)#9
techbuzzz merged 1 commit into
developfrom
main

Conversation

@techbuzzz

Copy link
Copy Markdown
Owner

Both develop and main are pushed. Here's the PR description for you to paste into the GitHub UI (create PR from developmain):


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 with IFileContentReader as the single extensibility point for document parsing. The core package ships no PDF/DOCX libraries; users register a reader per extension via WithFileReader.
  • Built-in readers (zero external deps): PlainTextFileReader (.txt .md .json .xml .cs .yml .csv .html), ImageFileReader (.png .jpg .jpeg .webp .gif → BinaryParts with correct MediaType), FallbackFileReader (graceful placeholder, never throws), DelegateFileContentReader (lambda adapter).
  • MemberCapabilities flags enum (Text, Vision) on CouncilMember with SupportsVision computed property. Auto-detected from model name via ModelContextWindowRegistry.SupportsVision (10+ known vision patterns: llava, gemma3, gpt-4o, claude-3, qwen-vl, internvl, pixtral, llama4, …).
  • CouncilBuilder fluent API: WithAttachment(path), WithAttachment(path, description), WithFileReader(ext, reader), WithFileReader(ext, lambda), AddMember(model, provider, role, MemberCapabilities, persona?).
  • CouncilExecutor reads attachments and injects text content into the debate context. Binary parts available for future Microsoft.Extensions.AI ImageContent routing.
  • DI: AddFileReader(extension, factory) registers readers via IServiceProvider.
  • ConsoleApp: MultiModalExample (--multimodal) demo.

Design principle: zero external dependencies

Delibera.Core ships no PDF, DOCX, or other document-parsing library. Instead, it exposes IFileContentReader — 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

  • ✨ New feature (non-breaking change that adds functionality)
  • 📚 Documentation update

Checklist

  • My code follows the project's coding standards (3-space indent, file-scoped namespaces, XML doc comments on public APIs)
  • The solution builds with 0 errors (dotnet build src/Delibera.slnx) — 13 warnings are pre-existing XML doc cref issues, no new warnings introduced
  • I have added/updated XML documentation for public APIs (IFileContentReader, FileReadResult, BinaryAttachment, FileAttachment, FileContentReaderRegistry, MemberCapabilities, all readers, WithAttachment, WithFileReader, AddMember overload)
  • I have updated relevant documentation (CHANGELOG.md with full v10.2.7 entry, Delibera.Core.csproj Description/Tags/ReleaseNotes)
  • I have tested my changes — 48 new tests in MultiModalTests.cs, all 307 tests pass (up from 259 in v10.2.6)

Additional Notes

  • No breaking changes. The new AddMember overload with MemberCapabilities is additive; existing callers get auto-detection for free. WithAttachment and WithFileReader are opt-in.
  • No new NuGet dependencies in Delibera.Core. Document format adapters (PDF, DOCX, …) are published as separate optional packages.
  • Version bumped 10.2.6 → 10.2.7.
  • Vision-model ImageContent routing: the current implementation injects attachment text content into the debate context (the foundation). Full per-member Microsoft.Extensions.AI ImageContent message construction for vision-capable models is a future enhancement that requires refactoring the strategy layer's message-building path — the BinaryParts are already available on FileReadResult and MemberCapabilities.Vision is detected, so the plumbing is in place.

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.
@techbuzzz techbuzzz self-assigned this Jul 7, 2026
@techbuzzz techbuzzz merged commit 5935f31 into develop Jul 7, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant