Scaffolded the package and brought up the whole core in a single day: messages and runnables, provider adapters for OpenAI, Anthropic, Ollama, and Google Gemini, then prompts, output parsers, document loaders, text splitters, vector stores, retrievers, incremental indexing, memory, a tool-calling agent loop, and a state graph for cyclic workflows.
That sounds like a lot for one push, and it was, but it is mostly a faithful Swift port of the LangChain shape, so the design work was deciding what to keep rather than inventing from scratch.
The parts I most wanted were there from the first commit: streaming, tool calling, and streaming JSON output parsers with self-fixing wrappers. Those are exactly the pieces every previous project had been re-implementing by hand.