"""ADK App + Runner 조립. - App 기반으로 Runner를 초기화한다 (agent 직접 전달은 레거시 패턴 — 금지) - 횡종단 관심사(턴 로깅)는 Plugin으로 등록한다 """ from __future__ import annotations from google.adk.apps import App from google.adk.plugins import BasePlugin from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from engine.agent import create_pocket_pipeline from engine.repositories.content import ContentRepository APP_NAME = "carmilla_pocket" def build_app(repo: ContentRepository | None = None, plugins: list[BasePlugin] | None = None, character_model=None, director_model=None) -> App: return App( name=APP_NAME, root_agent=create_pocket_pipeline(repo, character_model, director_model), plugins=plugins or [], ) def build_runner(app: App, session_service: InMemorySessionService | None = None) -> Runner: return Runner(app=app, session_service=session_service or InMemorySessionService())