refactor: unify skills+cli runtime and streamline ag-ui flow

This commit is contained in:
qzl
2026-04-22 17:09:37 +08:00
parent eeed737949
commit 4d55df45ab
111 changed files with 4858 additions and 3264 deletions
@@ -4,8 +4,8 @@ from uuid import uuid4
import pytest
from models.automation_jobs import AutomationJobStatus, ScheduleType
from schemas.agent.skill_config import SkillName
from schemas.domain.automation import (
AgentTool,
AutomationJobConfig,
ContextSource,
ContextWindowMode,
@@ -23,7 +23,7 @@ from v1.automation_jobs.schemas import (
def _make_config() -> AutomationJobConfig:
return AutomationJobConfig(
input_template="Hello",
enabled_tools=[AgentTool.MEMORY_WRITE],
enabled_skills=[SkillName.MEMORY],
context=MessageContextConfig(
source=ContextSource.LATEST_CHAT,
window_mode=ContextWindowMode.DAY,
@@ -119,7 +119,7 @@ async def test_update_merges_config_and_recomputes_next_run() -> None:
existing_job.timezone = "UTC"
existing_job.config = {
"input_template": "Old",
"enabled_tools": ["memory.write"],
"enabled_skills": ["memory"],
"context": {
"source": "latest_chat",
"window_mode": "day",
@@ -136,7 +136,7 @@ async def test_update_merges_config_and_recomputes_next_run() -> None:
data = AutomationJobUpdateRequest(
config=AutomationJobConfig(
enabled_tools=[AgentTool.MEMORY_WRITE, AgentTool.MEMORY_FORGET],
enabled_skills=[SkillName.MEMORY],
schedule=ScheduleConfig(
type=ScheduleType.WEEKLY,
run_at=ScheduleRunAt(hour=10, minute=30),
@@ -150,8 +150,8 @@ async def test_update_merges_config_and_recomputes_next_run() -> None:
update_values = repository.update_by_id.call_args[0][1]
assert "config" in update_values
assert "next_run_at" in update_values
enabled_tools = update_values["config"]["enabled_tools"]
assert isinstance(enabled_tools[0], str)
enabled_skills = update_values["config"]["enabled_skills"]
assert isinstance(enabled_skills[0], str)
@pytest.mark.asyncio
@@ -5,7 +5,7 @@ from uuid import uuid4
import pytest
from pydantic import ValidationError
from core.agentscope.tools.tool_config import AgentTool
from schemas.agent.skill_config import SkillName
from schemas.domain.automation import AutomationJobConfig
from v1.automation_jobs.schemas import (
AutomationJobCreateRequest,
@@ -22,7 +22,7 @@ def _mock_orm_job() -> MagicMock:
mock_orm_job.title = "Test Job"
mock_orm_job.config = {
"input_template": "Hello",
"enabled_tools": ["memory.write", "memory.forget"],
"enabled_skills": ["memory"],
"context": {
"source": "latest_chat",
"window_mode": "day",
@@ -74,7 +74,7 @@ def test_create_request_valid_timezone() -> None:
"timezone": "Asia/Shanghai",
"config": {
"input_template": "Hello",
"enabled_tools": ["memory.write"],
"enabled_skills": ["memory"],
"context": {
"source": "latest_chat",
"window_mode": "day",
@@ -102,7 +102,7 @@ def test_update_timezone_validation() -> None:
def test_config_patch_still_allows_partial_payload() -> None:
patch = AutomationJobConfig.model_validate(
{"enabled_tools": [AgentTool.MEMORY_WRITE]}
{"enabled_skills": [SkillName.MEMORY]}
)
assert patch.input_template is None
assert patch.enabled_tools == [AgentTool.MEMORY_WRITE]
assert patch.enabled_skills == [SkillName.MEMORY]
@@ -4,9 +4,18 @@ from uuid import UUID, uuid4
import pytest
from sqlalchemy.exc import SQLAlchemyError
from core.http.errors import ApiProblemError
from core.http.errors import ApiProblemError
from models.automation_jobs import AutomationJobStatus, ScheduleType
from schemas.agent.skill_config import SkillName
from schemas.domain.automation import (
AutomationJobConfig,
ContextSource,
ContextWindowMode,
MessageContextConfig,
ScheduleConfig,
ScheduleRunAt,
)
from v1.automation_jobs.service import (
AutomationJobLimitExceeded,
AutomationJobNotFound,
@@ -17,21 +26,12 @@ from v1.automation_jobs.schemas import (
AutomationJobCreateRequest,
AutomationJobUpdateRequest,
)
from schemas.domain.automation import (
AgentTool,
AutomationJobConfig,
ContextSource,
ContextWindowMode,
MessageContextConfig,
ScheduleConfig,
ScheduleRunAt,
)
def _make_config() -> AutomationJobConfig:
return AutomationJobConfig(
input_template="Hello",
enabled_tools=[AgentTool.MEMORY_WRITE],
enabled_skills=[SkillName.MEMORY],
context=MessageContextConfig(
source=ContextSource.LATEST_CHAT,
window_mode=ContextWindowMode.DAY,
@@ -65,7 +65,7 @@ def _make_job(
job.status = AutomationJobStatus.ACTIVE
job.config = {
"input_template": "Hello",
"enabled_tools": ["memory.write"],
"enabled_skills": ["memory"],
"context": {
"source": "latest_chat",
"window_mode": "day",