All notable changes to this project are documented in this file. The format follows Keep a Changelog, and the project follows Semantic Versioning.
[1.0.0] - 2026-11-06
The first public release.
Added
RecursiveAI.OneLlm(core; depends on the .NET base library, OneYaml and OneImage):- Provider clients for Anthropic Messages, OpenAI (Responses; Chat Completions for compatible servers) and Gemini
generateContent: chat, streaming, client and hosted tools, structured output, reasoning replay, caching, token counting, batch and embeddings. OpenAI Decisions and TypeSafe Jev for deciders. OpenAI-compatible presets for Ollama, vLLM, LM Studio, OpenRouter, Groq, DeepSeek, xAI, Mistral and Together. - Deployments: Azure OpenAI / Foundry, Amazon Bedrock (SigV4 and the event stream) and Vertex AI (service-account JWT) for Claude and Gemini. See
docs/deployments.md. - Image generation, text-to-speech, transcription and moderation clients, each with a costed built-in tool.
- One turn-shaped message model with a closed part union. Stream events build the same message a whole call returns, and unknown fields are kept as extension data.
- A layered model catalog in
llm-provider.yamlform (shipped files, then user files, then code), withdecimalline-item pricing,asOfdates and source URLs. - Three-tier token counting that reports its tier.
- Typed errors, retries that honour
Retry-After, andSecretscrubbing. - Prompt templates in the Go
text/templatelanguage, with a documented function set, cached parse trees and positioned errors. Known differences from Go are listed indocs/templating.md. Runtimeand theLlmhappy path: ask, typed ask, streaming, embeddings, chat, scripted runs, agents and deciders. Every run is an instance with cost, records and telemetry.- A scripted provider for tests (
OneLlm.Testing). - Agents:
- the tool loop, with parallel calls returned in call order;
- persisted approvals, steering and sub-agents;
- monitors and context strategies;
- C# hooks.
- Tools: the
IToolcontract and the[Tool]source generator. The signature-to-JSON-Schema table is indocs/tool-schemas.md. - Built-in tools for files, shell, web, agents, judgment, media and working state. They run under a host-granted capability model (file roots, shell, network egress). A definition never grants a capability.
- Deciders:
decider.yamldefinitions, with three engines chosen through the catalog;forEachand budget splitting, typed refusals, and input and output schema checks;- runs with replay, list and statistics;
- C# deciders with generated typed answers (
[Decider]), andLlm.DecideAsync.
- Instance stores (file, memory) and record sinks (JSONL, events). OpenTelemetry GenAI spans and metrics.
- Provider clients for Anthropic Messages, OpenAI (Responses; Chat Completions for compatible servers) and Gemini
RecursiveAI.OneLlm.JavaScript(on OneEcma 1.1.1):- Covers JavaScript tool files, the
run_javascriptbuilt-in, JavaScript hooks, and decider logic indecider.jsordecider.ts(types erased in place, errors pointing into the.tsfile). - Everything runs in a sandbox with fuel, allocation, wall-clock and string limits, per-run quotas, and a shared limiter that keeps capacity for hooks and decider logic. See
docs/javascript.md.
- Covers JavaScript tool files, the
RecursiveAI.OneLlm.Web:fetch_webpage_markdown, on OneHtml.RecursiveAI.OneLlm.Extensions.AI: the Microsoft.Extensions.AI bridge, in both directions.- OneLLM models as
IChatClient,IEmbeddingGenerator,ISpeechToTextClient,ITextToSpeechClientandIImageGenerator, with usage and cost inAdditionalProperties. - Any
IChatClientor embedding generator as a OneLLM provider. AIFunctionandIToolin both directions.
- OneLLM models as
RecursiveAI.OneLlm.EntityFrameworkCoreandRecursiveAI.OneLlm.OneLite: an instance store and a record sink each.RecursiveAI.OneLlm.Cli: theonellmtool, withrun,chat,instances,cost,catalogandexamples. Grants are given as explicit flags. It embeds eight example agents.- Documentation: getting started; per-feature guides; the "reads like" tables (
docs/reads-like.md); per-package readmes; and a results page (docs/results.md) with the speed, conformance, parity, AOT and live-run results and their method.
Security
- The capability model and the JavaScript sandbox were each reviewed before this release, and every finding is closed or documented in
docs/capabilities.mdanddocs/javascript.md. Those pages also list what the model does not protect against, for example hard links, and an allow-listed program that can itself run arbitrary commands. - With
giton the shell allow-list, either directly, behind a launcher, or through a git front end, git configuration and hook files are refused to the file tools.