Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
fc346e5
Renamed conversationEmbed
ruchI9897 Apr 24, 2025
28468dd
renamed bodylessConversation
ruchI9897 Apr 24, 2025
d953060
backword comp
ruchI9897 Apr 24, 2025
de0147e
bug fix
ruchI9897 Apr 24, 2025
8d3d156
refactoring
ruchI9897 Apr 24, 2025
16a3d69
added a note
ruchI9897 Apr 24, 2025
686fcb7
refactoring
ruchI9897 Apr 24, 2025
e7ebbfa
added alias
ruchI9897 Apr 24, 2025
a46752a
Added deprecation note
ruchI9897 Apr 24, 2025
7ec8064
Added new flag for bodyless embed
ruchI9897 Apr 29, 2025
ab2bba4
host events for spotter
ruchI9897 May 6, 2025
6f9e337
Added host event
ruchI9897 May 15, 2025
6501264
typedoc update
ruchI9897 May 15, 2025
2dd84c7
Mrged rename changes
ruchI9897 May 15, 2025
ab1243c
Mrged host events changes
ruchI9897 May 15, 2025
55a4342
Merge branch 'SCAL-249517' into spotter-embed
ruchI9897 May 15, 2025
555f516
type doc changes
ruchI9897 May 15, 2025
191a516
deprecated msg fix
ruchI9897 May 15, 2025
f6f5ba1
type fix
ruchI9897 May 15, 2025
f1a8629
typedoc fix
ruchI9897 May 15, 2025
91cabd8
removed deprecated tag from spotterembed
ruchI9897 May 15, 2025
a1c0afa
fixes
ruchI9897 May 15, 2025
d764d00
Resolved conflicts
ruchI9897 May 15, 2025
3c930ac
changed the deprecated text
ruchI9897 May 15, 2025
c08db6d
changed the deprecated text
ruchI9897 May 15, 2025
c2e99b7
renamed host event name
ruchI9897 May 18, 2025
6dd3cea
resolved conflicts
ruchI9897 Jun 12, 2025
90755cd
fixed changes
ruchI9897 Jun 12, 2025
0e1230e
host events and embed events
ruchI9897 Jun 12, 2025
25bf861
sync branches
ruchI9897 Jul 15, 2025
313789b
Added more data
ruchI9897 Jul 15, 2025
c7f2226
Merge branch 'spotter-embed' into SCAL-259706-payload-bak
ruchI9897 Jul 15, 2025
fdcbed1
fixed tests
ruchI9897 Jul 16, 2025
e5e56d9
added new events
ruchI9897 Jul 16, 2025
81becbb
Added examples
ruchI9897 Jul 16, 2025
51032dc
resolved merge conflict
ruchI9897 Jul 16, 2025
3a957b8
Merge branch 'spotter-embed' into SCAL-259706-payload-bak
ruchI9897 Jul 16, 2025
c4a6ace
Merge branch 'SCAL-259706-payload' into SCAL-259706-payload-bak
ruchI9897 Jul 16, 2025
aa54d90
fixed payload
ruchI9897 Jul 16, 2025
60ce925
Merge branch 'SCAL-259706-payload' into SCAL-259706-payload-bak
ruchI9897 Jul 16, 2025
411ab42
fixed data
ruchI9897 Jul 16, 2025
390af76
Merge branch 'SCAL-259706-payload' into SCAL-259706-payload-bak
ruchI9897 Jul 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
10 changes: 10 additions & 0 deletions src/embed/bodyless-conversation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ export interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConf
genNo: number;
acSessionId: string;
acGenNo: number;
convId: string;
messageId: string;
}

export class ConversationMessage extends TsEmbed {
Expand All @@ -43,6 +45,8 @@ export class ConversationMessage extends TsEmbed {
genNo,
acSessionId,
acGenNo,
convId,
messageId,
} = this.viewConfig;
const path = 'conv-assist-answer';
const queryParams = this.getBaseQueryParams();
Expand All @@ -59,6 +63,8 @@ export class ConversationMessage extends TsEmbed {
genNo,
acSessionId,
acGenNo,
convId,
messageId,
});

return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
Expand Down Expand Up @@ -114,6 +120,8 @@ export class SpotterAgentEmbed {

const embed = new ConversationMessage(container, {
...this.viewConfig,
convId: data.convId,
messageId: data.messageId,
sessionId: data.sessionId,
genNo: data.genNo,
acSessionId: data.stateKey.transactionId,
Expand All @@ -135,6 +143,8 @@ export class SpotterAgentEmbed {
return { error };
}
return { data: {
convId: data.convId,
messageId: data.messageId,
sessionId: data.sessionId,
genNo: data.genNo,
acSessionId: data.stateKey.transactionId,
Expand Down
4 changes: 3 additions & 1 deletion src/react/index.spec.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,9 @@
genNo: 1,
acSessionId: "acSession123",
acGenNo: 2,
worksheetId: "worksheet123"
worksheetId: "worksheet123",
convId: "conv123",
messageId: "message123"
};

it('Should render the SpotterMessage component with required props', async () => {
Expand Down Expand Up @@ -287,7 +289,7 @@
).toBe(true);
});

// Note: insertAsSibling is not supported for SpotterMessage as it's not part of the allowed props

Check warning on line 292 in src/react/index.spec.tsx

View workflow job for this annotation

GitHub Actions / build

Comments may not exceed 80 characters
});

describe('Component Factory Coverage', () => {
Expand Down Expand Up @@ -415,7 +417,7 @@
const TestComponent = () => {
const { sendMessage } = useSpotterAgent({ worksheetId: 'test-worksheet' });

// Call sendMessage immediately before service has time to initialize

Check warning on line 420 in src/react/index.spec.tsx

View workflow job for this annotation

GitHub Actions / build

Comments may not exceed 80 characters
sendMessageResult = sendMessage('test query');

return <div>Test</div>;
Expand Down Expand Up @@ -726,7 +728,7 @@

const { rerender } = render(<TestComponent worksheetId="worksheet1" />);

// This should trigger the "if (serviceRef.current)" branch in useEffect

Check warning on line 731 in src/react/index.spec.tsx

View workflow job for this annotation

GitHub Actions / build

Comments may not exceed 80 characters
rerender(<TestComponent worksheetId="worksheet1" />);
rerender(<TestComponent worksheetId="worksheet2" />);
rerender(<TestComponent worksheetId="worksheet3" />);
Expand Down
205 changes: 204 additions & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2707,6 +2707,82 @@ export enum EmbedEvent {
* @version SDK : 1.40.0 | ThoughtSpot: 10.11.0.cl
*/
ExitPresentMode = 'exitPresentMode',
/**
* Emitted when spotter response is text data
* @example
* ```js
* spotterEmbed.on(EmbedEvent.SpotterData, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
SpotterData = 'SpotterData',
/**
* Emitted when user opens up the worksheet preview modal in spotter embed.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.PreviewSpotterData, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
PreviewSpotterData = 'PreviewSpotterData',
/**
* Emitted when the spotter query is triggered in spotter embed.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.SpotterQueryTriggered, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
SpotterQueryTriggered = 'SpotterQueryTriggered',
/**
* Emitted when the last spotter query is edited in spotter embed.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.LastPromptEdited, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
LastPromptEdited = 'LastPromptEdited',
/**
* Emitted when the last spotter query is deleted in spotter embed.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.LastPromptDeleted, (payload) => {
* console.log('payload', payload);
* })
*```
*/
LastPromptDeleted = 'LastPromptDeleted',
/**
* Emitted when the coversation is reset in spotter embed.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.ResetSpotterConversation, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
ResetSpotterConversation = 'ResetSpotterConversation',
/**
* Emitted when the *Spotter* is initialized.
* @example
* ```js
* spotterEmbed.on(EmbedEvent.SpotterInit, (payload) => {
* console.log('payload', payload);
* })
*```
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
SpotterInit = 'SpotterInit'
}

/**
Expand Down Expand Up @@ -2997,6 +3073,7 @@ export enum HostEvent {
* @param
* `vizId`- GUID of the saved Answer or visualization to pin to a Liveboard.
* Optional when pinning a new chart or table generated from a Search query.
* **Required** in Spotter Embed.
* @param
* `liveboardID` - GUID of the Liveboard to pin an Answer. If there is no Liveboard,
* specify the `newLiveboardName` parameter to create a new Liveboard.
Expand Down Expand Up @@ -3044,6 +3121,12 @@ export enum HostEvent {
* ```js
* appEmbed.trigger(HostEvent.Pin)
* ```
* @example
* ```js
* const pinResponse = await spotterEmbed.trigger(HostEvent.Pin, {
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
* });
* ```
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
*/
Pin = 'pin',
Expand Down Expand Up @@ -3137,6 +3220,12 @@ export enum HostEvent {
* ```js
* searchEmbed.trigger(HostEvent.MakeACopy)
* ```
* @example
* ```js
* const pinResponse = await spotterEmbed.trigger(HostEvent.MakeACopy, {
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
* });
* ```
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
*/
MakeACopy = 'makeACopy',
Expand Down Expand Up @@ -3209,6 +3298,7 @@ export enum HostEvent {
* This event is not supported in visualization embed and search embed.
* @param - object - To trigger the action for a specific visualization
* in Liveboard embed, pass in `vizId` as a key.
* **Required** in Spotter embed.
* @example
* ```js
* liveboardEmbed.trigger(HostEvent.Edit)
Expand All @@ -3217,6 +3307,12 @@ export enum HostEvent {
* liveboardEmbed.trigger(HostEvent.Edit, {vizId:
* '730496d6-6903-4601-937e-2c691821af3c'})
* ```
* @example
* ```js
* const pinResponse = await spotterEmbed.trigger(HostEvent.Edit, {
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
* });
* ```
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
*/
Edit = 'edit',
Expand Down Expand Up @@ -3264,6 +3360,16 @@ export enum HostEvent {
* );
* })
* ```
* @example
* ```js
* spotterEmbed.trigger(HostEvent.GetTML, {
* vizId: '730496d6-6903-4601-937e-2c691821af3c'
* }).then((tml) => {
* console.log(
* tml.answer.search_query // TML representation of the search query
* );
* })
* ```
* @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
* @important
*/
Expand Down Expand Up @@ -3351,7 +3457,12 @@ export enum HostEvent {
* vizEmbed.trigger(HostEvent.DownloadAsPng)
*
* searchEmbed.trigger(HostEvent.DownloadAsPng)
*
* spotterEmbed.trigger(HostEvent.DownloadAsPng, {
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
* })
* ```
*
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw
*/
DownloadAsPng = 'downloadAsPng',
Expand All @@ -3369,6 +3480,11 @@ export enum HostEvent {
* ```js
* searchEmbed.trigger(HostEvent.DownloadAsCsv)
* ```
* ```js
* spotterEmbed.trigger(HostEvent.DownloadAsCsv, {
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
* })
* ```
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
*/
DownloadAsCsv = 'downloadAsCSV',
Expand All @@ -3386,6 +3502,11 @@ export enum HostEvent {
* ```js
* searchEmbed.trigger(HostEvent.DownloadAsXlsx)
* ```
* ```js
* spotterEmbed.trigger(HostEvent.downloadAsXLSX, {
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
* })
* ```
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
*/
DownloadAsXlsx = 'downloadAsXLSX',
Expand All @@ -3405,13 +3526,19 @@ export enum HostEvent {
/**
* Trigger the **Save** action on a Liveboard or Answer.
* Saves the changes.
* @param - `vizId` is required in Spotter Embed.
* @example
* ```js
* liveboardEmbed.trigger(HostEvent.Save)
* ```
* ```js
* searchEmbed.trigger(HostEvent.Save)
* ```
* ```js
* spotterEmbed.trigger(HostEvent.Save, {
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
* })
* ```
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
*/
Save = 'save',
Expand Down Expand Up @@ -3695,7 +3822,7 @@ export enum HostEvent {
ResetLiveboardPersonalisedView = 'ResetLiveboardPersonalisedView',
/**
* Triggers an action to update Parameter values on embedded
* Answers and Liveboard.
* Answers, Liveboard and Spotter answer in Edit mode.
*
* @example
* ```js
Expand All @@ -3714,6 +3841,13 @@ export enum HostEvent {
* console.log('parameters', parameter);
* });
*```
*```js
* spotterEmbed.trigger(HostEvent.GetParameters, {
* vizId: '730496d6-6903-4601-937e-2c691821af3c'
* }).then((parameter) => {
* console.log('parameters', parameter);
* });
*```
* @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
*/
GetParameters = 'GetParameters',
Expand Down Expand Up @@ -3781,6 +3915,64 @@ export enum HostEvent {
* @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
*/
TransformTableVizData = 'TransformTableVizData',
/**
* Triggers a search operation with the search tokens specified in
* the search query string in spotter embed.
* @param - `queryString`: Text string in Natural Language format
* @param - `executeSearch`: Boolean to execute search and update search query
* @example
* ```js
* spotterEmbed.trigger(HostEvent.SpotterSearch, {
* query: 'revenue per year',
* executeSearch: true,
* })
* ```
*/
SpotterSearch = 'SpotterSearch',
/**
* Edits the last prompt in spotter embed.
* @param - `query`: Text string
* @example
* ```js
* spotterEmbed.trigger(HostEvent.EditLastPrompt, "revenue per year");
* ```
*/
EditLastPrompt = 'EditLastPrompt',
/**
* Opens the Worksheet preview modal in Spotter Embed.
* @example
* ```js
* spotterEmbed.trigger(HostEvent.PreviewSpotterData);
* ```
*/
PreviewSpotterData = 'PreviewSpotterData',
/**
* Resets the Spotter Embed Conversation.
* @example
* ```js
* spotterEmbed.trigger(HostEvent.ResetSpotterConversation);
* ```
*/
ResetSpotterConversation = 'ResetSpotterConversation',
/**
* Deletes the last prompt in spotter embed.
* @example
* ```js
* spotterEmbed.trigger(HostEvent.DeleteLastPrompt);
* ```
*/
DeleteLastPrompt = 'DeleteLastPrompt',
/**
* Toggle the visualization to chart or table view.
* @param - `vizId ` In Spotter Embed, vizId is required.
* @example
* ```js
* spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, {
* vizId:"'b535c760-8bbe-4e6f-bb26-af56b4129a1e'"
* });
*```
*/
AnswerChartSwitcher = 'answerChartSwitcher',
/**
* @hidden
* Trigger exit from presentation mode when user exits fullscreen.
Expand All @@ -3791,6 +3983,17 @@ export enum HostEvent {
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
*/
ExitPresentMode = 'exitPresentMode',

/**
* Trigger the *Ask Sage* action for visualizations
* @example
* ```js
* liveboardEmbed.trigger(HostEvent.AskSpotter,
* {containerId:'730496d6-6903-4601-937e-2c691821af3c'})
* ```
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
*/
AskSpotter = 'askSpotter',
}

/**
Expand Down
6 changes: 5 additions & 1 deletion src/utils/graphql/nlsService/conversation-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,11 @@ export class Conversation {
return {
convId: this.conversationId,
messageId: responses[0].msgId,
data: data.asstRespData.nlsAnsData.sageQuerySuggestions[0],
data: {
...data.asstRespData.nlsAnsData.sageQuerySuggestions[0],
convId: this.conversationId,
messageId: responses[0].msgId,
},
error: null,
};
} catch (error) {
Expand Down
Loading
Loading