refactor: remove legacy assistant compatibility
This commit is contained in:
@@ -5,7 +5,7 @@ from types import SimpleNamespace
|
||||
|
||||
from models import AssistantConfig
|
||||
from services.brains.base import RealtimeBrainRuntime
|
||||
from services.node_specs import normalize_graph, validate_graph
|
||||
from services.node_specs import validate_graph
|
||||
from services.vision import (
|
||||
VISION_SYSTEM_HINT,
|
||||
resolve_vision_question,
|
||||
@@ -16,6 +16,35 @@ from services.workflow_engine import WorkflowEngine
|
||||
from services.workflow.realtime import WorkflowRealtimeController
|
||||
|
||||
|
||||
def workflow_settings(**overrides):
|
||||
settings = {
|
||||
"runtimeMode": "pipeline",
|
||||
"llmRoutingMode": "llm_router",
|
||||
"globalPrompt": "",
|
||||
"defaultRealtimeResourceId": "",
|
||||
"defaultLlmResourceId": "",
|
||||
"defaultAsrResourceId": "",
|
||||
"defaultTtsResourceId": "",
|
||||
"visionEnabled": False,
|
||||
"visionModelResourceId": "",
|
||||
"visionPromptMode": "runtime",
|
||||
"visionPrompt": "",
|
||||
"toolBindings": [],
|
||||
"builtInTools": {},
|
||||
"knowledgeBaseId": "",
|
||||
"knowledgeMode": "disabled",
|
||||
"knowledgeTopN": 5,
|
||||
"knowledgeScoreThreshold": 0.0,
|
||||
"enableInterrupt": True,
|
||||
"turnConfig": {
|
||||
"bargeIn": {"strategy": "vad"},
|
||||
"turnDetection": {"strategy": "smart_turn"},
|
||||
},
|
||||
}
|
||||
settings.update(overrides)
|
||||
return settings
|
||||
|
||||
|
||||
class VisionPromptModeTest(unittest.TestCase):
|
||||
def test_fixed_mode_has_no_runtime_question_parameter(self):
|
||||
description, properties, required = vision_tool_schema_parts(
|
||||
@@ -80,12 +109,14 @@ class VisionPromptModeTest(unittest.TestCase):
|
||||
class WorkflowVisionPromptModeTest(unittest.TestCase):
|
||||
def test_workflow_resolves_global_and_node_modes(self):
|
||||
graph = {
|
||||
"specVersion": 3,
|
||||
"settings": {
|
||||
"visionEnabled": True,
|
||||
"visionPromptMode": "fixed",
|
||||
"visionPrompt": "全局固定问题",
|
||||
},
|
||||
"specVersion": 4,
|
||||
"settings": workflow_settings(
|
||||
**{
|
||||
"visionEnabled": True,
|
||||
"visionPromptMode": "fixed",
|
||||
"visionPrompt": "全局固定问题",
|
||||
}
|
||||
),
|
||||
"nodes": [
|
||||
{
|
||||
"id": "global-agent",
|
||||
@@ -116,36 +147,37 @@ class WorkflowVisionPromptModeTest(unittest.TestCase):
|
||||
self.assertEqual(custom_stage.vision_prompt_mode, "guided")
|
||||
self.assertEqual(custom_stage.vision_prompt, "节点引导")
|
||||
|
||||
def test_legacy_focus_is_migrated_to_guided_mode(self):
|
||||
normalized = normalize_graph(
|
||||
{
|
||||
"specVersion": 3,
|
||||
"settings": {"visionFocusPrompt": "旧全局关注目标"},
|
||||
"nodes": [],
|
||||
"edges": [],
|
||||
}
|
||||
)
|
||||
|
||||
self.assertEqual(normalized["settings"]["visionPromptMode"], "guided")
|
||||
self.assertEqual(normalized["settings"]["visionPrompt"], "旧全局关注目标")
|
||||
self.assertNotIn("visionFocusPrompt", normalized["settings"])
|
||||
|
||||
def test_fixed_or_guided_mode_requires_prompt_when_vision_is_enabled(self):
|
||||
graph = {
|
||||
"specVersion": 3,
|
||||
"settings": {
|
||||
"visionEnabled": True,
|
||||
"visionPromptMode": "fixed",
|
||||
"visionPrompt": "",
|
||||
},
|
||||
"specVersion": 4,
|
||||
"settings": workflow_settings(
|
||||
**{
|
||||
"visionEnabled": True,
|
||||
"visionPromptMode": "fixed",
|
||||
"visionPrompt": "",
|
||||
}
|
||||
),
|
||||
"nodes": [
|
||||
{"id": "start", "type": "start", "data": {}},
|
||||
{
|
||||
"id": "agent",
|
||||
"type": "agent",
|
||||
"data": {"name": "Agent", "prompt": "处理任务"},
|
||||
"data": {
|
||||
"name": "Agent",
|
||||
"prompt": "处理任务",
|
||||
"inheritGlobalConfig": True,
|
||||
"entryMode": "wait_user",
|
||||
},
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "begin",
|
||||
"source": "start",
|
||||
"target": "agent",
|
||||
"data": {"mode": "always", "priority": 0},
|
||||
}
|
||||
],
|
||||
"edges": [],
|
||||
}
|
||||
|
||||
self.assertTrue(
|
||||
@@ -154,16 +186,29 @@ class WorkflowVisionPromptModeTest(unittest.TestCase):
|
||||
|
||||
def test_invalid_mode_is_reported_instead_of_silently_rewritten(self):
|
||||
graph = {
|
||||
"specVersion": 3,
|
||||
"settings": {"visionPromptMode": "unexpected"},
|
||||
"specVersion": 4,
|
||||
"settings": workflow_settings(visionPromptMode="unexpected"),
|
||||
"nodes": [
|
||||
{"id": "start", "type": "start", "data": {}},
|
||||
{
|
||||
"id": "agent",
|
||||
"type": "agent",
|
||||
"data": {"name": "Agent", "prompt": "处理任务"},
|
||||
"data": {
|
||||
"name": "Agent",
|
||||
"prompt": "处理任务",
|
||||
"inheritGlobalConfig": True,
|
||||
"entryMode": "wait_user",
|
||||
},
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"id": "begin",
|
||||
"source": "start",
|
||||
"target": "agent",
|
||||
"data": {"mode": "always", "priority": 0},
|
||||
}
|
||||
],
|
||||
"edges": [],
|
||||
}
|
||||
|
||||
self.assertTrue(
|
||||
@@ -172,8 +217,8 @@ class WorkflowVisionPromptModeTest(unittest.TestCase):
|
||||
|
||||
def test_realtime_tool_contract_changes_with_mode(self):
|
||||
graph = {
|
||||
"specVersion": 3,
|
||||
"settings": {},
|
||||
"specVersion": 4,
|
||||
"settings": workflow_settings(),
|
||||
"nodes": [
|
||||
{
|
||||
"id": "fixed-agent",
|
||||
|
||||
Reference in New Issue
Block a user