rasa-pro 3.11.18__py3-none-any.whl → 3.11.19__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.
- rasa/dialogue_understanding/commands/correct_slots_command.py +39 -1
- rasa/dialogue_understanding/processor/command_processor.py +153 -62
- rasa/dialogue_understanding/stack/utils.py +13 -3
- rasa/version.py +1 -1
- {rasa_pro-3.11.18.dist-info → rasa_pro-3.11.19.dist-info}/METADATA +1 -1
- {rasa_pro-3.11.18.dist-info → rasa_pro-3.11.19.dist-info}/RECORD +9 -9
- {rasa_pro-3.11.18.dist-info → rasa_pro-3.11.19.dist-info}/NOTICE +0 -0
- {rasa_pro-3.11.18.dist-info → rasa_pro-3.11.19.dist-info}/WHEEL +0 -0
- {rasa_pro-3.11.18.dist-info → rasa_pro-3.11.19.dist-info}/entry_points.txt +0 -0
|
@@ -260,7 +260,21 @@ class CorrectSlotsCommand(Command):
|
|
|
260
260
|
)
|
|
261
261
|
return []
|
|
262
262
|
|
|
263
|
-
structlogger.debug("
|
|
263
|
+
structlogger.debug("correct_slots_command", command=self)
|
|
264
|
+
|
|
265
|
+
# check if the correct slot is referring to a slot of a flow on the stack
|
|
266
|
+
# the slot also needs to be part of a collect step in any of those flows
|
|
267
|
+
# if this is not the case, we don't want to correct the slot
|
|
268
|
+
for slot in self.corrected_slots:
|
|
269
|
+
if not self.should_correct_slot(slot, tracker, all_flows):
|
|
270
|
+
structlogger.warning(
|
|
271
|
+
"correct_slots_command.skip_correct_slot",
|
|
272
|
+
correct_slot=slot,
|
|
273
|
+
reason="The slot is not part of a collect step in any of the flows "
|
|
274
|
+
"on the stack. Skipping correction.",
|
|
275
|
+
)
|
|
276
|
+
return []
|
|
277
|
+
|
|
264
278
|
proposed_slots = self.corrected_slots_dict(tracker)
|
|
265
279
|
|
|
266
280
|
correction_frame = self.create_correction_frame(
|
|
@@ -285,3 +299,27 @@ class CorrectSlotsCommand(Command):
|
|
|
285
299
|
return False
|
|
286
300
|
|
|
287
301
|
return True
|
|
302
|
+
|
|
303
|
+
def should_correct_slot(
|
|
304
|
+
self, slot: CorrectedSlot, tracker: DialogueStateTracker, all_flows: FlowsList
|
|
305
|
+
) -> bool:
|
|
306
|
+
"""Checks if the slot should be corrected.
|
|
307
|
+
|
|
308
|
+
Args:
|
|
309
|
+
slot: The slot to check.
|
|
310
|
+
tracker: The tracker.
|
|
311
|
+
all_flows: All flows in the assistant.
|
|
312
|
+
"""
|
|
313
|
+
# get all flows on the stack
|
|
314
|
+
flows_on_stack = utils.user_flows_on_the_stack(tracker.stack)
|
|
315
|
+
|
|
316
|
+
# check if the slot is part of a collect step in any of the flows on the stack
|
|
317
|
+
for flow_id in flows_on_stack:
|
|
318
|
+
flow = all_flows.flow_by_id(flow_id)
|
|
319
|
+
if flow is None:
|
|
320
|
+
continue
|
|
321
|
+
for collect_step in flow.get_collect_steps():
|
|
322
|
+
if collect_step.collect == slot.name:
|
|
323
|
+
return True
|
|
324
|
+
|
|
325
|
+
return False
|
|
@@ -31,8 +31,9 @@ from rasa.dialogue_understanding.stack.frames import (
|
|
|
31
31
|
BaseFlowStackFrame,
|
|
32
32
|
)
|
|
33
33
|
from rasa.dialogue_understanding.stack.utils import (
|
|
34
|
-
filled_slots_for_active_flow,
|
|
35
34
|
top_flow_frame,
|
|
35
|
+
filled_slots_for_active_flow,
|
|
36
|
+
top_user_flow_frame,
|
|
36
37
|
)
|
|
37
38
|
from rasa.engine.graph import ExecutionContext
|
|
38
39
|
from rasa.shared.constants import (
|
|
@@ -113,8 +114,9 @@ def validate_state_of_commands(commands: List[Command]) -> None:
|
|
|
113
114
|
# check that there is only at max one cancel flow command
|
|
114
115
|
if sum(isinstance(c, CancelFlowCommand) for c in commands) > 1:
|
|
115
116
|
structlogger.error(
|
|
116
|
-
"command_processor.validate_state_of_commands.
|
|
117
|
-
|
|
117
|
+
"command_processor.validate_state_of_commands."
|
|
118
|
+
"multiple_cancel_flow_commands",
|
|
119
|
+
commands=[command.__class__.__name__ for command in commands],
|
|
118
120
|
)
|
|
119
121
|
raise ValueError("There can only be one cancel flow command.")
|
|
120
122
|
|
|
@@ -124,8 +126,9 @@ def validate_state_of_commands(commands: List[Command]) -> None:
|
|
|
124
126
|
]
|
|
125
127
|
if free_form_answer_commands != commands[: len(free_form_answer_commands)]:
|
|
126
128
|
structlogger.error(
|
|
127
|
-
"command_processor.validate_state_of_commands.
|
|
128
|
-
|
|
129
|
+
"command_processor.validate_state_of_commands."
|
|
130
|
+
"free_form_answer_commands_not_at_beginning",
|
|
131
|
+
commands=[command.__class__.__name__ for command in commands],
|
|
129
132
|
)
|
|
130
133
|
raise ValueError(
|
|
131
134
|
"Free form answer commands must be at start of the predicted command list."
|
|
@@ -134,8 +137,9 @@ def validate_state_of_commands(commands: List[Command]) -> None:
|
|
|
134
137
|
# check that there is at max only one correctslots command
|
|
135
138
|
if sum(isinstance(c, CorrectSlotsCommand) for c in commands) > 1:
|
|
136
139
|
structlogger.error(
|
|
137
|
-
"command_processor.validate_state_of_commands.
|
|
138
|
-
|
|
140
|
+
"command_processor.validate_state_of_commands."
|
|
141
|
+
"multiple_correct_slots_commands",
|
|
142
|
+
commands=[command.__class__.__name__ for command in commands],
|
|
139
143
|
)
|
|
140
144
|
raise ValueError("There can only be one correct slots command.")
|
|
141
145
|
|
|
@@ -218,15 +222,13 @@ def execute_commands(
|
|
|
218
222
|
|
|
219
223
|
events: List[Event] = flow_hash_events
|
|
220
224
|
|
|
221
|
-
# commands
|
|
222
|
-
#
|
|
223
|
-
|
|
224
|
-
# and then pushing the commands onto the stack in the reversed order.
|
|
225
|
-
reversed_commands = list(reversed(commands))
|
|
225
|
+
# reorder commands: in case there is no active flow, we want to make sure to
|
|
226
|
+
# run the start flow commands first.
|
|
227
|
+
final_commands = reorder_commands(commands, tracker)
|
|
226
228
|
|
|
227
229
|
validate_state_of_commands(commands)
|
|
228
230
|
|
|
229
|
-
for command in
|
|
231
|
+
for command in final_commands:
|
|
230
232
|
new_events = command.run_command_on_tracker(
|
|
231
233
|
tracker, all_flows, original_tracker
|
|
232
234
|
)
|
|
@@ -354,19 +356,14 @@ def clean_up_commands(
|
|
|
354
356
|
"""
|
|
355
357
|
domain = domain if domain else Domain.empty()
|
|
356
358
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
# update the slots so far with the slots that were set in the tracker
|
|
360
|
-
slots_so_far.update(
|
|
361
|
-
{event.key for event in tracker.events if isinstance(event, SlotSet)}
|
|
362
|
-
)
|
|
359
|
+
_, active_flow = filled_slots_for_active_flow(tracker, all_flows)
|
|
363
360
|
|
|
364
361
|
clean_commands: List[Command] = []
|
|
365
362
|
|
|
366
363
|
for command in commands:
|
|
367
364
|
if isinstance(command, SetSlotCommand):
|
|
368
365
|
clean_commands = clean_up_slot_command(
|
|
369
|
-
clean_commands, command, tracker, all_flows
|
|
366
|
+
clean_commands, command, tracker, all_flows
|
|
370
367
|
)
|
|
371
368
|
|
|
372
369
|
elif isinstance(command, CancelFlowCommand) and contains_command(
|
|
@@ -422,7 +419,8 @@ def clean_up_commands(
|
|
|
422
419
|
clean_commands = clean_up_clarify_command(clean_commands, commands, command)
|
|
423
420
|
if command not in clean_commands:
|
|
424
421
|
structlogger.debug(
|
|
425
|
-
"command_processor.clean_up_commands.
|
|
422
|
+
"command_processor.clean_up_commands."
|
|
423
|
+
"drop_clarify_given_other_commands",
|
|
426
424
|
command=command,
|
|
427
425
|
)
|
|
428
426
|
else:
|
|
@@ -446,6 +444,25 @@ def clean_up_commands(
|
|
|
446
444
|
return clean_commands
|
|
447
445
|
|
|
448
446
|
|
|
447
|
+
def _get_slots_eligible_for_correction(tracker: DialogueStateTracker) -> Set[str]:
|
|
448
|
+
"""Get all slots that are eligible for correction.
|
|
449
|
+
|
|
450
|
+
# We consider all slots, which are not None, that were set in the tracker
|
|
451
|
+
# eligible for correction.
|
|
452
|
+
# In the correct_slot_command we will check if a slot should actually be
|
|
453
|
+
# corrected.
|
|
454
|
+
"""
|
|
455
|
+
# get all slots that were set in the tracker
|
|
456
|
+
slots_so_far = set(
|
|
457
|
+
[event.key for event in tracker.events if isinstance(event, SlotSet)]
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
# filter out slots that are set to None (None = empty value)
|
|
461
|
+
slots_so_far = {slot for slot in slots_so_far if tracker.get_slot(slot) is not None}
|
|
462
|
+
|
|
463
|
+
return slots_so_far
|
|
464
|
+
|
|
465
|
+
|
|
449
466
|
def ensure_max_number_of_command_type(
|
|
450
467
|
commands: List[Command], command_type: Type[Command], n: int
|
|
451
468
|
) -> List[Command]:
|
|
@@ -505,7 +522,6 @@ def clean_up_slot_command(
|
|
|
505
522
|
command: SetSlotCommand,
|
|
506
523
|
tracker: DialogueStateTracker,
|
|
507
524
|
all_flows: FlowsList,
|
|
508
|
-
slots_so_far: Set[str],
|
|
509
525
|
) -> List[Command]:
|
|
510
526
|
"""Clean up a slot command.
|
|
511
527
|
|
|
@@ -518,16 +534,15 @@ def clean_up_slot_command(
|
|
|
518
534
|
command: The command to clean up.
|
|
519
535
|
tracker: The dialogue state tracker.
|
|
520
536
|
all_flows: All flows.
|
|
521
|
-
slots_so_far: The slots that have been filled so far.
|
|
522
537
|
|
|
523
538
|
Returns:
|
|
524
539
|
The cleaned up commands.
|
|
525
540
|
"""
|
|
526
541
|
stack = tracker.stack
|
|
527
|
-
|
|
528
542
|
resulting_commands = commands_so_far[:]
|
|
529
|
-
|
|
530
543
|
slot = tracker.slots.get(command.name)
|
|
544
|
+
|
|
545
|
+
# if the slot is not in the domain, we cannot set it
|
|
531
546
|
if slot is None:
|
|
532
547
|
structlogger.debug(
|
|
533
548
|
"command_processor.clean_up_slot_command.skip_command_slot_not_in_domain",
|
|
@@ -540,6 +555,7 @@ def clean_up_slot_command(
|
|
|
540
555
|
)
|
|
541
556
|
return resulting_commands
|
|
542
557
|
|
|
558
|
+
# check if the slot should be set by the command
|
|
543
559
|
if not should_slot_be_set(slot, command):
|
|
544
560
|
cannot_handle = CannotHandleCommand(
|
|
545
561
|
reason="A command generator attempted to set a slot with a value extracted "
|
|
@@ -550,7 +566,13 @@ def clean_up_slot_command(
|
|
|
550
566
|
|
|
551
567
|
return resulting_commands
|
|
552
568
|
|
|
553
|
-
|
|
569
|
+
# get all slots that were set in the tracker and are eligible for correction
|
|
570
|
+
slots_eligible_for_correction = _get_slots_eligible_for_correction(tracker)
|
|
571
|
+
|
|
572
|
+
if (
|
|
573
|
+
command.name in slots_eligible_for_correction
|
|
574
|
+
and command.name != ROUTE_TO_CALM_SLOT
|
|
575
|
+
):
|
|
554
576
|
current_collect_info = get_current_collect_step(stack, all_flows)
|
|
555
577
|
|
|
556
578
|
if current_collect_info and current_collect_info.collect == command.name:
|
|
@@ -558,49 +580,71 @@ def clean_up_slot_command(
|
|
|
558
580
|
resulting_commands.append(command)
|
|
559
581
|
return resulting_commands
|
|
560
582
|
|
|
561
|
-
if (
|
|
562
|
-
slot
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
"command_processor.clean_up_slot_command.skip_command_slot_already_set",
|
|
567
|
-
command=command,
|
|
568
|
-
)
|
|
583
|
+
if should_slot_be_corrected(command, tracker, stack, all_flows):
|
|
584
|
+
# if the slot was already set before, we need to convert it into
|
|
585
|
+
# a correction
|
|
586
|
+
return convert_set_slot_to_correction(command, resulting_commands)
|
|
587
|
+
else:
|
|
569
588
|
return resulting_commands
|
|
570
589
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
already_corrected_slots = top.corrected_slots
|
|
574
|
-
else:
|
|
575
|
-
already_corrected_slots = {}
|
|
590
|
+
resulting_commands.append(command)
|
|
591
|
+
return resulting_commands
|
|
576
592
|
|
|
577
|
-
if command.name in already_corrected_slots and str(
|
|
578
|
-
already_corrected_slots[command.name]
|
|
579
|
-
) == str(command.value):
|
|
580
|
-
structlogger.debug(
|
|
581
|
-
"command_processor.clean_up_slot_command"
|
|
582
|
-
".skip_command_slot_already_corrected",
|
|
583
|
-
command=command,
|
|
584
|
-
)
|
|
585
|
-
return resulting_commands
|
|
586
593
|
|
|
594
|
+
def should_slot_be_corrected(
|
|
595
|
+
command: SetSlotCommand,
|
|
596
|
+
tracker: DialogueStateTracker,
|
|
597
|
+
stack: DialogueStack,
|
|
598
|
+
all_flows: FlowsList,
|
|
599
|
+
) -> bool:
|
|
600
|
+
"""Check if a slot should be corrected."""
|
|
601
|
+
if (slot := tracker.slots.get(command.name)) is not None and str(slot.value) == str(
|
|
602
|
+
command.value
|
|
603
|
+
):
|
|
604
|
+
# the slot is already set to the same value, we don't need to set it again
|
|
587
605
|
structlogger.debug(
|
|
588
|
-
"command_processor.clean_up_slot_command.
|
|
606
|
+
"command_processor.clean_up_slot_command.skip_command_slot_already_set",
|
|
589
607
|
command=command,
|
|
590
608
|
)
|
|
609
|
+
return False
|
|
591
610
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
611
|
+
top = top_flow_frame(stack)
|
|
612
|
+
if isinstance(top, CorrectionPatternFlowStackFrame):
|
|
613
|
+
already_corrected_slots = top.corrected_slots
|
|
614
|
+
else:
|
|
615
|
+
already_corrected_slots = {}
|
|
616
|
+
|
|
617
|
+
if command.name in already_corrected_slots and str(
|
|
618
|
+
already_corrected_slots[command.name]
|
|
619
|
+
) == str(command.value):
|
|
620
|
+
structlogger.debug(
|
|
621
|
+
"command_processor.clean_up_slot_command"
|
|
622
|
+
".skip_command_slot_already_corrected",
|
|
623
|
+
command=command,
|
|
624
|
+
)
|
|
625
|
+
return False
|
|
626
|
+
|
|
627
|
+
return True
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
def convert_set_slot_to_correction(
|
|
631
|
+
command: SetSlotCommand,
|
|
632
|
+
resulting_commands: List[Command],
|
|
633
|
+
) -> List[Command]:
|
|
634
|
+
"""Convert a set slot command to a correction command."""
|
|
635
|
+
structlogger.debug(
|
|
636
|
+
"command_processor.convert_set_slot_to_correction",
|
|
637
|
+
command=command,
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
# Group all corrections into one command
|
|
641
|
+
corrected_slot = CorrectedSlot(command.name, command.value)
|
|
642
|
+
for c in resulting_commands:
|
|
643
|
+
if isinstance(c, CorrectSlotsCommand):
|
|
644
|
+
c.corrected_slots.append(corrected_slot)
|
|
645
|
+
break
|
|
602
646
|
else:
|
|
603
|
-
resulting_commands.append(
|
|
647
|
+
resulting_commands.append(CorrectSlotsCommand(corrected_slots=[corrected_slot]))
|
|
604
648
|
|
|
605
649
|
return resulting_commands
|
|
606
650
|
|
|
@@ -659,8 +703,9 @@ def clean_up_chitchat_command(
|
|
|
659
703
|
0, CannotHandleCommand(RASA_PATTERN_CANNOT_HANDLE_CHITCHAT)
|
|
660
704
|
)
|
|
661
705
|
structlogger.warn(
|
|
662
|
-
"command_processor.clean_up_chitchat_command.
|
|
663
|
-
|
|
706
|
+
"command_processor.clean_up_chitchat_command."
|
|
707
|
+
"replace_chitchat_answer_with_cannot_handle",
|
|
708
|
+
command=resulting_commands[0], # no PII
|
|
664
709
|
pattern_chitchat_uses_action_trigger_chitchat=has_action_trigger_chitchat,
|
|
665
710
|
defined_intentless_policy_in_config=defines_intentless_policy,
|
|
666
711
|
)
|
|
@@ -736,3 +781,49 @@ def filter_cannot_handle_command(
|
|
|
736
781
|
for command in clean_commands
|
|
737
782
|
if not isinstance(command, CannotHandleCommand)
|
|
738
783
|
]
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
def reorder_commands(
|
|
787
|
+
commands: List[Command], tracker: DialogueStateTracker
|
|
788
|
+
) -> List[Command]:
|
|
789
|
+
"""Reorder commands.
|
|
790
|
+
|
|
791
|
+
In case there is no active flow, we want to make sure to run the start flow
|
|
792
|
+
commands first.
|
|
793
|
+
"""
|
|
794
|
+
reordered_commands = commands
|
|
795
|
+
|
|
796
|
+
top_flow_frame = top_user_flow_frame(tracker.stack)
|
|
797
|
+
|
|
798
|
+
if top_flow_frame is None:
|
|
799
|
+
# no active flow, we want to make sure to run the start flow commands first
|
|
800
|
+
start_flow_commands: List[Command] = [
|
|
801
|
+
command for command in commands if isinstance(command, StartFlowCommand)
|
|
802
|
+
]
|
|
803
|
+
|
|
804
|
+
# if there are no start flow commands, we can return the commands as they are
|
|
805
|
+
if not start_flow_commands:
|
|
806
|
+
reordered_commands = commands
|
|
807
|
+
|
|
808
|
+
# if there is just one start flow command, we want to run it first
|
|
809
|
+
# as the order of commands is reserved later,
|
|
810
|
+
# we need to add it to the end of the list
|
|
811
|
+
elif len(start_flow_commands) == 1:
|
|
812
|
+
reordered_commands = [
|
|
813
|
+
command for command in commands if command not in start_flow_commands
|
|
814
|
+
] + start_flow_commands
|
|
815
|
+
|
|
816
|
+
# if there are multiple start flow commands,
|
|
817
|
+
# we just make sure to move the first start flow command to the end of the list
|
|
818
|
+
# (due to the reverse execution order of commands) and keep the other commands
|
|
819
|
+
# as they are.
|
|
820
|
+
else:
|
|
821
|
+
reordered_commands = [
|
|
822
|
+
command for command in commands if command != start_flow_commands[-1]
|
|
823
|
+
] + [start_flow_commands[-1]]
|
|
824
|
+
|
|
825
|
+
# commands need to be reversed to make sure they end up in the right order
|
|
826
|
+
# on the stack. e.g. if there multiple start flow commands, the first one
|
|
827
|
+
# should be on top of the stack. this is achieved by reversing the list
|
|
828
|
+
# and then pushing the commands onto the stack in the reversed order.
|
|
829
|
+
return list(reversed(reordered_commands))
|
|
@@ -206,14 +206,24 @@ def get_collect_steps_excluding_ask_before_filling_for_active_flow(
|
|
|
206
206
|
All collect steps that are part of the current active flow,
|
|
207
207
|
excluding the collect steps that have to be asked before filling.
|
|
208
208
|
"""
|
|
209
|
-
|
|
209
|
+
active_primary_frame = top_user_flow_frame(dialogue_stack)
|
|
210
|
+
any_active_frame = top_user_flow_frame(
|
|
210
211
|
dialogue_stack, ignore_call_and_link_frames=False
|
|
211
212
|
)
|
|
212
|
-
|
|
213
|
+
|
|
214
|
+
active_flows = []
|
|
215
|
+
if any_active_frame:
|
|
216
|
+
active_flows.append(any_active_frame.flow(all_flows))
|
|
217
|
+
|
|
218
|
+
if active_primary_frame and active_primary_frame != any_active_frame:
|
|
219
|
+
active_flows.append(active_primary_frame.flow(all_flows))
|
|
220
|
+
|
|
221
|
+
if not active_flows:
|
|
213
222
|
return set()
|
|
214
|
-
|
|
223
|
+
|
|
215
224
|
return set(
|
|
216
225
|
step.collect
|
|
226
|
+
for active_flow in active_flows
|
|
217
227
|
for step in active_flow.get_collect_steps()
|
|
218
228
|
if not step.ask_before_filling
|
|
219
229
|
)
|
rasa/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: rasa-pro
|
|
3
|
-
Version: 3.11.
|
|
3
|
+
Version: 3.11.19
|
|
4
4
|
Summary: State-of-the-art open-core Conversational AI framework for Enterprises that natively leverages generative AI for effortless assistant development.
|
|
5
5
|
Keywords: nlp,machine-learning,machine-learning-library,bot,bots,botkit,rasa conversational-agents,conversational-ai,chatbot,chatbot-framework,bot-framework
|
|
6
6
|
Author: Rasa Technologies GmbH
|
|
@@ -368,7 +368,7 @@ rasa/dialogue_understanding/commands/change_flow_command.py,sha256=0s3g-3InNZs2e
|
|
|
368
368
|
rasa/dialogue_understanding/commands/chit_chat_answer_command.py,sha256=jl8em1Xw867VAj5EogeuOjWK93uoT71IhjHU076c2mg,1773
|
|
369
369
|
rasa/dialogue_understanding/commands/clarify_command.py,sha256=OzkqVRZrQo20cveqUoQGZE96DdRLLPgfPxJhroubIQw,2822
|
|
370
370
|
rasa/dialogue_understanding/commands/command.py,sha256=oUP7cZHz2ew6JIrauzfkOntomNvgJfpMBhsuYh7cHo4,2528
|
|
371
|
-
rasa/dialogue_understanding/commands/correct_slots_command.py,sha256=
|
|
371
|
+
rasa/dialogue_understanding/commands/correct_slots_command.py,sha256=BEPhDRxibXtmgayrV2L6APVVMKdlIogj0FDrH5--BGI,11543
|
|
372
372
|
rasa/dialogue_understanding/commands/error_command.py,sha256=w4HMcwzEpLUirmFGXzY2Xu_ZVIdlYRONGOvjr1eod4Q,2428
|
|
373
373
|
rasa/dialogue_understanding/commands/free_form_answer_command.py,sha256=uvQj4IZDgB1MCpoZ7rV8jMf98M_M5ANpja5b4foQSt8,215
|
|
374
374
|
rasa/dialogue_understanding/commands/handle_code_change_command.py,sha256=pKaj8EsD4hw5Ity3bGMpwSb0ui3Fwi1S3XEFakUDP5Y,2184
|
|
@@ -420,7 +420,7 @@ rasa/dialogue_understanding/patterns/session_start.py,sha256=yglhIEkkquRf0YppZ4C
|
|
|
420
420
|
rasa/dialogue_understanding/patterns/skip_question.py,sha256=rvZuVUxulikwUhP01MAIgkcHZ4Si7mzxNedH6QBPdX4,1214
|
|
421
421
|
rasa/dialogue_understanding/patterns/user_silence.py,sha256=uwpCJRkRmeSvFDZQBZnEL4rumweF6mQ8ht_WqrTPVKU,1140
|
|
422
422
|
rasa/dialogue_understanding/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
423
|
-
rasa/dialogue_understanding/processor/command_processor.py,sha256=
|
|
423
|
+
rasa/dialogue_understanding/processor/command_processor.py,sha256=wW7s8a_D_KdOfLWeNOccGZLOggY07-LBfZuNDQQWna8,29496
|
|
424
424
|
rasa/dialogue_understanding/processor/command_processor_component.py,sha256=rkErI_Uo7s3LsEojUSGSRbWGyGaX7GtGOYSJn0V-TI4,1650
|
|
425
425
|
rasa/dialogue_understanding/stack/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
426
426
|
rasa/dialogue_understanding/stack/dialogue_stack.py,sha256=j8MnLCyv6cAZVpKRaUVM-Z5HqgWP-scrnaiQXzLNBwY,5243
|
|
@@ -430,7 +430,7 @@ rasa/dialogue_understanding/stack/frames/dialogue_stack_frame.py,sha256=rmG09a66
|
|
|
430
430
|
rasa/dialogue_understanding/stack/frames/flow_stack_frame.py,sha256=HRlR5YCkoOlI1DWCkgl_ak3YjFQEbmgwvzC16elkK54,5578
|
|
431
431
|
rasa/dialogue_understanding/stack/frames/pattern_frame.py,sha256=EVrYWv5dCP7XTvNV-HqtOOrseP-IkF0jD2_JacAvIYw,235
|
|
432
432
|
rasa/dialogue_understanding/stack/frames/search_frame.py,sha256=rJ9og28k_udUIjP-2Z5xeb_2T5HvCzwDCnxVG9K7lws,728
|
|
433
|
-
rasa/dialogue_understanding/stack/utils.py,sha256=
|
|
433
|
+
rasa/dialogue_understanding/stack/utils.py,sha256=w1p4aHGCQr-fb0B1npwSSJFDuqTJ0LCCl2SZws6sJPM,8328
|
|
434
434
|
rasa/e2e_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
435
435
|
rasa/e2e_test/aggregate_test_stats_calculator.py,sha256=XMI7t5xEP7Mo-F8cCCZx2w5ckUKa5sDvyitl6bk6hc8,4924
|
|
436
436
|
rasa/e2e_test/assertions.py,sha256=ofn2CbnW2wR3OZ3-PPmD_07YqlGQ_tWL1TSv95vxKy0,45428
|
|
@@ -782,9 +782,9 @@ rasa/utils/train_utils.py,sha256=f1NWpp5y6al0dzoQyyio4hc4Nf73DRoRSHDzEK6-C4E,212
|
|
|
782
782
|
rasa/utils/url_tools.py,sha256=JQcHL2aLqLHu82k7_d9imUoETCm2bmlHaDpOJ-dKqBc,1218
|
|
783
783
|
rasa/utils/yaml.py,sha256=KjbZq5C94ZP7Jdsw8bYYF7HASI6K4-C_kdHfrnPLpSI,2000
|
|
784
784
|
rasa/validator.py,sha256=O1wjCeV7ITJ0luvb3GCWy8x1fGgzWVbClEMlPnLBowQ,67265
|
|
785
|
-
rasa/version.py,sha256=
|
|
786
|
-
rasa_pro-3.11.
|
|
787
|
-
rasa_pro-3.11.
|
|
788
|
-
rasa_pro-3.11.
|
|
789
|
-
rasa_pro-3.11.
|
|
790
|
-
rasa_pro-3.11.
|
|
785
|
+
rasa/version.py,sha256=pmdere9Uxlv-iH9Zkey9rE9fLvCleo8Dv113M6CzMy0,118
|
|
786
|
+
rasa_pro-3.11.19.dist-info/METADATA,sha256=5NFTwELfaCiJSYY2jzOWNJK-_BGfmOp14Ire827htvw,10725
|
|
787
|
+
rasa_pro-3.11.19.dist-info/NOTICE,sha256=7HlBoMHJY9CL2GlYSfTQ-PZsVmLmVkYmMiPlTjhuCqA,218
|
|
788
|
+
rasa_pro-3.11.19.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
|
789
|
+
rasa_pro-3.11.19.dist-info/entry_points.txt,sha256=ckJ2SfEyTPgBqj_I6vm_tqY9dZF_LAPJZA335Xp0Q9U,43
|
|
790
|
+
rasa_pro-3.11.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|