feat(chat): show memory recall indicators on agent messages#470
Merged
Conversation
3 tasks
- Backend (Rust): track tools_called in AgentTurnResult and StepOutcome across all turn iterations - Backend (Rust): propagate tools_called through WebhookTurnResult - Backend (Rust): include recalled_memory_keys in the SSE done event (filtered to memory_recall invocations) - Frontend: extend StreamDoneEvent and Message types with recalledMemoryKeys / recalled_memory_keys fields - Frontend: update updateAssistantMessage to accept recalledMemoryKeys - Frontend: wire recalled_memory_keys from done event into messages - Frontend: update persistMessages / restoreMessages to round-trip the new field - Frontend: ChatMessage.vue shows subtle expandable memory-recall badge on assistant messages where memory_recall was used - i18n: add memoryRecalled, memoryRecallLabel, memoryRecallHint keys in EN and ES locales - Tests: ChatMessage.spec.ts covering indicator presence/absence, toggle expand/collapse, aria-expanded - Tests: useChat.spec.ts covering recalled_memory_keys propagation Agent-Logs-Url: https://github.com/dallay/corvus/sessions/406f9a7a-71af-4c1b-9344-5c4927cd62b3 Co-authored-by: yacosta738 <33158051+yacosta738@users.noreply.github.com>
Deploying corvus with
|
| Latest commit: |
bb3207b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://aa0d6a08.corvus-42x.pages.dev |
| Branch Preview URL: | https://copilot-add-agent-recalled-c.corvus-42x.pages.dev |
… gateway tests Two test-only WebhookTurnResult struct literals in gateway/mod.rs were missing the new tools_called field added in the previous commit, causing a Rust compile error. Add tools_called: vec![] to both. Also fix ChatMessage.vue biome-ignore annotations for t, hasMemoryRecall and expanded refs that are used only in the Vue template. Agent-Logs-Url: https://github.com/dallay/corvus/sessions/406f9a7a-71af-4c1b-9344-5c4927cd62b3 Co-authored-by: yacosta738 <33158051+yacosta738@users.noreply.github.com>
- Deduplicate recalled_memory_keys in SSE done event: use any() check so memory_recall appears at most once, not once per invocation - Use recalledMemoryKeys != null (loose equality) in App.vue to exclude both null and undefined from the conditional spread Agent-Logs-Url: https://github.com/dallay/corvus/sessions/406f9a7a-71af-4c1b-9344-5c4927cd62b3 Co-authored-by: yacosta738 <33158051+yacosta738@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add indicators for agent recalled memory in chat
feat(chat): show memory recall indicators on agent messages
Apr 9, 2026
yacosta738
approved these changes
Apr 9, 2026
|
This was referenced Apr 11, 2026
Merged
This was referenced Apr 19, 2026
Closed
This was referenced Apr 28, 2026
Merged
8 tasks
8 tasks
8 tasks
This was referenced May 10, 2026
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.



Chat shows no indication when the agent uses remembered information. This adds a non-intrusive "Recalled context" badge on assistant messages where
memory_recallwas invoked, with an expandable one-line hint — no memory content exposed.Backend (
clients/agent-runtime)agent/agent.rs— Addedtools_called: Vec<String>toStepOutcomeandAgentTurnResult; accumulated across all tool iterations inturn_with_context.gateway/webhook_dispatch.rs— Addedtools_calledtoWebhookTurnResult; propagated fromAgentTurnResultviamap_canonical_result(empty vec for all non-agent outcomes).gateway/mod.rs—StreamProcessingOutcome::Successcarriestools_called; SSEdoneevent now includesrecalled_memory_keys: ["memory_recall"]when memory was recalled (deduplicated — at most one entry), or[]otherwise.Frontend (
clients/web/apps/chat)types/chat.ts— ExtendedStreamDoneEventandMessagewithrecalled_memory_keys?/recalledMemoryKeys?.App.vue— WiresdoneEvent.recalled_memory_keysinto the completed assistant message; persisted and restored viasessionStorage.ChatMessage.vue— NewrecalledMemoryKeysprop. When non-empty on an assistant message, renders a pill-badge toggle ("Recalled context" + database icon). Clicking expands a hint line: "This response used information from the agent's memory." No memory content shown.locales/en.json+es.json— AddedmemoryRecalled,memoryRecallLabel,memoryRecallHint.Tests
ChatMessage.spec.ts(new, 8 tests): indicator shown/hidden, empty array, user-message exclusion, expand/collapse,aria-expanded.useChat.spec.ts(+1):recalled_memory_keyssurfaced onStreamDoneEvent.Related Issues
closes #278
Summary
Adds end-to-end support for surfacing
memory_recalltool usage to the chat UI. The backend tracks which tools were called per agent turn and emits a deduplicatedrecalled_memory_keysfield in the SSEdoneevent. The frontend attaches this to the completed message and renders a subtle, accessible badge that users can expand for a one-line explanation — no memory content is ever shown.Tested Information
cargo checkclean;webhook_dispatchunit tests (14/14) and agent unit tests (22/22) pass.biome checkclean.Documentation Impact
Breaking Changes
None.
recalled_memory_keysis an additive optional field on the SSEdoneevent; existing clients that ignore unknown fields are unaffected.Checklist