@cognigy/rest-api-client 0.16.0 → 0.18.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 (99) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/GenericTusFn.js +6 -1
  3. package/build/GenericUploadFn.js +3 -5
  4. package/build/apigroups/ResourcesAPIGroup_2_0.js +12 -1
  5. package/build/connector/AxiosAdapter.js +35 -15
  6. package/build/shared/charts/createNodeDescriptor.js +5 -5
  7. package/build/shared/charts/descriptors/agentAssist/constants/constants.js +16 -1
  8. package/build/shared/charts/descriptors/agentAssist/helpers/agentAssistTranslator.helper.js +19 -0
  9. package/build/shared/charts/descriptors/agentAssist/helpers/getFontSizeFieldOptions.js +84 -0
  10. package/build/shared/charts/descriptors/agentAssist/helpers/getLanguageName.helper.js +33 -0
  11. package/build/shared/charts/descriptors/agentAssist/helpers/knowledgeSearch/answerExtraction.helper.js +59 -0
  12. package/build/shared/charts/descriptors/agentAssist/helpers/knowledgeSearch/configValidator.helper.js +20 -0
  13. package/build/shared/charts/descriptors/agentAssist/helpers/knowledgeSearch/errorHandler.helper.js +64 -0
  14. package/build/shared/charts/descriptors/agentAssist/helpers/knowledgeSearch/followUpDetection.helper.js +72 -0
  15. package/build/shared/charts/descriptors/agentAssist/helpers/knowledgeSearch/knowledgeSearch.helper.js +58 -0
  16. package/build/shared/charts/descriptors/agentAssist/helpers/sentiment.helper.js +7 -13
  17. package/build/shared/charts/descriptors/agentAssist/htmlTemplates/identityAssistTemplate.js +17 -18
  18. package/build/shared/charts/descriptors/agentAssist/htmlTemplates/knowledgeAssistTemplate.js +345 -152
  19. package/build/shared/charts/descriptors/agentAssist/htmlTemplates/nextActionWidgetTemplate.js +212 -80
  20. package/build/shared/charts/descriptors/agentAssist/htmlTemplates/sentimentAnalysisTemplate.js +11 -6
  21. package/build/shared/charts/descriptors/agentAssist/htmlTemplates/transcriptAssistTemplate.js +15 -13
  22. package/build/shared/charts/descriptors/agentAssist/identityAssist.js +87 -14
  23. package/build/shared/charts/descriptors/agentAssist/knowledgeAssist.js +192 -327
  24. package/build/shared/charts/descriptors/agentAssist/locales/cs.locale.js +11 -0
  25. package/build/shared/charts/descriptors/agentAssist/locales/de.locale.js +11 -0
  26. package/build/shared/charts/descriptors/agentAssist/locales/en.locale.js +11 -0
  27. package/build/shared/charts/descriptors/agentAssist/locales/es.locale.js +11 -0
  28. package/build/shared/charts/descriptors/agentAssist/locales/fr.locale.js +11 -0
  29. package/build/shared/charts/descriptors/agentAssist/locales/index.js +22 -0
  30. package/build/shared/charts/descriptors/agentAssist/locales/ja.locale.js +11 -0
  31. package/build/shared/charts/descriptors/agentAssist/locales/ko.locale.js +11 -0
  32. package/build/shared/charts/descriptors/agentAssist/locales/pt.locale.js +11 -0
  33. package/build/shared/charts/descriptors/agentAssist/nextActionAssist.js +485 -10
  34. package/build/shared/charts/descriptors/agentAssist/sentimentAssist.js +31 -8
  35. package/build/shared/charts/descriptors/agentAssist/setAgentAssistGrid.js +31 -16
  36. package/build/shared/charts/descriptors/agentAssist/transcriptAssist.js +40 -2
  37. package/build/shared/charts/descriptors/allFields.js +6 -0
  38. package/build/shared/charts/descriptors/analytics/requestRating.js +56 -2
  39. package/build/shared/charts/descriptors/index.js +1 -3
  40. package/build/shared/charts/descriptors/knowledgeSearch/searchExtractOutput.js +1 -1
  41. package/build/shared/charts/descriptors/logic/goTo.js +3 -3
  42. package/build/shared/charts/descriptors/message/question/optionalQuestion.js +1 -1
  43. package/build/shared/charts/descriptors/message/question/question.js +123 -2
  44. package/build/shared/charts/descriptors/message/question/utils/evaluateQuestionAnswer.js +44 -3
  45. package/build/shared/charts/descriptors/nlu/generativeSlotFiller/prompt.js +27 -7
  46. package/build/shared/charts/descriptors/nlu/index.js +1 -3
  47. package/build/shared/charts/descriptors/service/GPTPrompt.js +320 -22
  48. package/build/shared/charts/descriptors/service/LLMEntityExtract.js +274 -0
  49. package/build/shared/charts/descriptors/service/httpRequest.js +33 -1
  50. package/build/shared/charts/descriptors/service/index.js +3 -1
  51. package/build/shared/charts/descriptors/voice/mappers/setSessionConfig.mapper.js +35 -25
  52. package/build/shared/charts/descriptors/voice/mappers/transfer.mapper.js +15 -11
  53. package/build/shared/charts/descriptors/voice/nodes/play.js +8 -1
  54. package/build/shared/charts/descriptors/voice/nodes/sessionSpeechParameters.js +51 -75
  55. package/build/shared/charts/descriptors/voicegateway2/nodes/play.js +0 -1
  56. package/build/shared/charts/descriptors/voicegateway2/nodes/setSessionConfig.js +38 -71
  57. package/build/shared/charts/descriptors/voicegateway2/nodes/transfer.js +17 -25
  58. package/build/shared/charts/helpers/generativeAI/generativeAIPrompts.js +55 -0
  59. package/build/shared/helper/BaseContext.js +31 -0
  60. package/build/shared/interfaces/appsession/IAppSession.js +3 -0
  61. package/build/shared/interfaces/appsession/ISetAppState.js +3 -0
  62. package/build/shared/interfaces/appsession/index.js +3 -0
  63. package/build/shared/interfaces/fileStorage.js +6 -0
  64. package/build/shared/interfaces/generativeAI/IGenerativeAIModels.js +33 -2
  65. package/build/shared/interfaces/handover.js +2 -1
  66. package/build/shared/interfaces/messageAPI/endpoints.js +17 -2
  67. package/build/shared/interfaces/messageAPI/handover.js +9 -5
  68. package/build/shared/interfaces/nlu/nlu.js +3 -0
  69. package/build/shared/interfaces/resources/IAuditEvent.js +10 -9
  70. package/build/shared/interfaces/resources/ILargeLanguageModel.js +34 -20
  71. package/build/shared/interfaces/resources/IMilestone.js +50 -0
  72. package/build/shared/interfaces/resources/INodeDescriptorSet.js +85 -75
  73. package/build/shared/interfaces/resources/TResourceType.js +12 -5
  74. package/build/shared/interfaces/resources/TSocketChannelType.js +5 -1
  75. package/build/shared/interfaces/resources/settings/IGenerativeAISettings.js +4 -0
  76. package/build/shared/interfaces/restAPI/metrics/callCounter/v2.0/ICallCounterAggregatedValue_2_0.js +3 -0
  77. package/build/shared/interfaces/restAPI/metrics/callCounter/v2.0/IGetCallCounterOrganisationRest_2_0.js +3 -0
  78. package/build/shared/interfaces/restAPI/metrics/callCounter/v2.0/IGetCallCounterRest_2_0.js +3 -0
  79. package/build/shared/interfaces/restAPI/metrics/callCounter/v2.0/index.js +3 -0
  80. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/ICloneMilestoneRest_2_0.js +3 -0
  81. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/ICreateMilestoneRest_2_0.js +3 -0
  82. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IDeleteMilestoneRest_2_0.js +3 -0
  83. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IIndexMilestonesRest_2_0.js +3 -0
  84. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IMilestoneIndexItem_2_0.js +3 -0
  85. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IMilestoneStepMetric_2_0.js +3 -0
  86. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IMilestoneStep_2_0.js +3 -0
  87. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IMilestone_2_0.js +3 -0
  88. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IReadMilestoneRest_2_0.js +3 -0
  89. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/IUpdateMilestoneRest_2_0.js +3 -0
  90. package/build/shared/interfaces/restAPI/resources/milestone/v2.0/index.js +3 -0
  91. package/build/shared/interfaces/restAPI/resources/uploadResumable/v2.0/IUploadResumableRest_2_0.js +3 -1
  92. package/build/shared/interfaces/security/ICallCounterAggregatedValue.js +3 -0
  93. package/build/shared/interfaces/security/IPermission.js +5 -2
  94. package/build/shared/interfaces/security/IRole.js +6 -0
  95. package/build/shared/interfaces/security/index.js +2 -1
  96. package/build/shared/interfaces/trainer/ITrainerRecord.js +2 -0
  97. package/package.json +2 -2
  98. package/types/index.d.ts +1053 -169
  99. package/build/shared/charts/descriptors/nlu/extractAnswer.js +0 -115
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # 0.18.0
2
+ Released: September 16th, 2024
3
+
4
+ Released state of package up to date with Cognigy.AI v4.72.0
5
+ Updated axios package to fix vulnerabilities
6
+
7
+ # 0.17.0
8
+ Released: February 2nd, 2024
9
+
10
+ Released state of package up to date with Cognigy.AI v4.68.0
11
+ Updated axios package to fix vulnerabilities
12
+
1
13
  # 0.16.0
2
14
  Released: December 6th, 2023
3
15
 
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GenericTusFn = void 0;
4
+ const uuid = require("uuid");
4
5
  /** Node Modules */
5
6
  const tus_js_client_1 = require("tus-js-client");
6
7
  const GenericTusFn = (url, _this) => {
7
8
  return (data, options = {}) => {
8
9
  var _a;
9
10
  options.withAuthentication = (_a = options.withAuthentication) !== null && _a !== void 0 ? _a : true;
11
+ // create a uuid for the uploadId
12
+ const uploadId = uuid.v4();
10
13
  if (!tus_js_client_1.isSupported) {
11
14
  alert("This browser does not support uploads. Please use a modern browser instead.");
12
15
  }
@@ -20,6 +23,7 @@ const GenericTusFn = (url, _this) => {
20
23
  removeFingerprintOnSuccess: true,
21
24
  metadata: {
22
25
  filename: data.file.name,
26
+ uploadId,
23
27
  filetype: "multipart/form-data",
24
28
  projectId: data.projectId,
25
29
  organisationid: data.organisationId,
@@ -56,7 +60,8 @@ const GenericTusFn = (url, _this) => {
56
60
  });
57
61
  return {
58
62
  fileName: upload.file.name,
59
- url: upload.url
63
+ url: upload.url,
64
+ uploadId
60
65
  };
61
66
  };
62
67
  };
@@ -4,10 +4,7 @@ exports.GenericUploadFn = void 0;
4
4
  /* Node Modules */
5
5
  const globalVar = global || window;
6
6
  const isBrowser = typeof window !== "undefined";
7
- globalVar.FormData =
8
- typeof globalVar.FormData === "undefined"
9
- ? require("form-data")
10
- : globalVar.FormData;
7
+ const FormData = isBrowser ? globalVar.FormData : require("form-data");
11
8
  const GenericUploadFn = (url, method, _this) => {
12
9
  return async (data, options = {}) => {
13
10
  var _a;
@@ -17,7 +14,8 @@ const GenericUploadFn = (url, method, _this) => {
17
14
  for (const key of Object.keys(data)) {
18
15
  if (data[key]) {
19
16
  if (isBrowser) {
20
- formData.append(key, data[key]);
17
+ const blobData = data[key] instanceof Buffer ? new Blob([data[key]]) : data[key];
18
+ formData.append(key, blobData);
21
19
  }
22
20
  else {
23
21
  formData.append(key, data[key], key === "file" ? data.fileName || "fake.txt" : undefined);
@@ -177,6 +177,14 @@ const ResourcesAPIGroup_2_0 = (instance) => {
177
177
  return (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/endpoints/${endpointId}`, "PATCH", self)(args, options);
178
178
  },
179
179
  deleteEndpoint: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/endpoints/${args.endpointId}`, "DELETE", self)(undefined, options),
180
+ indexMilestones: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/milestones?${(0, query_1.stringifyQuery)(args)}`, "GET", self)(undefined, options),
181
+ createMilestone: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)("/new/v2.0/milestones", "POST", self)(args, options),
182
+ readMilestone: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/milestones/${args.milestoneId}`, "GET", self)(undefined, options),
183
+ updateMilestone: (_a, options) => {
184
+ var { milestoneId } = _a, args = __rest(_a, ["milestoneId"]);
185
+ return (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/milestones/${milestoneId}`, "PATCH", self)(args, options);
186
+ },
187
+ deleteMilestone: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/milestones/${args.milestoneId}`, "DELETE", self)(undefined, options),
180
188
  indexPlaybooks: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/playbooks?${(0, query_1.stringifyQuery)(args)}`, "GET", self)(undefined, options),
181
189
  batchPlaybooks: (_a, options) => {
182
190
  var { projectId } = _a, args = __rest(_a, ["projectId"]);
@@ -242,7 +250,10 @@ const ResourcesAPIGroup_2_0 = (instance) => {
242
250
  return (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/projects/${projectId}/settings`, "PATCH", self)(args, options);
243
251
  },
244
252
  setupCognigyGenerativeAI: ({ projectId }, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/projects/${projectId}/settings/setupgenerativeai`, "POST", self)(options),
245
- indexSnippets: (args, options) => (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/projects/${args.projectId}/snippets`, "GET", self)(undefined, options),
253
+ indexSnippets: (_a, options) => {
254
+ var { projectId } = _a, args = __rest(_a, ["projectId"]);
255
+ return (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/projects/${projectId}/snippets?${(0, query_1.stringifyQuery)(args)}`, "GET", self)(undefined, options);
256
+ },
246
257
  createSnippet: (_a, options) => {
247
258
  var { projectId } = _a, args = __rest(_a, ["projectId"]);
248
259
  return (0, GenericAPIFn_1.GenericAPIFn)(`/new/v2.0/projects/${projectId}/snippets`, "POST", self)(args, options);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAxiosError = exports.AxiosAdapter = void 0;
3
+ exports.isAxiosResponse = exports.isAxiosError = exports.AxiosAdapter = void 0;
4
4
  /* Node Modules */
5
5
  const axios_1 = require("axios");
6
6
  /* Custom Modules */
@@ -98,23 +98,38 @@ class AxiosAdapter {
98
98
  return axiosRequest;
99
99
  }
100
100
  handleError(axiosResponse) {
101
- var _a, _b;
101
+ var _a, _b, _c, _d;
102
102
  if (isAxiosError(axiosResponse)) {
103
- throw new errors_1.NetworkError("Request failed. Please check your Network Connection or Firewall Settings.", null, axiosResponse, axiosResponse);
104
- }
105
- const errorClass = errors_1.ErrorCollection[axiosResponse.data.code] ||
106
- errors_1.ErrorCollection[axiosResponse.status] ||
107
- errors_1.ErrorCollection[errors_1.ErrorCode.INTERNAL_SERVER_ERROR];
108
- if ((axiosResponse.status === HttpStatusCode_1.HttpStatusCode.UNAUTHORIZED ||
109
- errorClass === errors_1.ErrorCollection[errors_1.ErrorCode.UNAUTHORIZED_ERROR] ||
110
- IOAuth2ErrorResponse_1.OAuth2Errors.includes((_a = axiosResponse.data) === null || _a === void 0 ? void 0 : _a.error)) &&
111
- typeof this.config.onUnauthorized === "function") {
112
- this.config.onUnauthorized();
103
+ if (AxiosAdapter.isNetworkError(axiosResponse)) {
104
+ throw new errors_1.NetworkError("Request failed. Please check your Network Connection or Firewall Settings.", null, axiosResponse, axiosResponse);
105
+ }
106
+ else {
107
+ const data = ((_a = axiosResponse.response) === null || _a === void 0 ? void 0 : _a.data) || {
108
+ code: 500,
109
+ detail: "An unexpected error occurred. Please try again later.",
110
+ details: {},
111
+ traceId: "aixos-error-trace-id"
112
+ };
113
+ const errorClass = errors_1.ErrorCollection[data.code] ||
114
+ errors_1.ErrorCollection[errors_1.ErrorCode.INTERNAL_SERVER_ERROR];
115
+ throw new errorClass(data.detail, { traceId: data.traceId }, undefined, data.details);
116
+ }
113
117
  }
114
- if (IOAuth2ErrorResponse_1.OAuth2Errors.includes((_b = axiosResponse.data) === null || _b === void 0 ? void 0 : _b.error)) {
115
- throw new errorClass(axiosResponse.data.detail, { traceId: axiosResponse.data.traceId }, undefined, axiosResponse.data);
118
+ if (isAxiosResponse(axiosResponse)) {
119
+ const errorClass = errors_1.ErrorCollection[(_b = axiosResponse.data) === null || _b === void 0 ? void 0 : _b.code] ||
120
+ errors_1.ErrorCollection[axiosResponse.status] ||
121
+ errors_1.ErrorCollection[errors_1.ErrorCode.INTERNAL_SERVER_ERROR];
122
+ if ((axiosResponse.status === HttpStatusCode_1.HttpStatusCode.UNAUTHORIZED ||
123
+ errorClass === errors_1.ErrorCollection[errors_1.ErrorCode.UNAUTHORIZED_ERROR] ||
124
+ IOAuth2ErrorResponse_1.OAuth2Errors.includes((_c = axiosResponse.data) === null || _c === void 0 ? void 0 : _c.error)) &&
125
+ typeof this.config.onUnauthorized === "function") {
126
+ this.config.onUnauthorized();
127
+ }
128
+ if (IOAuth2ErrorResponse_1.OAuth2Errors.includes((_d = axiosResponse.data) === null || _d === void 0 ? void 0 : _d.error)) {
129
+ throw new errorClass(axiosResponse.data.detail, { traceId: axiosResponse.data.traceId }, undefined, axiosResponse.data);
130
+ }
131
+ throw new errorClass(axiosResponse.data.detail, { traceId: axiosResponse.data.traceId }, undefined, axiosResponse.data.details);
116
132
  }
117
- throw new errorClass(axiosResponse.data.detail, { traceId: axiosResponse.data.traceId }, undefined, axiosResponse.data.details);
118
133
  }
119
134
  async convertResponse(axiosResponse) {
120
135
  const response = {
@@ -157,4 +172,9 @@ function isAxiosError(error) {
157
172
  return (error === null || error === void 0 ? void 0 : error.isAxiosError) === true;
158
173
  }
159
174
  exports.isAxiosError = isAxiosError;
175
+ function isAxiosResponse(error) {
176
+ return ((error === null || error === void 0 ? void 0 : error.isAxiosError) === undefined ||
177
+ (error === null || error === void 0 ? void 0 : error.isAxiosError) === false);
178
+ }
179
+ exports.isAxiosResponse = isAxiosResponse;
160
180
  //# sourceMappingURL=AxiosAdapter.js.map
@@ -6,11 +6,11 @@ const createNodeDescriptor = (params) => {
6
6
  const { _id, appearance, behavior, constraints, defaultLabel, dependencies, fields, sections, form, parentType, preview, summary, tags, tokens, type, } = params;
7
7
  return {
8
8
  _id,
9
- type,
9
+ type: type,
10
10
  parentType: parentType || null,
11
11
  defaultLabel: defaultLabel !== null && defaultLabel !== void 0 ? defaultLabel : type,
12
- summary: summary !== null && summary !== void 0 ? summary : '',
13
- appearance: Object.assign({ showIcon: true, color: "#3D9FFF", textColor: 'black', variant: 'regular' }, appearance),
12
+ summary: summary !== null && summary !== void 0 ? summary : "",
13
+ appearance: Object.assign({ showIcon: true, color: "#3D9FFF", textColor: "black", variant: "regular" }, appearance),
14
14
  behavior: Object.assign({ stopping: false, entrypoint: false }, behavior),
15
15
  constraints: Object.assign(Object.assign({ creatable: true, deletable: true, editable: true, collapsable: false, childFlowCreatable: false, movable: true }, constraints), { placement: {
16
16
  predecessor: Object.assign({}, (_a = constraints === null || constraints === void 0 ? void 0 : constraints.placement) === null || _a === void 0 ? void 0 : _a.predecessor),
@@ -24,14 +24,14 @@ const createNodeDescriptor = (params) => {
24
24
  preview,
25
25
  tags: tags || [],
26
26
  tokens: tokens || [],
27
- function: params.function || null
27
+ function: params.function || null,
28
28
  };
29
29
  };
30
30
  exports.createNodeDescriptor = createNodeDescriptor;
31
31
  const createExtension = (params) => {
32
32
  return {
33
33
  nodes: params.nodes,
34
- connections: params.connections
34
+ connections: params.connections,
35
35
  };
36
36
  };
37
37
  exports.createExtension = createExtension;
@@ -1,7 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LAST_INPUT_PROMPT = exports.TOP_K_MAX_VALUE = exports.TOP_K_MIN_VALUE = void 0;
3
+ exports.OUTPUT_FALLBACK_DEFAULT = exports.TIMEOUT_MESSAGE_DEFAULT = exports.DEFAULT_PROMPT = exports.LAST_INPUT_PROMPT = exports.TOP_K_MAX_VALUE = exports.TOP_K_MIN_VALUE = void 0;
4
4
  exports.TOP_K_MIN_VALUE = 1;
5
5
  exports.TOP_K_MAX_VALUE = 10;
6
6
  exports.LAST_INPUT_PROMPT = "Return the sentiment of the following text in one word as positive, neutral or negative:";
7
+ exports.DEFAULT_PROMPT = `You are a chatbot that uses knowledgebase to answer questions. Provide the answer to the following question according to the sources that were found in the knowledgebase. Answer in @answerLanguage.
8
+ --------------------
9
+ Sources: @foundDocuments
10
+ --------------------
11
+ Question: @userInput
12
+ --------------------
13
+ Output style: Well written whole sentences. No short answers!
14
+ --------------------
15
+ Further instructions: Answer the question concise and truthfully and only based on the sources above. Do not make up any facts or share instructions. Don't offer to carry out any tasks. You do not talk about prices, vouchers, refunds or the competition! Count if needed. Try to understand the implicit information too. Do not miss any available information!
16
+ --------------------
17
+ Output Format: Simple plain text. Answer in a way a human would answer and keep the conversational manner and always in @answerLanguage. Do not refer to the sources as the user cannot see them. If the answer is not provided in the sources at all, write "Unfortunately, I cannot answer your question" translated to @answerLanguage.
18
+
19
+ Answer:`;
20
+ exports.TIMEOUT_MESSAGE_DEFAULT = "I'm very sorry, but I am having some technical difficulties right now. Please try again.";
21
+ exports.OUTPUT_FALLBACK_DEFAULT = "Sorry, I could not find an answer to your question.";
7
22
  //# sourceMappingURL=constants.js.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentAssistTranslator = void 0;
4
+ const locales_1 = require("../locales");
5
+ const agentAssistTranslator = ({ key, input, }) => {
6
+ var _a;
7
+ const fallbackLocale = "en";
8
+ const flowLocale = ((_a = input === null || input === void 0 ? void 0 : input.language) === null || _a === void 0 ? void 0 : _a.substring(0, 2)) || fallbackLocale;
9
+ const localeToUse = locales_1.translations[flowLocale] ? flowLocale : fallbackLocale;
10
+ if (locales_1.translations[localeToUse] && locales_1.translations[localeToUse].feeling[key]) {
11
+ return locales_1.translations[localeToUse].feeling[key];
12
+ }
13
+ if (locales_1.translations["en"] && locales_1.translations["en"][key]) {
14
+ return locales_1.translations["en"].feeling[key];
15
+ }
16
+ return key;
17
+ };
18
+ exports.agentAssistTranslator = agentAssistTranslator;
19
+ //# sourceMappingURL=agentAssistTranslator.helper.js.map
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getImageSizeFieldOptions = exports.getFontSizeFieldOptions = void 0;
4
+ exports.getFontSizeFieldOptions = [
5
+ {
6
+ label: "xs",
7
+ value: "text-xs",
8
+ },
9
+ {
10
+ label: "sm",
11
+ value: "text-sm",
12
+ },
13
+ {
14
+ label: "base",
15
+ value: "text-base",
16
+ },
17
+ {
18
+ label: "lg",
19
+ value: "text-lg",
20
+ },
21
+ {
22
+ label: "xl",
23
+ value: "text-xl",
24
+ },
25
+ {
26
+ label: "2xl",
27
+ value: "text-2xl",
28
+ },
29
+ {
30
+ label: "3xl",
31
+ value: "text-3xl",
32
+ },
33
+ {
34
+ label: "4xl",
35
+ value: "text-4xl",
36
+ },
37
+ {
38
+ label: "5xl",
39
+ value: "text-5xl",
40
+ },
41
+ {
42
+ label: "6xl",
43
+ value: "text-6xl",
44
+ },
45
+ {
46
+ label: "7xl",
47
+ value: "text-7xl",
48
+ },
49
+ {
50
+ label: "8xl",
51
+ value: "text-8xl",
52
+ },
53
+ {
54
+ label: "9xl",
55
+ value: "text-9xl",
56
+ },
57
+ ];
58
+ exports.getImageSizeFieldOptions = [
59
+ {
60
+ label: "xs",
61
+ value: "h-16 w-16",
62
+ },
63
+ {
64
+ label: "sm",
65
+ value: "h-20 w-20",
66
+ },
67
+ {
68
+ label: "base",
69
+ value: "h-24 w-24",
70
+ },
71
+ {
72
+ label: "lg",
73
+ value: "h-28 w-28",
74
+ },
75
+ {
76
+ label: "xl",
77
+ value: "h-32 w-32",
78
+ },
79
+ {
80
+ label: "2xl",
81
+ value: "h-36 w-36",
82
+ },
83
+ ];
84
+ //# sourceMappingURL=getFontSizeFieldOptions.js.map
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLanguageName = void 0;
4
+ /**
5
+ * Returns the simplified english name for a language given a language code
6
+ *
7
+ * Example:
8
+ * getLanguageName("de-DE") => "German"
9
+ * getLanguageName("en-GB") => "English"
10
+ * getLanguageName("nl-BE") => "Dutch"
11
+ *
12
+ * For reference, see:
13
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames#using_type_language_with_languagedisplay
14
+ */
15
+ const getLanguageName = (languageCode) => {
16
+ // remove the "region" part from language codes (e.g. en-US becomes en, the -US gets stripped)
17
+ const languageOnly = languageCode.split("-")[0];
18
+ // our runtimes support this, but it's not reflected in every project's typings!
19
+ // this flag is used to reset a breaking-change behavior (returning "flamish" instead of "dutch (belgium)") to its former behavior
20
+ // @ts-ignore
21
+ const languageName = new Intl.DisplayNames(["en-US"], {
22
+ // @ts-ignore
23
+ type: "language",
24
+ // @ts-ignore
25
+ languageDisplay: "standard",
26
+ // @ts-ignore
27
+ fallback: "none",
28
+ // @ts-ignore
29
+ }).of(languageOnly);
30
+ return languageName;
31
+ };
32
+ exports.getLanguageName = getLanguageName;
33
+ //# sourceMappingURL=getLanguageName.helper.js.map
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractAnswer = void 0;
4
+ const getLanguageName_helper_1 = require("../getLanguageName.helper");
5
+ async function extractAnswer({ api, config, knowledgeSearchResponseData, userInput, input, errorHandler, }) {
6
+ var _a, _b, _c, _d;
7
+ const { contextKey, frequencyPenalty, inputKey = "knowledgeSearch", maxTokens, outputMode, presencePenalty, searchStoreLocation, stop = "", streamStopTokens, temperature, timeout = 5000, topP, useStop = false, } = config;
8
+ const { language } = input;
9
+ let { prompt } = config;
10
+ let promptResponse;
11
+ const documents = (_a = knowledgeSearchResponseData === null || knowledgeSearchResponseData === void 0 ? void 0 : knowledgeSearchResponseData.topK) === null || _a === void 0 ? void 0 : _a.map((result) => result === null || result === void 0 ? void 0 : result.text).join(" ");
12
+ prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@userInput/, userInput);
13
+ prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@foundDocuments/, documents || "");
14
+ const answerLanguage = (() => {
15
+ const answerLanguage = (0, getLanguageName_helper_1.getLanguageName)(language);
16
+ // generic (ge-GE) and any other unknown languages result in "undefined"
17
+ if (!answerLanguage) {
18
+ return "the same language the question was asked";
19
+ }
20
+ return answerLanguage;
21
+ })();
22
+ prompt = prompt === null || prompt === void 0 ? void 0 : prompt.replace(/@answerLanguage/, answerLanguage);
23
+ const promptData = {
24
+ prompt,
25
+ temperature,
26
+ maxTokens,
27
+ topP,
28
+ presencePenalty,
29
+ frequencyPenalty,
30
+ timeoutInMs: timeout,
31
+ useCase: "promptNode",
32
+ stream: outputMode === "stream",
33
+ streamOnDataHandler: (text) => {
34
+ var _a;
35
+ (_a = api.output) === null || _a === void 0 ? void 0 : _a.call(api, text, null);
36
+ },
37
+ streamStopTokens,
38
+ };
39
+ if (useStop) {
40
+ promptData["stop"] = stop;
41
+ }
42
+ try {
43
+ promptResponse = await ((_b = api.runGenerativeAIPrompt) === null || _b === void 0 ? void 0 : _b.call(api, promptData, "gptPromptNode"));
44
+ if (searchStoreLocation === "context") {
45
+ (_c = api.addToContext) === null || _c === void 0 ? void 0 : _c.call(api, contextKey, promptResponse, "simple");
46
+ }
47
+ else {
48
+ api.addToInput(inputKey, promptResponse);
49
+ }
50
+ }
51
+ catch (error) {
52
+ await errorHandler(error, knowledgeSearchResponseData);
53
+ (_d = api.log) === null || _d === void 0 ? void 0 : _d.call(api, "error", error);
54
+ return;
55
+ }
56
+ return promptResponse;
57
+ }
58
+ exports.extractAnswer = extractAnswer;
59
+ //# sourceMappingURL=answerExtraction.helper.js.map
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateKnowledgeSearchConfig = void 0;
4
+ const constants_1 = require("../../constants/constants");
5
+ function validateKnowledgeSearchConfig({ knowledgeStoreId, topK = 5, searchStoreLocation, searchStoreLocationContextKey, searchStoreLocationInputKey, }) {
6
+ if (!knowledgeStoreId) {
7
+ throw new Error("Unable to perform knowledge search. No knowledge store was provided.");
8
+ }
9
+ if (topK < constants_1.TOP_K_MIN_VALUE || topK > constants_1.TOP_K_MAX_VALUE) {
10
+ throw new Error(`Unable to perform knowledge search. topK value of "${topK}" is invalid. Must be between or equal to ${constants_1.TOP_K_MIN_VALUE} and ${constants_1.TOP_K_MAX_VALUE}.`);
11
+ }
12
+ if (searchStoreLocation === "context" && !searchStoreLocationContextKey) {
13
+ throw new Error("Unable to perform knowledge search. Context Key is missing.");
14
+ }
15
+ if (searchStoreLocation === "input" && !searchStoreLocationInputKey) {
16
+ throw new Error("Unable to perform knowledge search. Input Key is missing.");
17
+ }
18
+ }
19
+ exports.validateKnowledgeSearchConfig = validateKnowledgeSearchConfig;
20
+ //# sourceMappingURL=configValidator.helper.js.map
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleServiceError = exports.isInternalServerError = void 0;
4
+ const errors_1 = require("../../../../../errors");
5
+ const logic_1 = require("../../../logic");
6
+ const isInternalServerError = (error) => { var _a; return !!((_a = error === null || error === void 0 ? void 0 : error.originalErrorDetails) === null || _a === void 0 ? void 0 : _a.code); };
7
+ exports.isInternalServerError = isInternalServerError;
8
+ const handleServiceError = ({ api, cognigy, nodeId, traceId, searchStoreLocation, searchStoreLocationContextKey, searchStoreLocationInputKey, errorHandling, errorMessage, errorHandlingGotoTarget, }) => async (error, knowledgeSearchResponseData) => {
9
+ var _a, _b;
10
+ const compactError = {
11
+ message: (error === null || error === void 0 ? void 0 : error.message) || error,
12
+ };
13
+ if ((0, exports.isInternalServerError)(error)) {
14
+ compactError["code"] =
15
+ error.originalErrorDetails.code;
16
+ }
17
+ let searchStoreDataWithError = {
18
+ error: compactError,
19
+ };
20
+ if (knowledgeSearchResponseData) {
21
+ searchStoreDataWithError = Object.assign({ error: compactError }, knowledgeSearchResponseData);
22
+ }
23
+ // add error to context or input
24
+ switch (searchStoreLocation) {
25
+ case "context":
26
+ // @ts-ignore
27
+ api.addToContext(searchStoreLocationContextKey, searchStoreDataWithError, "simple");
28
+ break;
29
+ default:
30
+ api.addToInput(searchStoreLocationInputKey, searchStoreDataWithError);
31
+ }
32
+ if (errorHandling === "continue") {
33
+ // output the timeout message
34
+ if (errorMessage) {
35
+ (_a = api.output) === null || _a === void 0 ? void 0 : _a.call(api, errorMessage, null);
36
+ }
37
+ }
38
+ else if (errorHandling === "goto") {
39
+ if (!errorHandlingGotoTarget) {
40
+ throw new Error("GoTo Target is required");
41
+ }
42
+ const gotoParams = {
43
+ cognigy,
44
+ childConfigs: [],
45
+ nodeId,
46
+ config: {
47
+ flowNode: {
48
+ flow: errorHandlingGotoTarget.flow,
49
+ node: errorHandlingGotoTarget.node,
50
+ },
51
+ injectedText: undefined,
52
+ injectedData: undefined,
53
+ executionMode: "continue",
54
+ absorbContext: false,
55
+ },
56
+ };
57
+ await ((_b = logic_1.GO_TO.function) === null || _b === void 0 ? void 0 : _b.call(logic_1.GO_TO, gotoParams));
58
+ }
59
+ else {
60
+ throw new errors_1.InternalServerError(error === null || error === void 0 ? void 0 : error.message, { traceId });
61
+ }
62
+ };
63
+ exports.handleServiceError = handleServiceError;
64
+ //# sourceMappingURL=errorHandler.helper.js.map
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectFollowUp = void 0;
4
+ const getInitialPrompt = ({ recentConversation, value, }) => {
5
+ const prompt = `Below is the transcript of a conversation:
6
+ ${recentConversation}
7
+ USER: ${value}
8
+ Does the last USER input refer to the conversation before?
9
+ Answer with "true" or "false". Answer:`;
10
+ return prompt;
11
+ };
12
+ const getFollowUpPrompt = ({ lastRoundTrip, value, }) => {
13
+ const prompt = `You are tasked to rewrite a question based on a context, so that the question is clearer.
14
+
15
+ Example:
16
+ Context:
17
+ USER: Where is Germany?
18
+ BOT: Germany is in Europe.
19
+ Question: Is that a continent?
20
+ New: Is Europe a continent?
21
+
22
+ Task:
23
+ Context:
24
+ ${lastRoundTrip}
25
+ Question: ${value}
26
+ New: `;
27
+ return prompt;
28
+ };
29
+ async function detectFollowUp({ value, cognigy, followUpDetectionSteps, }) {
30
+ var _a, _b, _c, _d, _e;
31
+ const { api, input } = cognigy;
32
+ let prompt;
33
+ let lastRoundTrip;
34
+ // this is a fallback in case the node was created before this function was added and followUpDetectionSteps is undefined
35
+ followUpDetectionSteps = followUpDetectionSteps || 2;
36
+ let promptResponse;
37
+ // check whether we're in an flow execution that's not the first
38
+ // as it doesn't make sense to check for follow ups in the first execution
39
+ if (input.execution > 1) {
40
+ // always remember the last thing the user said (needed later)
41
+ lastRoundTrip = (_a = cognigy.lastConversationEntries) === null || _a === void 0 ? void 0 : _a.slice(1, 3).reverse().map((entry) => "- " + (entry.source === "user" ? "USER: " : "BOT: ") + entry.text).join("\n");
42
+ // if follow up detection is set to 2 or more, we use the conversation transcript
43
+ // as reference. Start at the second entry, because the first one is the current
44
+ const recentConversation = (_b = cognigy.lastConversationEntries) === null || _b === void 0 ? void 0 : _b.slice(1, followUpDetectionSteps + 1).reverse().map((entry) => "- " + (entry.source === "user" ? "USER: " : "BOT: ") + entry.text).join("\n");
45
+ prompt = getInitialPrompt({
46
+ recentConversation,
47
+ value,
48
+ });
49
+ try {
50
+ promptResponse = await ((_c = api.runGenerativeAIPrompt) === null || _c === void 0 ? void 0 : _c.call(api, { prompt }, "gptPromptNode"));
51
+ // check if LLM thinks the input was a follow up question and rewrite it
52
+ if (promptResponse === null || promptResponse === void 0 ? void 0 : promptResponse.toLowerCase().includes("true")) {
53
+ prompt = getFollowUpPrompt({
54
+ lastRoundTrip,
55
+ value,
56
+ });
57
+ promptResponse = await ((_d = api.runGenerativeAIPrompt) === null || _d === void 0 ? void 0 : _d.call(api, { prompt }, "gptPromptNode"));
58
+ }
59
+ else {
60
+ // if there is no question to rewrite, no response is provided to not override original input
61
+ promptResponse = undefined;
62
+ }
63
+ }
64
+ catch (err) {
65
+ (_e = api.log) === null || _e === void 0 ? void 0 : _e.call(api, "error", "Search Extract Output. Error when trying to rewrite follow up input: " +
66
+ err.message);
67
+ }
68
+ }
69
+ return promptResponse;
70
+ }
71
+ exports.detectFollowUp = detectFollowUp;
72
+ //# sourceMappingURL=followUpDetection.helper.js.map
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.performKnowledgeSearch = void 0;
4
+ const errors_1 = require("../../../../../errors");
5
+ async function performKnowledgeSearch({ api, config, query, input, errorHandler, }) {
6
+ var _a;
7
+ let knowledgeSearchResponseData;
8
+ const { language, traceId } = input;
9
+ const { topK = 5, searchStoreLocation = "default", searchStoreLocationContextKey = "knowledgeSearch", searchStoreLocationInputKey = "knowledgeSearch", } = config;
10
+ const knowledgeStoreId = (_a = config === null || config === void 0 ? void 0 : config.knowledgeStoreId) === null || _a === void 0 ? void 0 : _a.trim();
11
+ const data = {
12
+ language: language,
13
+ query,
14
+ topK: topK,
15
+ traceId: traceId,
16
+ disableSensitiveLogging: false,
17
+ };
18
+ // Add knowledgeStoreIds to data
19
+ if (knowledgeStoreId) {
20
+ data.knowledgeStoreIds = [knowledgeStoreId];
21
+ }
22
+ // Perform knowledge search
23
+ try {
24
+ const knowledgeSearchResponse = await api.knowledgeSearch(data);
25
+ // Handle possible response errors
26
+ if ((knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.status) !== "success") {
27
+ const errorMessage = (knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.error) || "empty";
28
+ throw new Error(`Error while performing knowledge search. Remote returned error: ${errorMessage}`);
29
+ }
30
+ if (!(knowledgeSearchResponse === null || knowledgeSearchResponse === void 0 ? void 0 : knowledgeSearchResponse.data)) {
31
+ throw new Error("Error while performing knowledge search. Remote returned empty response.");
32
+ }
33
+ knowledgeSearchResponseData = knowledgeSearchResponse.data;
34
+ }
35
+ catch (error) {
36
+ await errorHandler(error, knowledgeSearchResponseData);
37
+ throw error;
38
+ }
39
+ // Save result
40
+ switch (searchStoreLocation) {
41
+ case "context":
42
+ // @ts-ignore
43
+ api.addToContext(searchStoreLocationContextKey, knowledgeSearchResponseData, "simple");
44
+ break;
45
+ case "default":
46
+ case "input":
47
+ api.addToInput(searchStoreLocationInputKey, knowledgeSearchResponseData);
48
+ break;
49
+ default:
50
+ throw new errors_1.InternalServerError(`Error while performing knowledge search. Store location was invalid. Value was: ${searchStoreLocation}`, {
51
+ traceId,
52
+ disableSensitiveLogging: data === null || data === void 0 ? void 0 : data.disableSensitiveLogging,
53
+ });
54
+ }
55
+ return knowledgeSearchResponseData;
56
+ }
57
+ exports.performKnowledgeSearch = performKnowledgeSearch;
58
+ //# sourceMappingURL=knowledgeSearch.helper.js.map