Skip to content

[Blazor] Add ClaimApp multimodal sample and its E2E coverage - #69308

Draft
dariatiurina wants to merge 21 commits into
dotnet:mainfrom
dariatiurina:dariatiurina/components-ai-11-claimapp-sample
Draft

dariatiurina wants to merge 21 commits into
dotnet:mainfrom
dariatiurina:dariatiurina/components-ai-11-claimapp-sample

Conversation

@dariatiurina

@dariatiurina dariatiurina commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Overview

This splits the vehicle claim sample out of #68672 so that change stays focused on the reusable multimodal message input components. This one adds the production-oriented sample that exercises them end to end.

Implementation

The vehicle claim sample demonstrates the complete composition model:

  • Text, drag-and-drop photos, file selection, recorded voice, and continuous live voice share one MessageInput.
  • Claim state crosses the AG-UI boundary through official state snapshot and RFC 6902 delta events.
  • Damage visualization uses a client-side UI action.
  • Claim submission uses the AG-UI approval and resume flow.
  • Production requests use Microsoft Foundry for conversation, image analysis, transcription, and public web research.
  • Model-provided research links are restricted to normalized absolute HTTP and HTTPS URLs.
  • Evidence limits are enforced consistently in the composer, workflow, and the bounded claim-agent request endpoint.
  • The agent base address supports an explicit ClaimAgent:BaseAddress and otherwise resolves from NavigationManager.BaseUri, preserving reverse-proxy path prefixes.

DojoClient.E2E.Tests is renamed to Components.AI.E2E.Tests so the project hosts both the dojo scenarios and the new ClaimApp scenarios. The solution, solution filter, build props, and InternalsVisibleTo entries are updated to match.

E2E tests replace only IClaimAssistantBackend. AGUIChatClient, HTTP, SSE serialization, AGUI.Server, client tools, state mapping, and approval continuations remain production code.

The sample also covers light, dark, and high-contrast themes, keyboard submission and cancellation, accessible attachment and voice controls, cumulative evidence reassessment, approval rejection, and retry recovery.

Validation

Validation class Result
ClaimApp build 0 warnings, 0 errors
Components.AI.E2E.Tests build 0 warnings, 0 errors
Components.AI runtime and component tests passed
Components.Media tests passed

kotlarmilos and others added 21 commits September 2, 2026 17:08
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8305953e-ce14-4a55-b291-77beaac47b0a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8305953e-ce14-4a55-b291-77beaac47b0a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8305953e-ce14-4a55-b291-77beaac47b0a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8305953e-ce14-4a55-b291-77beaac47b0a
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0ab398e0-c70e-427e-93a8-134ee977fb17
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0ab398e0-c70e-427e-93a8-134ee977fb17
Azure Identity can wrap a canceled token request in an
AuthenticationFailedException. Normalize that specific case to an
OperationCanceledException so canceling voice transcription does not
terminate the Blazor circuit.

Add regression coverage for the wrapped cancellation.
Add configurable speech recognition modes, auto-submit, and continuous listening to AudioCaptureButton, replacing LiveSpeechButton.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 94653859-e420-46e8-828f-80dd291e33e5
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 94653859-e420-46e8-828f-80dd291e33e5
Keep audio button content stable while microphone permission is pending and
render accessible requesting, denied, and unavailable feedback above the
message composer.

Support custom messages, rendering, state inspection, and dismissal. Harden
late permission cleanup, update ClaimApp for the current media API, and add
unit and browser coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 4f835455-8409-4733-b968-69f7d3b9dd90
Co-authored-by: Milos Kotlar <kotlarmilos@gmail.com>
@github-actions github-actions Bot added area-blazor Includes: Blazor, Razor Components area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework labels Sep 15, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Hey @dotnet/aspnet-build, looks like this PR is something you want to take a look at.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-blazor Includes: Blazor, Razor Components area-infrastructure Includes: MSBuild projects/targets, build scripts, CI, Installers and shared framework

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants