diff --git a/packages/opencode/src/sync/index.ts b/packages/opencode/src/sync/index.ts index 0a143c2ebd..d5bca45b16 100644 --- a/packages/opencode/src/sync/index.ts +++ b/packages/opencode/src/sync/index.ts @@ -214,7 +214,7 @@ export const defaultLayer = layer.pipe(Layer.provide(RuntimeFlags.defaultLayer)) export const use = serviceUse(Service) export const registry = new Map() -let projectors: Map | undefined +let projectors: Map | undefined const versions = new Map() let frozen = false let convertEvent: ConvertEvent @@ -226,7 +226,7 @@ export function reset() { } export function init(input: { projectors: Array<[Definition, ProjectorFunc]>; convertEvent?: ConvertEvent }) { - projectors = new Map(input.projectors) + projectors = new Map(input.projectors.map(([def, func]) => [versionedType(def.type, def.version), func])) for (let entry of EventV2.registry.values()) { if (!entry.version || !entry.aggregate) continue register({ @@ -309,7 +309,7 @@ function process( throw new Error("No projectors available. Call `SyncEvent.init` to install projectors") } - const projector = projectors.get(def) + const projector = projectors.get(versionedType(def.type, def.version)) if (!projector) { if (!def.type.includes("next")) throw new Error(`Projector not found for event: ${def.type}`) return