@thoughtspot/visual-embed-sdk 1.39.2-alpha.1 → 1.39.2-spotter-agent
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.
- package/cjs/package.json +1 -1
- package/cjs/src/config.spec.js +9 -0
- package/cjs/src/config.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +24 -4
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
- package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +2 -60
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +1 -9
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +0 -102
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/pages/embed-test.page.d.ts +8 -0
- package/cjs/src/pages/embed-test.page.d.ts.map +1 -0
- package/cjs/src/pages/embed-test.page.js +20 -0
- package/cjs/src/pages/embed-test.page.js.map +1 -0
- package/cjs/src/pages/home.page.d.ts +6 -0
- package/cjs/src/pages/home.page.d.ts.map +1 -0
- package/cjs/src/pages/home.page.js +12 -0
- package/cjs/src/pages/home.page.js.map +1 -0
- package/cjs/src/pages/login.page.d.ts +15 -0
- package/cjs/src/pages/login.page.d.ts.map +1 -0
- package/cjs/src/pages/login.page.js +22 -0
- package/cjs/src/pages/login.page.js.map +1 -0
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +3 -2
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +71 -20
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +79 -42
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +436 -100
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/tests/auth.test.d.ts +1 -0
- package/cjs/src/tests/auth.test.d.ts.map +1 -0
- package/cjs/src/tests/auth.test.js +1 -0
- package/cjs/src/tests/auth.test.js.map +1 -0
- package/cjs/src/tests/e2e/auth.spec.d.ts +2 -0
- package/cjs/src/tests/e2e/auth.spec.d.ts.map +1 -0
- package/cjs/src/tests/e2e/auth.spec.js +54 -0
- package/cjs/src/tests/e2e/auth.spec.js.map +1 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/cjs/src/utils.spec.js +25 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/index-2QHwuA-G.js +7371 -0
- package/dist/{index-DeFzsyFF.js → index-Cj4BVGHL.js} +1 -1
- package/dist/{index-UuEbsISo.js → index-DUaG1OG2.js} +1 -1
- package/dist/{index-CmEQfuE3.js → index-DnIvX1FR.js} +1 -1
- package/dist/{index-Dpf0rd6w.js → index-Fhk1V_Gw.js} +1 -1
- package/dist/index-OuiZF3zE.js +7371 -0
- package/dist/src/embed/bodyless-conversation.d.ts +19 -7
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +2 -60
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +71 -20
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +112 -63
- package/dist/tsembed-react.js +112 -61
- package/dist/tsembed.es.js +29 -15
- package/dist/tsembed.js +28 -14
- package/dist/visual-embed-sdk-react-full.d.ts +90 -85
- package/dist/visual-embed-sdk-react.d.ts +90 -85
- package/dist/visual-embed-sdk.d.ts +20 -66
- package/lib/package.json +1 -1
- package/lib/src/config.spec.js +9 -0
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +19 -7
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +23 -4
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.spec.js +9 -191
- package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +2 -60
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +2 -10
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +2 -104
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/index.d.ts +71 -20
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +79 -43
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +439 -103
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/lib/src/utils.spec.js +26 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +21 -67
- package/package.json +1 -1
- package/src/config.spec.ts +11 -0
- package/src/embed/bodyless-conversation.spec.ts +9 -203
- package/src/embed/bodyless-conversation.ts +24 -10
- package/src/embed/conversation.spec.ts +5 -131
- package/src/embed/conversation.ts +10 -82
- package/src/errors.ts +1 -0
- package/src/react/all-types-export.ts +2 -1
- package/src/react/index.spec.tsx +556 -157
- package/src/react/index.tsx +117 -51
- package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
- package/src/utils.spec.ts +29 -0
|
@@ -9,10 +9,6 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
|
|
|
9
9
|
* The ID of the worksheet to use for the conversation.
|
|
10
10
|
*/
|
|
11
11
|
worksheetId: string;
|
|
12
|
-
/**
|
|
13
|
-
* Optional CSS class name to add to the container div.
|
|
14
|
-
*/
|
|
15
|
-
containerClassName?: string;
|
|
16
12
|
}
|
|
17
13
|
/**
|
|
18
14
|
* Configuration for conversation options.
|
|
@@ -22,13 +18,13 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
|
|
|
22
18
|
*/
|
|
23
19
|
export interface BodylessConversationViewConfig extends SpotterAgentEmbedViewConfig {
|
|
24
20
|
}
|
|
25
|
-
interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
|
|
21
|
+
export interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
|
|
26
22
|
sessionId: string;
|
|
27
23
|
genNo: number;
|
|
28
24
|
acSessionId: string;
|
|
29
25
|
acGenNo: number;
|
|
30
26
|
}
|
|
31
|
-
declare class ConversationMessage extends TsEmbed {
|
|
27
|
+
export declare class ConversationMessage extends TsEmbed {
|
|
32
28
|
protected viewConfig: SpotterAgentMessageViewConfig;
|
|
33
29
|
constructor(container: HTMLElement, viewConfig: SpotterAgentMessageViewConfig);
|
|
34
30
|
getIframeSrc(): string;
|
|
@@ -66,6 +62,23 @@ export declare class SpotterAgentEmbed {
|
|
|
66
62
|
viz: ConversationMessage;
|
|
67
63
|
error?: undefined;
|
|
68
64
|
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Send a message to the conversation service and return only the data.
|
|
67
|
+
* @param userMessage - The message to send to the conversation service.
|
|
68
|
+
* @returns The data from the conversation service.
|
|
69
|
+
*/
|
|
70
|
+
sendMessageData(userMessage: string): Promise<{
|
|
71
|
+
error: any;
|
|
72
|
+
data?: undefined;
|
|
73
|
+
} | {
|
|
74
|
+
data: {
|
|
75
|
+
sessionId: any;
|
|
76
|
+
genNo: any;
|
|
77
|
+
acSessionId: any;
|
|
78
|
+
acGenNo: any;
|
|
79
|
+
};
|
|
80
|
+
error?: undefined;
|
|
81
|
+
}>;
|
|
69
82
|
}
|
|
70
83
|
/**
|
|
71
84
|
* Create a conversation embed, which can be integrated inside
|
|
@@ -90,5 +103,4 @@ export declare class SpotterAgentEmbed {
|
|
|
90
103
|
export declare class BodylessConversation extends SpotterAgentEmbed {
|
|
91
104
|
constructor(viewConfig: BodylessConversationViewConfig);
|
|
92
105
|
}
|
|
93
|
-
export {};
|
|
94
106
|
//# sourceMappingURL=bodyless-conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyless-conversation.d.ts","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;IACtF;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"bodyless-conversation.d.ts","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;IACtF;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AAEH,MAAM,WAAW,8BAA+B,SAAQ,2BAA2B;CAAG;AAEtF,MAAM,WAAW,6BAA8B,SAAQ,2BAA2B;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAoB,SAAQ,OAAO;IACR,SAAS,CAAC,UAAU,EAAE,6BAA6B;gBAA3E,SAAS,EAAE,WAAW,EAAY,UAAU,EAAE,6BAA6B;IAKhF,YAAY;IA2BN,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAOtD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;IAGd,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,mBAAmB,CAAsB;gBAE7B,UAAU,EAAE,2BAA2B;IAS9C,WAAW,CAAC,WAAW,EAAE,MAAM;;;;;;;;;IAmB5C;;;;OAIG;IACU,eAAe,CAAC,WAAW,EAAE,MAAM;;;;;;;;;;;;CAgBnD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAC3C,UAAU,EAAE,8BAA8B;CAGzD"}
|
|
@@ -3,7 +3,7 @@ import { TsEmbed } from './ts-embed';
|
|
|
3
3
|
import { Conversation as ConversationService } from '../utils/graphql/nlsService/conversation-service';
|
|
4
4
|
import { getEmbedConfig } from './embedConfig';
|
|
5
5
|
import { getQueryParamString } from '../utils';
|
|
6
|
-
class ConversationMessage extends TsEmbed {
|
|
6
|
+
export class ConversationMessage extends TsEmbed {
|
|
7
7
|
constructor(container, viewConfig) {
|
|
8
8
|
viewConfig.embedComponentType = 'bodyless-conversation';
|
|
9
9
|
super(container, viewConfig);
|
|
@@ -67,9 +67,6 @@ export class SpotterAgentEmbed {
|
|
|
67
67
|
return { error };
|
|
68
68
|
}
|
|
69
69
|
const container = document.createElement('div');
|
|
70
|
-
if (this.viewConfig.containerClassName) {
|
|
71
|
-
container.className = this.viewConfig.containerClassName;
|
|
72
|
-
}
|
|
73
70
|
const embed = new ConversationMessage(container, {
|
|
74
71
|
...this.viewConfig,
|
|
75
72
|
sessionId: data.sessionId,
|
|
@@ -80,6 +77,28 @@ export class SpotterAgentEmbed {
|
|
|
80
77
|
await embed.render();
|
|
81
78
|
return { container, viz: embed };
|
|
82
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Send a message to the conversation service and return only the data.
|
|
82
|
+
* @param userMessage - The message to send to the conversation service.
|
|
83
|
+
* @returns The data from the conversation service.
|
|
84
|
+
*/
|
|
85
|
+
async sendMessageData(userMessage) {
|
|
86
|
+
try {
|
|
87
|
+
const { data, error } = await this.conversationService.sendMessage(userMessage);
|
|
88
|
+
if (error) {
|
|
89
|
+
return { error };
|
|
90
|
+
}
|
|
91
|
+
return { data: {
|
|
92
|
+
sessionId: data.sessionId,
|
|
93
|
+
genNo: data.genNo,
|
|
94
|
+
acSessionId: data.stateKey.transactionId,
|
|
95
|
+
acGenNo: data.stateKey.generationNumber,
|
|
96
|
+
} };
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return { error: error };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
83
102
|
}
|
|
84
103
|
/**
|
|
85
104
|
* Create a conversation embed, which can be integrated inside
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyless-conversation.js","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"bodyless-conversation.js","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'jest-fetch-mock';
|
|
2
|
-
import { SpotterAgentEmbed } from './bodyless-conversation';
|
|
2
|
+
import { SpotterAgentEmbed, ConversationMessage } from './bodyless-conversation';
|
|
3
3
|
import * as authInstance from '../auth';
|
|
4
4
|
import { init } from '../index';
|
|
5
5
|
import { Action, AuthType } from '../types';
|
|
@@ -117,7 +117,7 @@ describe('SpotterAgentEmbed', () => {
|
|
|
117
117
|
const errorResult = await spotterEmbed.sendMessage('userMessage');
|
|
118
118
|
expect(errorResult.error instanceof Error).toBeTruthy();
|
|
119
119
|
});
|
|
120
|
-
test('should
|
|
120
|
+
test('should handle hideActions parameter correctly', async () => {
|
|
121
121
|
fetchMock.mockResponses(JSON.stringify({
|
|
122
122
|
data: {
|
|
123
123
|
ConvAssist__createConversation: {
|
|
@@ -202,205 +202,23 @@ describe('SpotterAgentEmbed', () => {
|
|
|
202
202
|
}));
|
|
203
203
|
const viewConfig = {
|
|
204
204
|
worksheetId: 'worksheetId',
|
|
205
|
-
|
|
205
|
+
hiddenActions: [Action.Download, Action.Save], // This should trigger the HideActions branch
|
|
206
206
|
};
|
|
207
207
|
const spotterAgentEmbed = new SpotterAgentEmbed(viewConfig);
|
|
208
208
|
const result = await spotterAgentEmbed.sendMessage('userMessage');
|
|
209
|
-
// Verify
|
|
210
|
-
expect(result.container.className).toBe('custom-conversation-container');
|
|
211
|
-
// Also verify the iframe src is correct
|
|
209
|
+
// Verify the iframe src contains the hideActions parameter
|
|
212
210
|
const iframeSrc = getIFrameSrc(result.container);
|
|
213
|
-
|
|
214
|
-
sessionId: 'sessionId',
|
|
215
|
-
genNo: 2,
|
|
216
|
-
acSessionId: 'transactionId',
|
|
217
|
-
acGenNo: 1,
|
|
218
|
-
});
|
|
211
|
+
expect(iframeSrc).toContain('hideAction');
|
|
219
212
|
});
|
|
220
|
-
test('should
|
|
221
|
-
fetchMock.mockResponses(JSON.stringify({
|
|
222
|
-
data: {
|
|
223
|
-
ConvAssist__createConversation: {
|
|
224
|
-
convId: 'conversationId',
|
|
225
|
-
initialCtx: {
|
|
226
|
-
type: 'TS_ANSWER',
|
|
227
|
-
tsAnsCtx: {
|
|
228
|
-
sessionId: 'sessionId',
|
|
229
|
-
genNo: 1,
|
|
230
|
-
stateKey: {
|
|
231
|
-
transactionId: 'transactionId',
|
|
232
|
-
generationNumber: 1,
|
|
233
|
-
},
|
|
234
|
-
worksheet: {
|
|
235
|
-
worksheetId: 'worksheetId',
|
|
236
|
-
worksheetName: 'GTM',
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
}), JSON.stringify({
|
|
243
|
-
data: {
|
|
244
|
-
ConvAssist__sendMessage: {
|
|
245
|
-
responses: [
|
|
246
|
-
{
|
|
247
|
-
msgId: 'msgId',
|
|
248
|
-
data: {
|
|
249
|
-
asstRespData: {
|
|
250
|
-
tool: 'TS_NLS',
|
|
251
|
-
asstRespText: '',
|
|
252
|
-
nlsAnsData: {
|
|
253
|
-
sageQuerySuggestions: [
|
|
254
|
-
{
|
|
255
|
-
llmReasoning: {
|
|
256
|
-
assumptions: 'You want the total [COL|sales] for [COL|item_type] [VAL|jackets] for [VAL|this year].',
|
|
257
|
-
clarifications: '',
|
|
258
|
-
interpretation: '',
|
|
259
|
-
__typename: 'eureka_SageQuerySuggestion_LLMReasoning',
|
|
260
|
-
},
|
|
261
|
-
tokens: [
|
|
262
|
-
'sum sales',
|
|
263
|
-
"item type = 'jackets'",
|
|
264
|
-
"date = 'this year'",
|
|
265
|
-
],
|
|
266
|
-
tmlTokens: [
|
|
267
|
-
'sum [sales]',
|
|
268
|
-
"[date] = [date].'this year'",
|
|
269
|
-
"[item type] = [item type].'jackets'",
|
|
270
|
-
],
|
|
271
|
-
worksheetId: 'worksheetId',
|
|
272
|
-
description: '',
|
|
273
|
-
title: '',
|
|
274
|
-
cached: false,
|
|
275
|
-
sqlQuery: "SELECT SUM(sales) FROM __Sample_Retail_Apparel WHERE item_type = 'jackets' AND date = _this_year();",
|
|
276
|
-
sessionId: 'sessionId',
|
|
277
|
-
genNo: 2,
|
|
278
|
-
formulaInfo: [],
|
|
279
|
-
tmlPhrases: [],
|
|
280
|
-
stateKey: {
|
|
281
|
-
transactionId: 'transactionId',
|
|
282
|
-
generationNumber: 1,
|
|
283
|
-
__typename: 'sage_auto_complete_v2_ACStateKey',
|
|
284
|
-
},
|
|
285
|
-
__typename: 'eureka_SageQuerySuggestion',
|
|
286
|
-
},
|
|
287
|
-
],
|
|
288
|
-
responseType: 'ANSWER',
|
|
289
|
-
__typename: 'convassist_nls_tool_NLSToolAsstRespData',
|
|
290
|
-
},
|
|
291
|
-
__typename: 'convassist_AsstResponseData',
|
|
292
|
-
},
|
|
293
|
-
__typename: 'convassist_MessageData',
|
|
294
|
-
},
|
|
295
|
-
type: 'ASST_RESPONSE',
|
|
296
|
-
__typename: 'convassist_MessagePayload',
|
|
297
|
-
},
|
|
298
|
-
],
|
|
299
|
-
__typename: 'convassist_SendMessageResponse',
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
}));
|
|
213
|
+
test('should have sendMessageData method', () => {
|
|
303
214
|
const viewConfig = {
|
|
304
215
|
worksheetId: 'worksheetId',
|
|
305
|
-
// No containerClassName provided
|
|
306
216
|
};
|
|
307
217
|
const spotterAgentEmbed = new SpotterAgentEmbed(viewConfig);
|
|
308
|
-
|
|
309
|
-
// Verify that the container has no class name (empty string)
|
|
310
|
-
expect(result.container.className).toBe('');
|
|
218
|
+
expect(typeof spotterAgentEmbed.sendMessageData).toBe('function');
|
|
311
219
|
});
|
|
312
|
-
test('should
|
|
313
|
-
|
|
314
|
-
data: {
|
|
315
|
-
ConvAssist__createConversation: {
|
|
316
|
-
convId: 'conversationId',
|
|
317
|
-
initialCtx: {
|
|
318
|
-
type: 'TS_ANSWER',
|
|
319
|
-
tsAnsCtx: {
|
|
320
|
-
sessionId: 'sessionId',
|
|
321
|
-
genNo: 1,
|
|
322
|
-
stateKey: {
|
|
323
|
-
transactionId: 'transactionId',
|
|
324
|
-
generationNumber: 1,
|
|
325
|
-
},
|
|
326
|
-
worksheet: {
|
|
327
|
-
worksheetId: 'worksheetId',
|
|
328
|
-
worksheetName: 'GTM',
|
|
329
|
-
},
|
|
330
|
-
},
|
|
331
|
-
},
|
|
332
|
-
},
|
|
333
|
-
},
|
|
334
|
-
}), JSON.stringify({
|
|
335
|
-
data: {
|
|
336
|
-
ConvAssist__sendMessage: {
|
|
337
|
-
responses: [
|
|
338
|
-
{
|
|
339
|
-
msgId: 'msgId',
|
|
340
|
-
data: {
|
|
341
|
-
asstRespData: {
|
|
342
|
-
tool: 'TS_NLS',
|
|
343
|
-
asstRespText: '',
|
|
344
|
-
nlsAnsData: {
|
|
345
|
-
sageQuerySuggestions: [
|
|
346
|
-
{
|
|
347
|
-
llmReasoning: {
|
|
348
|
-
assumptions: 'You want the total [COL|sales] for [COL|item_type] [VAL|jackets] for [VAL|this year].',
|
|
349
|
-
clarifications: '',
|
|
350
|
-
interpretation: '',
|
|
351
|
-
__typename: 'eureka_SageQuerySuggestion_LLMReasoning',
|
|
352
|
-
},
|
|
353
|
-
tokens: [
|
|
354
|
-
'sum sales',
|
|
355
|
-
"item type = 'jackets'",
|
|
356
|
-
"date = 'this year'",
|
|
357
|
-
],
|
|
358
|
-
tmlTokens: [
|
|
359
|
-
'sum [sales]',
|
|
360
|
-
"[date] = [date].'this year'",
|
|
361
|
-
"[item type] = [item type].'jackets'",
|
|
362
|
-
],
|
|
363
|
-
worksheetId: 'worksheetId',
|
|
364
|
-
description: '',
|
|
365
|
-
title: '',
|
|
366
|
-
cached: false,
|
|
367
|
-
sqlQuery: "SELECT SUM(sales) FROM __Sample_Retail_Apparel WHERE item_type = 'jackets' AND date = _this_year();",
|
|
368
|
-
sessionId: 'sessionId',
|
|
369
|
-
genNo: 2,
|
|
370
|
-
formulaInfo: [],
|
|
371
|
-
tmlPhrases: [],
|
|
372
|
-
stateKey: {
|
|
373
|
-
transactionId: 'transactionId',
|
|
374
|
-
generationNumber: 1,
|
|
375
|
-
__typename: 'sage_auto_complete_v2_ACStateKey',
|
|
376
|
-
},
|
|
377
|
-
__typename: 'eureka_SageQuerySuggestion',
|
|
378
|
-
},
|
|
379
|
-
],
|
|
380
|
-
responseType: 'ANSWER',
|
|
381
|
-
__typename: 'convassist_nls_tool_NLSToolAsstRespData',
|
|
382
|
-
},
|
|
383
|
-
__typename: 'convassist_AsstResponseData',
|
|
384
|
-
},
|
|
385
|
-
__typename: 'convassist_MessageData',
|
|
386
|
-
},
|
|
387
|
-
type: 'ASST_RESPONSE',
|
|
388
|
-
__typename: 'convassist_MessagePayload',
|
|
389
|
-
},
|
|
390
|
-
],
|
|
391
|
-
__typename: 'convassist_SendMessageResponse',
|
|
392
|
-
},
|
|
393
|
-
},
|
|
394
|
-
}));
|
|
395
|
-
const viewConfig = {
|
|
396
|
-
worksheetId: 'worksheetId',
|
|
397
|
-
hiddenActions: [Action.Download, Action.Save], // This should trigger the HideActions branch
|
|
398
|
-
};
|
|
399
|
-
const spotterAgentEmbed = new SpotterAgentEmbed(viewConfig);
|
|
400
|
-
const result = await spotterAgentEmbed.sendMessage('userMessage');
|
|
401
|
-
// Verify the iframe src contains the hideActions parameter
|
|
402
|
-
const iframeSrc = getIFrameSrc(result.container);
|
|
403
|
-
expect(iframeSrc).toContain('hideAction');
|
|
220
|
+
test('should export ConversationMessage class', () => {
|
|
221
|
+
expect(typeof ConversationMessage).toBe('function');
|
|
404
222
|
});
|
|
405
223
|
});
|
|
406
224
|
//# sourceMappingURL=bodyless-conversation.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bodyless-conversation.spec.js","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.spec.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAA+B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"bodyless-conversation.spec.js","sourceRoot":"","sources":["../../../src/embed/bodyless-conversation.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseViewConfig
|
|
1
|
+
import { BaseViewConfig } from '../types';
|
|
2
2
|
import { TsEmbed } from './ts-embed';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for search options
|
|
@@ -15,8 +15,7 @@ export interface SearchOptions {
|
|
|
15
15
|
*/
|
|
16
16
|
export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAction'> {
|
|
17
17
|
/**
|
|
18
|
-
* The ID of the data source object. For example, Model, View, or Table. Spotter uses
|
|
19
|
-
* this object to query data and generate Answers.
|
|
18
|
+
* The ID of the data source object. For example, Model, View, or Table. Spotter uses this object to query data and generate Answers.
|
|
20
19
|
*/
|
|
21
20
|
worksheetId: string;
|
|
22
21
|
/**
|
|
@@ -99,63 +98,6 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
99
98
|
* @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
|
|
100
99
|
*/
|
|
101
100
|
hideSampleQuestions?: boolean;
|
|
102
|
-
/**
|
|
103
|
-
* The list of runtime filters to apply to a search Answer,
|
|
104
|
-
* visualization, or Liveboard.
|
|
105
|
-
*
|
|
106
|
-
* Supported embed types: `SpotterEmbed`
|
|
107
|
-
* @example
|
|
108
|
-
* ```js
|
|
109
|
-
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
110
|
-
* ... // other embed view config
|
|
111
|
-
* runtimeFilters: [
|
|
112
|
-
* {
|
|
113
|
-
* columnName: 'value',
|
|
114
|
-
* operator: RuntimeFilterOp.EQ,
|
|
115
|
-
* values: ['string' | 123 | true],
|
|
116
|
-
* },
|
|
117
|
-
* ],
|
|
118
|
-
* })
|
|
119
|
-
* ```
|
|
120
|
-
*/
|
|
121
|
-
runtimeFilters?: RuntimeFilter[];
|
|
122
|
-
/**
|
|
123
|
-
* Flag to control whether runtime filters should be included in the URL.
|
|
124
|
-
* If true, filters will be passed via app initialization payload instead.
|
|
125
|
-
* If false/undefined, filters will be added to URL (default behavior).
|
|
126
|
-
*
|
|
127
|
-
* Supported embed types: `SpotterEmbed`
|
|
128
|
-
* @default false
|
|
129
|
-
*/
|
|
130
|
-
excludeRuntimeFiltersfromURL?: boolean;
|
|
131
|
-
/**
|
|
132
|
-
* The list of runtime parameters to apply to the conversation.
|
|
133
|
-
*
|
|
134
|
-
* Supported embed types: `SpotterEmbed`
|
|
135
|
-
* @example
|
|
136
|
-
* ```js
|
|
137
|
-
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
138
|
-
* ... // other embed view config
|
|
139
|
-
* runtimeParameters: [
|
|
140
|
-
* {
|
|
141
|
-
* name: 'Parameter Name',
|
|
142
|
-
* value: 'Parameter Value',
|
|
143
|
-
* },
|
|
144
|
-
* ],
|
|
145
|
-
* })
|
|
146
|
-
* ```
|
|
147
|
-
*/
|
|
148
|
-
runtimeParameters?: RuntimeParameter[];
|
|
149
|
-
/**
|
|
150
|
-
* Flag to control whether runtime parameters should be included in the URL.
|
|
151
|
-
* If true, parameters will be passed via app initialization payload instead.
|
|
152
|
-
* If false/undefined, parameters will be added to URL (default behavior).
|
|
153
|
-
*
|
|
154
|
-
* Supported embed types: `SpotterEmbed`
|
|
155
|
-
* @default false
|
|
156
|
-
*
|
|
157
|
-
*/
|
|
158
|
-
excludeRuntimeParametersfromURL?: boolean;
|
|
159
101
|
}
|
|
160
102
|
/**
|
|
161
103
|
* The configuration for the embedded spotterEmbed options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/embed/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/embed/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,cAAc,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC;IACjF;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;;;;;;;;OAaG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;;OAcG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;;;GAKG;AAEH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;CAAG;AAEzE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACD,SAAS,CAAC,UAAU,EAAE,sBAAsB;gBAApE,SAAS,EAAE,WAAW,EAAY,UAAU,EAAE,sBAAsB;IAKzE,YAAY,IAAI,MAAM;IAgDhB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;CAO/C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACX,SAAS,CAAC,UAAU,EAAE,sBAAsB;gBAApE,SAAS,EAAE,WAAW,EAAY,UAAU,EAAE,sBAAsB;CAInF"}
|
|
@@ -2,7 +2,7 @@ import isUndefined from 'lodash/isUndefined';
|
|
|
2
2
|
import { ERROR_MESSAGE } from '../errors';
|
|
3
3
|
import { Param } from '../types';
|
|
4
4
|
import { TsEmbed } from './ts-embed';
|
|
5
|
-
import { getQueryParamString
|
|
5
|
+
import { getQueryParamString } from '../utils';
|
|
6
6
|
/**
|
|
7
7
|
* Embed ThoughtSpot AI Conversation.
|
|
8
8
|
* @group Embed components
|
|
@@ -25,7 +25,7 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
25
25
|
this.viewConfig = viewConfig;
|
|
26
26
|
}
|
|
27
27
|
getIframeSrc() {
|
|
28
|
-
const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions,
|
|
28
|
+
const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, } = this.viewConfig;
|
|
29
29
|
const path = 'insights/conv-assist';
|
|
30
30
|
if (!worksheetId) {
|
|
31
31
|
this.handleError(ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND);
|
|
@@ -52,14 +52,6 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
52
52
|
if (queryParamsString) {
|
|
53
53
|
query = `?${queryParamsString}`;
|
|
54
54
|
}
|
|
55
|
-
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
56
|
-
if (filterQuery && !excludeRuntimeFiltersfromURL) {
|
|
57
|
-
query += `&${filterQuery}`;
|
|
58
|
-
}
|
|
59
|
-
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
60
|
-
if (parameterQuery && !excludeRuntimeParametersfromURL) {
|
|
61
|
-
query += `&${parameterQuery}`;
|
|
62
|
-
}
|
|
63
55
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams({
|
|
64
56
|
worksheet: worksheetId,
|
|
65
57
|
query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../src/embed/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../src/embed/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SpotterEmbed,
|
|
1
|
+
import { SpotterEmbed, } from './conversation';
|
|
2
2
|
import * as authInstance from '../auth';
|
|
3
3
|
import { Action, init } from '../index';
|
|
4
|
-
import { AuthType, Param
|
|
4
|
+
import { AuthType, Param } from '../types';
|
|
5
5
|
import { getDocumentBody, getIFrameSrc, getRootEl, defaultParamsWithoutHiddenActions as defaultParams, expectUrlMatchesWithParams, } from '../test/test-utils';
|
|
6
6
|
import { ERROR_MESSAGE } from '../errors';
|
|
7
7
|
const thoughtSpotHost = 'tshost';
|
|
@@ -126,107 +126,5 @@ describe('ConversationEmbed', () => {
|
|
|
126
126
|
await conversationEmbed.render();
|
|
127
127
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&${Param.DisableActions}=[%22${Action.InConversationTraining}%22]&${Param.DisableActionReason}=${disabledReason}&isSpotterExperienceEnabled=true&enableDataPanelV2=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
128
128
|
});
|
|
129
|
-
it('should render the conversation embed with runtime filters', async () => {
|
|
130
|
-
const viewConfig = {
|
|
131
|
-
worksheetId: 'worksheetId',
|
|
132
|
-
searchOptions: {
|
|
133
|
-
searchQuery: 'searchQuery',
|
|
134
|
-
},
|
|
135
|
-
runtimeFilters: [
|
|
136
|
-
{
|
|
137
|
-
columnName: 'revenue',
|
|
138
|
-
operator: RuntimeFilterOp.EQ,
|
|
139
|
-
values: [1000],
|
|
140
|
-
},
|
|
141
|
-
],
|
|
142
|
-
};
|
|
143
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
144
|
-
await conversationEmbed.render();
|
|
145
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&col1=revenue&op1=EQ&val1=1000#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
146
|
-
});
|
|
147
|
-
it('should render the conversation embed with runtime parameters', async () => {
|
|
148
|
-
const viewConfig = {
|
|
149
|
-
worksheetId: 'worksheetId',
|
|
150
|
-
searchOptions: {
|
|
151
|
-
searchQuery: 'searchQuery',
|
|
152
|
-
},
|
|
153
|
-
runtimeParameters: [
|
|
154
|
-
{
|
|
155
|
-
name: 'Date Range',
|
|
156
|
-
value: '30',
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
|
-
};
|
|
160
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
161
|
-
await conversationEmbed.render();
|
|
162
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
163
|
-
});
|
|
164
|
-
it('should render the conversation embed with runtime parameters excluded from URL', async () => {
|
|
165
|
-
const viewConfig = {
|
|
166
|
-
worksheetId: 'worksheetId',
|
|
167
|
-
searchOptions: {
|
|
168
|
-
searchQuery: 'searchQuery',
|
|
169
|
-
},
|
|
170
|
-
runtimeParameters: [
|
|
171
|
-
{
|
|
172
|
-
name: 'Date Range',
|
|
173
|
-
value: '30',
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
name: 'Region',
|
|
177
|
-
value: 'North America',
|
|
178
|
-
},
|
|
179
|
-
],
|
|
180
|
-
excludeRuntimeParametersfromURL: true,
|
|
181
|
-
};
|
|
182
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
183
|
-
await conversationEmbed.render();
|
|
184
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
185
|
-
});
|
|
186
|
-
it('should render the conversation embed with both runtime filters and parameters', async () => {
|
|
187
|
-
const viewConfig = {
|
|
188
|
-
worksheetId: 'worksheetId',
|
|
189
|
-
searchOptions: {
|
|
190
|
-
searchQuery: 'searchQuery',
|
|
191
|
-
},
|
|
192
|
-
runtimeParameters: [
|
|
193
|
-
{
|
|
194
|
-
name: 'Date Range',
|
|
195
|
-
value: '30',
|
|
196
|
-
},
|
|
197
|
-
],
|
|
198
|
-
runtimeFilters: [
|
|
199
|
-
{
|
|
200
|
-
columnName: 'revenue',
|
|
201
|
-
operator: RuntimeFilterOp.EQ,
|
|
202
|
-
values: [1000],
|
|
203
|
-
},
|
|
204
|
-
],
|
|
205
|
-
excludeRuntimeParametersfromURL: false,
|
|
206
|
-
excludeRuntimeFiltersfromURL: false,
|
|
207
|
-
};
|
|
208
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
209
|
-
await conversationEmbed.render();
|
|
210
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&col1=revenue&op1=EQ&val1=1000¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
211
|
-
});
|
|
212
|
-
it('should ensure deprecated ConversationEmbed class maintains same functionality as SpotterEmbed', async () => {
|
|
213
|
-
const viewConfig = {
|
|
214
|
-
worksheetId: 'worksheetId',
|
|
215
|
-
searchOptions: {
|
|
216
|
-
searchQuery: 'searchQuery',
|
|
217
|
-
},
|
|
218
|
-
runtimeParameters: [
|
|
219
|
-
{
|
|
220
|
-
name: 'Date Range',
|
|
221
|
-
value: '30',
|
|
222
|
-
},
|
|
223
|
-
],
|
|
224
|
-
};
|
|
225
|
-
// Test with deprecated class
|
|
226
|
-
const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
|
|
227
|
-
await conversationEmbed.render();
|
|
228
|
-
// Verify it generates the same URL structure as SpotterEmbed
|
|
229
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`);
|
|
230
|
-
});
|
|
231
129
|
});
|
|
232
130
|
//# sourceMappingURL=conversation.spec.js.map
|