@servicetitan/titan-chatbot-api 8.0.0 → 9.0.0

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.
Files changed (117) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts +1 -0
  3. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts.map +1 -1
  4. package/dist/api-client/__mocks__/chatbot-api-client.mock.js +1 -0
  5. package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
  6. package/dist/api-client/base/chatbot-api-client.d.ts +7 -0
  7. package/dist/api-client/base/chatbot-api-client.d.ts.map +1 -1
  8. package/dist/api-client/base/chatbot-api-client.js.map +1 -1
  9. package/dist/api-client/index.d.ts +0 -1
  10. package/dist/api-client/index.d.ts.map +1 -1
  11. package/dist/api-client/index.js +0 -2
  12. package/dist/api-client/index.js.map +1 -1
  13. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.d.ts +2 -0
  14. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.d.ts.map +1 -0
  15. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js +240 -0
  16. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js.map +1 -0
  17. package/dist/api-client/titan-chat/chatbot-api-client.d.ts +11 -0
  18. package/dist/api-client/titan-chat/chatbot-api-client.d.ts.map +1 -1
  19. package/dist/api-client/titan-chat/chatbot-api-client.js +29 -0
  20. package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/models/__tests__/chatbot-customizations.test.d.ts +2 -0
  26. package/dist/models/__tests__/chatbot-customizations.test.d.ts.map +1 -0
  27. package/dist/models/__tests__/chatbot-customizations.test.js +36 -0
  28. package/dist/models/__tests__/chatbot-customizations.test.js.map +1 -0
  29. package/dist/models/chatbot-customizations.d.ts +17 -0
  30. package/dist/models/chatbot-customizations.d.ts.map +1 -1
  31. package/dist/models/chatbot-customizations.js +6 -1
  32. package/dist/models/chatbot-customizations.js.map +1 -1
  33. package/dist/models/index.d.ts +1 -1
  34. package/dist/models/index.d.ts.map +1 -1
  35. package/dist/models/index.js +1 -1
  36. package/dist/models/index.js.map +1 -1
  37. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts +2 -0
  38. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts.map +1 -0
  39. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js +107 -0
  40. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js.map +1 -0
  41. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts +2 -0
  42. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts.map +1 -0
  43. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js +312 -0
  44. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js.map +1 -0
  45. package/dist/stores/chatbot-ui-backend.store.d.ts +26 -2
  46. package/dist/stores/chatbot-ui-backend.store.d.ts.map +1 -1
  47. package/dist/stores/chatbot-ui-backend.store.js +129 -4
  48. package/dist/stores/chatbot-ui-backend.store.js.map +1 -1
  49. package/dist/streaming/__tests__/agent-stream.test.d.ts +2 -0
  50. package/dist/streaming/__tests__/agent-stream.test.d.ts.map +1 -0
  51. package/dist/streaming/__tests__/agent-stream.test.js +92 -0
  52. package/dist/streaming/__tests__/agent-stream.test.js.map +1 -0
  53. package/dist/streaming/agent-stream.d.ts +83 -0
  54. package/dist/streaming/agent-stream.d.ts.map +1 -0
  55. package/dist/streaming/agent-stream.js +28 -0
  56. package/dist/streaming/agent-stream.js.map +1 -0
  57. package/dist/streaming/index.d.ts +3 -0
  58. package/dist/streaming/index.d.ts.map +1 -0
  59. package/dist/streaming/index.js +4 -0
  60. package/dist/streaming/index.js.map +1 -0
  61. package/dist/streaming/run-agent-stream.d.ts +23 -0
  62. package/dist/streaming/run-agent-stream.d.ts.map +1 -0
  63. package/dist/streaming/run-agent-stream.js +83 -0
  64. package/dist/streaming/run-agent-stream.js.map +1 -0
  65. package/package.json +6 -3
  66. package/src/api-client/__mocks__/chatbot-api-client.mock.ts +1 -0
  67. package/src/api-client/base/chatbot-api-client.ts +11 -0
  68. package/src/api-client/index.ts +0 -1
  69. package/src/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.ts +208 -0
  70. package/src/api-client/titan-chat/chatbot-api-client.ts +46 -0
  71. package/src/index.ts +6 -1
  72. package/src/models/__tests__/chatbot-customizations.test.ts +26 -0
  73. package/src/models/chatbot-customizations.ts +20 -0
  74. package/src/models/index.ts +1 -1
  75. package/src/stores/__tests__/chatbot-ui-backend.store.observability.test.ts +105 -0
  76. package/src/stores/__tests__/chatbot-ui-backend.store.streaming.test.ts +261 -0
  77. package/src/stores/chatbot-ui-backend.store.ts +179 -4
  78. package/src/streaming/__tests__/agent-stream.test.ts +80 -0
  79. package/src/streaming/agent-stream.ts +103 -0
  80. package/src/streaming/index.ts +2 -0
  81. package/src/streaming/run-agent-stream.ts +109 -0
  82. package/tsconfig.tsbuildinfo +1 -1
  83. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts +0 -2
  84. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts.map +0 -1
  85. package/dist/api-client/help-center/__tests__/converter-from-models.test.js +0 -67
  86. package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +0 -1
  87. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts +0 -2
  88. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts.map +0 -1
  89. package/dist/api-client/help-center/__tests__/converter-to-models.test.js +0 -83
  90. package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +0 -1
  91. package/dist/api-client/help-center/chatbot-api-client.d.ts +0 -32
  92. package/dist/api-client/help-center/chatbot-api-client.d.ts.map +0 -1
  93. package/dist/api-client/help-center/chatbot-api-client.js +0 -101
  94. package/dist/api-client/help-center/chatbot-api-client.js.map +0 -1
  95. package/dist/api-client/help-center/converter-from-models.d.ts +0 -13
  96. package/dist/api-client/help-center/converter-from-models.d.ts.map +0 -1
  97. package/dist/api-client/help-center/converter-from-models.js +0 -117
  98. package/dist/api-client/help-center/converter-from-models.js.map +0 -1
  99. package/dist/api-client/help-center/converter-to-models.d.ts +0 -13
  100. package/dist/api-client/help-center/converter-to-models.d.ts.map +0 -1
  101. package/dist/api-client/help-center/converter-to-models.js +0 -101
  102. package/dist/api-client/help-center/converter-to-models.js.map +0 -1
  103. package/dist/api-client/help-center/index.d.ts +0 -3
  104. package/dist/api-client/help-center/index.d.ts.map +0 -1
  105. package/dist/api-client/help-center/index.js +0 -3
  106. package/dist/api-client/help-center/index.js.map +0 -1
  107. package/dist/api-client/help-center/native-client.d.ts +0 -1268
  108. package/dist/api-client/help-center/native-client.d.ts.map +0 -1
  109. package/dist/api-client/help-center/native-client.js +0 -4550
  110. package/dist/api-client/help-center/native-client.js.map +0 -1
  111. package/src/api-client/help-center/__tests__/converter-from-models.test.ts +0 -41
  112. package/src/api-client/help-center/__tests__/converter-to-models.test.ts +0 -89
  113. package/src/api-client/help-center/chatbot-api-client.ts +0 -122
  114. package/src/api-client/help-center/converter-from-models.ts +0 -133
  115. package/src/api-client/help-center/converter-to-models.ts +0 -127
  116. package/src/api-client/help-center/index.ts +0 -2
  117. package/src/api-client/help-center/native-client.ts +0 -5727
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter-from-models.test.d.ts","sourceRoot":"","sources":["../../../../src/api-client/help-center/__tests__/converter-from-models.test.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- import { expect } from '@jest/globals';
2
- import { ConverterFromModels } from '../converter-from-models';
3
- describe('ConverterFromModels', ()=>{
4
- test('convertFilters', ()=>{
5
- expect(ConverterFromModels.convertFilters()).toBeUndefined();
6
- expect(ConverterFromModels.convertFilters({})).toBeUndefined();
7
- expect(ConverterFromModels.convertFilters({
8
- subOptions: {
9
- ProductAreas: {
10
- values: []
11
- }
12
- }
13
- })).toEqual({
14
- productAreas: []
15
- });
16
- expect(ConverterFromModels.convertFilters({
17
- subOptions: {
18
- ProductAreas: {
19
- values: [
20
- 'area1',
21
- 'area2'
22
- ]
23
- }
24
- }
25
- })).toEqual({
26
- productAreas: [
27
- 'area1',
28
- 'area2'
29
- ]
30
- });
31
- expect(ConverterFromModels.convertFilters({
32
- subOptions: {
33
- Sources: {
34
- values: [
35
- 'source1',
36
- 'source2'
37
- ]
38
- },
39
- ContentTypes: {
40
- values: [
41
- 'type1'
42
- ]
43
- },
44
- ProductAreas: {
45
- values: [
46
- 'area1',
47
- 'area2'
48
- ]
49
- }
50
- }
51
- })).toEqual({
52
- sources: [
53
- 'source1',
54
- 'source2'
55
- ],
56
- contentTypes: [
57
- 'type1'
58
- ],
59
- productAreas: [
60
- 'area1',
61
- 'area2'
62
- ]
63
- });
64
- });
65
- });
66
-
67
- //# sourceMappingURL=converter-from-models.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/api-client/help-center/__tests__/converter-from-models.test.ts"],"sourcesContent":["import { expect } from '@jest/globals';\nimport { Models } from '../..';\nimport { ConverterFromModels } from '../converter-from-models';\n\ndescribe('ConverterFromModels', () => {\n test('convertFilters', () => {\n expect(ConverterFromModels.convertFilters()).toBeUndefined();\n expect(ConverterFromModels.convertFilters({})).toBeUndefined();\n expect(\n ConverterFromModels.convertFilters({\n subOptions: {\n ProductAreas: { values: [] },\n },\n } as unknown as Models.ISelections)\n ).toEqual({\n productAreas: [],\n });\n expect(\n ConverterFromModels.convertFilters({\n subOptions: {\n ProductAreas: { values: ['area1', 'area2'] },\n },\n } as unknown as Models.ISelections)\n ).toEqual({\n productAreas: ['area1', 'area2'],\n });\n expect(\n ConverterFromModels.convertFilters({\n subOptions: {\n Sources: { values: ['source1', 'source2'] },\n ContentTypes: { values: ['type1'] },\n ProductAreas: { values: ['area1', 'area2'] },\n },\n } as unknown as Models.ISelections)\n ).toEqual({\n sources: ['source1', 'source2'],\n contentTypes: ['type1'],\n productAreas: ['area1', 'area2'],\n });\n });\n});\n"],"names":["expect","ConverterFromModels","describe","test","convertFilters","toBeUndefined","subOptions","ProductAreas","values","toEqual","productAreas","Sources","ContentTypes","sources","contentTypes"],"mappings":"AAAA,SAASA,MAAM,QAAQ,gBAAgB;AAEvC,SAASC,mBAAmB,QAAQ,2BAA2B;AAE/DC,SAAS,uBAAuB;IAC5BC,KAAK,kBAAkB;QACnBH,OAAOC,oBAAoBG,cAAc,IAAIC,aAAa;QAC1DL,OAAOC,oBAAoBG,cAAc,CAAC,CAAC,IAAIC,aAAa;QAC5DL,OACIC,oBAAoBG,cAAc,CAAC;YAC/BE,YAAY;gBACRC,cAAc;oBAAEC,QAAQ,EAAE;gBAAC;YAC/B;QACJ,IACFC,OAAO,CAAC;YACNC,cAAc,EAAE;QACpB;QACAV,OACIC,oBAAoBG,cAAc,CAAC;YAC/BE,YAAY;gBACRC,cAAc;oBAAEC,QAAQ;wBAAC;wBAAS;qBAAQ;gBAAC;YAC/C;QACJ,IACFC,OAAO,CAAC;YACNC,cAAc;gBAAC;gBAAS;aAAQ;QACpC;QACAV,OACIC,oBAAoBG,cAAc,CAAC;YAC/BE,YAAY;gBACRK,SAAS;oBAAEH,QAAQ;wBAAC;wBAAW;qBAAU;gBAAC;gBAC1CI,cAAc;oBAAEJ,QAAQ;wBAAC;qBAAQ;gBAAC;gBAClCD,cAAc;oBAAEC,QAAQ;wBAAC;wBAAS;qBAAQ;gBAAC;YAC/C;QACJ,IACFC,OAAO,CAAC;YACNI,SAAS;gBAAC;gBAAW;aAAU;YAC/BC,cAAc;gBAAC;aAAQ;YACvBJ,cAAc;gBAAC;gBAAS;aAAQ;QACpC;IACJ;AACJ"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=converter-to-models.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter-to-models.test.d.ts","sourceRoot":"","sources":["../../../../src/api-client/help-center/__tests__/converter-to-models.test.ts"],"names":[],"mappings":""}
@@ -1,83 +0,0 @@
1
- import { expect } from '@jest/globals';
2
- import { Models } from '../..';
3
- import { ConverterToModels } from '../converter-to-models';
4
- // eslint-disable-next-line no-restricted-imports
5
- import * as HelpCenterClient from '../native-client';
6
- describe('ConverterToModels', ()=>{
7
- test('convertFilterOptions', ()=>{
8
- expect(ConverterToModels.convertFilterOptions({})).toEqual(new Models.FrontendModel({
9
- options: new Models.Option({
10
- key: 'help-center-filters-root',
11
- displayName: 'help-center-filters-root',
12
- type: Models.OptionType.Group,
13
- subOptions: []
14
- })
15
- }));
16
- expect(ConverterToModels.convertFilterOptions({
17
- sources: [
18
- new HelpCenterClient.FilterOption({
19
- id: 'source1',
20
- displayName: 'Source 1'
21
- }),
22
- new HelpCenterClient.FilterOption({
23
- id: 'source2',
24
- displayName: 'Source 2'
25
- })
26
- ],
27
- productAreas: [
28
- new HelpCenterClient.FilterOption({
29
- id: 'area1',
30
- displayName: 'Area 1'
31
- }),
32
- new HelpCenterClient.FilterOption({
33
- id: 'area2',
34
- displayName: 'Area 2'
35
- })
36
- ]
37
- })).toEqual(new Models.FrontendModel({
38
- options: new Models.Option({
39
- key: 'help-center-filters-root',
40
- displayName: 'help-center-filters-root',
41
- type: Models.OptionType.Group,
42
- subOptions: [
43
- new Models.Option({
44
- key: 'Sources',
45
- displayName: 'Sources',
46
- type: Models.OptionType.Group,
47
- subOptions: [
48
- new Models.Option({
49
- key: 'source1',
50
- displayName: 'Source 1',
51
- type: Models.OptionType.Selectable
52
- }),
53
- new Models.Option({
54
- key: 'source2',
55
- displayName: 'Source 2',
56
- type: Models.OptionType.Selectable
57
- })
58
- ]
59
- }),
60
- new Models.Option({
61
- key: 'ProductAreas',
62
- displayName: 'Product Areas',
63
- type: Models.OptionType.Group,
64
- subOptions: [
65
- new Models.Option({
66
- key: 'area1',
67
- displayName: 'Area 1',
68
- type: Models.OptionType.Selectable
69
- }),
70
- new Models.Option({
71
- key: 'area2',
72
- displayName: 'Area 2',
73
- type: Models.OptionType.Selectable
74
- })
75
- ]
76
- })
77
- ]
78
- })
79
- }));
80
- });
81
- });
82
-
83
- //# sourceMappingURL=converter-to-models.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/api-client/help-center/__tests__/converter-to-models.test.ts"],"sourcesContent":["import { expect } from '@jest/globals';\nimport { Models } from '../..';\nimport { ConverterToModels } from '../converter-to-models';\n// eslint-disable-next-line no-restricted-imports\nimport * as HelpCenterClient from '../native-client';\n\ndescribe('ConverterToModels', () => {\n test('convertFilterOptions', () => {\n expect(ConverterToModels.convertFilterOptions({})).toEqual(\n new Models.FrontendModel({\n options: new Models.Option({\n key: 'help-center-filters-root',\n displayName: 'help-center-filters-root',\n type: Models.OptionType.Group,\n subOptions: [],\n }),\n })\n );\n\n expect(\n ConverterToModels.convertFilterOptions({\n sources: [\n new HelpCenterClient.FilterOption({\n id: 'source1',\n displayName: 'Source 1',\n }),\n new HelpCenterClient.FilterOption({\n id: 'source2',\n displayName: 'Source 2',\n }),\n ],\n productAreas: [\n new HelpCenterClient.FilterOption({\n id: 'area1',\n displayName: 'Area 1',\n }),\n new HelpCenterClient.FilterOption({\n id: 'area2',\n displayName: 'Area 2',\n }),\n ],\n })\n ).toEqual(\n new Models.FrontendModel({\n options: new Models.Option({\n key: 'help-center-filters-root',\n displayName: 'help-center-filters-root',\n type: Models.OptionType.Group,\n subOptions: [\n new Models.Option({\n key: 'Sources',\n displayName: 'Sources',\n type: Models.OptionType.Group,\n subOptions: [\n new Models.Option({\n key: 'source1',\n displayName: 'Source 1',\n type: Models.OptionType.Selectable,\n }),\n new Models.Option({\n key: 'source2',\n displayName: 'Source 2',\n type: Models.OptionType.Selectable,\n }),\n ],\n }),\n new Models.Option({\n key: 'ProductAreas',\n displayName: 'Product Areas',\n type: Models.OptionType.Group,\n subOptions: [\n new Models.Option({\n key: 'area1',\n displayName: 'Area 1',\n type: Models.OptionType.Selectable,\n }),\n new Models.Option({\n key: 'area2',\n displayName: 'Area 2',\n type: Models.OptionType.Selectable,\n }),\n ],\n }),\n ],\n }),\n })\n );\n });\n});\n"],"names":["expect","Models","ConverterToModels","HelpCenterClient","describe","test","convertFilterOptions","toEqual","FrontendModel","options","Option","key","displayName","type","OptionType","Group","subOptions","sources","FilterOption","id","productAreas","Selectable"],"mappings":"AAAA,SAASA,MAAM,QAAQ,gBAAgB;AACvC,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,iDAAiD;AACjD,YAAYC,sBAAsB,mBAAmB;AAErDC,SAAS,qBAAqB;IAC1BC,KAAK,wBAAwB;QACzBL,OAAOE,kBAAkBI,oBAAoB,CAAC,CAAC,IAAIC,OAAO,CACtD,IAAIN,OAAOO,aAAa,CAAC;YACrBC,SAAS,IAAIR,OAAOS,MAAM,CAAC;gBACvBC,KAAK;gBACLC,aAAa;gBACbC,MAAMZ,OAAOa,UAAU,CAACC,KAAK;gBAC7BC,YAAY,EAAE;YAClB;QACJ;QAGJhB,OACIE,kBAAkBI,oBAAoB,CAAC;YACnCW,SAAS;gBACL,IAAId,iBAAiBe,YAAY,CAAC;oBAC9BC,IAAI;oBACJP,aAAa;gBACjB;gBACA,IAAIT,iBAAiBe,YAAY,CAAC;oBAC9BC,IAAI;oBACJP,aAAa;gBACjB;aACH;YACDQ,cAAc;gBACV,IAAIjB,iBAAiBe,YAAY,CAAC;oBAC9BC,IAAI;oBACJP,aAAa;gBACjB;gBACA,IAAIT,iBAAiBe,YAAY,CAAC;oBAC9BC,IAAI;oBACJP,aAAa;gBACjB;aACH;QACL,IACFL,OAAO,CACL,IAAIN,OAAOO,aAAa,CAAC;YACrBC,SAAS,IAAIR,OAAOS,MAAM,CAAC;gBACvBC,KAAK;gBACLC,aAAa;gBACbC,MAAMZ,OAAOa,UAAU,CAACC,KAAK;gBAC7BC,YAAY;oBACR,IAAIf,OAAOS,MAAM,CAAC;wBACdC,KAAK;wBACLC,aAAa;wBACbC,MAAMZ,OAAOa,UAAU,CAACC,KAAK;wBAC7BC,YAAY;4BACR,IAAIf,OAAOS,MAAM,CAAC;gCACdC,KAAK;gCACLC,aAAa;gCACbC,MAAMZ,OAAOa,UAAU,CAACO,UAAU;4BACtC;4BACA,IAAIpB,OAAOS,MAAM,CAAC;gCACdC,KAAK;gCACLC,aAAa;gCACbC,MAAMZ,OAAOa,UAAU,CAACO,UAAU;4BACtC;yBACH;oBACL;oBACA,IAAIpB,OAAOS,MAAM,CAAC;wBACdC,KAAK;wBACLC,aAAa;wBACbC,MAAMZ,OAAOa,UAAU,CAACC,KAAK;wBAC7BC,YAAY;4BACR,IAAIf,OAAOS,MAAM,CAAC;gCACdC,KAAK;gCACLC,aAAa;gCACbC,MAAMZ,OAAOa,UAAU,CAACO,UAAU;4BACtC;4BACA,IAAIpB,OAAOS,MAAM,CAAC;gCACdC,KAAK;gCACLC,aAAa;gCACbC,MAAMZ,OAAOa,UAAU,CAACO,UAAU;4BACtC;yBACH;oBACL;iBACH;YACL;QACJ;IAER;AACJ"}
@@ -1,32 +0,0 @@
1
- import { Models } from '..';
2
- import { FirstParameterType, IChatbotApiClient, IChatbotClientSettings, SecondParameterType } from '../base/chatbot-api-client';
3
- import { ChatClient } from './native-client';
4
- /**
5
- * Settings for the chatbot client, which includes a factory for constructor parameters, and additional settings
6
- * like instance and area which are used in the API calls.
7
- */
8
- export interface IChatbotClientSettingsHelpCenter extends IChatbotClientSettings {
9
- constructorParametersFactory: () => {
10
- baseUrl?: FirstParameterType<typeof ChatClient>;
11
- axiosInstance?: SecondParameterType<typeof ChatClient>;
12
- };
13
- instance: string;
14
- area: string;
15
- }
16
- /**
17
- * Client adapter adopts the generated titan chatbot client to the generic IChatbotApiClient interface.
18
- */
19
- export declare class ChatbotApiClient implements IChatbotApiClient {
20
- private readonly chatbotApiClientSettings;
21
- private readonly client;
22
- constructor(chatbotApiClientSettings: IChatbotClientSettingsHelpCenter);
23
- postFeedback(body: Models.Feedback, abortSignal?: AbortSignal): Promise<Models.Feedback>;
24
- postMessage(body: Models.UserMessage, abortSignal?: AbortSignal): Promise<Models.BotMessage>;
25
- postFollowUpEmail(body: Models.UserMessage, abortSignal?: AbortSignal): Promise<Models.BotMessage>;
26
- getOptions(abortSignal?: AbortSignal): Promise<Models.FrontendModel>;
27
- postSession(body: Models.Session, abortSignal?: AbortSignal): Promise<Models.Session>;
28
- patchSession(body: Models.Session, abortSignal?: AbortSignal): Promise<Models.Session>;
29
- deleteSession(body: Models.Session, abortSignal?: AbortSignal): Promise<Models.Session>;
30
- getTranscripts(start?: Date, end?: Date, signal?: AbortSignal): Promise<Models.ExportHistoryMessage[]>;
31
- }
32
- //# sourceMappingURL=chatbot-api-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatbot-api-client.d.ts","sourceRoot":"","sources":["../../../src/api-client/help-center/chatbot-api-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAEH,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACtB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,gCAAiC,SAAQ,sBAAsB;IAC5E,4BAA4B,EAAE,MAAM;QAChC,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,UAAU,CAAC,CAAC;QAChD,aAAa,CAAC,EAAE,mBAAmB,CAAC,OAAO,UAAU,CAAC,CAAC;KAC1D,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBACa,gBAAiB,YAAW,iBAAiB;IAKlD,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IAJ7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAIf,wBAAwB,EAAE,gCAAgC;IAOzE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW;IAoB7D,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,WAAW;IASrE,iBAAiB,CAEb,IAAI,EAAE,MAAM,CAAC,WAAW,EAExB,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;IAIvB,UAAU,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;IAKpE,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW;IAQ3D,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW;IAW5D,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW;IAMnE,cAAc,CAEV,KAAK,CAAC,EAAE,IAAI,EAEZ,GAAG,CAAC,EAAE,IAAI,EAEV,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;CAG5C"}
@@ -1,101 +0,0 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
- function _ts_decorate(decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- }
20
- function _ts_metadata(k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
- }
23
- function _ts_param(paramIndex, decorator) {
24
- return function(target, key) {
25
- decorator(target, key, paramIndex);
26
- };
27
- }
28
- import { inject, injectable } from '@servicetitan/react-ioc';
29
- import { CHATBOT_CLIENT_SETTINGS } from '../base/chatbot-api-client';
30
- import { ConverterFromModels } from './converter-from-models';
31
- import { ConverterToModels } from './converter-to-models';
32
- // eslint-disable-next-line no-restricted-imports
33
- import { ChatClient } from './native-client';
34
- export class ChatbotApiClient {
35
- async postFeedback(body, abortSignal) {
36
- if (body === null || body === void 0 ? void 0 : body.messageId) {
37
- await this.client.sendBotMessageFeedback(body.sessionId, body.messageId, ConverterFromModels.convertMessageFeedback(body), abortSignal);
38
- return body;
39
- } else if (body === null || body === void 0 ? void 0 : body.sessionId) {
40
- await this.client.sendSessionFeedback(body.sessionId, ConverterFromModels.convertSessionFeedback(body), abortSignal);
41
- return body;
42
- }
43
- throw new Error('Feedback must contain either messageId or sessionId');
44
- }
45
- async postMessage(body, abortSignal) {
46
- const hcMessage = ConverterFromModels.convertUserMessage(body, this.chatbotApiClientSettings.area);
47
- const botMessage = await this.client.sendUserMessage(hcMessage, abortSignal);
48
- return ConverterToModels.convertBotMessage(botMessage);
49
- }
50
- postFollowUpEmail(// eslint-disable-next-line @typescript-eslint/no-unused-vars
51
- body, // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
- abortSignal) {
53
- throw new Error('Method not implemented for Help Center chatbot API.');
54
- }
55
- async getOptions(abortSignal) {
56
- const filterOptions = await this.client.getFilterOptions(abortSignal);
57
- return ConverterToModels.convertFilterOptions(filterOptions);
58
- }
59
- async postSession(body, abortSignal) {
60
- var _body_data, _body_data1, _instance;
61
- body.data = (_body_data = body.data) !== null && _body_data !== void 0 ? _body_data : {};
62
- (_instance = (_body_data1 = body.data).instance) !== null && _instance !== void 0 ? _instance : _body_data1.instance = this.chatbotApiClientSettings.instance;
63
- const hcSession = ConverterFromModels.convertSession(body);
64
- const newSession = await this.client.createSession(hcSession.source, abortSignal);
65
- return ConverterToModels.convertSession(newSession);
66
- }
67
- async patchSession(body, abortSignal) {
68
- var _session_source, _session_source1;
69
- const session = ConverterFromModels.convertSession(body);
70
- await this.client.updateSessionCategory((_session_source = session.source) === null || _session_source === void 0 ? void 0 : _session_source.category, (_session_source1 = session.source) === null || _session_source1 === void 0 ? void 0 : _session_source1.subCategory, session.id, abortSignal);
71
- return body;
72
- }
73
- async deleteSession(body, abortSignal) {
74
- const session = ConverterFromModels.convertSession(body);
75
- await this.client.closeSession(session.id, abortSignal);
76
- return body;
77
- }
78
- getTranscripts(// eslint-disable-next-line @typescript-eslint/no-unused-vars
79
- start, // eslint-disable-next-line @typescript-eslint/no-unused-vars
80
- end, // eslint-disable-next-line @typescript-eslint/no-unused-vars
81
- signal) {
82
- throw new Error('Method not implemented for Help Center chatbot API.');
83
- }
84
- constructor(chatbotApiClientSettings){
85
- _define_property(this, "chatbotApiClientSettings", void 0);
86
- _define_property(this, "client", void 0);
87
- this.chatbotApiClientSettings = chatbotApiClientSettings;
88
- const { axiosInstance, baseUrl } = this.chatbotApiClientSettings.constructorParametersFactory();
89
- this.client = new ChatClient(baseUrl, axiosInstance);
90
- }
91
- }
92
- ChatbotApiClient = _ts_decorate([
93
- injectable(),
94
- _ts_param(0, inject(CHATBOT_CLIENT_SETTINGS)),
95
- _ts_metadata("design:type", Function),
96
- _ts_metadata("design:paramtypes", [
97
- typeof IChatbotClientSettingsHelpCenter === "undefined" ? Object : IChatbotClientSettingsHelpCenter
98
- ])
99
- ], ChatbotApiClient);
100
-
101
- //# sourceMappingURL=chatbot-api-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/api-client/help-center/chatbot-api-client.ts"],"sourcesContent":["import { inject, injectable } from '@servicetitan/react-ioc';\nimport { Models } from '..';\nimport {\n CHATBOT_CLIENT_SETTINGS,\n FirstParameterType,\n IChatbotApiClient,\n IChatbotClientSettings,\n SecondParameterType,\n} from '../base/chatbot-api-client';\nimport { ConverterFromModels } from './converter-from-models';\nimport { ConverterToModels } from './converter-to-models';\n// eslint-disable-next-line no-restricted-imports\nimport { ChatClient } from './native-client';\n\n/**\n * Settings for the chatbot client, which includes a factory for constructor parameters, and additional settings\n * like instance and area which are used in the API calls.\n */\nexport interface IChatbotClientSettingsHelpCenter extends IChatbotClientSettings {\n constructorParametersFactory: () => {\n baseUrl?: FirstParameterType<typeof ChatClient>;\n axiosInstance?: SecondParameterType<typeof ChatClient>;\n };\n instance: string;\n area: string;\n}\n\n/**\n * Client adapter adopts the generated titan chatbot client to the generic IChatbotApiClient interface.\n */\n@injectable()\nexport class ChatbotApiClient implements IChatbotApiClient {\n private readonly client: ChatClient;\n\n constructor(\n @inject(CHATBOT_CLIENT_SETTINGS)\n private readonly chatbotApiClientSettings: IChatbotClientSettingsHelpCenter\n ) {\n const { axiosInstance, baseUrl } =\n this.chatbotApiClientSettings.constructorParametersFactory();\n this.client = new ChatClient(baseUrl, axiosInstance);\n }\n\n async postFeedback(body: Models.Feedback, abortSignal?: AbortSignal) {\n if (body?.messageId) {\n await this.client.sendBotMessageFeedback(\n body.sessionId,\n body.messageId,\n ConverterFromModels.convertMessageFeedback(body),\n abortSignal\n );\n return body;\n } else if (body?.sessionId) {\n await this.client.sendSessionFeedback(\n body.sessionId,\n ConverterFromModels.convertSessionFeedback(body),\n abortSignal\n );\n return body;\n }\n throw new Error('Feedback must contain either messageId or sessionId');\n }\n\n async postMessage(body: Models.UserMessage, abortSignal?: AbortSignal) {\n const hcMessage = ConverterFromModels.convertUserMessage(\n body,\n this.chatbotApiClientSettings.area\n );\n const botMessage = await this.client.sendUserMessage(hcMessage, abortSignal);\n return ConverterToModels.convertBotMessage(botMessage);\n }\n\n postFollowUpEmail(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n body: Models.UserMessage,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abortSignal?: AbortSignal\n ): Promise<Models.BotMessage> {\n throw new Error('Method not implemented for Help Center chatbot API.');\n }\n\n async getOptions(abortSignal?: AbortSignal): Promise<Models.FrontendModel> {\n const filterOptions = await this.client.getFilterOptions(abortSignal);\n return ConverterToModels.convertFilterOptions(filterOptions);\n }\n\n async postSession(body: Models.Session, abortSignal?: AbortSignal) {\n body.data = body.data ?? {};\n body.data.instance ??= this.chatbotApiClientSettings.instance;\n const hcSession = ConverterFromModels.convertSession(body);\n const newSession = await this.client.createSession(hcSession.source!, abortSignal);\n return ConverterToModels.convertSession(newSession);\n }\n\n async patchSession(body: Models.Session, abortSignal?: AbortSignal) {\n const session = ConverterFromModels.convertSession(body);\n await this.client.updateSessionCategory(\n session.source?.category,\n session.source?.subCategory,\n session.id,\n abortSignal\n );\n return body;\n }\n\n async deleteSession(body: Models.Session, abortSignal?: AbortSignal) {\n const session = ConverterFromModels.convertSession(body);\n await this.client.closeSession(session.id, abortSignal);\n return body;\n }\n\n getTranscripts(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n start?: Date,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n end?: Date,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n signal?: AbortSignal\n ): Promise<Models.ExportHistoryMessage[]> {\n throw new Error('Method not implemented for Help Center chatbot API.');\n }\n}\n"],"names":["inject","injectable","CHATBOT_CLIENT_SETTINGS","ConverterFromModels","ConverterToModels","ChatClient","ChatbotApiClient","postFeedback","body","abortSignal","messageId","client","sendBotMessageFeedback","sessionId","convertMessageFeedback","sendSessionFeedback","convertSessionFeedback","Error","postMessage","hcMessage","convertUserMessage","chatbotApiClientSettings","area","botMessage","sendUserMessage","convertBotMessage","postFollowUpEmail","getOptions","filterOptions","getFilterOptions","convertFilterOptions","postSession","data","instance","hcSession","convertSession","newSession","createSession","source","patchSession","session","updateSessionCategory","category","subCategory","id","deleteSession","closeSession","getTranscripts","start","end","signal","axiosInstance","baseUrl","constructorParametersFactory"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Models } from '..';
2
- import * as HelpCenterModels from './native-client';
3
- export declare class ConverterFromModels {
4
- static convertSession(session: Models.ISession): HelpCenterModels.ChatbotSession;
5
- static convertUserMessage(userMessage: Models.IUserMessage, area: string): HelpCenterModels.UserMessage;
6
- static convertFilters(selections?: Models.ISelections): HelpCenterModels.FilterSelections | undefined;
7
- static convertSessionFeedback(feedback: Models.IFeedback): HelpCenterModels.SessionFeedback;
8
- static convertMessageFeedback(feedback: Models.IFeedback): HelpCenterModels.MessageFeedback;
9
- static convertFeedbackOptions(feedbackOptions?: Models.FeedbackOptions[]): HelpCenterModels.FeedbackOptions[] | undefined;
10
- static convertMessageFeedbackRating(feedbackRatings?: Models.FeedbackRatings): HelpCenterModels.MessageFeedbackRatings | undefined;
11
- static convertSessionFeedbackRating(feedbackRatings?: Models.FeedbackRatings): HelpCenterModels.SessionFeedbackRatings | undefined;
12
- }
13
- //# sourceMappingURL=converter-from-models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter-from-models.d.ts","sourceRoot":"","sources":["../../../src/api-client/help-center/converter-from-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAE5B,OAAO,KAAK,gBAAgB,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,mBAAmB;IAC5B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC,cAAc;IAgBhF,MAAM,CAAC,kBAAkB,CACrB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,IAAI,EAAE,MAAM,GACb,gBAAgB,CAAC,WAAW;IAe/B,MAAM,CAAC,cAAc,CACjB,UAAU,CAAC,EAAE,MAAM,CAAC,WAAW,GAChC,gBAAgB,CAAC,gBAAgB,GAAG,SAAS;IAoBhD,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,eAAe;IAO3F,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC,eAAe;IAS3F,MAAM,CAAC,sBAAsB,CACzB,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,GAC3C,gBAAgB,CAAC,eAAe,EAAE,GAAG,SAAS;IAsBjD,MAAM,CAAC,4BAA4B,CAC/B,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,GACzC,gBAAgB,CAAC,sBAAsB,GAAG,SAAS;IActD,MAAM,CAAC,4BAA4B,CAC/B,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,GACzC,gBAAgB,CAAC,sBAAsB,GAAG,SAAS;CAazD"}
@@ -1,117 +0,0 @@
1
- import { Models } from '..';
2
- // eslint-disable-next-line no-restricted-imports
3
- import * as HelpCenterModels from './native-client';
4
- export class ConverterFromModels {
5
- static convertSession(session) {
6
- const data = session.data;
7
- return new HelpCenterModels.ChatbotSession({
8
- id: session.id,
9
- createdUtc: (data === null || data === void 0 ? void 0 : data.createdUtc) ? new Date(data.createdUtc) : undefined,
10
- closedUtc: (data === null || data === void 0 ? void 0 : data.closedUtc) ? new Date(data.closedUtc) : undefined,
11
- botId: data === null || data === void 0 ? void 0 : data.botId,
12
- source: new HelpCenterModels.SessionSource({
13
- instance: data === null || data === void 0 ? void 0 : data.instance,
14
- category: data === null || data === void 0 ? void 0 : data.category,
15
- subCategory: data === null || data === void 0 ? void 0 : data.subCategory,
16
- fullstorySessionId: data === null || data === void 0 ? void 0 : data.fullstorySessionId
17
- })
18
- });
19
- }
20
- static convertUserMessage(userMessage, area) {
21
- var _ConverterFromModels_convertFilters;
22
- const filters = (_ConverterFromModels_convertFilters = ConverterFromModels.convertFilters(userMessage.selections)) !== null && _ConverterFromModels_convertFilters !== void 0 ? _ConverterFromModels_convertFilters : new HelpCenterModels.FilterSelections({});
23
- const data = {
24
- sessionId: userMessage.sessionId,
25
- text: userMessage.question,
26
- source: new HelpCenterModels.MessageSource({
27
- area
28
- }),
29
- ...filters ? {
30
- filters
31
- } : undefined
32
- };
33
- return HelpCenterModels.UserMessage.fromJS(data);
34
- }
35
- static convertFilters(selections) {
36
- if (!(selections === null || selections === void 0 ? void 0 : selections.subOptions) || !Object.keys(selections.subOptions).length) {
37
- return;
38
- }
39
- const data = {};
40
- const sources = selections.subOptions.Sources;
41
- const contentTypes = selections.subOptions.ContentTypes;
42
- const productAreas = selections.subOptions.ProductAreas;
43
- if (sources === null || sources === void 0 ? void 0 : sources.values) {
44
- data.sources = sources.values;
45
- }
46
- if (contentTypes === null || contentTypes === void 0 ? void 0 : contentTypes.values) {
47
- data.contentTypes = contentTypes.values;
48
- }
49
- if (productAreas === null || productAreas === void 0 ? void 0 : productAreas.values) {
50
- data.productAreas = productAreas.values;
51
- }
52
- return new HelpCenterModels.FilterSelections(data);
53
- }
54
- static convertSessionFeedback(feedback) {
55
- return new HelpCenterModels.SessionFeedback({
56
- description: feedback.description,
57
- rating: ConverterFromModels.convertSessionFeedbackRating(feedback.rating)
58
- });
59
- }
60
- static convertMessageFeedback(feedback) {
61
- return new HelpCenterModels.MessageFeedback({
62
- linkUrl: feedback.linkUrl,
63
- description: feedback.description,
64
- rating: ConverterFromModels.convertMessageFeedbackRating(feedback.rating),
65
- options: ConverterFromModels.convertFeedbackOptions(feedback.options)
66
- });
67
- }
68
- static convertFeedbackOptions(feedbackOptions) {
69
- if (feedbackOptions === undefined) {
70
- return;
71
- }
72
- return feedbackOptions.map((feedbackOption)=>{
73
- switch(feedbackOption){
74
- case Models.FeedbackOptions.Incomplete:
75
- return HelpCenterModels.FeedbackOptions.Incomplete;
76
- case Models.FeedbackOptions.Incorrect:
77
- return HelpCenterModels.FeedbackOptions.Incorrect;
78
- case Models.FeedbackOptions.Other:
79
- return HelpCenterModels.FeedbackOptions.Other;
80
- case Models.FeedbackOptions.Unclear:
81
- return HelpCenterModels.FeedbackOptions.Unclear;
82
- case Models.FeedbackOptions.Unrelated:
83
- return HelpCenterModels.FeedbackOptions.Unrelated;
84
- default:
85
- return HelpCenterModels.FeedbackOptions.Other;
86
- }
87
- });
88
- }
89
- static convertMessageFeedbackRating(feedbackRatings) {
90
- if (feedbackRatings === undefined) {
91
- return;
92
- }
93
- switch(feedbackRatings){
94
- case Models.FeedbackRatings.ThumbsDown:
95
- return HelpCenterModels.MessageFeedbackRatings.ThumbsDown;
96
- case Models.FeedbackRatings.GuardrailFeedback:
97
- return HelpCenterModels.MessageFeedbackRatings.GuardrailFeedback;
98
- case Models.FeedbackRatings.ThumbsUp:
99
- return HelpCenterModels.MessageFeedbackRatings.ThumbsUp;
100
- }
101
- }
102
- static convertSessionFeedbackRating(feedbackRatings) {
103
- if (feedbackRatings === undefined) {
104
- return;
105
- }
106
- switch(feedbackRatings){
107
- case Models.FeedbackRatings.ThumbsDown:
108
- return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;
109
- case Models.FeedbackRatings.ThumbsUp:
110
- return HelpCenterModels.SessionFeedbackRatings.ThumbsUp;
111
- default:
112
- return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;
113
- }
114
- }
115
- }
116
-
117
- //# sourceMappingURL=converter-from-models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/api-client/help-center/converter-from-models.ts"],"sourcesContent":["import { Models } from '..';\n// eslint-disable-next-line no-restricted-imports\nimport * as HelpCenterModels from './native-client';\n\nexport class ConverterFromModels {\n static convertSession(session: Models.ISession): HelpCenterModels.ChatbotSession {\n const data = session.data;\n return new HelpCenterModels.ChatbotSession({\n id: session.id,\n createdUtc: data?.createdUtc ? new Date(data.createdUtc) : undefined,\n closedUtc: data?.closedUtc ? new Date(data.closedUtc) : undefined,\n botId: data?.botId,\n source: new HelpCenterModels.SessionSource({\n instance: data?.instance,\n category: data?.category,\n subCategory: data?.subCategory,\n fullstorySessionId: data?.fullstorySessionId,\n }),\n });\n }\n\n static convertUserMessage(\n userMessage: Models.IUserMessage,\n area: string\n ): HelpCenterModels.UserMessage {\n const filters =\n ConverterFromModels.convertFilters(userMessage.selections) ??\n new HelpCenterModels.FilterSelections({});\n const data: HelpCenterModels.IUserMessage = {\n sessionId: userMessage.sessionId,\n text: userMessage.question,\n source: new HelpCenterModels.MessageSource({\n area,\n }),\n ...(filters ? { filters } : undefined),\n };\n return HelpCenterModels.UserMessage.fromJS(data);\n }\n\n static convertFilters(\n selections?: Models.ISelections\n ): HelpCenterModels.FilterSelections | undefined {\n if (!selections?.subOptions || !Object.keys(selections.subOptions).length) {\n return;\n }\n const data: HelpCenterModels.IFilterSelections = {};\n const sources = selections.subOptions.Sources;\n const contentTypes = selections.subOptions.ContentTypes;\n const productAreas = selections.subOptions.ProductAreas;\n if (sources?.values) {\n data.sources = sources.values;\n }\n if (contentTypes?.values) {\n data.contentTypes = contentTypes.values;\n }\n if (productAreas?.values) {\n data.productAreas = productAreas.values;\n }\n return new HelpCenterModels.FilterSelections(data);\n }\n\n static convertSessionFeedback(feedback: Models.IFeedback): HelpCenterModels.SessionFeedback {\n return new HelpCenterModels.SessionFeedback({\n description: feedback.description,\n rating: ConverterFromModels.convertSessionFeedbackRating(feedback.rating),\n });\n }\n\n static convertMessageFeedback(feedback: Models.IFeedback): HelpCenterModels.MessageFeedback {\n return new HelpCenterModels.MessageFeedback({\n linkUrl: feedback.linkUrl,\n description: feedback.description,\n rating: ConverterFromModels.convertMessageFeedbackRating(feedback.rating),\n options: ConverterFromModels.convertFeedbackOptions(feedback.options),\n });\n }\n\n static convertFeedbackOptions(\n feedbackOptions?: Models.FeedbackOptions[]\n ): HelpCenterModels.FeedbackOptions[] | undefined {\n if (feedbackOptions === undefined) {\n return;\n }\n return feedbackOptions.map(feedbackOption => {\n switch (feedbackOption) {\n case Models.FeedbackOptions.Incomplete:\n return HelpCenterModels.FeedbackOptions.Incomplete;\n case Models.FeedbackOptions.Incorrect:\n return HelpCenterModels.FeedbackOptions.Incorrect;\n case Models.FeedbackOptions.Other:\n return HelpCenterModels.FeedbackOptions.Other;\n case Models.FeedbackOptions.Unclear:\n return HelpCenterModels.FeedbackOptions.Unclear;\n case Models.FeedbackOptions.Unrelated:\n return HelpCenterModels.FeedbackOptions.Unrelated;\n default:\n return HelpCenterModels.FeedbackOptions.Other;\n }\n });\n }\n\n static convertMessageFeedbackRating(\n feedbackRatings?: Models.FeedbackRatings\n ): HelpCenterModels.MessageFeedbackRatings | undefined {\n if (feedbackRatings === undefined) {\n return;\n }\n switch (feedbackRatings) {\n case Models.FeedbackRatings.ThumbsDown:\n return HelpCenterModels.MessageFeedbackRatings.ThumbsDown;\n case Models.FeedbackRatings.GuardrailFeedback:\n return HelpCenterModels.MessageFeedbackRatings.GuardrailFeedback;\n case Models.FeedbackRatings.ThumbsUp:\n return HelpCenterModels.MessageFeedbackRatings.ThumbsUp;\n }\n }\n\n static convertSessionFeedbackRating(\n feedbackRatings?: Models.FeedbackRatings\n ): HelpCenterModels.SessionFeedbackRatings | undefined {\n if (feedbackRatings === undefined) {\n return;\n }\n switch (feedbackRatings) {\n case Models.FeedbackRatings.ThumbsDown:\n return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;\n case Models.FeedbackRatings.ThumbsUp:\n return HelpCenterModels.SessionFeedbackRatings.ThumbsUp;\n default:\n return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;\n }\n }\n}\n"],"names":["Models","HelpCenterModels","ConverterFromModels","convertSession","session","data","ChatbotSession","id","createdUtc","Date","undefined","closedUtc","botId","source","SessionSource","instance","category","subCategory","fullstorySessionId","convertUserMessage","userMessage","area","filters","convertFilters","selections","FilterSelections","sessionId","text","question","MessageSource","UserMessage","fromJS","subOptions","Object","keys","length","sources","Sources","contentTypes","ContentTypes","productAreas","ProductAreas","values","convertSessionFeedback","feedback","SessionFeedback","description","rating","convertSessionFeedbackRating","convertMessageFeedback","MessageFeedback","linkUrl","convertMessageFeedbackRating","options","convertFeedbackOptions","feedbackOptions","map","feedbackOption","FeedbackOptions","Incomplete","Incorrect","Other","Unclear","Unrelated","feedbackRatings","FeedbackRatings","ThumbsDown","MessageFeedbackRatings","GuardrailFeedback","ThumbsUp","SessionFeedbackRatings"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Models } from '..';
2
- import * as HelpCenterClient from './native-client';
3
- export declare class ConverterToModels {
4
- static convertSession(session: HelpCenterClient.IChatbotSession): Models.Session;
5
- static convertSessionData(session: HelpCenterClient.IChatbotSession): Models.Session['data'];
6
- /**
7
- * Convert HC filters into single-level frontend model.
8
- */
9
- static convertFilterOptions(options: HelpCenterClient.IFilterOptions): Models.FrontendModel;
10
- static convertBotMessage(botMessage: HelpCenterClient.IBotMessage): Models.BotMessage;
11
- static convertScoredUrls(scoredUrls?: HelpCenterClient.IScoredUrl[]): Models.ScoredUrl[] | undefined;
12
- }
13
- //# sourceMappingURL=converter-to-models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converter-to-models.d.ts","sourceRoot":"","sources":["../../../src/api-client/help-center/converter-to-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAE5B,OAAO,KAAK,gBAAgB,MAAM,iBAAiB,CAAC;AAEpD,qBAAa,iBAAiB;IAC1B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO;IAOhF,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IA4B5F;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa;IAyD3F,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU;IAWrF,MAAM,CAAC,iBAAiB,CACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC,UAAU,EAAE,GAC3C,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS;CAapC"}
@@ -1,101 +0,0 @@
1
- import { Models } from '..';
2
- export class ConverterToModels {
3
- static convertSession(session) {
4
- return new Models.Session({
5
- id: session.id,
6
- data: ConverterToModels.convertSessionData(session)
7
- });
8
- }
9
- static convertSessionData(session) {
10
- const data = {};
11
- if (session.createdUtc) {
12
- data.createdUtc = session.createdUtc.toISOString();
13
- }
14
- if (session.closedUtc) {
15
- data.closedUtc = session.closedUtc.toISOString();
16
- }
17
- if (session.botId) {
18
- data.botId = session.botId;
19
- }
20
- if (session.source) {
21
- if (session.source.instance) {
22
- data.instance = session.source.instance;
23
- }
24
- if (session.source.category) {
25
- data.category = session.source.category;
26
- }
27
- if (session.source.subCategory) {
28
- data.subCategory = session.source.subCategory;
29
- }
30
- if (session.source.fullstorySessionId) {
31
- data.fullstorySessionId = session.source.fullstorySessionId;
32
- }
33
- }
34
- return Object.keys(data).length > 0 ? data : undefined;
35
- }
36
- /**
37
- * Convert HC filters into single-level frontend model.
38
- */ static convertFilterOptions(options) {
39
- var _options_sources, _options_contentTypes, _options_productAreas;
40
- const createFilterOption = (key, displayName)=>{
41
- return new Models.Option({
42
- key,
43
- displayName: displayName !== null && displayName !== void 0 ? displayName : key,
44
- type: Models.OptionType.Selectable
45
- });
46
- };
47
- const createFilterOptions = (options)=>options === null || options === void 0 ? void 0 : options.map((x)=>{
48
- var _x_id;
49
- return createFilterOption((_x_id = x.id) !== null && _x_id !== void 0 ? _x_id : '', x.displayName);
50
- });
51
- const createFilter = (key, displayName, subOptions)=>{
52
- return new Models.Option({
53
- key,
54
- displayName: displayName !== null && displayName !== void 0 ? displayName : key,
55
- type: Models.OptionType.Group,
56
- subOptions
57
- });
58
- };
59
- const subOptions = [];
60
- if ((_options_sources = options.sources) === null || _options_sources === void 0 ? void 0 : _options_sources.length) {
61
- subOptions.push(createFilter('Sources', 'Sources', createFilterOptions(options.sources)));
62
- }
63
- if ((_options_contentTypes = options.contentTypes) === null || _options_contentTypes === void 0 ? void 0 : _options_contentTypes.length) {
64
- subOptions.push(createFilter('ContentTypes', 'Content Types', createFilterOptions(options.contentTypes)));
65
- }
66
- if ((_options_productAreas = options.productAreas) === null || _options_productAreas === void 0 ? void 0 : _options_productAreas.length) {
67
- subOptions.push(createFilter('ProductAreas', 'Product Areas', createFilterOptions(options.productAreas)));
68
- }
69
- return new Models.FrontendModel({
70
- options: new Models.Option({
71
- key: 'help-center-filters-root',
72
- displayName: 'help-center-filters-root',
73
- type: Models.OptionType.Group,
74
- subOptions
75
- })
76
- });
77
- }
78
- static convertBotMessage(botMessage) {
79
- var _botMessage_id, _botMessage_text, _botMessage_isGuardrailed, _botMessage_guardFlag, _botMessage_sessionId;
80
- return new Models.BotMessage({
81
- id: (_botMessage_id = botMessage.id) !== null && _botMessage_id !== void 0 ? _botMessage_id : 0,
82
- answer: (_botMessage_text = botMessage.text) !== null && _botMessage_text !== void 0 ? _botMessage_text : '',
83
- isGuardrailed: (_botMessage_isGuardrailed = botMessage.isGuardrailed) !== null && _botMessage_isGuardrailed !== void 0 ? _botMessage_isGuardrailed : false,
84
- guardFlag: (_botMessage_guardFlag = botMessage.guardFlag) !== null && _botMessage_guardFlag !== void 0 ? _botMessage_guardFlag : 'N',
85
- sessionId: (_botMessage_sessionId = botMessage.sessionId) !== null && _botMessage_sessionId !== void 0 ? _botMessage_sessionId : 0,
86
- scoredUrls: ConverterToModels.convertScoredUrls(botMessage.scoredUrls)
87
- });
88
- }
89
- static convertScoredUrls(scoredUrls) {
90
- if (scoredUrls === undefined) {
91
- return;
92
- }
93
- return scoredUrls.map((url)=>new Models.ScoredUrl({
94
- url: url.url,
95
- score: url.score,
96
- title: url.title
97
- }));
98
- }
99
- }
100
-
101
- //# sourceMappingURL=converter-to-models.js.map