- Expanded package inclusion in `pyproject.toml` to support new modules. - Introduced new `adapters` and `protocol` packages for better organization. - Added backend adapter implementations for control plane integration. - Updated main application imports to reflect new package structure. - Removed deprecated core components and adjusted documentation accordingly. - Enhanced architecture documentation to clarify the new runtime and integration layers.
133 lines
3.8 KiB
Python
133 lines
3.8 KiB
Python
from runtime.session.manager import Session
|
|
|
|
|
|
def _session() -> Session:
|
|
# Skip heavyweight runtime initialization (VAD model, services, transport).
|
|
return Session.__new__(Session)
|
|
|
|
|
|
def test_apply_dynamic_variables_substitutes_prompt_and_greeting():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Hello {{customer_name}}, plan={{plan_tier}}.",
|
|
"greeting": "Hi {{customer_name}}",
|
|
}
|
|
client_metadata = {
|
|
"dynamicVariables": {
|
|
"customer_name": "Alice",
|
|
"plan_tier": "Pro",
|
|
}
|
|
}
|
|
|
|
resolved, error = session._apply_dynamic_variables(metadata, client_metadata)
|
|
|
|
assert error is None
|
|
assert resolved["systemPrompt"] == "Hello Alice, plan=Pro."
|
|
assert resolved["greeting"] == "Hi Alice"
|
|
|
|
|
|
def test_apply_dynamic_variables_missing_value_rejects_session_start():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Hello {{customer_name}}",
|
|
"greeting": "Plan {{plan_tier}}",
|
|
}
|
|
client_metadata = {
|
|
"dynamicVariables": {
|
|
"customer_name": "Alice",
|
|
}
|
|
}
|
|
|
|
_, error = session._apply_dynamic_variables(metadata, client_metadata)
|
|
|
|
assert error is not None
|
|
assert error["code"] == "protocol.dynamic_variables_missing"
|
|
assert "plan_tier" in error["message"]
|
|
|
|
|
|
def test_apply_dynamic_variables_requires_string_values():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Hello {{customer_name}}",
|
|
"greeting": "Hi",
|
|
}
|
|
client_metadata = {
|
|
"dynamicVariables": {
|
|
"customer_name": 123,
|
|
}
|
|
}
|
|
|
|
_, error = session._apply_dynamic_variables(metadata, client_metadata)
|
|
|
|
assert error is not None
|
|
assert error["code"] == "protocol.dynamic_variables_invalid"
|
|
assert "must be a string" in error["message"]
|
|
|
|
|
|
def test_apply_dynamic_variables_missing_object_rejects_when_template_uses_placeholders():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Hello {{customer_name}}",
|
|
"greeting": "Hi",
|
|
}
|
|
|
|
_, error = session._apply_dynamic_variables(metadata, {})
|
|
|
|
assert error is not None
|
|
assert error["code"] == "protocol.dynamic_variables_missing"
|
|
assert "customer_name" in error["message"]
|
|
|
|
|
|
def test_apply_dynamic_variables_no_placeholder_keeps_metadata():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Hello there",
|
|
"greeting": "Hi",
|
|
}
|
|
client_metadata = {
|
|
"dynamicVariables": {
|
|
"customer_name": "Alice",
|
|
}
|
|
}
|
|
|
|
resolved, error = session._apply_dynamic_variables(metadata, client_metadata)
|
|
|
|
assert error is None
|
|
assert resolved == metadata
|
|
|
|
|
|
def test_apply_dynamic_variables_supports_system_time_variables_without_client_payload():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Now={{system__time}} utc={{system_utc}} tz={{system_timezone}}",
|
|
"greeting": "Clock {{system__time}}",
|
|
}
|
|
|
|
resolved, error = session._apply_dynamic_variables(metadata, {})
|
|
|
|
assert error is None
|
|
assert "{{system__time}}" not in resolved["systemPrompt"]
|
|
assert "{{system_utc}}" not in resolved["systemPrompt"]
|
|
assert "{{system_timezone}}" not in resolved["systemPrompt"]
|
|
assert "{{system__time}}" not in resolved["greeting"]
|
|
|
|
|
|
def test_apply_dynamic_variables_keeps_system_variables_reserved():
|
|
session = _session()
|
|
metadata = {
|
|
"systemPrompt": "Clock={{system__time}} Name={{customer_name}}",
|
|
"greeting": "Hi {{customer_name}}",
|
|
}
|
|
client_metadata = {
|
|
"dynamicVariables": {
|
|
"system__time": "manual_override",
|
|
"customer_name": "Alice",
|
|
}
|
|
}
|
|
|
|
resolved, error = session._apply_dynamic_variables(metadata, client_metadata)
|
|
|
|
assert error is None
|
|
assert "manual_override" not in resolved["systemPrompt"]
|
|
assert "Alice" in resolved["systemPrompt"]
|