feat(vocero): add linked content and TALKFIRST greetings (#2)

Opening a report or podcast link now establishes an authenticated starting reference for the conversation. Users can select other accessible content or compare reports while retaining the original link, and TALKFIRST greetings can name the verified report or podcast.

Release notes:

- Added authenticated report and episode link resolution with bounded lookups and unavailable-content handling
- Added explicit conversation selection without restricting searches or changing the reference during comparisons
- Added contextual TALKFIRST greetings through both voice-proxy and HTTP reasoning paths
- Preserved backend permission checks, conversation isolation, cancellation, and the existing speech protocol

Reviewed-on: AquaPortal/s2s#2
This commit is contained in:
2026-10-08 09:34:16 -04:00
parent 96895996d9
commit 4b0108ecf0
21 changed files with 946 additions and 66 deletions
+10
View File
@@ -66,6 +66,16 @@ code before claiming a root cause is resolved.
## The assistant misses caller or report context
With MCP enabled, check that `/api/conversations` receives `report_id` or
`episode_id` from the page and completes before voice startup. Report IDs retain
their full prefix: `report-example` selects podcast `report:report-example`.
Link resolution uses the same user's backend session and has a ten-second
budget. An inaccessible or unavailable link produces a generic conversation,
not a fallback to the latest report. Login or catalog failures still block
startup. A report may exist without a podcast. To change the conversational
subject, the agent uses `select_content`; search and comparison calls do not
change it. MCP ignores the legacy injection flags below.
- Verify the page has an encoded `phoneNumber` or the intended `episode_id`.
- Inspect `/api/user/phone` and context-fetch logs for HTTP/JSON failures.
- Confirm profile injection is enabled; a visible profile alone does not prove