2929from .triggers import TriggerDetector
3030from .formatter import EventFormatter
3131
32+ from synapse_memory .plugins .interfaces import (
33+ ImportanceScorer ,
34+ ConflictResolver ,
35+ DedupStrategy ,
36+ )
37+ from synapse_memory .plugins .defaults import (
38+ DefaultImportanceScorer ,
39+ DefaultConflictResolver ,
40+ DefaultDedupStrategy ,
41+ )
42+ from synapse_memory .plugins .plugin_loader import load_pro_plugin
43+
3244logger = logging .getLogger ("synapse.autosave.engine" )
3345
3446
@@ -100,6 +112,11 @@ def __init__(
100112 formatter : Optional [EventFormatter ] = None ,
101113 cache_maxsize : int = 100 ,
102114 cache_ttl : float = 60.0 ,
115+ * ,
116+ importance_scorer : Optional [ImportanceScorer ] = None ,
117+ conflict_resolver : Optional [ConflictResolver ] = None ,
118+ dedup_strategy : Optional [DedupStrategy ] = None ,
119+ mode : Optional [str ] = None ,
103120 ) -> None :
104121 self ._db = database
105122 self ._redactor = redactor
@@ -108,6 +125,34 @@ def __init__(
108125 self ._formatter = formatter or EventFormatter ()
109126 self ._cache = _LRUCache (maxsize = cache_maxsize , ttl = cache_ttl )
110127
128+ # ── Plugin Architecture (OSS/PRO separation) ───────────────
129+ plugin = load_pro_plugin (mode = mode )
130+
131+ self .importance_scorer : ImportanceScorer = (
132+ importance_scorer
133+ or (plugin .importance_scorer if plugin else None )
134+ or DefaultImportanceScorer ()
135+ )
136+ self .conflict_resolver : ConflictResolver = (
137+ conflict_resolver
138+ or (plugin .conflict_resolver if plugin else None )
139+ or DefaultConflictResolver ()
140+ )
141+ self .dedup_strategy : DedupStrategy = (
142+ dedup_strategy
143+ or (plugin .dedup_strategy if plugin else None )
144+ or DefaultDedupStrategy ()
145+ )
146+
147+ self ._plugin_loaded = plugin is not None
148+ logger .info (
149+ "AutoSaveEngine initialized: plugin=%s, scorer=%s, resolver=%s, dedup=%s" ,
150+ "PRO" if self ._plugin_loaded else "OSS" ,
151+ type (self .importance_scorer ).__name__ ,
152+ type (self .conflict_resolver ).__name__ ,
153+ type (self .dedup_strategy ).__name__ ,
154+ )
155+
111156 # ── Public API ─────────────────────────────────────────────────────
112157
113158 def save (self , event : AutoSaveEvent ) -> SaveResult :
0 commit comments