dc6079821b
Docs Tests / Check for file changes (push) Has been cancelled
Docs Tests / Test Documentation (push) Has been cancelled
Docs Tests / Documentation Linting Checks (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.8, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.9, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.10, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.8, test-policies) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-performance) (push) Has been cancelled
Continuous Integration / Run Tests (windows-2022, 3.9, test-policies) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.10) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.8) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (ubuntu-24.04, 3.9) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.10) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.8) (push) Has been cancelled
Continuous Integration / Run Flaky Tests (windows-2022, 3.9) (push) Has been cancelled
Continuous Integration / Check for file changes (push) Has been cancelled
Continuous Integration / Wait for docs tests (push) Has been cancelled
Continuous Integration / Code Quality (push) Has been cancelled
Continuous Integration / Check for changelog (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-cli) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-core-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-full-model-training) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-nlu-featurizers) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-nlu-predictors) (push) Has been cancelled
Continuous Integration / Run Tests (ubuntu-24.04, 3.10, test-other-unit-tests) (push) Has been cancelled
Continuous Integration / Upload coverage reports to codeclimate (push) Has been cancelled
Continuous Integration / Run Non-Sequential Integration Tests (push) Has been cancelled
Continuous Integration / Run Broker Integration Tests (push) Has been cancelled
Continuous Integration / Run Sequential Integration Tests (push) Has been cancelled
Continuous Integration / Build Docker base images and setup environment (push) Has been cancelled
Continuous Integration / Build Docker (default) (push) Has been cancelled
Continuous Integration / Build Docker (full) (push) Has been cancelled
Continuous Integration / Build Docker (mitie-en) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-de) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-en) (push) Has been cancelled
Continuous Integration / Build Docker (spacy-it) (push) Has been cancelled
Continuous Integration / Deploy to PyPI (push) Has been cancelled
Continuous Integration / Notify Slack & Publish Release Notes (push) Has been cancelled
Publish Documentation / Evaluate release tag (push) Has been cancelled
Publish Documentation / Prebuild Docs (push) Has been cancelled
Publish Documentation / Preview Docs (push) Has been cancelled
Publish Documentation / Check for file changes (push) Has been cancelled
Publish Documentation / Publish Docs (push) Has been cancelled
Automatic PR Merger / mergepal (push) Has been cancelled
CI Github Actions / Run Tests (push) Has been cancelled
Semgrep / Semgrep Workflow Security Scan (push) Has been cancelled
111 lines
3.2 KiB
Python
111 lines
3.2 KiB
Python
from abc import ABC
|
|
from typing import List, TYPE_CHECKING
|
|
|
|
from rasa.core.actions.action import Action
|
|
from rasa.shared.core.events import Event, ActiveLoop
|
|
|
|
if TYPE_CHECKING:
|
|
from rasa.core.channels import OutputChannel
|
|
from rasa.shared.core.domain import Domain
|
|
from rasa.core.nlg import NaturalLanguageGenerator
|
|
from rasa.shared.core.trackers import DialogueStateTracker
|
|
|
|
|
|
class LoopAction(Action, ABC):
|
|
async def run(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
) -> List[Event]:
|
|
events: List[Event] = []
|
|
|
|
if not await self.is_activated(output_channel, nlg, tracker, domain):
|
|
events += await self._activate_loop(
|
|
output_channel,
|
|
nlg,
|
|
tracker,
|
|
domain,
|
|
)
|
|
|
|
if not await self.is_done(output_channel, nlg, tracker, domain, events):
|
|
events += await self.do(output_channel, nlg, tracker, domain, events)
|
|
|
|
if await self.is_done(output_channel, nlg, tracker, domain, events):
|
|
events += self._default_deactivation_events()
|
|
events += await self.deactivate(
|
|
output_channel, nlg, tracker, domain, events
|
|
)
|
|
|
|
return events
|
|
|
|
async def is_activated(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
) -> bool:
|
|
return tracker.active_loop_name == self.name()
|
|
|
|
# default implementation checks if form active
|
|
def _default_activation_events(self) -> List[Event]:
|
|
return [ActiveLoop(self.name())]
|
|
|
|
async def activate(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
) -> List[Event]:
|
|
# can be overwritten
|
|
return []
|
|
|
|
async def do(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
events_so_far: List[Event],
|
|
) -> List[Event]:
|
|
raise NotImplementedError()
|
|
|
|
async def is_done(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
events_so_far: List[Event],
|
|
) -> bool:
|
|
raise NotImplementedError()
|
|
|
|
def _default_deactivation_events(self) -> List[Event]:
|
|
return [ActiveLoop(None)]
|
|
|
|
async def deactivate(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
events_so_far: List[Event],
|
|
) -> List[Event]:
|
|
# can be overwritten
|
|
return []
|
|
|
|
async def _activate_loop(
|
|
self,
|
|
output_channel: "OutputChannel",
|
|
nlg: "NaturalLanguageGenerator",
|
|
tracker: "DialogueStateTracker",
|
|
domain: "Domain",
|
|
) -> List[Event]:
|
|
events = self._default_activation_events()
|
|
events += await self.activate(output_channel, nlg, tracker, domain)
|
|
|
|
return events
|