be3df525d8
server/scenarios/schema.py defines the typed model: Scenario (id, path, market, language, title, difficulty, failure_mode, persona, setup, success_criteria, common_mistakes, branches[], debrief) + Branch (id, trigger.learner_signals, outcome, failure_mode, debrief_focus) + ScenarioDebrief (model=deepseek-v4-flash:cloud, mode=no_think, D-020). failure_mode field present per D-009. server/scenarios/loader.py loads YAML → Pydantic, validates at load time, raises typed ValidationError on bad input. scenarios/customer_service_refund_ca_v01.yaml — the v0.1 Canada Customer Service scenario (D-010): 'Angry customer requesting refund on a damaged product', one branch point (accept_resolution vs escalate), failure_mode=escalates_unresolved, success criteria, common mistakes, debrief config. Matches the RESEARCH.md example. 5 unit tests pass (valid parse, invalid raises typed error, branch outcome Literal, branch_by_id, real YAML load). load() returns a valid Scenario with both branches. ---ci--- phase: 1 milestone: v0.1 plan: 03 task: 03-01,03-02 status: execute persona: data-engineer requirements: covered: [REQ-SCEN-01, REQ-SCEN-FMT-01] ---/ci---
24 lines
482 B
Python
24 lines
482 B
Python
"""Scenario runtime package — YAML → Pydantic → Pipecat Flows (D-018)."""
|
|
|
|
from server.scenarios.schema import (
|
|
Branch,
|
|
BranchTrigger,
|
|
Scenario,
|
|
ScenarioDebrief,
|
|
ScenarioPersona,
|
|
ScenarioSetup,
|
|
ValidationError,
|
|
)
|
|
from server.scenarios.loader import load, load_all
|
|
|
|
__all__ = [
|
|
"Scenario",
|
|
"ScenarioPersona",
|
|
"ScenarioSetup",
|
|
"Branch",
|
|
"BranchTrigger",
|
|
"ScenarioDebrief",
|
|
"ValidationError",
|
|
"load",
|
|
"load_all",
|
|
] |