wingbot 3.72.1 → 3.73.1

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 (151) hide show
  1. package/.babelrc +0 -0
  2. package/.github/workflows/deploy.yml +0 -0
  3. package/.github/workflows/pullRequest.yml +0 -0
  4. package/LICENSE +0 -0
  5. package/README.md +0 -0
  6. package/index.js +0 -0
  7. package/jsconfig.json +0 -0
  8. package/package.json +1 -1
  9. package/plugins/ai.wingbot.clearMessageSequences/plugin.js +0 -0
  10. package/plugins/ai.wingbot.conditionIfGoBackPossible/plugin.js +0 -0
  11. package/plugins/ai.wingbot.disambiguation/plugin.js +0 -0
  12. package/plugins/ai.wingbot.goBack/plugin.js +0 -0
  13. package/plugins/ai.wingbot.goToLastBreadcrumb/plugin.js +0 -0
  14. package/plugins/ai.wingbot.ifImageDetected/plugin.js +0 -0
  15. package/plugins/ai.wingbot.ifStickerDetected/plugin.js +0 -0
  16. package/plugins/ai.wingbot.jumpBack/plugin.js +0 -0
  17. package/plugins/ai.wingbot.jumpTo/plugin.js +0 -0
  18. package/plugins/ai.wingbot.keepInInteraction/plugin.js +0 -0
  19. package/plugins/ai.wingbot.keepInInteractionJustOnce/plugin.js +0 -0
  20. package/plugins/ai.wingbot.keepPreviousHandlers/plugin.js +0 -0
  21. package/plugins/ai.wingbot.keepPreviousHandlersJustOnce/plugin.js +0 -0
  22. package/plugins/ai.wingbot.oneTimeNotificationRequest/plugin.js +0 -0
  23. package/plugins/ai.wingbot.openai/plugin.js +0 -0
  24. package/plugins/ai.wingbot.passThreadToBot/plugin.js +0 -0
  25. package/plugins/ai.wingbot.persona/plugin.js +0 -0
  26. package/plugins/ai.wingbot.putABreadcrumb/plugin.js +0 -0
  27. package/plugins/ai.wingbot.regexp/plugin.js +0 -0
  28. package/plugins/ai.wingbot.setState/plugin.js +0 -0
  29. package/plugins/ai.wingbot.setStateFromInput/plugin.js +0 -0
  30. package/plugins/ai.wingbot.slotsContinue/plugin.js +0 -0
  31. package/plugins/ai.wingbot.slotsRegister/plugin.js +0 -0
  32. package/plugins/ai.wingbot.stopResponding/plugin.js +0 -0
  33. package/plugins/ai.wingbot.trackingEvent/plugin.js +0 -0
  34. package/plugins/ai.wingbot.upload/plugin.js +0 -0
  35. package/plugins/ai.wingbot.waitASecond/plugin.js +0 -0
  36. package/plugins/index.js +0 -0
  37. package/plugins/plugins.json +0 -0
  38. package/src/Ai.js +0 -0
  39. package/src/AiMatching.js +0 -0
  40. package/src/BatchConversationTester.js +0 -0
  41. package/src/BotApp.js +0 -0
  42. package/src/BuildRouter.js +0 -0
  43. package/src/CallbackAuditLog.js +0 -0
  44. package/src/ChatGpt.js +0 -0
  45. package/src/ConversationTester.js +0 -0
  46. package/src/LLM.js +26 -4
  47. package/src/LLMMockProvider.js +0 -0
  48. package/src/LLMSession.js +5 -3
  49. package/src/MockAiModel.js +0 -0
  50. package/src/OrchestratorClient.js +0 -0
  51. package/src/Plugins.js +0 -0
  52. package/src/Processor.js +1 -0
  53. package/src/ReducerWrapper.js +0 -0
  54. package/src/Request.js +0 -0
  55. package/src/Responder.js +0 -0
  56. package/src/ReturnSender.js +0 -0
  57. package/src/Router.js +0 -0
  58. package/src/RouterWrap.js +0 -0
  59. package/src/SecurityMiddleware.js +0 -0
  60. package/src/Tester.js +0 -0
  61. package/src/analytics/GA4.js +0 -0
  62. package/src/analytics/consts.js +0 -0
  63. package/src/analytics/onInteractionHandler.js +0 -0
  64. package/src/defaultResourceMap.js +0 -0
  65. package/src/features.js +0 -0
  66. package/src/flags.js +0 -0
  67. package/src/fuzzy/factoryFuzzySearch.js +0 -0
  68. package/src/fuzzy/fuzzyUtils.js +0 -0
  69. package/src/fuzzy/index.js +0 -0
  70. package/src/fuzzy/levenshtein.js +0 -0
  71. package/src/fuzzy/normalize.js +0 -0
  72. package/src/fuzzy/prepareFuzzyIndex.js +0 -0
  73. package/src/graphApi/GraphApi.js +0 -3
  74. package/src/graphApi/WingbotApiConnector.js +0 -0
  75. package/src/graphApi/apiAuthorizer.js +0 -0
  76. package/src/graphApi/conversationTestApi.js +0 -0
  77. package/src/graphApi/conversationsApi.js +0 -0
  78. package/src/graphApi/index.js +0 -0
  79. package/src/graphApi/postBackApi.js +0 -0
  80. package/src/graphApi/schema.gql +1 -1
  81. package/src/graphApi/validateBotApi.js +0 -0
  82. package/src/notifications/Notifications.js +0 -0
  83. package/src/notifications/NotificationsStorage.js +0 -0
  84. package/src/notifications/api/index.js +0 -0
  85. package/src/notifications/api/notificationsApiFactory.js +0 -0
  86. package/src/notifications/index.js +0 -0
  87. package/src/resolvers/bounce.js +0 -0
  88. package/src/resolvers/button.js +0 -0
  89. package/src/resolvers/carousel.js +0 -0
  90. package/src/resolvers/contextMessage.js +0 -0
  91. package/src/resolvers/expected.js +0 -0
  92. package/src/resolvers/expectedInput.js +0 -0
  93. package/src/resolvers/hbs.js +0 -0
  94. package/src/resolvers/include.js +0 -0
  95. package/src/resolvers/index.js +0 -0
  96. package/src/resolvers/media.js +0 -0
  97. package/src/resolvers/message.js +0 -0
  98. package/src/resolvers/passThread.js +0 -0
  99. package/src/resolvers/path.js +0 -0
  100. package/src/resolvers/plugin.js +0 -0
  101. package/src/resolvers/postback.js +0 -0
  102. package/src/resolvers/resolverTags.js +0 -0
  103. package/src/resolvers/setState.js +0 -0
  104. package/src/resolvers/skip.js +0 -0
  105. package/src/resolvers/subscribtions.js +0 -0
  106. package/src/resolvers/utils.js +0 -0
  107. package/src/systemEntities/email.js +0 -0
  108. package/src/systemEntities/index.js +0 -0
  109. package/src/systemEntities/phone.js +0 -0
  110. package/src/systemEntities/regexps.js +0 -0
  111. package/src/templates/BaseTemplate.js +0 -0
  112. package/src/templates/ButtonTemplate.js +0 -0
  113. package/src/templates/GenericTemplate.js +0 -0
  114. package/src/templates/ListTemplate.js +0 -0
  115. package/src/templates/ReceiptTemplate.js +0 -0
  116. package/src/testTools/AnyResponseAssert.js +0 -0
  117. package/src/testTools/PromptAssert.js +22 -0
  118. package/src/testTools/ResponseAssert.js +0 -0
  119. package/src/testTools/asserts.js +0 -0
  120. package/src/testTools/index.js +0 -0
  121. package/src/tools/MemoryBotConfigStorage.js +0 -0
  122. package/src/tools/MemoryChatLogStorage.js +0 -0
  123. package/src/tools/MemoryStateStorage.js +0 -0
  124. package/src/tools/bufferloader.js +0 -0
  125. package/src/tools/index.js +0 -0
  126. package/src/tools/routeToEvents.js +0 -0
  127. package/src/transcript/extractText.js +0 -0
  128. package/src/transcript/textBodyFromTranscript.js +0 -0
  129. package/src/transcript/transcriptFromHistory.js +0 -0
  130. package/src/utils/ai.js +0 -0
  131. package/src/utils/compileWithState.js +0 -0
  132. package/src/utils/customCondition.js +0 -0
  133. package/src/utils/customFn.js +0 -0
  134. package/src/utils/datetime.js +0 -0
  135. package/src/utils/deepMapTools.js +0 -0
  136. package/src/utils/generateToken.js +0 -0
  137. package/src/utils/getCondition.js +0 -0
  138. package/src/utils/getUpdate.js +0 -0
  139. package/src/utils/headersToAuditMeta.js +0 -0
  140. package/src/utils/index.js +0 -0
  141. package/src/utils/pathUtils.js +0 -0
  142. package/src/utils/quickReplies.js +0 -0
  143. package/src/utils/slots.js +0 -0
  144. package/src/utils/stateData.js +0 -0
  145. package/src/utils/stateVariables.js +0 -0
  146. package/src/utils/tokenizer.js +0 -0
  147. package/src/utils/wrapPluginFunction.js +0 -0
  148. package/src/wingbot/CachedModel.js +0 -0
  149. package/src/wingbot/CustomEntityDetectionModel.js +0 -0
  150. package/src/wingbot/WingbotModel.js +0 -0
  151. package/src/wingbot/index.js +0 -0
package/.babelrc CHANGED
File without changes
File without changes
File without changes
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
package/index.js CHANGED
File without changes
package/jsconfig.json CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wingbot",
3
- "version": "3.72.1",
3
+ "version": "3.73.1",
4
4
  "description": "Enterprise Messaging Bot Conversation Engine",
5
5
  "main": "index.js",
6
6
  "type": "commonjs",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/plugins/index.js CHANGED
File without changes
File without changes
package/src/Ai.js CHANGED
File without changes
package/src/AiMatching.js CHANGED
File without changes
File without changes
package/src/BotApp.js CHANGED
File without changes
File without changes
File without changes
package/src/ChatGpt.js CHANGED
File without changes
File without changes
package/src/LLM.js CHANGED
@@ -82,6 +82,11 @@ const Ai = require('./Ai');
82
82
  * @prop {string} [model]
83
83
  */
84
84
 
85
+ /**
86
+ * @typedef {object} LLMLogOptions
87
+ * @prop {VectorSearchResult} [vectorSearchResult]
88
+ */
89
+
85
90
  /**
86
91
  * @typedef {object} LLMChatProvider
87
92
  * @prop {LLMChatProviderPrompt} requestChat
@@ -110,6 +115,7 @@ const Ai = require('./Ai');
110
115
  * @typedef {object} PromptInfo
111
116
  * @prop {LLMMessage[]} prompt
112
117
  * @prop {LLMMessage} result
118
+ * @prop {VectorSearchResult} [vectorSearchResult]
113
119
  */
114
120
 
115
121
  /**
@@ -122,6 +128,20 @@ const Ai = require('./Ai');
122
128
  * @prop {LogPrompt} logPrompt
123
129
  */
124
130
 
131
+ /**
132
+ * @typedef {object} VectorSearchDocument
133
+ * @property {string} id
134
+ * @property {string} name
135
+ * @property {string} text
136
+ * @property {number} cosineDistance
137
+ * @property {boolean} excludedByCosineDistanceThreshold
138
+ */
139
+ /**
140
+ * @typedef {object} VectorSearchResult
141
+ * @property {number} maximalCosineDistanceThreshold
142
+ * @property {number} nearestNeighbourCount
143
+ * @property {VectorSearchDocument[]} resultDocuments
144
+ */
125
145
  /**
126
146
  * @class LLM
127
147
  */
@@ -222,9 +242,10 @@ class LLM {
222
242
  *
223
243
  * @param {LLMSession} session
224
244
  * @param {LLMProviderOptions} [options={}]
245
+ * @param {LLMLogOptions} [logOptions]
225
246
  * @returns {Promise<LLMMessage>}
226
247
  */
227
- async generate (session, options = {}) {
248
+ async generate (session, options = {}, logOptions = {}) {
228
249
  /** @type {LLMProviderOptions} */
229
250
  const opts = {
230
251
  ...(this._configuration.model && { model: this._configuration.model }),
@@ -233,7 +254,7 @@ class LLM {
233
254
 
234
255
  const prompt = session.toArray(true);
235
256
  const result = await this._provider.requestChat(prompt, opts);
236
- this._logPrompt(prompt, result);
257
+ this.logPrompt(prompt, result, logOptions.vectorSearchResult);
237
258
  return result;
238
259
  }
239
260
 
@@ -241,11 +262,12 @@ class LLM {
241
262
  *
242
263
  * @param {LLMMessage[]} prompt
243
264
  * @param {LLMMessage} result
265
+ * @param {VectorSearchResult} [vectorSearchResult]
244
266
  */
245
- _logPrompt (prompt, result) {
267
+ logPrompt (prompt, result, vectorSearchResult) {
246
268
  this._lastResult = result;
247
269
  this._configuration.logger.logPrompt({
248
- prompt, result
270
+ prompt, result, vectorSearchResult
249
271
  });
250
272
  }
251
273
 
File without changes
package/src/LLMSession.js CHANGED
@@ -7,6 +7,7 @@ const LLM = require('./LLM');
7
7
 
8
8
  /** @typedef {import('./Responder').QuickReply} QuickReply */
9
9
  /** @typedef {import('./LLM').LLMProviderOptions} LLMProviderOptions */
10
+ /** @typedef {import('./LLM').LLMLogOptions} LLMLogOptions */
10
11
 
11
12
  /** @typedef {'user'|'assistant'} LLMChatRole */
12
13
  /** @typedef {'system'} LLMSystemRole */
@@ -272,11 +273,12 @@ class LLMSession {
272
273
 
273
274
  /**
274
275
  *
275
- * @param {LLMProviderOptions} [options={}]
276
+ * @param {LLMProviderOptions} [providerOptions={}]
277
+ * @param {LLMLogOptions} [logOptions]
276
278
  * @returns {Promise<LLMMessage<any>>}
277
279
  */
278
- async generate (options = {}) {
279
- const result = await this._llm.generate(this, options);
280
+ async generate (providerOptions = {}, logOptions = {}) {
281
+ const result = await this._llm.generate(this, providerOptions, logOptions);
280
282
 
281
283
  this._generatedIndex = this._chat.length;
282
284
  this._chat.push(result);
File without changes
File without changes
package/src/Plugins.js CHANGED
File without changes
package/src/Processor.js CHANGED
@@ -405,6 +405,7 @@ class Processor extends EventEmitter {
405
405
  return { status: 304 };
406
406
  }
407
407
 
408
+ /** @type {LLMConfiguration} */
408
409
  const llmOptions = {
409
410
  provider: new LLMMockProvider(),
410
411
  ...this.options.llm
File without changes
package/src/Request.js CHANGED
File without changes
package/src/Responder.js CHANGED
File without changes
File without changes
package/src/Router.js CHANGED
File without changes
package/src/RouterWrap.js CHANGED
File without changes
File without changes
package/src/Tester.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
package/src/features.js CHANGED
File without changes
package/src/flags.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -34,9 +34,6 @@ const DEFAULT_CACHE = 86400000; // 24 hours
34
34
  * @prop {Function} error
35
35
  */
36
36
 
37
- /**
38
- * Experimental chatbot API
39
- */
40
37
  class GraphApi {
41
38
 
42
39
  /**
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -355,4 +355,4 @@ type Mutation {
355
355
 
356
356
  "subscribe with metadata"
357
357
  subscribeWithData (subscriptions: [SubscriptionData!]!): Boolean
358
- }
358
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -59,6 +59,18 @@ class PromptAssert {
59
59
  return this;
60
60
  }
61
61
 
62
+ /**
63
+ * Check if vector search documents contain selected string
64
+ *
65
+ * @param {string} search
66
+ * @returns {this}
67
+ */
68
+ vectorSearchContains (search) {
69
+ const documents = this._flatVectorSearchDocuments();
70
+ this._promptContains(search, documents, false, 'in vector search documents');
71
+ return this;
72
+ }
73
+
62
74
  /**
63
75
  *
64
76
  * @param {(value: LLMMessage, index: number, array: LLMMessage[]) => unknown} filter
@@ -79,6 +91,16 @@ class PromptAssert {
79
91
  .map((prompt) => prompt.result);
80
92
  }
81
93
 
94
+ /**
95
+ *
96
+ * @returns {LLMMessage[]}
97
+ */
98
+ _flatVectorSearchDocuments () {
99
+ return this._prompts
100
+ .flatMap((prompt) => prompt.vectorSearchResult?.resultDocuments || [])
101
+ .map((doc) => ({ role: 'system', content: doc.text }));
102
+ }
103
+
82
104
  _promptContains (search, messages, notContains = false, addMessage = 'No LLM message found') {
83
105
  if (messages.length === 0) {
84
106
  PromptAssert.debug(this._prompts, true);
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/src/utils/ai.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes