@botonic/plugin-flow-builder 0.55.1 → 0.55.2

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.
@@ -27,10 +27,10 @@ async function getContentsByFirstInteraction(context) {
27
27
  console.warn(`The contentID ${contentID} is not found. Returning the firstInteractionContents`);
28
28
  }
29
29
  }
30
- /* If the first interaction has a FlowBotAction, it should be the last content
31
- * and avoid to render the match with keywords or intents
32
- */
33
- if (firstInteractionContents.at(-1) instanceof content_fields_1.FlowBotAction) {
30
+ // Bot actions and AI agents already consume the user input. Matching
31
+ // keywords/intents/KB/AI-agent-from-user-input on top would duplicate replies
32
+ // (e.g. Main start → Go to flow → AI Agents).
33
+ if (startContentsAlreadyHandleUserInput(firstInteractionContents)) {
34
34
  return firstInteractionContents;
35
35
  }
36
36
  if (request.input.nluResolution || (0, input_1.inputHasTextOrTranscript)(request.input)) {
@@ -39,6 +39,13 @@ async function getContentsByFirstInteraction(context) {
39
39
  }
40
40
  return firstInteractionContents;
41
41
  }
42
+ function startContentsAlreadyHandleUserInput(contents) {
43
+ if (contents.at(-1) instanceof content_fields_1.FlowBotAction) {
44
+ return true;
45
+ }
46
+ // To avoid duplicated ai agent response, we check if there is an ai agent or ai agent router in the first interaction contents.
47
+ return contents.some(content => content instanceof content_fields_1.FlowAiAgent || content instanceof content_fields_1.FlowAiAgentRouter);
48
+ }
42
49
  async function getContentsByUserInput(context) {
43
50
  const { cmsApi, flowBuilderPlugin, request, resolvedLocale } = context;
44
51
  const payloadByNlu = request.input.nluResolution?.payload;
@@ -1 +1 @@
1
- {"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":"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"}
@@ -27,10 +27,10 @@ async function getContentsByFirstInteraction(context) {
27
27
  console.warn(`The contentID ${contentID} is not found. Returning the firstInteractionContents`);
28
28
  }
29
29
  }
30
- /* If the first interaction has a FlowBotAction, it should be the last content
31
- * and avoid to render the match with keywords or intents
32
- */
33
- if (firstInteractionContents.at(-1) instanceof content_fields_1.FlowBotAction) {
30
+ // Bot actions and AI agents already consume the user input. Matching
31
+ // keywords/intents/KB/AI-agent-from-user-input on top would duplicate replies
32
+ // (e.g. Main start → Go to flow → AI Agents).
33
+ if (startContentsAlreadyHandleUserInput(firstInteractionContents)) {
34
34
  return firstInteractionContents;
35
35
  }
36
36
  if (request.input.nluResolution || (0, input_1.inputHasTextOrTranscript)(request.input)) {
@@ -39,6 +39,13 @@ async function getContentsByFirstInteraction(context) {
39
39
  }
40
40
  return firstInteractionContents;
41
41
  }
42
+ function startContentsAlreadyHandleUserInput(contents) {
43
+ if (contents.at(-1) instanceof content_fields_1.FlowBotAction) {
44
+ return true;
45
+ }
46
+ // To avoid duplicated ai agent response, we check if there is an ai agent or ai agent router in the first interaction contents.
47
+ return contents.some(content => content instanceof content_fields_1.FlowAiAgent || content instanceof content_fields_1.FlowAiAgentRouter);
48
+ }
42
49
  async function getContentsByUserInput(context) {
43
50
  const { cmsApi, flowBuilderPlugin, request, resolvedLocale } = context;
44
51
  const payloadByNlu = request.input.nluResolution?.payload;
@@ -1 +1 @@
1
- {"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"first-interaction.js","sourceRoot":"","sources":["../../../src/action/first-interaction.ts"],"names":[],"mappings":";;AAcA,sEA2CC;AAxDD,4CAA6C;AAC7C,sDAK0B;AAE1B,0CAAyD;AACzD,yEAA8E;AAE9E,uCAAgD;AAEzC,KAAK,UAAU,6BAA6B,CACjD,OAA2B;IAE3B,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAEzD;;;;;;OAMG;IACH,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,CAAA;IAE3E,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,mBAAmB,GACvB,MAAM,iBAAiB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;YAE3D,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,mBAAmB,CAAA;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACV,iBAAiB,SAAS,uDAAuD,CAClF,CAAA;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,8EAA8E;IAC9E,8CAA8C;IAC9C,IAAI,mCAAmC,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAClE,OAAO,wBAAwB,CAAA;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,IAAA,gCAAwB,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,mBAAmB,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAEjE,OAAO,CAAC,GAAG,wBAAwB,EAAE,GAAG,mBAAmB,CAAC,CAAA;IAC9D,CAAC;IAED,OAAO,wBAAwB,CAAA;AACjC,CAAC;AAED,SAAS,mCAAmC,CAAC,QAAuB;IAClE,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,8BAAa,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,gIAAgI;IAChI,OAAO,QAAQ,CAAC,IAAI,CAClB,OAAO,CAAC,EAAE,CACR,OAAO,YAAY,4BAAW,IAAI,OAAO,YAAY,kCAAiB,CACzE,CAAA;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAA;IAEzD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAA;QACpC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAE1D,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;YAClD,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,2BAA2B,GAAG,MAAM,IAAA,8BAAoB,EAAC;YAC7D,MAAM;YACN,iBAAiB;YACjB,OAAO;YACP,cAAc;SACf,CAAC,CAAA;QAEF,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CACpD,iBAAiB,EACjB,2BAA2B,CAC5B,CAAA;QAED,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO,2BAA2B,CAAA;QACpC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,EAAE,CAAC;QACxD,MAAM,iBAAiB,GAAG,MAAM,IAAA,4DAAiC,EAAC,OAAO,CAAC,CAAA;QAC1E,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAsB;IACpD,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAChD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,0BAAc,CACrC,EAAE,aAAa,CAAA;IAEhB,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,iBAA2C,EAC3C,2BAA0C;IAE1C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,EAAE,CAAA;IAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CACvD,CAAA;IACD,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACtD,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAC3B,CAAA;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botonic/plugin-flow-builder",
3
- "version": "0.55.1",
3
+ "version": "0.55.2",
4
4
  "main": "./lib/cjs/index.js",
5
5
  "module": "./lib/esm/index.js",
6
6
  "description": "Use Flow Builder to show your contents",
@@ -1,6 +1,11 @@
1
1
  import type { FlowBuilderApi } from '../api'
2
2
  import { MAIN_FLOW_NAME } from '../constants'
3
- import { FlowBotAction, type FlowContent } from '../content-fields'
3
+ import {
4
+ FlowAiAgent,
5
+ FlowAiAgentRouter,
6
+ FlowBotAction,
7
+ type FlowContent,
8
+ } from '../content-fields'
4
9
  import type BotonicPluginFlowBuilder from '../index'
5
10
  import { inputHasTextOrTranscript } from '../utils/input'
6
11
  import { getContentsByAiAgentFromUserInput } from './ai-agent-from-user-input'
@@ -36,10 +41,10 @@ export async function getContentsByFirstInteraction(
36
41
  }
37
42
  }
38
43
 
39
- /* If the first interaction has a FlowBotAction, it should be the last content
40
- * and avoid to render the match with keywords or intents
41
- */
42
- if (firstInteractionContents.at(-1) instanceof FlowBotAction) {
44
+ // Bot actions and AI agents already consume the user input. Matching
45
+ // keywords/intents/KB/AI-agent-from-user-input on top would duplicate replies
46
+ // (e.g. Main start → Go to flow → AI Agents).
47
+ if (startContentsAlreadyHandleUserInput(firstInteractionContents)) {
43
48
  return firstInteractionContents
44
49
  }
45
50
 
@@ -52,6 +57,18 @@ export async function getContentsByFirstInteraction(
52
57
  return firstInteractionContents
53
58
  }
54
59
 
60
+ function startContentsAlreadyHandleUserInput(contents: FlowContent[]): boolean {
61
+ if (contents.at(-1) instanceof FlowBotAction) {
62
+ return true
63
+ }
64
+
65
+ // To avoid duplicated ai agent response, we check if there is an ai agent or ai agent router in the first interaction contents.
66
+ return contents.some(
67
+ content =>
68
+ content instanceof FlowAiAgent || content instanceof FlowAiAgentRouter
69
+ )
70
+ }
71
+
55
72
  async function getContentsByUserInput(
56
73
  context: FlowBuilderContext
57
74
  ): Promise<FlowContent[]> {