from sqlmodel import Session, SQLModel, create_engine, select from app.agents.default_composer import resolve_composer_agent from app.agents.snapshot import freeze_stage_snapshot from app.models import Agent def test_composer_is_available_without_a_resource_or_canvas(): engine = create_engine("sqlite://") SQLModel.metadata.create_all(engine) with Session(engine) as session: composer = resolve_composer_agent(session) assert composer.id == 0 assert composer.role == "composer" assert composer.rules assert session.exec(select(Agent)).all() == [] assert freeze_stage_snapshot(session)["composer"]["role"] == "composer" def test_composer_does_not_use_another_users_private_agent(): engine = create_engine("sqlite://") SQLModel.metadata.create_all(engine) with Session(engine) as session: session.add(Agent(name="私人组合", role="composer", owner_user_id=12, visibility="private", rules="private rules")) session.commit() assert resolve_composer_agent(session).id == 0 def test_existing_system_configuration_is_preserved(): engine = create_engine("sqlite://") SQLModel.metadata.create_all(engine) with Session(engine) as session: configured = Agent(name="组合 Agent", role="composer", builtin=True, rules="configured rules") session.add(configured) session.commit() assert resolve_composer_agent(session).id == configured.id configured.status = "disabled" session.add(configured) session.commit() assert resolve_composer_agent(session).id == 0