How building an LLM prompt SDK led us to typesafe ClickHouse queries