Files
dify/api/services/dify_builder/agent_factory.py
T
Charles YaoandClaude Opus 4.8 7e83264330 refactor: rename Workflow Copilot → Dify Builder
Project rename across api/ + web/: modules, symbols, routes
(/console/api/dify-builder/*), feature flag (DIFY_BUILDER_ENABLED),
Celery queue/tasks, the 7 DB tables (via migration df1b0114de40),
and regenerated contract artifacts. Behavior unchanged; 430 tests green,
ruff clean. Branch renamed feat/copilot-py-backend → dify-builder.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-23 11:18:35 -07:00

30 lines
1.1 KiB
Python

"""Factory for the dify_builder's DifyBuilderAgent, the OSS↔enterprise split point.
OSS returns the canned PlaceholderAgent. Enterprise calls
``set_dify_builder_agent_factory`` at startup to inject a licensed ProAgent behind
the same ``core.dify_builder.ports.DifyBuilderAgent`` Protocol. The Celery
advance task calls ``build_dify_builder_agent()`` per run.
"""
from collections.abc import Callable
from core.dify_builder.placeholder_agent import PlaceholderAgent
from core.dify_builder.ports import DifyBuilderAgent
__all__ = ["build_dify_builder_agent", "set_dify_builder_agent_factory"]
_factory: Callable[[], DifyBuilderAgent] | None = None
def set_dify_builder_agent_factory(factory: Callable[[], DifyBuilderAgent] | None) -> None:
"""Install an override factory (enterprise ProAgent), or ``None`` to reset."""
global _factory
_factory = factory
def build_dify_builder_agent() -> DifyBuilderAgent:
"""Return the agent for one advance. Default: the OSS PlaceholderAgent."""
if _factory is not None:
return _factory()
return PlaceholderAgent()