Consider using the FeatureCollections concept for passing arbitrary "services" to an Agent or AgentThread
Supporting such a concept, would allow passing an override ChatMessageStore on a per run basis or passing an override per thread when creating a thread. Where a ChatMessageStore is not supported, the consumer agent/agentthread would simply ignore such a "service" in the FeatureCollection.