coveo.analytics 2.30.55 → 2.30.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { ClientOptions, AnalyticsClient } from '../client/analytics';
2
2
  import { SearchEventRequest, SearchEventResponse, AnyEventResponse, ClickEventResponse, CustomEventResponse } from '../events';
3
- import { SearchPageEvents, OmniboxSuggestionsMetadata, FacetMetadata, FacetRangeMetadata, CategoryFacetMetadata, DocumentIdentifier, InterfaceChangeMetadata, ResultsSortMetadata, PartialDocumentInformation, TriggerNotifyMetadata, TriggerExecuteMetadata, TriggerRedirectMetadata, PagerResizeMetadata, PagerMetadata, FacetBaseMeta, FacetSortMeta, QueryErrorMeta, FacetStateMetadata, SmartSnippetFeedbackReason, SmartSnippetSuggestionMeta, SmartSnippetDocumentIdentifier, StaticFilterMetadata, StaticFilterToggleValueMetadata, UndoTriggerRedirectMetadata, SmartSnippetLinkMeta, GeneratedAnswerFeedbackMeta, GeneratedAnswerCitationMeta, GeneratedAnswerStreamEndMeta, GeneratedAnswerSourceHoverMeta, GeneratedAnswerBaseMeta, GeneratedAnswerRephraseMeta, GeneratedAnswerFeedbackMetaV2, GeneratedAnswerCitationClickMeta, GeneratedAnswerInlineLinkMeta } from './searchPageEvents';
3
+ import { SearchPageEvents, OmniboxSuggestionsMetadata, FacetMetadata, FacetRangeMetadata, CategoryFacetMetadata, DocumentIdentifier, InterfaceChangeMetadata, ResultsSortMetadata, PartialDocumentInformation, TriggerNotifyMetadata, TriggerExecuteMetadata, TriggerRedirectMetadata, PagerResizeMetadata, PagerMetadata, FacetBaseMeta, FacetSortMeta, QueryErrorMeta, FacetStateMetadata, SmartSnippetFeedbackReason, SmartSnippetSuggestionMeta, SmartSnippetDocumentIdentifier, StaticFilterMetadata, StaticFilterToggleValueMetadata, UndoTriggerRedirectMetadata, SmartSnippetLinkMeta, GeneratedAnswerFeedbackMeta, GeneratedAnswerCitationMeta, GeneratedAnswerStreamEndMeta, GeneratedAnswerSourceHoverMeta, GeneratedAnswerBaseMeta, GeneratedAnswerRephraseMeta, GeneratedAnswerFeedbackMetaV2, GeneratedAnswerCitationClickMeta, GeneratedAnswerInlineLinkMeta, GeneratedAnswerFollowupOpenSourceMeta } from './searchPageEvents';
4
4
  export interface SearchPageClientProvider {
5
5
  getBaseMetadata: () => Record<string, any>;
6
6
  getSearchEventRequestPayload: () => Omit<SearchEventRequest, 'actionCause' | 'searchQueryUid'>;
@@ -196,6 +196,8 @@ export declare class CoveoSearchPageClient {
196
196
  logGeneratedAnswerOpenInlineLink(metadata: GeneratedAnswerInlineLinkMeta): Promise<void | CustomEventResponse>;
197
197
  makeGeneratedAnswerCitationClick(info: PartialDocumentInformation, citation: GeneratedAnswerCitationClickMeta): Promise<EventBuilder<ClickEventResponse>>;
198
198
  logGeneratedAnswerCitationClick(info: PartialDocumentInformation, citation: GeneratedAnswerCitationClickMeta): Promise<void | ClickEventResponse>;
199
+ makeGeneratedAnswerFollowupOpenSource(metadata: GeneratedAnswerFollowupOpenSourceMeta): Promise<EventBuilder<CustomEventResponse>>;
200
+ logGeneratedAnswerFollowupOpenSource(metadata: GeneratedAnswerFollowupOpenSourceMeta): Promise<void | CustomEventResponse>;
199
201
  makeGeneratedAnswerSourceHover(metadata: GeneratedAnswerSourceHoverMeta): Promise<EventBuilder<CustomEventResponse>>;
200
202
  logGeneratedAnswerSourceHover(metadata: GeneratedAnswerSourceHoverMeta): Promise<void | CustomEventResponse>;
201
203
  makeGeneratedAnswerCopyToClipboard(metadata: GeneratedAnswerBaseMeta): Promise<EventBuilder<CustomEventResponse>>;
@@ -89,6 +89,7 @@ export declare enum SearchPageEvents {
89
89
  rephraseGeneratedAnswer = "rephraseGeneratedAnswer",
90
90
  generatedAnswerFeedbackSubmitV2 = "generatedAnswerFeedbackSubmitV2",
91
91
  generatedAnswerCitationClick = "generatedAnswerCitationClick",
92
+ generatedAnswerFollowupOpenSource = "generatedAnswerFollowupOpenSource",
92
93
  generatedAnswerCitationDocumentAttach = "generatedAnswerCitationDocumentAttach"
93
94
  }
94
95
  export declare const CustomEventsTypes: Partial<Record<SearchPageEvents | InsightEvents, string>>;
@@ -199,6 +200,7 @@ export interface SmartSnippetDocumentIdentifier {
199
200
  contentIdValue: string;
200
201
  }
201
202
  export type PartialDocumentInformation = Omit<DocumentInformation, 'actionCause' | 'searchQueryUid'>;
203
+ export type PartialCitationInformation = Omit<DocumentInformation, 'actionCause' | 'searchQueryUid' | 'documentPosition'>;
202
204
  interface AnswerGeneratedWithAnswerAPI {
203
205
  answerAPIStreamId: string;
204
206
  generativeQuestionAnsweringId?: never;
@@ -237,6 +239,10 @@ export type GeneratedAnswerRephraseFormat = 'step' | 'bullet' | 'concise' | 'def
237
239
  export type GeneratedAnswerSourceHoverMeta = GeneratedAnswerCitationMeta & {
238
240
  citationHoverTimeMs: number;
239
241
  };
242
+ export type GeneratedAnswerFollowupOpenSourceMeta = PartialCitationInformation & AnswerGeneratedWithAgent & {
243
+ citationId: string;
244
+ permanentId: string;
245
+ };
240
246
  export type GeneratedAnswerRephraseMeta = GeneratedAnswerBaseMeta & {
241
247
  rephraseFormat: GeneratedAnswerRephraseFormat;
242
248
  };
@@ -1 +1 @@
1
- export declare const libVersion = "2.30.55";
1
+ export declare const libVersion = "2.30.56";
package/dist/library.cjs CHANGED
@@ -736,7 +736,7 @@ function sha1(bytes) {
736
736
  const v5 = v35('v5', 0x50, sha1);
737
737
  var uuidv5 = v5;
738
738
 
739
- var libVersion = "2.30.55";
739
+ var libVersion = "2.30.56";
740
740
 
741
741
  var getFormattedLocation = function (location) {
742
742
  return "".concat(location.protocol, "//").concat(location.hostname).concat(location.pathname.indexOf('/') === 0 ? location.pathname : "/".concat(location.pathname)).concat(location.search);
@@ -84437,6 +84437,7 @@ exports.SearchPageEvents = void 0;
84437
84437
  SearchPageEvents["rephraseGeneratedAnswer"] = "rephraseGeneratedAnswer";
84438
84438
  SearchPageEvents["generatedAnswerFeedbackSubmitV2"] = "generatedAnswerFeedbackSubmitV2";
84439
84439
  SearchPageEvents["generatedAnswerCitationClick"] = "generatedAnswerCitationClick";
84440
+ SearchPageEvents["generatedAnswerFollowupOpenSource"] = "generatedAnswerFollowupOpenSource";
84440
84441
  SearchPageEvents["generatedAnswerCitationDocumentAttach"] = "generatedAnswerCitationDocumentAttach";
84441
84442
  })(exports.SearchPageEvents || (exports.SearchPageEvents = {}));
84442
84443
  var CustomEventsTypes = (_a = {},
@@ -84476,6 +84477,7 @@ var CustomEventsTypes = (_a = {},
84476
84477
  _a[exports.SearchPageEvents.dislikeGeneratedAnswer] = 'generatedAnswer',
84477
84478
  _a[exports.SearchPageEvents.openGeneratedAnswerSource] = 'generatedAnswer',
84478
84479
  _a[exports.SearchPageEvents.generatedAnswerOpenInlineLink] = 'generatedAnswer',
84480
+ _a[exports.SearchPageEvents.generatedAnswerFollowupOpenSource] = 'generatedAnswer',
84479
84481
  _a[exports.SearchPageEvents.generatedAnswerStreamEnd] = 'generatedAnswer',
84480
84482
  _a[exports.SearchPageEvents.generatedAnswerSourceHover] = 'generatedAnswer',
84481
84483
  _a[exports.SearchPageEvents.generatedAnswerCopyToClipboard] = 'generatedAnswer',
@@ -85846,6 +85848,21 @@ var CoveoSearchPageClient = (function () {
85846
85848
  });
85847
85849
  });
85848
85850
  };
85851
+ CoveoSearchPageClient.prototype.makeGeneratedAnswerFollowupOpenSource = function (metadata) {
85852
+ return this.makeCustomEvent(exports.SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
85853
+ };
85854
+ CoveoSearchPageClient.prototype.logGeneratedAnswerFollowupOpenSource = function (metadata) {
85855
+ return __awaiter(this, void 0, void 0, function () {
85856
+ return __generator(this, function (_a) {
85857
+ switch (_a.label) {
85858
+ case 0: return [4, this.makeGeneratedAnswerFollowupOpenSource(metadata)];
85859
+ case 1: return [2, (_a.sent()).log({
85860
+ searchUID: this.provider.getSearchUID(),
85861
+ })];
85862
+ }
85863
+ });
85864
+ });
85865
+ };
85849
85866
  CoveoSearchPageClient.prototype.makeGeneratedAnswerSourceHover = function (metadata) {
85850
85867
  return this.makeCustomEvent(exports.SearchPageEvents.generatedAnswerSourceHover, metadata);
85851
85868
  };
@@ -603,7 +603,7 @@ function sha1(bytes) {
603
603
  const v5 = v35('v5', 0x50, sha1);
604
604
  var uuidv5 = v5;
605
605
 
606
- const libVersion = "2.30.55";
606
+ const libVersion = "2.30.56";
607
607
 
608
608
  const getFormattedLocation = (location) => `${location.protocol}//${location.hostname}${location.pathname.indexOf('/') === 0 ? location.pathname : `/${location.pathname}`}${location.search}`;
609
609
 
@@ -1834,6 +1834,7 @@ var SearchPageEvents;
1834
1834
  SearchPageEvents["rephraseGeneratedAnswer"] = "rephraseGeneratedAnswer";
1835
1835
  SearchPageEvents["generatedAnswerFeedbackSubmitV2"] = "generatedAnswerFeedbackSubmitV2";
1836
1836
  SearchPageEvents["generatedAnswerCitationClick"] = "generatedAnswerCitationClick";
1837
+ SearchPageEvents["generatedAnswerFollowupOpenSource"] = "generatedAnswerFollowupOpenSource";
1837
1838
  SearchPageEvents["generatedAnswerCitationDocumentAttach"] = "generatedAnswerCitationDocumentAttach";
1838
1839
  })(SearchPageEvents || (SearchPageEvents = {}));
1839
1840
  const CustomEventsTypes = {
@@ -1873,6 +1874,7 @@ const CustomEventsTypes = {
1873
1874
  [SearchPageEvents.dislikeGeneratedAnswer]: 'generatedAnswer',
1874
1875
  [SearchPageEvents.openGeneratedAnswerSource]: 'generatedAnswer',
1875
1876
  [SearchPageEvents.generatedAnswerOpenInlineLink]: 'generatedAnswer',
1877
+ [SearchPageEvents.generatedAnswerFollowupOpenSource]: 'generatedAnswer',
1876
1878
  [SearchPageEvents.generatedAnswerStreamEnd]: 'generatedAnswer',
1877
1879
  [SearchPageEvents.generatedAnswerSourceHover]: 'generatedAnswer',
1878
1880
  [SearchPageEvents.generatedAnswerCopyToClipboard]: 'generatedAnswer',
@@ -2734,6 +2736,16 @@ class CoveoSearchPageClient {
2734
2736
  });
2735
2737
  });
2736
2738
  }
2739
+ makeGeneratedAnswerFollowupOpenSource(metadata) {
2740
+ return this.makeCustomEvent(SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
2741
+ }
2742
+ logGeneratedAnswerFollowupOpenSource(metadata) {
2743
+ return __awaiter(this, void 0, void 0, function* () {
2744
+ return (yield this.makeGeneratedAnswerFollowupOpenSource(metadata)).log({
2745
+ searchUID: this.provider.getSearchUID(),
2746
+ });
2747
+ });
2748
+ }
2737
2749
  makeGeneratedAnswerSourceHover(metadata) {
2738
2750
  return this.makeCustomEvent(SearchPageEvents.generatedAnswerSourceHover, metadata);
2739
2751
  }
package/dist/library.js CHANGED
@@ -736,7 +736,7 @@ function sha1(bytes) {
736
736
  const v5 = v35('v5', 0x50, sha1);
737
737
  var uuidv5 = v5;
738
738
 
739
- var libVersion = "2.30.55";
739
+ var libVersion = "2.30.56";
740
740
 
741
741
  var getFormattedLocation = function (location) {
742
742
  return "".concat(location.protocol, "//").concat(location.hostname).concat(location.pathname.indexOf('/') === 0 ? location.pathname : "/".concat(location.pathname)).concat(location.search);
@@ -84437,6 +84437,7 @@ exports.SearchPageEvents = void 0;
84437
84437
  SearchPageEvents["rephraseGeneratedAnswer"] = "rephraseGeneratedAnswer";
84438
84438
  SearchPageEvents["generatedAnswerFeedbackSubmitV2"] = "generatedAnswerFeedbackSubmitV2";
84439
84439
  SearchPageEvents["generatedAnswerCitationClick"] = "generatedAnswerCitationClick";
84440
+ SearchPageEvents["generatedAnswerFollowupOpenSource"] = "generatedAnswerFollowupOpenSource";
84440
84441
  SearchPageEvents["generatedAnswerCitationDocumentAttach"] = "generatedAnswerCitationDocumentAttach";
84441
84442
  })(exports.SearchPageEvents || (exports.SearchPageEvents = {}));
84442
84443
  var CustomEventsTypes = (_a = {},
@@ -84476,6 +84477,7 @@ var CustomEventsTypes = (_a = {},
84476
84477
  _a[exports.SearchPageEvents.dislikeGeneratedAnswer] = 'generatedAnswer',
84477
84478
  _a[exports.SearchPageEvents.openGeneratedAnswerSource] = 'generatedAnswer',
84478
84479
  _a[exports.SearchPageEvents.generatedAnswerOpenInlineLink] = 'generatedAnswer',
84480
+ _a[exports.SearchPageEvents.generatedAnswerFollowupOpenSource] = 'generatedAnswer',
84479
84481
  _a[exports.SearchPageEvents.generatedAnswerStreamEnd] = 'generatedAnswer',
84480
84482
  _a[exports.SearchPageEvents.generatedAnswerSourceHover] = 'generatedAnswer',
84481
84483
  _a[exports.SearchPageEvents.generatedAnswerCopyToClipboard] = 'generatedAnswer',
@@ -85846,6 +85848,21 @@ var CoveoSearchPageClient = (function () {
85846
85848
  });
85847
85849
  });
85848
85850
  };
85851
+ CoveoSearchPageClient.prototype.makeGeneratedAnswerFollowupOpenSource = function (metadata) {
85852
+ return this.makeCustomEvent(exports.SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
85853
+ };
85854
+ CoveoSearchPageClient.prototype.logGeneratedAnswerFollowupOpenSource = function (metadata) {
85855
+ return __awaiter(this, void 0, void 0, function () {
85856
+ return __generator(this, function (_a) {
85857
+ switch (_a.label) {
85858
+ case 0: return [4, this.makeGeneratedAnswerFollowupOpenSource(metadata)];
85859
+ case 1: return [2, (_a.sent()).log({
85860
+ searchUID: this.provider.getSearchUID(),
85861
+ })];
85862
+ }
85863
+ });
85864
+ });
85865
+ };
85849
85866
  CoveoSearchPageClient.prototype.makeGeneratedAnswerSourceHover = function (metadata) {
85850
85867
  return this.makeCustomEvent(exports.SearchPageEvents.generatedAnswerSourceHover, metadata);
85851
85868
  };
package/dist/library.mjs CHANGED
@@ -734,7 +734,7 @@ function sha1(bytes) {
734
734
  const v5 = v35('v5', 0x50, sha1);
735
735
  var uuidv5 = v5;
736
736
 
737
- var libVersion = "2.30.55";
737
+ var libVersion = "2.30.56";
738
738
 
739
739
  var getFormattedLocation = function (location) {
740
740
  return "".concat(location.protocol, "//").concat(location.hostname).concat(location.pathname.indexOf('/') === 0 ? location.pathname : "/".concat(location.pathname)).concat(location.search);
@@ -84435,6 +84435,7 @@ var SearchPageEvents;
84435
84435
  SearchPageEvents["rephraseGeneratedAnswer"] = "rephraseGeneratedAnswer";
84436
84436
  SearchPageEvents["generatedAnswerFeedbackSubmitV2"] = "generatedAnswerFeedbackSubmitV2";
84437
84437
  SearchPageEvents["generatedAnswerCitationClick"] = "generatedAnswerCitationClick";
84438
+ SearchPageEvents["generatedAnswerFollowupOpenSource"] = "generatedAnswerFollowupOpenSource";
84438
84439
  SearchPageEvents["generatedAnswerCitationDocumentAttach"] = "generatedAnswerCitationDocumentAttach";
84439
84440
  })(SearchPageEvents || (SearchPageEvents = {}));
84440
84441
  var CustomEventsTypes = (_a = {},
@@ -84474,6 +84475,7 @@ var CustomEventsTypes = (_a = {},
84474
84475
  _a[SearchPageEvents.dislikeGeneratedAnswer] = 'generatedAnswer',
84475
84476
  _a[SearchPageEvents.openGeneratedAnswerSource] = 'generatedAnswer',
84476
84477
  _a[SearchPageEvents.generatedAnswerOpenInlineLink] = 'generatedAnswer',
84478
+ _a[SearchPageEvents.generatedAnswerFollowupOpenSource] = 'generatedAnswer',
84477
84479
  _a[SearchPageEvents.generatedAnswerStreamEnd] = 'generatedAnswer',
84478
84480
  _a[SearchPageEvents.generatedAnswerSourceHover] = 'generatedAnswer',
84479
84481
  _a[SearchPageEvents.generatedAnswerCopyToClipboard] = 'generatedAnswer',
@@ -85844,6 +85846,21 @@ var CoveoSearchPageClient = (function () {
85844
85846
  });
85845
85847
  });
85846
85848
  };
85849
+ CoveoSearchPageClient.prototype.makeGeneratedAnswerFollowupOpenSource = function (metadata) {
85850
+ return this.makeCustomEvent(SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
85851
+ };
85852
+ CoveoSearchPageClient.prototype.logGeneratedAnswerFollowupOpenSource = function (metadata) {
85853
+ return __awaiter(this, void 0, void 0, function () {
85854
+ return __generator(this, function (_a) {
85855
+ switch (_a.label) {
85856
+ case 0: return [4, this.makeGeneratedAnswerFollowupOpenSource(metadata)];
85857
+ case 1: return [2, (_a.sent()).log({
85858
+ searchUID: this.provider.getSearchUID(),
85859
+ })];
85860
+ }
85861
+ });
85862
+ });
85863
+ };
85847
85864
  CoveoSearchPageClient.prototype.makeGeneratedAnswerSourceHover = function (metadata) {
85848
85865
  return this.makeCustomEvent(SearchPageEvents.generatedAnswerSourceHover, metadata);
85849
85866
  };
@@ -672,7 +672,7 @@ const addPageViewToHistory = (pageViewValue) => __awaiter(void 0, void 0, void 0
672
672
  yield store.addElementAsync(historyElement);
673
673
  });
674
674
 
675
- const libVersion = "2.30.55";
675
+ const libVersion = "2.30.56";
676
676
 
677
677
  const getFormattedLocation = (location) => `${location.protocol}//${location.hostname}${location.pathname.indexOf('/') === 0 ? location.pathname : `/${location.pathname}`}${location.search}`;
678
678
 
@@ -1855,6 +1855,7 @@ var SearchPageEvents;
1855
1855
  SearchPageEvents["rephraseGeneratedAnswer"] = "rephraseGeneratedAnswer";
1856
1856
  SearchPageEvents["generatedAnswerFeedbackSubmitV2"] = "generatedAnswerFeedbackSubmitV2";
1857
1857
  SearchPageEvents["generatedAnswerCitationClick"] = "generatedAnswerCitationClick";
1858
+ SearchPageEvents["generatedAnswerFollowupOpenSource"] = "generatedAnswerFollowupOpenSource";
1858
1859
  SearchPageEvents["generatedAnswerCitationDocumentAttach"] = "generatedAnswerCitationDocumentAttach";
1859
1860
  })(SearchPageEvents || (SearchPageEvents = {}));
1860
1861
  const CustomEventsTypes = {
@@ -1894,6 +1895,7 @@ const CustomEventsTypes = {
1894
1895
  [SearchPageEvents.dislikeGeneratedAnswer]: 'generatedAnswer',
1895
1896
  [SearchPageEvents.openGeneratedAnswerSource]: 'generatedAnswer',
1896
1897
  [SearchPageEvents.generatedAnswerOpenInlineLink]: 'generatedAnswer',
1898
+ [SearchPageEvents.generatedAnswerFollowupOpenSource]: 'generatedAnswer',
1897
1899
  [SearchPageEvents.generatedAnswerStreamEnd]: 'generatedAnswer',
1898
1900
  [SearchPageEvents.generatedAnswerSourceHover]: 'generatedAnswer',
1899
1901
  [SearchPageEvents.generatedAnswerCopyToClipboard]: 'generatedAnswer',
@@ -2755,6 +2757,16 @@ class CoveoSearchPageClient {
2755
2757
  });
2756
2758
  });
2757
2759
  }
2760
+ makeGeneratedAnswerFollowupOpenSource(metadata) {
2761
+ return this.makeCustomEvent(SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
2762
+ }
2763
+ logGeneratedAnswerFollowupOpenSource(metadata) {
2764
+ return __awaiter(this, void 0, void 0, function* () {
2765
+ return (yield this.makeGeneratedAnswerFollowupOpenSource(metadata)).log({
2766
+ searchUID: this.provider.getSearchUID(),
2767
+ });
2768
+ });
2769
+ }
2758
2770
  makeGeneratedAnswerSourceHover(metadata) {
2759
2771
  return this.makeCustomEvent(SearchPageEvents.generatedAnswerSourceHover, metadata);
2760
2772
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coveo.analytics",
3
- "version": "2.30.55",
3
+ "version": "2.30.56",
4
4
  "description": "📈 Coveo analytics client (node and browser compatible) ",
5
5
  "main": "dist/library.cjs",
6
6
  "module": "dist/browser.mjs",
@@ -1587,6 +1587,34 @@ describe('SearchPageClient', () => {
1587
1587
  expectMatchDescription(built.description, SearchPageEvents.generatedAnswerCitationClick, meta);
1588
1588
  });
1589
1589
 
1590
+ it('should send proper payload for #logGeneratedAnswerFollowupOpenSource', async () => {
1591
+ const meta = {
1592
+ ...fakeDocInfo,
1593
+ citationId: 'some-document-id',
1594
+ permanentId: 'perm-id',
1595
+ generativeQuestionAnsweringId: fakeStreamId,
1596
+ conversationId: fakeConversationId,
1597
+ };
1598
+
1599
+ await client.logGeneratedAnswerFollowupOpenSource(meta);
1600
+ expectMatchCustomEventPayload(SearchPageEvents.generatedAnswerFollowupOpenSource, meta);
1601
+ });
1602
+
1603
+ it('should send proper payload for #makeGeneratedAnswerFollowupOpenSource', async () => {
1604
+ const meta = {
1605
+ ...fakeDocInfo,
1606
+ citationId: 'some-document-id',
1607
+ permanentId: 'perm-id',
1608
+ generativeQuestionAnsweringId: fakeStreamId,
1609
+ conversationId: fakeConversationId,
1610
+ };
1611
+
1612
+ const built = await client.makeGeneratedAnswerFollowupOpenSource(meta);
1613
+ await built.log({searchUID: provider.getSearchUID()});
1614
+ expectMatchCustomEventPayload(SearchPageEvents.generatedAnswerFollowupOpenSource, meta);
1615
+ expectMatchDescription(built.description, SearchPageEvents.generatedAnswerFollowupOpenSource, meta);
1616
+ });
1617
+
1590
1618
  it('should send proper payload for #logGeneratedAnswerStreamEnd', async () => {
1591
1619
  const meta = {generativeQuestionAnsweringId: fakeStreamId, answerGenerated: true, answerTextIsEmpty: false};
1592
1620
  await client.logGeneratedAnswerStreamEnd(meta);
@@ -45,6 +45,7 @@ import {
45
45
  GeneratedAnswerFeedbackMetaV2,
46
46
  GeneratedAnswerCitationClickMeta,
47
47
  GeneratedAnswerInlineLinkMeta,
48
+ GeneratedAnswerFollowupOpenSourceMeta,
48
49
  } from './searchPageEvents';
49
50
  import {NoopAnalytics} from '../client/noopAnalytics';
50
51
  import {formatOmniboxMetadata} from '../formatting/format-omnibox-metadata';
@@ -948,6 +949,16 @@ export class CoveoSearchPageClient {
948
949
  });
949
950
  }
950
951
 
952
+ public makeGeneratedAnswerFollowupOpenSource(metadata: GeneratedAnswerFollowupOpenSourceMeta) {
953
+ return this.makeCustomEvent(SearchPageEvents.generatedAnswerFollowupOpenSource, metadata);
954
+ }
955
+
956
+ public async logGeneratedAnswerFollowupOpenSource(metadata: GeneratedAnswerFollowupOpenSourceMeta) {
957
+ return (await this.makeGeneratedAnswerFollowupOpenSource(metadata)).log({
958
+ searchUID: this.provider.getSearchUID(),
959
+ });
960
+ }
961
+
951
962
  public makeGeneratedAnswerSourceHover(metadata: GeneratedAnswerSourceHoverMeta) {
952
963
  return this.makeCustomEvent(SearchPageEvents.generatedAnswerSourceHover, metadata);
953
964
  }
@@ -358,6 +358,10 @@ export enum SearchPageEvents {
358
358
  * Identifies the click event that gets logged when the user clicks on a generated answer citation.
359
359
  */
360
360
  generatedAnswerCitationClick = 'generatedAnswerCitationClick',
361
+ /**
362
+ * Identifies the custom event that gets logged when the user clicks on a generated answer citation.
363
+ */
364
+ generatedAnswerFollowupOpenSource = 'generatedAnswerFollowupOpenSource',
361
365
  /**
362
366
  * Identifies the click event that gets logged when a user clicks the Attach Citation action.
363
367
  */
@@ -403,6 +407,7 @@ export const CustomEventsTypes: Partial<Record<SearchPageEvents | InsightEvents,
403
407
  [SearchPageEvents.dislikeGeneratedAnswer]: 'generatedAnswer',
404
408
  [SearchPageEvents.openGeneratedAnswerSource]: 'generatedAnswer',
405
409
  [SearchPageEvents.generatedAnswerOpenInlineLink]: 'generatedAnswer',
410
+ [SearchPageEvents.generatedAnswerFollowupOpenSource]: 'generatedAnswer',
406
411
  [SearchPageEvents.generatedAnswerStreamEnd]: 'generatedAnswer',
407
412
  [SearchPageEvents.generatedAnswerSourceHover]: 'generatedAnswer',
408
413
  [SearchPageEvents.generatedAnswerCopyToClipboard]: 'generatedAnswer',
@@ -555,6 +560,11 @@ export interface SmartSnippetDocumentIdentifier {
555
560
 
556
561
  export type PartialDocumentInformation = Omit<DocumentInformation, 'actionCause' | 'searchQueryUid'>;
557
562
 
563
+ export type PartialCitationInformation = Omit<
564
+ DocumentInformation,
565
+ 'actionCause' | 'searchQueryUid' | 'documentPosition'
566
+ >;
567
+
558
568
  interface AnswerGeneratedWithAnswerAPI {
559
569
  answerAPIStreamId: string;
560
570
  generativeQuestionAnsweringId?: never;
@@ -608,6 +618,12 @@ export type GeneratedAnswerSourceHoverMeta = GeneratedAnswerCitationMeta & {
608
618
  citationHoverTimeMs: number;
609
619
  };
610
620
 
621
+ export type GeneratedAnswerFollowupOpenSourceMeta = PartialCitationInformation &
622
+ AnswerGeneratedWithAgent & {
623
+ citationId: string;
624
+ permanentId: string;
625
+ };
626
+
611
627
  export type GeneratedAnswerRephraseMeta = GeneratedAnswerBaseMeta & {
612
628
  rephraseFormat: GeneratedAnswerRephraseFormat;
613
629
  };