fix(headless): fix insight generated answer stream end not using the right analytics actions - #8085
Conversation
🦋 Changeset detectedLatest commit: 7171973 The changes in this PR will be included in the next version bump. This PR includes changesets to release 19 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
There was a problem hiding this comment.
Pull request overview
This PR fixes generated-answer streaming analytics so the correct analytics action set is used depending on whether the GeneratedAnswer controller runs on a Search engine or an Insight engine. It introduces a shared GeneratedAnswerAnalyticsClient contract and registers the appropriate implementation as a thunk extra argument, allowing streaming code paths to dispatch the right logGeneratedAnswerStreamEnd.
Changes:
- Introduces a
GeneratedAnswerAnalyticsClientinterface and wires Search/Insight-specific implementations into thunkextraarguments. - Updates generated-answer streaming code paths (async thunk + Answer API RTK Query) to dispatch
logGeneratedAnswerStreamEndvia the injected analytics client. - Updates unit tests and adds a changeset for
@coveo/headless.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/headless/src/features/generated-answer/generated-answer-insight-analytics-actions.ts | Aligns Insight logGeneratedAnswerStreamEnd signature with Search and supports passing an explicit answerId/answerTextIsEmpty. |
| packages/headless/src/features/generated-answer/generated-answer-insight-analytics-actions.test.ts | Updates Insight analytics action tests for the new stream-end signature. |
| packages/headless/src/features/generated-answer/generated-answer-analytics-client.ts | Adds shared analytics-client interface for GeneratedAnswer controllers/streaming. |
| packages/headless/src/features/generated-answer/generated-answer-actions.ts | Uses injected generatedAnswerAnalyticsClient to log stream-end analytics during Search streaming. |
| packages/headless/src/controllers/knowledge/generated-answer/headless-generated-answer-with-follow-ups.ts | Updates GeneratedAnswerAnalyticsClient type import to new shared interface location. |
| packages/headless/src/controllers/knowledge/generated-answer/headless-answerapi-generated-answer.ts | Updates GeneratedAnswerAnalyticsClient type import to new shared interface location. |
| packages/headless/src/controllers/core/generated-answer/headless-searchapi-generated-answer.ts | Updates GeneratedAnswerAnalyticsClient type import to new shared interface location. |
| packages/headless/src/controllers/core/generated-answer/headless-core-generated-answer.ts | Removes the in-file GeneratedAnswerAnalyticsClient interface in favor of the new shared interface. |
| packages/headless/src/app/thunk-extra-arguments.ts | Adds optional generatedAnswerAnalyticsClient to thunk extra arguments base type. |
| packages/headless/src/app/search-thunk-extra-arguments.ts | Requires generatedAnswerAnalyticsClient for Search engine thunks. |
| packages/headless/src/app/search-engine/search-engine.ts | Registers the Search generated-answer analytics client in thunk extras. |
| packages/headless/src/app/search-engine/search-engine.test.ts | Tests registration of the Search generated-answer analytics client in thunk extras. |
| packages/headless/src/app/insight-thunk-extra-arguments.ts | Requires generatedAnswerAnalyticsClient for Insight engine thunks. |
| packages/headless/src/app/insight-engine/insight-engine.ts | Registers the Insight generated-answer analytics client in thunk extras. |
| packages/headless/src/app/insight-engine/insight-engine.test.ts | Tests registration of the Insight generated-answer analytics client in thunk extras. |
| packages/headless/src/api/knowledge/stream-answer-api.ts | Routes stream-end analytics through the injected analytics client during Answer API streaming. |
| packages/headless/src/api/knowledge/tests/stream-answer-api.test.ts | Updates Answer API stream tests to pass a mock analytics client and assert correct dispatch. |
| .changeset/insight-generated-answer-stream-end.md | Changeset documenting the fix and signature alignment. |
|
Tip All tests passed and all changes approved!🟢 UI Tests: 465 tests unchanged |
@coveo/atomic
@coveo/atomic-hosted-page
@coveo/atomic-legacy
@coveo/atomic-react
@coveo/auth
@coveo/bueno
@coveo/create-atomic
@coveo/create-atomic-component
@coveo/create-atomic-component-project
@coveo/create-atomic-result-component
@coveo/create-atomic-rollup-plugin
@coveo/create-ui
@coveo/headless
@coveo/headless-react
@coveo/relay
@coveo/shopify
commit: |
SFINT-6870
Added extra thunk argument for generatedAnswerAnalyticsClient so it can be correctly used by the different generated answer streaming clients to log their generatedAnswerStreamEnd.