rasa-pro 3.13.0.dev5__py3-none-any.whl → 3.13.0.dev7__py3-none-any.whl

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.

Potentially problematic release.


This version of rasa-pro might be problematic. Click here for more details.

Files changed (154) hide show
  1. rasa/api.py +4 -0
  2. rasa/cli/arguments/default_arguments.py +13 -1
  3. rasa/cli/arguments/train.py +2 -0
  4. rasa/cli/evaluate.py +1 -1
  5. rasa/cli/export.py +2 -2
  6. rasa/cli/train.py +1 -0
  7. rasa/constants.py +2 -0
  8. rasa/core/agent.py +2 -2
  9. rasa/core/brokers/kafka.py +4 -0
  10. rasa/core/brokers/pika.py +4 -0
  11. rasa/core/brokers/sql.py +1 -1
  12. rasa/core/channels/inspector/.eslintrc.cjs +12 -6
  13. rasa/core/channels/inspector/.prettierrc +5 -0
  14. rasa/core/channels/inspector/README.md +10 -4
  15. rasa/core/channels/inspector/dist/assets/{arc-9f75cc3b.js → arc-c4b064fc.js} +1 -1
  16. rasa/core/channels/inspector/dist/assets/{blockDiagram-38ab4fdb-7f34db23.js → blockDiagram-38ab4fdb-215b5026.js} +1 -1
  17. rasa/core/channels/inspector/dist/assets/{c4Diagram-3d4e48cf-948bab2c.js → c4Diagram-3d4e48cf-2b54a0a3.js} +1 -1
  18. rasa/core/channels/inspector/dist/assets/channel-3730f5fd.js +1 -0
  19. rasa/core/channels/inspector/dist/assets/{classDiagram-70f12bd4-53b0dd0e.js → classDiagram-70f12bd4-daacea5f.js} +1 -1
  20. rasa/core/channels/inspector/dist/assets/{classDiagram-v2-f2320105-fdf789e7.js → classDiagram-v2-f2320105-930d4dc2.js} +1 -1
  21. rasa/core/channels/inspector/dist/assets/clone-e847561e.js +1 -0
  22. rasa/core/channels/inspector/dist/assets/{createText-2e5e7dd3-87c4ece5.js → createText-2e5e7dd3-83c206ba.js} +1 -1
  23. rasa/core/channels/inspector/dist/assets/{edges-e0da2a9e-5a8b0749.js → edges-e0da2a9e-b0eb01d0.js} +1 -1
  24. rasa/core/channels/inspector/dist/assets/{erDiagram-9861fffd-66da90e2.js → erDiagram-9861fffd-17586500.js} +1 -1
  25. rasa/core/channels/inspector/dist/assets/{flowDb-956e92f1-10044f05.js → flowDb-956e92f1-be2a1776.js} +1 -1
  26. rasa/core/channels/inspector/dist/assets/{flowDiagram-66a62f08-f338f66a.js → flowDiagram-66a62f08-c2120ebd.js} +1 -1
  27. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-efbbfe00.js +1 -0
  28. rasa/core/channels/inspector/dist/assets/{flowchart-elk-definition-4a651766-b13140aa.js → flowchart-elk-definition-4a651766-a6ab5c48.js} +1 -1
  29. rasa/core/channels/inspector/dist/assets/{ganttDiagram-c361ad54-f2b4a55a.js → ganttDiagram-c361ad54-ef613457.js} +1 -1
  30. rasa/core/channels/inspector/dist/assets/{gitGraphDiagram-72cf32ee-dedc298d.js → gitGraphDiagram-72cf32ee-d59185b3.js} +1 -1
  31. rasa/core/channels/inspector/dist/assets/{graph-4ede11ff.js → graph-0f155405.js} +1 -1
  32. rasa/core/channels/inspector/dist/assets/{index-3862675e-65549d37.js → index-3862675e-d5f1d1b7.js} +1 -1
  33. rasa/core/channels/inspector/dist/assets/{index-3a23e736.js → index-47737d3a.js} +123 -123
  34. rasa/core/channels/inspector/dist/assets/{infoDiagram-f8f76790-65439671.js → infoDiagram-f8f76790-b07d141f.js} +1 -1
  35. rasa/core/channels/inspector/dist/assets/{journeyDiagram-49397b02-56d03d98.js → journeyDiagram-49397b02-1936d429.js} +1 -1
  36. rasa/core/channels/inspector/dist/assets/{layout-dd48f7f4.js → layout-dde8d0f3.js} +1 -1
  37. rasa/core/channels/inspector/dist/assets/{line-1569ad2c.js → line-0c2c7ee0.js} +1 -1
  38. rasa/core/channels/inspector/dist/assets/{linear-48bf4935.js → linear-35dd89a4.js} +1 -1
  39. rasa/core/channels/inspector/dist/assets/{mindmap-definition-fc14e90a-688504c1.js → mindmap-definition-fc14e90a-56192851.js} +1 -1
  40. rasa/core/channels/inspector/dist/assets/{pieDiagram-8a3498a8-78b6d7e6.js → pieDiagram-8a3498a8-fc21ed78.js} +1 -1
  41. rasa/core/channels/inspector/dist/assets/{quadrantDiagram-120e2f19-048b84b3.js → quadrantDiagram-120e2f19-25e98518.js} +1 -1
  42. rasa/core/channels/inspector/dist/assets/{requirementDiagram-deff3bca-dd67f107.js → requirementDiagram-deff3bca-546ff1f5.js} +1 -1
  43. rasa/core/channels/inspector/dist/assets/{sankeyDiagram-04a897e0-8128436e.js → sankeyDiagram-04a897e0-02d8b82d.js} +1 -1
  44. rasa/core/channels/inspector/dist/assets/{sequenceDiagram-704730f1-1a0d1461.js → sequenceDiagram-704730f1-3ca5a92e.js} +1 -1
  45. rasa/core/channels/inspector/dist/assets/{stateDiagram-587899a1-46d388ed.js → stateDiagram-587899a1-128ea07c.js} +1 -1
  46. rasa/core/channels/inspector/dist/assets/{stateDiagram-v2-d93cdb3a-ea42951a.js → stateDiagram-v2-d93cdb3a-95f290af.js} +1 -1
  47. rasa/core/channels/inspector/dist/assets/{styles-6aaf32cf-7427ed0c.js → styles-6aaf32cf-4984898a.js} +1 -1
  48. rasa/core/channels/inspector/dist/assets/{styles-9a916d00-ff5e5a16.js → styles-9a916d00-1bf266ba.js} +1 -1
  49. rasa/core/channels/inspector/dist/assets/{styles-c10674c1-7b3680cf.js → styles-c10674c1-60521c63.js} +1 -1
  50. rasa/core/channels/inspector/dist/assets/{svgDrawCommon-08f97a94-f860f2ad.js → svgDrawCommon-08f97a94-a25b6e12.js} +1 -1
  51. rasa/core/channels/inspector/dist/assets/{timeline-definition-85554ec2-2eebf0c8.js → timeline-definition-85554ec2-0fc086bf.js} +1 -1
  52. rasa/core/channels/inspector/dist/assets/{xychartDiagram-e933f94c-5d7f4e96.js → xychartDiagram-e933f94c-44ee592e.js} +1 -1
  53. rasa/core/channels/inspector/dist/index.html +1 -1
  54. rasa/core/channels/inspector/package.json +3 -1
  55. rasa/core/channels/inspector/src/App.tsx +91 -90
  56. rasa/core/channels/inspector/src/components/Chat.tsx +45 -41
  57. rasa/core/channels/inspector/src/components/DiagramFlow.tsx +40 -40
  58. rasa/core/channels/inspector/src/components/DialogueInformation.tsx +57 -57
  59. rasa/core/channels/inspector/src/components/DialogueStack.tsx +36 -27
  60. rasa/core/channels/inspector/src/components/ExpandIcon.tsx +4 -4
  61. rasa/core/channels/inspector/src/components/FullscreenButton.tsx +7 -7
  62. rasa/core/channels/inspector/src/components/LoadingSpinner.tsx +28 -12
  63. rasa/core/channels/inspector/src/components/NoActiveFlow.tsx +9 -9
  64. rasa/core/channels/inspector/src/components/RasaLogo.tsx +5 -5
  65. rasa/core/channels/inspector/src/components/RecruitmentPanel.tsx +55 -60
  66. rasa/core/channels/inspector/src/components/SaraDiagrams.tsx +5 -5
  67. rasa/core/channels/inspector/src/components/Slots.tsx +22 -22
  68. rasa/core/channels/inspector/src/components/Welcome.tsx +28 -31
  69. rasa/core/channels/inspector/src/helpers/audio/audiostream.ts +245 -0
  70. rasa/core/channels/inspector/src/helpers/audio/microphone-processor.js +12 -0
  71. rasa/core/channels/inspector/src/helpers/audio/playback-processor.js +36 -0
  72. rasa/core/channels/inspector/src/helpers/conversation.ts +7 -7
  73. rasa/core/channels/inspector/src/helpers/formatters.test.ts +181 -181
  74. rasa/core/channels/inspector/src/helpers/formatters.ts +111 -111
  75. rasa/core/channels/inspector/src/helpers/utils.ts +78 -61
  76. rasa/core/channels/inspector/src/main.tsx +8 -8
  77. rasa/core/channels/inspector/src/theme/Button/Button.ts +8 -8
  78. rasa/core/channels/inspector/src/theme/Heading/Heading.ts +7 -7
  79. rasa/core/channels/inspector/src/theme/Input/Input.ts +9 -9
  80. rasa/core/channels/inspector/src/theme/Link/Link.ts +6 -6
  81. rasa/core/channels/inspector/src/theme/Modal/Modal.ts +13 -13
  82. rasa/core/channels/inspector/src/theme/Table/Table.tsx +10 -10
  83. rasa/core/channels/inspector/src/theme/Tooltip/Tooltip.ts +5 -5
  84. rasa/core/channels/inspector/src/theme/base/breakpoints.ts +7 -7
  85. rasa/core/channels/inspector/src/theme/base/colors.ts +64 -64
  86. rasa/core/channels/inspector/src/theme/base/fonts/fontFaces.css +21 -18
  87. rasa/core/channels/inspector/src/theme/base/radii.ts +8 -8
  88. rasa/core/channels/inspector/src/theme/base/shadows.ts +5 -5
  89. rasa/core/channels/inspector/src/theme/base/sizes.ts +5 -5
  90. rasa/core/channels/inspector/src/theme/base/space.ts +12 -12
  91. rasa/core/channels/inspector/src/theme/base/styles.ts +5 -5
  92. rasa/core/channels/inspector/src/theme/base/typography.ts +12 -12
  93. rasa/core/channels/inspector/src/theme/base/zIndices.ts +3 -3
  94. rasa/core/channels/inspector/src/theme/index.ts +38 -38
  95. rasa/core/channels/inspector/src/types.ts +56 -50
  96. rasa/core/channels/inspector/yarn.lock +5 -0
  97. rasa/core/channels/voice_ready/audiocodes.py +34 -17
  98. rasa/core/evaluation/marker_tracker_loader.py +1 -1
  99. rasa/core/exporter.py +1 -1
  100. rasa/core/nlg/contextual_response_rephraser.py +4 -2
  101. rasa/core/nlg/summarize.py +1 -1
  102. rasa/core/persistor.py +55 -20
  103. rasa/core/policies/enterprise_search_policy.py +7 -4
  104. rasa/core/policies/intentless_policy.py +15 -9
  105. rasa/core/processor.py +2 -2
  106. rasa/core/run.py +7 -2
  107. rasa/core/tracker_stores/__init__.py +0 -0
  108. rasa/core/{auth_retry_tracker_store.py → tracker_stores/auth_retry_tracker_store.py} +5 -1
  109. rasa/core/tracker_stores/dynamo_tracker_store.py +218 -0
  110. rasa/core/tracker_stores/mongo_tracker_store.py +206 -0
  111. rasa/core/tracker_stores/redis_tracker_store.py +219 -0
  112. rasa/core/tracker_stores/sql_tracker_store.py +555 -0
  113. rasa/core/tracker_stores/tracker_store.py +805 -0
  114. rasa/core/utils.py +6 -0
  115. rasa/dialogue_understanding/coexistence/llm_based_router.py +8 -3
  116. rasa/dialogue_understanding/commands/clarify_command.py +2 -2
  117. rasa/dialogue_understanding/commands/knowledge_answer_command.py +2 -2
  118. rasa/dialogue_understanding/generator/constants.py +2 -2
  119. rasa/dialogue_understanding/generator/llm_based_command_generator.py +1 -1
  120. rasa/dialogue_understanding/generator/prompt_templates/command_prompt_v2_gpt_4o_2024_11_20_template.jinja2 +33 -12
  121. rasa/dialogue_understanding/generator/single_step/compact_llm_command_generator.py +2 -2
  122. rasa/hooks.py +2 -2
  123. rasa/keys +1 -0
  124. rasa/llm_fine_tuning/paraphrasing/conversation_rephraser.py +4 -2
  125. rasa/model_manager/config.py +3 -1
  126. rasa/model_manager/model_api.py +1 -2
  127. rasa/model_manager/runner_service.py +8 -4
  128. rasa/model_manager/trainer_service.py +1 -0
  129. rasa/model_training.py +12 -3
  130. rasa/nlu/extractors/crf_entity_extractor.py +66 -16
  131. rasa/plugin.py +1 -1
  132. rasa/server.py +6 -2
  133. rasa/shared/constants.py +3 -0
  134. rasa/shared/core/events.py +68 -2
  135. rasa/shared/providers/_configs/azure_openai_client_config.py +4 -0
  136. rasa/shared/providers/_configs/openai_client_config.py +4 -0
  137. rasa/shared/providers/embedding/_base_litellm_embedding_client.py +3 -0
  138. rasa/shared/providers/llm/_base_litellm_client.py +5 -2
  139. rasa/telemetry.py +2 -2
  140. rasa/tracing/config.py +1 -1
  141. rasa/tracing/instrumentation/attribute_extractors.py +1 -1
  142. rasa/tracing/instrumentation/instrumentation.py +1 -1
  143. rasa/utils/licensing.py +1 -2
  144. rasa/version.py +1 -1
  145. {rasa_pro-3.13.0.dev5.dist-info → rasa_pro-3.13.0.dev7.dist-info}/METADATA +4 -4
  146. {rasa_pro-3.13.0.dev5.dist-info → rasa_pro-3.13.0.dev7.dist-info}/RECORD +149 -140
  147. rasa/core/channels/inspector/dist/assets/channel-dfa68278.js +0 -1
  148. rasa/core/channels/inspector/dist/assets/clone-edb7f119.js +0 -1
  149. rasa/core/channels/inspector/dist/assets/flowDiagram-v2-96b9c2cf-65e7c670.js +0 -1
  150. rasa/core/channels/inspector/src/helpers/audiostream.ts +0 -191
  151. rasa/core/tracker_store.py +0 -1792
  152. {rasa_pro-3.13.0.dev5.dist-info → rasa_pro-3.13.0.dev7.dist-info}/NOTICE +0 -0
  153. {rasa_pro-3.13.0.dev5.dist-info → rasa_pro-3.13.0.dev7.dist-info}/WHEEL +0 -0
  154. {rasa_pro-3.13.0.dev5.dist-info → rasa_pro-3.13.0.dev7.dist-info}/entry_points.txt +0 -0
@@ -1,115 +1,115 @@
1
- import { Event } from "../types";
1
+ import { Event } from '../types'
2
2
  import {
3
3
  formatSlots,
4
4
  formatTestCases,
5
5
  formatFlow,
6
6
  parseFieldUsingStack,
7
- } from "./formatters";
7
+ } from './formatters'
8
8
 
9
- describe("helpers", () => {
10
- describe("formatSlots", () => {
11
- test("should return an empty array if no slots are provided", () => {
9
+ describe('helpers', () => {
10
+ describe('formatSlots', () => {
11
+ test('should return an empty array if no slots are provided', () => {
12
12
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
13
  // @ts-ignore
14
- const result = formatSlots(undefined);
15
- expect(result).toEqual([]);
16
- });
14
+ const result = formatSlots(undefined)
15
+ expect(result).toEqual([])
16
+ })
17
17
 
18
- test("should filter out slots with no value", () => {
18
+ test('should filter out slots with no value', () => {
19
19
  const slots = {
20
20
  slot1: null,
21
21
  slot2: null,
22
- };
23
- const result = formatSlots(slots);
24
- expect(result).toEqual([]);
25
- });
22
+ }
23
+ const result = formatSlots(slots)
24
+ expect(result).toEqual([])
25
+ })
26
26
 
27
- test("should filter out `dialogue_stack` slots", () => {
27
+ test('should filter out `dialogue_stack` slots', () => {
28
28
  const slots = {
29
- dialogue_stack: "anything",
30
- };
31
- const result = formatSlots(slots);
32
- expect(result).toEqual([]);
33
- });
29
+ dialogue_stack: 'anything',
30
+ }
31
+ const result = formatSlots(slots)
32
+ expect(result).toEqual([])
33
+ })
34
34
 
35
- test("should filter out `flow_hashes` slots", () => {
35
+ test('should filter out `flow_hashes` slots', () => {
36
36
  const slots = {
37
- flow_hashes: "anything",
38
- };
39
- const result = formatSlots(slots);
40
- expect(result).toEqual([]);
41
- });
37
+ flow_hashes: 'anything',
38
+ }
39
+ const result = formatSlots(slots)
40
+ expect(result).toEqual([])
41
+ })
42
42
 
43
- test("should format a list of slots", () => {
43
+ test('should format a list of slots', () => {
44
44
  const slots = {
45
45
  slot1: true,
46
- slot2: "value",
47
- };
48
- const result = formatSlots(slots);
46
+ slot2: 'value',
47
+ }
48
+ const result = formatSlots(slots)
49
49
  expect(result).toEqual([
50
50
  {
51
- name: "slot1",
51
+ name: 'slot1',
52
52
  value: true,
53
53
  },
54
54
  {
55
- name: "slot2",
56
- value: "value",
55
+ name: 'slot2',
56
+ value: 'value',
57
57
  },
58
- ]);
59
- });
60
- });
58
+ ])
59
+ })
60
+ })
61
61
 
62
- describe("formatTestCases", () => {
63
- const sessionId = "session-id";
62
+ describe('formatTestCases', () => {
63
+ const sessionId = 'session-id'
64
64
 
65
- test("should format an empty list of events", () => {
66
- const events: Event[] = [];
67
- const result = formatTestCases(events, sessionId);
65
+ test('should format an empty list of events', () => {
66
+ const events: Event[] = []
67
+ const result = formatTestCases(events, sessionId)
68
68
  expect(result).toEqual(`test_cases:
69
69
  - test_case: ${sessionId}
70
- steps: []`);
71
- });
70
+ steps: []`)
71
+ })
72
72
 
73
- test("should format a list of events", () => {
73
+ test('should format a list of events', () => {
74
74
  const events: Event[] = [
75
75
  {
76
- event: "user",
77
- text: "book a restaurant",
78
- timestamp: "123",
76
+ event: 'user',
77
+ text: 'book a restaurant',
78
+ timestamp: '123',
79
79
  },
80
80
  {
81
- event: "bot",
81
+ event: 'bot',
82
82
  metadata: {
83
- utter_action: "utter_ask_book_restaurant_name_of_restaurant",
83
+ utter_action: 'utter_ask_book_restaurant_name_of_restaurant',
84
84
  },
85
85
  text: "What's the name of the restaurant you are interested in?",
86
- timestamp: "124",
86
+ timestamp: '124',
87
87
  },
88
88
  {
89
- event: "user",
90
- text: "simsim",
91
- timestamp: "125",
89
+ event: 'user',
90
+ text: 'simsim',
91
+ timestamp: '125',
92
92
  },
93
93
  {
94
- event: "bot",
95
- text: "How many people are we talking?",
96
- timestamp: "126",
94
+ event: 'bot',
95
+ text: 'How many people are we talking?',
96
+ timestamp: '126',
97
97
  },
98
98
  {
99
- event: "user",
100
- text: "100",
101
- timestamp: "127",
99
+ event: 'user',
100
+ text: '100',
101
+ timestamp: '127',
102
102
  },
103
103
  {
104
- event: "bot",
104
+ event: 'bot',
105
105
  metadata: {
106
- utter_action: "utter_ask_book_restaurant_date",
106
+ utter_action: 'utter_ask_book_restaurant_date',
107
107
  },
108
- text: "For which day do you want to book?",
109
- timestamp: "128",
108
+ text: 'For which day do you want to book?',
109
+ timestamp: '128',
110
110
  },
111
- ];
112
- const result = formatTestCases(events, sessionId);
111
+ ]
112
+ const result = formatTestCases(events, sessionId)
113
113
 
114
114
  expect(result).toEqual(`test_cases:
115
115
  - test_case: ${sessionId}
@@ -119,105 +119,105 @@ describe("helpers", () => {
119
119
  - user: "simsim"
120
120
  - bot: "How many people are we talking?"
121
121
  - user: "100"
122
- - utter: utter_ask_book_restaurant_date`);
123
- });
124
- });
122
+ - utter: utter_ask_book_restaurant_date`)
123
+ })
124
+ })
125
125
 
126
- describe("formatFlow", () => {
127
- test("should render a step sequence", () => {
126
+ describe('formatFlow', () => {
127
+ test('should render a step sequence', () => {
128
128
  const slots = [
129
129
  {
130
- name: "book_restaurant_offered_alternative_dates",
130
+ name: 'book_restaurant_offered_alternative_dates',
131
131
  value: [],
132
132
  },
133
133
  {
134
- name: "book_restaurant_is_date_flexible",
134
+ name: 'book_restaurant_is_date_flexible',
135
135
  value: true,
136
136
  },
137
137
  {
138
- name: "book_restaurant_name_of_restaurant",
139
- value: "fonfon",
138
+ name: 'book_restaurant_name_of_restaurant',
139
+ value: 'fonfon',
140
140
  },
141
141
  {
142
- name: "book_restaurant_number_of_people",
143
- value: "30",
142
+ name: 'book_restaurant_number_of_people',
143
+ value: '30',
144
144
  },
145
145
  {
146
- name: "book_restaurant_date",
147
- value: "tomorrow",
146
+ name: 'book_restaurant_date',
147
+ value: 'tomorrow',
148
148
  },
149
- ];
149
+ ]
150
150
  const currentStack = {
151
- frame_id: "EPQQUPJA",
152
- flow_id: "book_restaurant",
153
- step_id: "3_collect_book_restaurant_time",
154
- frame_type: "regular",
155
- type: "flow",
156
- };
151
+ frame_id: 'EPQQUPJA',
152
+ flow_id: 'book_restaurant',
153
+ step_id: '3_collect_book_restaurant_time',
154
+ frame_type: 'regular',
155
+ type: 'flow',
156
+ }
157
157
  const flow = {
158
- id: "book_restaurant",
159
- name: "book a restaurant",
160
- description: "This flow books a restaurant",
158
+ id: 'book_restaurant',
159
+ name: 'book a restaurant',
160
+ description: 'This flow books a restaurant',
161
161
  steps: [
162
162
  {
163
- next: "1_collect_book_restaurant_number_of_people",
164
- id: "0_collect_book_restaurant_name_of_restaurant",
165
- collect: "book_restaurant_name_of_restaurant",
166
- utter: "utter_ask_book_restaurant_name_of_restaurant",
163
+ next: '1_collect_book_restaurant_number_of_people',
164
+ id: '0_collect_book_restaurant_name_of_restaurant',
165
+ collect: 'book_restaurant_name_of_restaurant',
166
+ utter: 'utter_ask_book_restaurant_name_of_restaurant',
167
167
  ask_before_filling: false,
168
168
  reset_after_flow_ends: true,
169
169
  },
170
170
  {
171
- next: "2_collect_book_restaurant_date",
172
- id: "1_collect_book_restaurant_number_of_people",
173
- collect: "book_restaurant_number_of_people",
174
- utter: "utter_ask_book_restaurant_number_of_people",
171
+ next: '2_collect_book_restaurant_date',
172
+ id: '1_collect_book_restaurant_number_of_people',
173
+ collect: 'book_restaurant_number_of_people',
174
+ utter: 'utter_ask_book_restaurant_number_of_people',
175
175
  ask_before_filling: false,
176
176
  reset_after_flow_ends: true,
177
177
  },
178
178
  {
179
- next: "3_collect_book_restaurant_time",
180
- id: "2_collect_book_restaurant_date",
181
- collect: "book_restaurant_date",
182
- utter: "utter_ask_book_restaurant_date",
179
+ next: '3_collect_book_restaurant_time',
180
+ id: '2_collect_book_restaurant_date',
181
+ collect: 'book_restaurant_date',
182
+ utter: 'utter_ask_book_restaurant_date',
183
183
  ask_before_filling: false,
184
184
  reset_after_flow_ends: true,
185
185
  },
186
186
  {
187
- next: "4_collect_book_restaurant_is_date_flexible",
188
- id: "3_collect_book_restaurant_time",
189
- collect: "book_restaurant_time",
190
- utter: "utter_ask_book_restaurant_time",
187
+ next: '4_collect_book_restaurant_is_date_flexible',
188
+ id: '3_collect_book_restaurant_time',
189
+ collect: 'book_restaurant_time',
190
+ utter: 'utter_ask_book_restaurant_time',
191
191
  ask_before_filling: false,
192
192
  reset_after_flow_ends: true,
193
193
  },
194
194
  {
195
- next: "5_check_restaurant_availability",
196
- id: "4_collect_book_restaurant_is_date_flexible",
195
+ next: '5_check_restaurant_availability',
196
+ id: '4_collect_book_restaurant_is_date_flexible',
197
197
  description:
198
- "(True/False) whether offering alternative dates make sense",
199
- collect: "book_restaurant_is_date_flexible",
200
- utter: "utter_ask_book_restaurant_is_date_flexible",
198
+ '(True/False) whether offering alternative dates make sense',
199
+ collect: 'book_restaurant_is_date_flexible',
200
+ utter: 'utter_ask_book_restaurant_is_date_flexible',
201
201
  ask_before_filling: false,
202
202
  reset_after_flow_ends: true,
203
203
  },
204
204
  {
205
205
  next: [
206
206
  {
207
- if: "not is_restaurant_available",
207
+ if: 'not is_restaurant_available',
208
208
  then: [
209
209
  {
210
- next: "ask_alternative",
211
- id: "6_utter_restaurant_not_available",
212
- action: "utter_restaurant_not_available",
210
+ next: 'ask_alternative',
211
+ id: '6_utter_restaurant_not_available',
212
+ action: 'utter_restaurant_not_available',
213
213
  },
214
214
  {
215
- next: "ask_alternative",
216
- id: "ask_alternative",
215
+ next: 'ask_alternative',
216
+ id: 'ask_alternative',
217
217
  description:
218
- "do not fill this slot, instead fill the given parts of the alternative into their respective slots",
219
- collect: "book_restaurant_alternative_dummy",
220
- utter: "utter_ask_book_restaurant_alternative_dummy",
218
+ 'do not fill this slot, instead fill the given parts of the alternative into their respective slots',
219
+ collect: 'book_restaurant_alternative_dummy',
220
+ utter: 'utter_ask_book_restaurant_alternative_dummy',
221
221
  ask_before_filling: false,
222
222
  reset_after_flow_ends: true,
223
223
  rejections: [],
@@ -225,121 +225,121 @@ describe("helpers", () => {
225
225
  ],
226
226
  },
227
227
  {
228
- else: "available",
228
+ else: 'available',
229
229
  },
230
230
  ],
231
- id: "5_check_restaurant_availability",
232
- action: "check_restaurant_availability",
231
+ id: '5_check_restaurant_availability',
232
+ action: 'check_restaurant_availability',
233
233
  },
234
234
  {
235
- next: "9_collect_book_restaurant_reservation_name",
236
- id: "available",
237
- action: "utter_restaurant_available",
235
+ next: '9_collect_book_restaurant_reservation_name',
236
+ id: 'available',
237
+ action: 'utter_restaurant_available',
238
238
  },
239
239
  {
240
- next: "10_collect_book_restaurant_confirmation",
241
- id: "9_collect_book_restaurant_reservation_name",
242
- collect: "book_restaurant_reservation_name",
243
- utter: "utter_ask_book_restaurant_reservation_name",
240
+ next: '10_collect_book_restaurant_confirmation',
241
+ id: '9_collect_book_restaurant_reservation_name',
242
+ collect: 'book_restaurant_reservation_name',
243
+ utter: 'utter_ask_book_restaurant_reservation_name',
244
244
  ask_before_filling: true,
245
245
  reset_after_flow_ends: true,
246
246
  },
247
247
  {
248
248
  next: [
249
249
  {
250
- if: "book_restaurant_confirmation",
250
+ if: 'book_restaurant_confirmation',
251
251
  then: [
252
252
  {
253
- next: "END",
254
- id: "11_utter_confirm_restaurant_booking",
255
- action: "utter_confirm_restaurant_booking",
253
+ next: 'END',
254
+ id: '11_utter_confirm_restaurant_booking',
255
+ action: 'utter_confirm_restaurant_booking',
256
256
  },
257
257
  ],
258
258
  },
259
259
  {
260
260
  else: [
261
261
  {
262
- next: "END",
263
- id: "12_utter_cancel_book_restaurant",
264
- action: "utter_cancel_book_restaurant",
262
+ next: 'END',
263
+ id: '12_utter_cancel_book_restaurant',
264
+ action: 'utter_cancel_book_restaurant',
265
265
  },
266
266
  ],
267
267
  },
268
268
  ],
269
- id: "10_collect_book_restaurant_confirmation",
270
- collect: "book_restaurant_confirmation",
271
- utter: "utter_ask_book_restaurant_confirmation",
269
+ id: '10_collect_book_restaurant_confirmation',
270
+ collect: 'book_restaurant_confirmation',
271
+ utter: 'utter_ask_book_restaurant_confirmation',
272
272
  ask_before_filling: true,
273
273
  reset_after_flow_ends: true,
274
274
  },
275
275
  ],
276
- };
277
- const activeStep = "3_collect_book_restaurant_time";
276
+ }
277
+ const activeStep = '3_collect_book_restaurant_time'
278
278
 
279
279
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
280
280
  // @ts-ignore
281
- const result = formatFlow(slots, currentStack, flow, activeStep);
282
- expect(result).toEqual(restaurantFlow);
283
- });
284
- });
281
+ const result = formatFlow(slots, currentStack, flow, activeStep)
282
+ expect(result).toEqual(restaurantFlow)
283
+ })
284
+ })
285
285
 
286
- describe("parseFieldUsingStack", () => {
287
- test("should parse a filed using a stack", () => {
288
- const fieldValue = "transfer_money_recipient";
286
+ describe('parseFieldUsingStack', () => {
287
+ test('should parse a filed using a stack', () => {
288
+ const fieldValue = 'transfer_money_recipient'
289
289
 
290
290
  expect(
291
- parseFieldUsingStack("{{context.collect}}", {
292
- frame_id: "frame_id",
293
- flow_id: "flow_id",
294
- step_id: "step_id",
291
+ parseFieldUsingStack('{{context.collect}}', {
292
+ frame_id: 'frame_id',
293
+ flow_id: 'flow_id',
294
+ step_id: 'step_id',
295
295
  collect: fieldValue,
296
296
  ended: false,
297
- })
298
- ).toEqual(fieldValue);
299
- });
297
+ }),
298
+ ).toEqual(fieldValue)
299
+ })
300
300
 
301
301
  test("should return the same field if it doesn't have `context`", () => {
302
- const fieldValue = "transfer_money_recipient";
302
+ const fieldValue = 'transfer_money_recipient'
303
303
 
304
304
  expect(
305
305
  parseFieldUsingStack(fieldValue, {
306
- frame_id: "frame_id",
307
- flow_id: "flow_id",
308
- step_id: "step_id",
306
+ frame_id: 'frame_id',
307
+ flow_id: 'flow_id',
308
+ step_id: 'step_id',
309
309
  ended: false,
310
- })
311
- ).toEqual(fieldValue);
312
- });
310
+ }),
311
+ ).toEqual(fieldValue)
312
+ })
313
313
 
314
- test("should return the value if it has conditions as postfix", () => {
315
- const fieldValue = "transfer_money_recipient";
314
+ test('should return the value if it has conditions as postfix', () => {
315
+ const fieldValue = 'transfer_money_recipient'
316
316
 
317
317
  expect(
318
- parseFieldUsingStack("{{context.collect}} is not null", {
319
- frame_id: "frame_id",
320
- flow_id: "flow_id",
321
- step_id: "step_id",
318
+ parseFieldUsingStack('{{context.collect}} is not null', {
319
+ frame_id: 'frame_id',
320
+ flow_id: 'flow_id',
321
+ step_id: 'step_id',
322
322
  collect: fieldValue,
323
323
  ended: false,
324
- })
325
- ).toEqual(`${fieldValue} is not null`);
326
- });
324
+ }),
325
+ ).toEqual(`${fieldValue} is not null`)
326
+ })
327
327
 
328
- test("should return the value if it has conditions as prefix", () => {
329
- const fieldValue = "transfer_money_recipient";
328
+ test('should return the value if it has conditions as prefix', () => {
329
+ const fieldValue = 'transfer_money_recipient'
330
330
 
331
331
  expect(
332
- parseFieldUsingStack("not {{context.collect}}", {
333
- frame_id: "frame_id",
334
- flow_id: "flow_id",
335
- step_id: "step_id",
332
+ parseFieldUsingStack('not {{context.collect}}', {
333
+ frame_id: 'frame_id',
334
+ flow_id: 'flow_id',
335
+ step_id: 'step_id',
336
336
  collect: fieldValue,
337
337
  ended: false,
338
- })
339
- ).toEqual(`not ${fieldValue}`);
340
- });
341
- });
342
- });
338
+ }),
339
+ ).toEqual(`not ${fieldValue}`)
340
+ })
341
+ })
342
+ })
343
343
 
344
344
  const restaurantFlow = `flowchart TD
345
345
  classDef collect stroke-width:1px
@@ -389,4 +389,4 @@ END["🏁 END"]:::endstep
389
389
  12_utter_cancel_book_restaurant --> END
390
390
  END["🏁 END"]:::endstep
391
391
  END["🏁 END"]:::endstep
392
- `;
392
+ `