feat: wire L3 write path via Embedder into router
Introduces Embedder contract in core:inference with a NoopEmbedder default (zero vector) and wires both Embedder and L3MemoryStore into DefaultRouterFacade. Each ChatTurnEvent emission now embeds the turn content and writes a corresponding L3MemoryEntry, so cross-session memory is captured at the source of truth (the event emission point). InfrastructureModule defaults to NoopEmbedder + InMemoryL3MemoryStore so the system runs without an external embedding model or vector store wired. The TurboVec adapter stays unwired for now; switching to it is a configuration concern (Epic 12 config layer). Also gitignores apps/tui/logs/ (Kotlin TUI runtime logs, pre-Go rewrite).
This commit is contained in:
@@ -9,9 +9,11 @@ import com.correx.core.artifactstore.ArtifactStore
|
||||
import com.correx.core.events.EventDispatcher
|
||||
import com.correx.core.events.stores.EventStore
|
||||
import com.correx.core.inference.CapabilityScore
|
||||
import com.correx.core.inference.Embedder
|
||||
import com.correx.core.inference.InferenceProvider
|
||||
import com.correx.core.inference.InferenceRouter
|
||||
import com.correx.core.inference.ModelCapability
|
||||
import com.correx.core.inference.NoopEmbedder
|
||||
import com.correx.core.inference.Tokenizer
|
||||
import com.correx.core.router.DefaultRouterContextBuilder
|
||||
import com.correx.core.router.DefaultRouterFacade
|
||||
@@ -19,6 +21,8 @@ import com.correx.core.router.DefaultRouterReducer
|
||||
import com.correx.core.router.DefaultRouterRepository
|
||||
import com.correx.core.router.RouterFacade
|
||||
import com.correx.core.router.RouterProjector
|
||||
import com.correx.core.router.l3.InMemoryL3MemoryStore
|
||||
import com.correx.core.router.l3.L3MemoryStore
|
||||
import com.correx.core.router.model.RouterConfig
|
||||
import com.correx.core.sessions.projections.replay.DefaultEventReplayer
|
||||
import com.correx.core.tools.contract.ToolExecutor
|
||||
@@ -129,17 +133,23 @@ object InfrastructureModule {
|
||||
workDir = workDir,
|
||||
)
|
||||
|
||||
fun createNoopEmbedder(dimension: Int = 1536): Embedder = NoopEmbedder(dimension)
|
||||
|
||||
fun createInMemoryL3MemoryStore(): L3MemoryStore = InMemoryL3MemoryStore()
|
||||
|
||||
fun createRouterFacade(
|
||||
eventStore: EventStore,
|
||||
inferenceRouter: InferenceRouter,
|
||||
config: RouterConfig = RouterConfig(),
|
||||
tokenizer: Tokenizer? = null,
|
||||
embedder: Embedder = createNoopEmbedder(),
|
||||
l3MemoryStore: L3MemoryStore = createInMemoryL3MemoryStore(),
|
||||
): RouterFacade {
|
||||
val reducer = DefaultRouterReducer()
|
||||
val projector = RouterProjector(reducer)
|
||||
val replayer = DefaultEventReplayer(eventStore, projector)
|
||||
val repository = DefaultRouterRepository(replayer)
|
||||
val contextBuilder = DefaultRouterContextBuilder(config, tokenizer)
|
||||
return DefaultRouterFacade(repository, contextBuilder, inferenceRouter, eventStore, config)
|
||||
return DefaultRouterFacade(repository, contextBuilder, inferenceRouter, eventStore, config, null, embedder, l3MemoryStore)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user