LM-Kit.NET Versioni

Scopri le novità in ogni release, con dettagli su funzionalità, miglioramenti e problemi risolti.

gen
feb
mar
apr
mag
giu
lug
ago
set
ott
nov
dic
LM-Kit.NET 2026.8.27 ago 2026
Funzionalità
  • Markup-free embedding view as one public call (SemanticChunkQualityGate.NormalizeForEmbedding): Returns exactly the normalized text the chunk quality gate scores and embeds - HTML tags and entities, markdown markers, table rails, link URLs and over-long tokens removed - so any embedding pipeline can guarantee markup never reaches the model.
  • Structured extraction of content larger than the context window (TextExtraction.OverflowStrategy): OverflowResolutionStrategy.Segment splits the content into overlapping context-sized windows, runs one extraction pass per window in sequence, and folds the answers into the single object the schema describes. List fields hold the union of every window's items with duplicates removed, and single-value fields hold the first window that reported a value.
  • Windowed extraction now covers images and PDFs, not just text: A scanned or image-based document too large for one pass is packed into windows by measured per-page cost rather than page count, so dense and light pages are budgeted correctly. When a page is too costly to fit even on its own, its image detail steps down until the plan fits instead of the extraction being refused.
  • Windowed extraction stops once the schema is complete (TextExtraction.StopWhenAllFieldsFound, on by default): Windows are read in document order and a single-value field keeps the first window that answered it, so once every field has an answer the remaining windows cannot change the result and are skipped. For a long document whose fields sit near the front, the usual shape of forms, invoices and contracts, this turns dozens of inference passes into one. A schema containing a list field at any depth always reads every window, since a later one can still contribute an item.
  • Oversize content is refused by default (OverflowResolutionStrategy.Reject): Extraction raises NotEnoughContextSizeException with the required and available token counts instead of quietly spending one inference pass per window. Windowing is opt-in, so a large document cannot crowd out the rest of the workload unless the caller asks for it.
Correzioni
  • Image embedding and background removal models now load from the released package: nomic-embed-vision, U2Net and ModNet failed with "ONNX model family ... is not supported" because the family recorded in the .lmk archive no longer matched the shipped build.
  • Windowed extraction no longer stops at the first window: Named entity recognition and PII detection split inputs larger than the context into several windows, but only the first window's entities reached the caller. Every window now contributes to the returned result.
  • Windows now overlap at their seams: A record straddling a window boundary was read partially in both windows and correctly in neither. Each window re-shows the tail of its predecessor, and the duplicates that produces are removed when the windows are folded together.
  • Confidence and review triage now work on windowed extractions: Every element of a folded result reports the confidence of the window that produced it, so TextExtractionResultElement.Confidence and HumanVerificationRequired are meaningful again. A single-value field that two windows read differently keeps only a fraction of that confidence, so a contested value surfaces for review instead of being settled silently by the first window to answer.
LM-Kit.NET 2026.8.1Versione principale2 ago 2026
Funzionalità
  • Shared slot pool inference scheduling (Configuration.InferenceScheduling, Configuration.SharedSlotPool): A new scheduling strategy that allocates one fixed-shape context per model and divides it into slots that decode together, so throughput scales with the slot count and the memory footprint is known before the first request. SharedSlotPoolOptions controls SlotCount, SlotContextSize, the saturation policy (Queue or Reject, which throws SlotPoolSaturatedException), and allocation timing. The default strategy remains PerRequestContext.
  • Per-model slot pool shape (LM.SharedSlotPool): A loaded model can now depart from the process-wide pool shape, so one long-context model can be given a wider window without paying for it on every model, and a large model can be given fewer slots so it still fits its device. Every value left unset is inherited live from Configuration.SharedSlotPool (SlotCountOverride and SlotContextSizeOverride are the tri-state view, where null means inherit). A change applies on the model's next request, and the device memory ceiling governs it exactly as it governs the process-wide shape.
  • Idle conversations no longer consume device memory (Configuration.EnableSessionStateOffload, on by default): Idle conversation state leaves device memory and resumes transparently on the next turn, so many more conversations can stay active at once.
  • New sampling controls: Top-A, Epsilon cutoff, Eta cutoff, Top-N-Sigma, quadratic smoothing, and Exclude Top Choices (XTC) join the RandomSampling chain.
  • Adaptive-P sampling (LMKit.TextGeneration.Sampling.AdaptivePSampling): Targets a steady confidence level instead of a fixed distribution shape, keeping long completions consistent.
  • Sequence-aware repetition control, DRY (RepetitionPenalty.NgramPenaltyMultiplier, RepetitionPenalty.NoRepeatNgramSize): Penalizes repeated sequences rather than repeated tokens, with an optional hard n-gram block for output that must never repeat.
  • Added model card for infinity-parser2-flash: INF Tech Infinity-Parser2-Flash, a compact 2B vision-language model for low-latency document parsing. VlmOcr drives its native tasks: Markdown transcription, table extraction (HTML), formula extraction (LaTeX), chart-to-table conversion, and layout extraction.
  • New VlmOcrIntent.LayoutAnalysis intent: Extracts the full page structure as positioned, categorized regions. Each region's layout category is exposed through the new TextElement.Category property (LayoutElementCategory: title, text, table, formula, figure, captions, footnotes, header, footer), figures keep their bounding box, and the machine-readable JSON payload is surfaced through VlmOcrResult.NormalizedText. Supported by infinity-parser2-flash.
  • Up to 4x more throughput under concurrent load.
  • Faster sampling and structured data extraction.
  • Better multi-turn conversation performance under load.
  • API Changes - Configuration.InferenceMemoryRatio replaces Configuration.MaxCachedContextMemoryRatio (now obsolete): one per-device budget for standing inference state (slot pools and cached contexts together).
Correzioni
  • DeviceConfiguration.GetOptimalContextSize is now scheduling-aware: under InferenceScheduling.SharedSlotPool it returns the pool's per-slot serving window, so components such as TextExtraction and DocumentSplitting no longer reject documents the pool would have served.
  • Measured context sizing now survives architectures with non-monotonic memory curves (for example hybrid-recurrent models such as IBM Granite 4.0-H): previously such models fell back to a formula that overpriced them by more than an order of magnitude and shrank context recommendations to the floor.
LM-Kit.NET 2026.7.422 lug 2026
Funzionalità
  • PDF redaction (LMKit.Document.Pdf.PdfRedactor): Permanently removes content from PDFs (text glyphs, image pixels, vector graphics, annotations, Form XObject content) by search term, page area, or /Redact annotation. Removed content is unrecoverable.
  • Smart redaction: Combine on-device PII detection (LMKit.TextAnalysis.PiiExtraction) with PdfRedactor to detect, review, and permanently remove sensitive data from PDFs. Added a new smart_pii_redaction sample.
  • Added Windows Icon (ICO / CUR) image decoding.
  • Added AVIF (AV1 image) decoding.
  • Embedding provider abstraction (LMKit.Abstractions.IEmbedder): Pluggable embedding backends across RAG and other consumers, with EmbedderBase for writing a custom provider in a single method. The LM-based RagEngine constructors are now obsolete; wrap a local model with new Embedder(model).
  • Amazon Bedrock embeddings (LMKit.Integrations.Aws.Embeddings.BedrockEmbedder): Use Amazon Titan and Cohere embedding models via AWS Bedrock as an IEmbedder.
  • Microsoft.Extensions.AI embeddings: Use any IEmbeddingGenerator as an IEmbedder via ExtensionsAIEmbedder / AsEmbedder().
LM-Kit.NET 2026.7.317 lug 2026
Funzionalità
  • Added support for the Microsoft Harrier OSS embedding model.
  • Added model card for harrier-oss:0.6b.
Correzioni
  • Fixed a fatal process crash when undisposed PdfChat instances were garbage collected.
LM-Kit.NET 2026.7.29 lug 2026
Funzionalità
  • Added support for PDF to PDF/A conversion (LMKit.Document.Pdf.PdfAConverter): converts existing PDFs to PDF/A-1b, 2b or 3b (ISO 19005).
  • Semantic chunk quality gate (LMKit.Retrieval.ChunkQuality): Added new public SemanticChunkQualityGate which scores chunks before embedding generation with rejection support.
LM-Kit.NET 2026.7.1Versione principale1 lug 2026
Funzionalità
  • Improved inference speed.
  • Improved Document to Markdown converter accuracy and speed.
  • Improved Categorization engine with EML files.
LM-Kit.NET 2026.6.422 giu 2026
Funzionalità
  • Made context hibernation improvements.
  • Improved inference speed
  • Added KV Cache quantization support. Introduced new property 'Configuration.EnableKVCacheQuantization'.
LM-Kit.NET 2026.6.315 giu 2026
Funzionalità
  • Improved inference speed.
  • Improved overall extraction accuracy.
LM-Kit.NET 2026.6.29 giu 2026
Funzionalità
  • Improved inference speed with structured content extraction with MTP and draft models.
LM-Kit.NET 2026.6.1Versione principale8 giu 2026
Funzionalità
  • Added a model card for gemma4:12b: Google Gemma 4 11.9B dense model with 256K context, hybrid sliding/global attention, vision, tool calling, math, coding, and reasoning support. gemma4:12b is now the replacement model for the deprecated gemma3:12b.
  • Added draft model support. Introduced a new 'LM.DraftModel' property.
  • Improved inference speed.
LM-Kit.NET 2026.5.631 mag 2026
Funzionalità
  • Added model card for paddleocr-vl-1.6:0.9b: PaddleOCR-VL 1.6, an ultra-compact 0.9B vision-language model for document parsing (OCR, tables, formulas, charts, text spotting, seals, layout analysis), reaching 96.33% on OmniDocBench v1.6 (state of the art). Architecturally compatible with 1.5 for drop-in migration. The paddleocr-vl:0.9b model card is now deprecated in favor of paddleocr-vl-1.6:0.9b.
  • Added PostgreSQL pgvector integration (LM-Kit.NET.Data.Connectors.PgVector): a new PgVectorEmbeddingStore that implements IVectorStore on top of PostgreSQL with the pgvector extension, joining the existing Qdrant connector as a backend for embedding storage, semantic memory, and RAG. Each collection maps to a table (id text primary key, embedding vector(N), metadata jsonb); similarity search uses cosine distance (<=>) and returns cosine-similarity scores. The store is thread-safe (pooled NpgsqlDataSource) and can be constructed from a connection string or an existing data source, with an optional schema. A static PgVectorEmbeddingStore.EnsureDatabaseExistsAsync(...) helper creates the target database on demand, and the connector auto-provisions the vector extension, schema, tables, and metadata indexes on first use.
LM-Kit.NET 2026.5.528 mag 2026
Funzionalità
  • Context hibernation policy (HibernationMode, IKVCache, Configuration, MultiTurnConversation, PdfChat, RagChat, AgentExecutor): new HibernationMode enum (Auto, None, Forced), per-conversation IKVCache.HibernationMode get/set property on every multi-turn conversation type, and a process-wide Configuration.DefaultContextHibernationMode that seeds the value on every new conversation. In Forced mode the runtime hibernates the KV-cache to disk in the background at the end of every turn; the caller returns immediately and the next turn rehydrates transparently. None keeps the context resident. Auto is the default, reserved for runtime-driven heuristics, and currently behaves like None.
LM-Kit.NET 2026.5.424 mag 2026
Funzionalità
  • Stream-based model loading (LMKit.Model): new LM(Stream) loads GGUF and LMK archives from a stream; LM.LoadEncryptedFromStream(...) does the same for encrypted GGUF (.lmke). No on-disk extraction.
  • Markdown attachment support (LMKit.Data.Attachment, LM-Kit.Server): .md / .markdown files are now recognized as plain-text attachments (text/markdown), handled identically to .txt end to end.
  • Multi-Token Prediction (MTP) self-speculative decoding: a new generation accelerator for models trained with MTP heads. MTP runs a lightweight in-model draft head to propose several tokens per main-model forward pass and verifies them in a single batched decode, delivering ~2× generation throughput with no accuracy loss. Lossless under greedy decoding and a zero-cost no-op on checkpoints without MTP heads. New public surface:
    • LM.LoadingOptions.EnableMultiTokenPrediction (bool, default true): controls whether MTP head tensors are loaded into VRAM at model load time. Set to false to skip the heads and save a few hundred MiB to ~1 GiB of VRAM when you know you will not use MTP on this LM instance.
    • LM.HasMultiTokenPrediction (bool): runtime capability check - true when the loaded model declares MTP heads and they were loaded.
  • Improved translation, text rewriting, and text correction engines (LMKit.Translation, LMKit.TextGeneration): higher output quality, better fidelity to the source text, and improved handling of long-form inputs across the TextTranslation, TextRewriting, and TextCorrection pipelines.
  • Broader GPU coverage in the Vulkan backend: the Vulkan runtime now detects and offloads onto a wider range of GPUs, including additional integrated and discrete devices that previously fell back to CPU. Improves performance on mixed-vendor fleets and on machines without CUDA-capable hardware.
LM-Kit.NET 2026.5.318 mag 2026
Funzionalità
  • Added Windows ARM64 platform support: LM-Kit.NET now ships native binaries for Windows ARM64 alongside the existing Windows x64, Linux x64, Linux ARM64, and macOS Universal targets. Covers Snapdragon X / Copilot+ PCs, Surface Pro X / Surface Pro 9 (5G), Windows Dev Kit 2023, and other Qualcomm-powered Windows 11 devices. The base LM-Kit.NET package now contains a runtimes/win-arm64/native/ folder with the default CPU (ARM Neon) and Vulkan backends (Qualcomm Adreno acceleration via Vulkan), plus pdfium and onnxruntime. dotnet publish -r win-arm64 produces a fully working self-contained build.
  • Added CUDA 13 backend for Linux x64 (LM-Kit.NET.Backend.Cuda13.Linux): NVIDIA GPU acceleration on Linux x64 using CUDA 13.x drivers. Requires the CUDA 13 Toolkit runtime libraries to be installed on the host. Closes the gap left by previously shipping CUDA 13 only on Windows x64.
  • Added CUDA 13 backend for Linux ARM64 (LM-Kit.NET.Backend.Cuda13.linux-arm64): NVIDIA GPU acceleration for ARM64 Linux systems, including Jetson Orin / Thor and Grace Hopper / Grace Blackwell.
  • Improved inference speed.
LM-Kit.NET 2026.5.210 mag 2026
Funzionalità
  • Added model cards for Qwen 3.6 family: qwen3.6:27b (27B dense hybrid Gated DeltaNet + Gated Attention model, 64 blocks) and qwen3.6:35b-a3b (35B MoE, 3B active, 256 experts with 8 routed plus 1 shared, 40 blocks). Both support chat, vision, tool calling, code completion, math, and OCR with a native 262K context window extensible to 1M tokens via YaRN. The qwen3.5:27b and qwen3.5:35b-a3b model cards are now deprecated in favor of qwen3.6:27b and qwen3.6:35b-a3b respectively.
  • Added OpenTelemetry-compatible distributed tracing (LMKit.Agents.Observability.AgentDiagnostics): a new ActivitySource named LMKit.Agents emits spans for every orchestration run (orchestration.execute), every per-agent invocation (agent.execute), and every delegation (agent.delegate), with stable tag names (agent.name, orchestrator.name, orchestration.step, agent.planning_strategy, agent.status, agent.inference_count, delegation.from, delegation.to). Subscribe via OpenTelemetry.Trace.TracerProviderBuilder.AddSource(AgentDiagnostics.SourceName) or a standard System.Diagnostics.ActivityListener. Independent of and complementary to the existing IAgentTracer system.
  • Added graph-based orchestration composition (LMKit.Agents.Orchestration.Nodes): new IOrchestrationNode contract with composable primitives - AgentNode, SequentialNode, ParallelNode, ConditionalNode - and a GraphOrchestrator host. Build arbitrary orchestration shapes (e.g., a parallel block of pipelines feeding into a conditional router) without writing a custom orchestrator class. The prebuilt PipelineOrchestrator / ParallelOrchestrator / RouterOrchestrator / SupervisorOrchestrator remain available as named facades.
  • Added OrchestrationOptions.ReasoningLevel (LMKit.Agents.Orchestration): orchestration-wide override propagated to every agent in the orchestration, including delegated workers in SupervisorOrchestrator. Set to ReasoningLevel.None to disable model-internal <think> emission across the whole graph (e.g. fast classification pipelines on thinking-capable models).
  • Added AgentExecutionOptions.ReasoningLevel (LMKit.Agents): per-call override for an agent's model-internal reasoning level.
  • Added TextGenerationResult.Content (LMKit.TextGeneration): user-visible portion of the assistant turn, reconstructed from the runtime's segment classification with <think> reasoning blocks excluded. Completion continues to expose the full text including reasoning.
  • SupervisorOrchestrator propagates orchestration options to delegated workers: workers invoked through delegate_to_agent now respect the orchestration's MaxCompletionTokens, SamplingMode, MaxIterations, ReasoningLevel, and AgentTimeout. Previously workers ran with their own defaults regardless of the supervisor's options.
  • Thread-safe registries (LMKit.Agents.Tools.ToolRegistry, LMKit.Agents.AgentRegistry): registration, lookup, removal, and iteration are now safe to call concurrently.
  • OrchestrationContext is parallel-safe (LMKit.Agents.Orchestration): AddResult, AddTrace, SetState, and stop-signaling properties (ShouldStop, StopReason) are correctness-safe under concurrent agent execution from ParallelOrchestrator and graph ParallelNode.
  • Channel-based streaming (LMKit.Agents.Orchestration.Streaming): IOrchestrator.StreamAsync no longer polls; tokens flow as soon as the model emits them. Slow IOrchestrationStreamHandler.OnTokenAsync callbacks no longer block the inference thread.
  • Breaking Change - Removed AgentExecutor.DefaultOptions (LMKit.Agents): the public mutable property is gone. Pass AgentExecutionOptions per call to Execute / ExecuteAsync instead.
  • Breaking Change - AgentExecutionOptions.Default returns a fresh instance per access (LMKit.Agents): previously a shared mutable singleton. Code that read values is unaffected; code that mutated AgentExecutionOptions.Default.X = Y to set process-wide defaults must build options per call.
LM-Kit.NET 2026.5.1Versione principale6 mag 2026
Funzionalità
  • Extended encrypted GGUF support to metadata-only scenarios (LMKit.Cryptography, LMKit.Model, LMKit.Hardware): LM.LoadEncrypted now honors LoadingOptions.LoadTensors = false, mirroring the plaintext metadata-only path - only the metadata block is decrypted, no tensor bytes are read, and the resulting LM exposes architecture, vocabulary, context length, layer count, and other GGUF metadata. Use this for fast catalog inspection or pre-flight checks on protected .lmke containers.
  • Added MemoryEstimation.FitParameters overload for encrypted containers (LMKit.Hardware): new FitParameters(string encryptedPath, GgufEncryptionScheme scheme, string password, ...) runs the native fit estimator against an encrypted GGUF without ever materializing tensor bytes; the existing FitParameters(LM model, ...) overload also now works on models loaded via LM.LoadEncrypted and reuses the metadata cached at load time, so callers do not need to re-supply the password. Tensor data is never decrypted during estimation.
  • Added LM.IsEncrypted property (LMKit.Model): true when the instance was loaded via LM.LoadEncrypted. Lets downstream code branch on encryption state without inspecting the file path.
  • Added LM.DeviceConfiguration.AutoFitToVram property (LMKit.Model): controls whether the model loader automatically retries with progressively fewer GPU layers when the first load attempt fails because the model does not fit in available VRAM. Default is true. When enabled, the runtime walks GpuLayerCount down - placing the remaining layers in system memory - until the model loads or the entire model is on CPU. Set to false to restore the previous behavior of failing loud on insufficient VRAM.
  • Improved inference speed.
  • Automatic partial CPU offload on VRAM exhaustion (LMKit.Model): when a model load fails because the model does not fit in the GPU's available VRAM, the loader now automatically retries with progressively fewer GPU layers - placing the remaining layers in system memory - until the model loads or the entire model is on CPU. Replaces the previous behavior where insufficient VRAM produced an immediate exception. The fallback is gated by the new DeviceConfiguration.AutoFitToVram flag (default true); set it to false to restore the previous fail-loud behavior.
  • Pre-flight context-size sizing for tight VRAM (LMKit.Model, LMKit.TextGeneration): before allocating a new inference context, the runtime now estimates the KV-cache and compute-buffer cost for the requested context size and compares it to the device's currently free VRAM. If the projection exceeds free memory, the context size is reduced up-front, avoiding a doomed allocation attempt. On an actual allocation failure during creation, the runtime additionally retries with progressively smaller context sizes before throwing.
  • Sharper diagnostics on context-creation failure (LMKit.Exceptions): when the runtime cannot allocate an inference context even after its built-in retries, the thrown RuntimeException now includes the device's free VRAM at failure time and a hint to either set DeviceConfiguration.GpuLayerCount = 0 for CPU-only loading or shrink the requested context size.
  • Breaking Changes - Removed the experimental LM.DeviceConfiguration.ForceCpuMode property (LMKit.Model): functionally duplicated by setting GpuLayerCount = 0, which routes the entire model and KV cache to system memory. Callers who set ForceCpuMode = true should set GpuLayerCount = 0 instead.
LM-Kit.NET 2026.4.423 apr 2026
Funzionalità
  • Introduced IKVCache public interface (LMKit.Inference): exposes residency, warmup, and hibernation capabilities on objects that own an inference KV-cache. Implemented by MultiTurnConversation, PdfChat, RagChat, and AgentExecutor (cast the instance to IKVCache to access).
    • Members:
      • KVCacheContent (textual projection of the cache).
      • Residency (current ContextResidency).
      • Warmup() (eagerly initializes the context or rehydrates it from disk so the first user-facing call is not penalized by lazy allocation).
      • HibernateAsync(string filePath = null) which serializes the full context state to disk, frees the in-memory handle, and rehydrates transparently on the next inference call. Background hibernation requests are coalesced and deferred while the context is actively in use.
  • Added ContextResidency enumeration (LMKit.Inference): lifecycle state of an inference context - NotCreated, InMemory, or Hibernated. Exposed via IKVCache.Residency.
  • Added ContextHibernationDirectory property to Configuration (LMKit.Global): folder used for auto-generated hibernation files when IKVCache.HibernateAsync is called without an explicit path. Defaults to the system temp folder (Path.GetTempPath()); the setter auto-creates the directory if it does not exist and throws ArgumentException on null/empty input.
  • Added the Markdown member to the TextOutputMode enumeration.
  • Introduced DocumentToMarkdownConverter (LMKit.Document.Conversion): end-to-end document - Markdown pipeline built for LLM ingestion. Accepts the full range of LM-Kit input modes (file path, byte[] + file name, Stream + file name, ImageBuffer, Uri, and pre-built Attachment) and exposes matching Convert / ConvertAsync overloads along with ConvertToFile / ConvertToFileAsync variants that write the Markdown directly to disk. Supports per-page observability and cancellation through the PageStarting and PageCompleted events.
  • Added DocumentToMarkdownStrategy enumeration (LMKit.Document.Conversion): selects how each page is converted. TextExtraction uses the embedded text layer (fast, no model required); VlmOcr rasterizes each page and transcribes it with a vision-language model; Hybrid applies a per-page decision, keeping born-digital pages on the text path while routing scanned pages through vision OCR; Auto resolves to the best available strategy based on the input and on whether a vision model is configured.
  • Added DocumentToMarkdownOptions (LMKit.Document.Conversion): exposes the full configuration surface of the converter, including strategy selection, 1-based PageRange filtering, TextOutputMode for the text-extraction path, VLM OCR tuning (VlmImageDetail, VlmMaximumCompletionTokens, VlmStripImageMarkup, VlmStripStyleAttributes), the hybrid HybridMinTextLength threshold, output shaping (IncludePageSeparators, PageSeparatorFormat, EmitFrontMatter, NormalizeWhitespace), and forwarded DOCX/EML options.
  • Added DocumentToMarkdownResult and DocumentToMarkdownPageResult (LMKit.Document.Conversion): carry the aggregated Markdown, per-page diagnostics (StrategyUsed, Elapsed, GeneratedTokenCount, QualityScore, Warning), requested vs. effective strategy, source name, and total elapsed time.
  • Added DocumentConversionPageStartingEventArgs and DocumentConversionPageCompletedEventArgs (LMKit.Document.Conversion): event payloads for the converter's page-level lifecycle, exposing PageIndex/PageNumber/PageCount, SourceName, PlannedStrategy, a Cancel flag, and the PageResult/Exception captured for each page.
  • Added encrypted GGUF model loading (LMKit.Cryptography, LMKit.Model): new static LM.LoadEncrypted(string path, GgufEncryptionScheme scheme, string password, ...) factory loads a GGUF model from an LM-Kit encrypted container, decrypting tensor bytes on the fly from disk. The plaintext GGUF is never materialized in memory nor written back to disk: only the metadata block (a few MB) plus one tensor's worth of bytes at a time are ever decrypted. Intended for commercial deployments that need to protect model-file copyright on-device.
  • Added EncryptedGguf static helper (LMKit.Cryptography): EncryptedGguf.Encrypt(plaintextGguf, outputLmke, scheme, password) streams a plaintext GGUF through AES-256-CTR (PBKDF2-HMAC-SHA256 key derivation, 100k iterations) into an .lmke container. EncryptedGguf.Reader.Open(path, password) exposes seekable, per-range decrypted reads for advanced scenarios.
  • Added GgufEncryptionScheme enumeration (LMKit.Cryptography): lists supported schemes. Ships with AesCtr256 (seekable stream cipher required for per-tensor decryption during load).
  • Added demo encrypted_model_loading (demos/console_net): end-to-end walkthrough that downloads a small model from the LM-Kit catalog, encrypts it to an .lmke container, loads it via LM.LoadEncrypted, and drives a multi-turn chat.
LM-Kit.NET 2026.4.317 apr 2026
Funzionalità
  • Added ImageDetail property to IConversation and VlmOcr (LMKit.TextGeneration, LMKit.Extraction.Ocr): controls the pixel budget used when processing images for vision models. Accepts a member of the ImageDetail enumeration (Minimal, Low, Standard, High, Maximal). Default is High. Available on MultiTurnConversation, SingleTurnConversation, AgentExecutor, RagChat, PdfChat, and VlmOcr.
  • Added TranslationProgress event to TextTranslation (LMKit.Translation): reports chunk-level progress (ChunkIndex, TotalChunks, TranslatedChunk) during text translation, with a Stop flag to abort remaining chunks.
  • Added model card for gemma4:31b: Google Gemma 4 31B dense model with 256K context, hybrid sliding/global attention, vision, tool calling, and reasoning support.
  • Added session persistence to PdfChat (LMKit.Retrieval): SaveSession() and SaveSession(string) serialize the full conversation state, loaded documents, passage retrieval indices, and configuration. Restore via new PdfChat(chatModel, embeddingModel, sessionData) or the file path overload.
  • Added SkipThinking flag to AfterTextCompletionEventArgs (LMKit.TextGeneration.Events): when set during an InternalReasoning segment, the model immediately ends its thinking phase and begins generating the user-visible answer. The thinking suffix tokens are injected automatically.
  • Changed default MaximumCompletionTokens from 2048 to -1 (unlimited): applies to MultiTurnConversation, SingleTurnConversation, PdfChat, RagChat, and AgentExecutionOptions. Set a positive value to restore a cap.
  • Added delegation events on SupervisorOrchestrator (LMKit.Agents.Orchestration): BeforeDelegation, AfterDelegation, and WorkerTextCompletion events let consumers observe the delegation lifecycle and stream worker text directly from the orchestrator, without reaching into Agent.EnableDelegation() or the internal DelegateTool. Events fire in both streaming and non-streaming orchestration.
  • Improved inference speed.
  • Improved text translation quality.
  • Improved text rewriting quality.
  • Improved Gemma Translate support.
  • Breaking Change: AfterTextCompletion delegate signature changed: added ref bool skipThinking parameter. Callers implementing the ModelController.AfterTextCompletion delegate must update their signatures.
  • Breaking Change: TextTranslation.AfterTextCompletion event removed: replaced by TranslationProgress. Migrate from AfterTextCompletionEventArgs.Text to TranslationProgressEventArgs.TranslatedChunk.
Correzioni
  • SupervisorOrchestrator now emits OrchestrationStreamTokenType.Delegation tokens (LMKit.Agents.Orchestration): when the supervisor delegates to a worker via the delegate_to_agent tool, streaming consumers now receive a typed Delegation token (with from_agent, to_agent, and task metadata) immediately before the worker's AgentStarted token. Previously this token type was defined but never emitted, forcing UI code to infer delegation by parsing ToolCall metadata.
  • Agent.EnableDelegation() is now idempotent (LMKit.Agents): repeated calls return the same DelegateTool instance instead of constructing a new one and overwriting the prior registration. BeforeDelegation, AfterDelegation, and AfterTextCompletion handlers subscribed before wrapping the agent in a SupervisorOrchestrator now fire reliably during orchestration. Added DelegateTool.ToolName constant ("delegate_to_agent") for registry lookups.
LM-Kit.NET 2026.4.210 apr 2026
Funzionalità
  • Added thinking mode support for Gemma 4 models (E2B, E4B, 26B).
  • Added per-request language and orientation detection to PDF OCR: OcrParameters, PdfSearchableMakerOptions, and PdfGenerationOptions now accept optional Languages and EnableOrientationDetection overrides. The PDF OCR server endpoint exposes languages and detect_orientation fields.
  • Orchestration streaming now emits Thinking tokens for internal reasoning segments.
LM-Kit.NET 2026.4.1Versione principale4 apr 2026
Funzionalità
  • Added model cards for gemma4:e2b, gemma4:e4b, and gemma4:26b-a4b: Google Gemma 4 multimodal Mixture-of-Experts models with vision and tool calling support.
  • Inference speed improvements.
  • Improved overall extraction accuracy.
LM-Kit.NET 2026.3.528 mar 2026
Funzionalità
  • Added model cards for 'translategemma3:4b' and 'translategemma3:12b'. Google TranslateGemma 3 open translation models built on Gemma 3, supporting 55 languages with text and image inputs.
  • Added Translation model capability (ModelCapabilities.Translation): New flag identifying models specifically trained for multilingual translation.
  • Added model card for 'nemotron3-nano:4b'. NVIDIA Nemotron 3 Nano 4B, an edge-ready hybrid Mamba-2/Transformer model (3.97B parameters) with 262K context, supporting reasoning, agentic tasks, math, code, and tool calling.
  • Inference speed improvements.
LM-Kit.NET 2026.3.424 mar 2026
Funzionalità
  • Inference speed improvements.
  • Improved overall extraction accuracy.
LM-Kit.NET 2026.3.39 mar 2026
Funzionalità
  • Added Embedder.GetQueryEmbeddings and Embedder.GetQueryEmbeddingsAsync (LMKit.Embeddings): compute embeddings with model-specific query instruction prefixes applied. Modern embedding models (Qwen3 Embedding, Nomic Embed, BGE v1.5) are trained with asymmetric prefixes for queries versus passages; these methods apply the correct prefix automatically based on the loaded model's architecture.
  • Automatic Query Instruction Prefix in RAG Retrieval: RagEngine.FindMatchingPartitions and FindMatchingPartitionsAsync now apply the model's query instruction prefix when embedding search queries, improving retrieval recall without any code changes.
LM-Kit.NET 2026.3.28 mar 2026
Funzionalità
  • Added model cards for qwen3-coder:30b-a3b and lightonocr-2-bbox:1b.
  • Added SearchHighlightEngine (LMKit.Document.Search): searches text in paginated documents (PDF or image) and produces a highlighted copy. Supports exact, regex, and fuzzy (Damerau-Levenshtein) matching. Accepts optional pre-computed PageElement instances for raster PDFs or images.
  • Added SearchHighlightOptions, SearchHighlightResult, HighlightAppearance, and SearchMode enum (LMKit.Document.Search).
  • Added pdf_search_highlight built-in tool: searches text in a PDF and saves a highlighted copy with matches visually marked.
  • Added LM.TensorOverride (LMKit.Model): enables fine-grained control over tensor device placement via regex pattern matching, particularly useful for offloading MoE (Mixture of Experts) expert weights to CPU while keeping attention layers on GPU. Includes factory methods TensorOverride.Cpu(pattern) and TensorOverride.Gpu(pattern, gpuIndex).
  • Added LM.DeviceConfiguration.TensorOverrides property to configure per-tensor device placement at model load time.
  • Automatic memory extraction in MultiTurnConversation (LMKit.TextGeneration): when AgentMemory.ExtractionMode is set to LlmBased, conversations now automatically extract and store facts after each turn. Previously, automatic extraction only worked through the Agent pipeline. This enables memory extraction for RagChat, PdfChat, and direct MultiTurnConversation usage.
LM-Kit.NET 2026.3.1Versione principale3 mar 2026
Funzionalità
  • Added model cards for qwen3.5:0.8b, qwen3.5:2b, qwen3.5:4b and qwen3.5:9b.
LM-Kit.NET 2026.2.1128 feb 2026
Funzionalità
  • Added model card for glm-4.6v-flash.
  • Added model card for glm-ocr: Z.ai GLM-OCR 0.9B vision-language model specialized in document parsing, OCR, and structured information extraction.
  • Improved GLM model support: Added ChatGLM3 and ChatGLM4 template formats with proper token handling and tool calling support.
LM-Kit.NET 2026.2.1025 feb 2026
Funzionalità
  • Added model cards for Qwen 3.5 family: qwen3.5:27b (27B dense hybrid GDN model) and qwen3.5:35b-a3b (35B MoE, 3B active). Both support chat, vision, tool calling, code completion, math, and OCR with a native 262K context window. The qwen3-vl:30b model card is now deprecated in favor of qwen3.5:35b-a3b.
  • Introduced RagChat (LMKit.Retrieval): A turnkey multi-turn conversational RAG class that wraps a user-managed RagEngine with an internal MultiTurnConversation. Implements IMultiTurnConversation and orchestrates query contextualization, retrieval dispatch, prompt construction, and grounded response generation in a single call. Supports all four QueryGenerationMode strategies, tools, skills, and agent memory.
  • Introduced RagQueryResult (LMKit.Retrieval): Returns type for RagChat.Submit/SubmitAsync, exposing the generated TextGenerationResult alongside the IReadOnlyList<PartitionSimilarity> used as context.
  • Introduced RetrievalCompletedEventArgs (LMKit.Retrieval.Events): Event arguments for the RagChat.RetrievalCompleted event, providing the retrieval query, matched partitions, requested count, and elapsed time.
  • Introduced RetrievalDefaults (LMKit.Retrieval): A static class centralizing default constants for the retrieval subsystem (e.g. MinRelevanceScore), used consistently by RagChat, PdfChat, RagEngine, and VectorSearch.
  • Added advanced query generation strategies for RAG (QueryGenerationMode on PdfChat and RagChat):
    • Contextual: Follow-up questions are automatically reformulated into self-contained queries before retrieval, configurable via QueryContextualizationOptions.
    • MultiQuery: Generates multiple query variants and merges results using Reciprocal Rank Fusion for improved recall, configurable via MultiQueryOptions.
    • HypotheticalAnswer: Generates a hypothetical answer and uses it as the retrieval query, bridging the gap between question and document phrasing, configurable via HydeOptions.
  • Added Maximal Marginal Relevance (MMR) diversity filtering (MmrLambda on RagEngine and PdfChat): Reduces near-duplicate passages in retrieval results by balancing relevance against diversity.
  • Added context window expansion for retrieval results (ContextWindow on RagEngine and PdfChat): Automatically includes neighboring partitions around each match, providing the LLM with surrounding context for more accurate answers.
  • Added hybrid search with BM25 + vector fusion (IRetrievalStrategy on RagEngine and PdfChat):
    • VectorRetrievalStrategy: Semantic similarity via cosine distance on embeddings (default, unchanged behavior).
    • Bm25RetrievalStrategy: BM25+ lexical ranking with configurable term saturation (K1), length normalization (B), long-document floor (Delta), proximity boosting (ProximityWeight), language-aware stopword filtering (Language), and custom stopword support (CustomStopWords).
    • HybridRetrievalStrategy: Combines vector and BM25 strategies with weighted Reciprocal Rank Fusion, configurable via VectorWeight, KeywordWeight, and RrfK.
LM-Kit.NET 2026.2.922 feb 2026
Funzionalità
  • Added MarkdownToPdf converter (LMKit.Document.Conversion) with full formatting support (headings, bold/italic, code blocks, lists, blockquotes, tables, links, horizontal rules).
  • Added EmlToPdf converter (LMKit.Document.Conversion) with embedded attachment support.
  • Added markdown_to_pdf and eml_to_pdf built-in document tools.
  • Added support for PaddleOCR VL models.
  • Added model card for paddleocr-vl:0.9b.
  • Added VlmOcrIntent enum and VlmOcr(LM, VlmOcrIntent) constructor for explicit OCR intent selection (plain text, table, formula, chart, coordinates, seal, Markdown).
  • Added VlmOcr.GetSupportedIntents(LM) to query the intents a model is known to support with dedicated behavior.
  • Introduced the Canvas drawing API (LMKit.Graphics.Drawing): A fluent, in-place 2D drawing surface backed by ImageBuffer with coverage-based antialiasing, Pen/Brush styling, and support for lines, rectangles, quadrilaterals, ellipses, polygons, and rounded rectangles.
  • VLM OCR now provides text location data when the underlying model supports coordinate output (e.g. PaddleOCR-VL with VlmOcrIntent.OcrWithCoordinates). Each recognized text region is returned as a TextElement with a bounding box mapped back to the original source image coordinates.
  • Improved VLM OCR post-processing to adapt output cleanup to the selected intent and model family.
  • Added form field rendering support for PDF rasterization, improving extraction accuracy on fillable PDFs.
Correzioni
  • Fixed JSON serialization and deserialization failures.
  • Fixed a critical initialization problem.
LM-Kit.NET 2026.2.619 feb 2026
Funzionalità
  • Added Filters / Middleware Pipeline (LMKit.TextGeneration.Filters).
    • FilterPipeline with IPromptFilter, ICompletionFilter, and IToolInvocationFilter following the ASP.NET Core middleware (onion) pattern.
    • Lambda-friendly API and integration with both MultiTurnConversation and Agent.
  • Added Prompt Templates with Logic (LMKit.TextGeneration.Prompts).
    • PromptTemplate class with Mustache syntax, conditionals, loops, filter chaining, custom helpers, and strict mode.
  • Added memory capacity limits, eviction policies, and time-decay scoring to AgentMemory.
  • Added UserScopedMemory for multi-user memory isolation.
  • Added built-in automatic memory extraction to AgentMemory.
  • Added memory consolidation via ConsolidateAsync on AgentMemory.
  • Added conversation summarization via SummarizeConversationAsync on AgentMemory.
  • Added MemoryEstimation static class in LMKit.Hardware for accurate VRAM/context fitting.
  • Added EML (email) and MBOX (Unix mailbox) document format support.
  • Added embedded attachment extraction for PDF, EML, and MBOX documents.
LM-Kit.NET 2026.2.516 feb 2026
Funzionalità
  • Added Markdown conversion public APIs in LMKit.Document.Conversion:
    • New MarkdownHtmlConverter.MarkdownToHtml(string) method to convert Markdown to HTML.
    • New MarkdownHtmlConverter.HtmlToMarkdown(string) method to convert HTML back to Markdown.
    • New MarkdownDocxConverter.MarkdownToDocx(string) and MarkdownDocxConverter.MarkdownToDocxFile(string, string) methods to convert Markdown to DOCX.
    • New MarkdownDocxConverter.DocxToMarkdown(...) overloads for DOCX byte arrays and DOCX file paths.
    • Added comprehensive XML documentation and usage examples for each public member.
    • Added prebuilt agent tools convert_markdown_to_html and convert_html_to_markdown.
  • Added per-element confidence scores to extraction results:
    • New ConfidenceScore property on TextExtractionResultElement exposes a [0.0, 1.0] quality score computed from per-token probabilities during grammar-constrained generation.
    • New HumanVerificationRequired property on TextExtractionResult signals when any element falls below the configurable threshold.
    • New HumanVerificationThreshold property on TextExtraction (default 0.7) controls the verification flag.
  • Added extraction progress events:
    • New Progress event on TextExtraction reports phase transitions: OcrProcessing, Extracting, PostProcessing, Completed.
    • Reports per-pass index and total for multi-pass extraction of large documents.
    • New ExtractionPhase enum and ExtractionProgressEventArgs class.
  • Added entity auto-detection and validation for extraction results:
    • New EntityKind public enum (102 values) identifies the semantic kind of each extracted field (email, phone, IBAN, postal code, URI, etc.).
    • New DetectedEntityKind property on TextExtractionElement exposes the automatically inferred entity kind.
    • New Validation property on TextExtractionResultElement returns an EntityValidationResult with Status (Valid, Invalid, Repaired, NotApplicable), EntityKind, and OriginalValue (when repaired).
    • 14 entity kinds have dedicated format validators: email, phone, fax, URI, IBAN, SWIFT/BIC, IPv4, IPv6, MAC address, GUID/UUID, currency code, postal code, hostname.
    • Invalid extractions now contribute to HumanVerificationRequired flag alongside low confidence scores.
    • Validation results are tracked even when NullOnDoubt is disabled, enabling inspection without value nullification.
  • Added HTML-aware chunking for RAG workflows:
    • New HtmlChunking class implements IChunking with DOM-aware splitting using AngleSharp.
    • Respects semantic HTML boundaries: headings, sections, tables, preformatted blocks.
    • StripBoilerplate option (default: true) removes nav, footer, sidebar, and ad containers.
    • PreserveHeadingContext option (default: true) prepends heading breadcrumb trail to chunks.
    • Tables are extracted as pipe-delimited text and kept intact when they fit in a single chunk.
    • Oversized blocks are sub-split using the plain text partitioner with configurable overlap.
  • Added async PDF splitting and extraction APIs to improve SDK async coverage for file-heavy workflows:
    • Added ExtractPagesAsync overloads for file-path based extraction (pageRange and pageIndexes).
    • Added SplitToFilesAsync overloads for attachment and file-path workflows (including DocumentSplittingResult-based splitting).
    • All new async APIs support CancellationToken.
  • Added pattern-constrained extraction formatting (best-effort deterministic enforcement):
    • New TextExtractionElementFormat.Pattern supports regex patterns and compact descriptors such as 4N-26A2N-1A.
    • Pattern is now included in JSON Schema round-trip (SetElementsFromJsonSchema parse + JsonSchema generation).
    • Grammar generation now applies pattern constraints for String and StringArray fields when pattern conversion is supported.
    • Post-processing now validates extracted values against field patterns and rejects non-conforming values when validation is enabled.
  • Added standardized tool metadata via IToolMetadata interface:
    • All built-in tools now implement IToolMetadata, exposing Category, SideEffect, RiskLevel, DefaultApproval, IsIdempotent, and IsReadOnly.
    • New ToolSideEffect enum: None, LocalRead, LocalWrite, NetworkRead, NetworkWrite, Irreversible.
    • New ToolRiskLevel enum: Low, Medium, High, Critical.
    • New ToolApprovalMode enum: Never, Conditional, Always.
    • Custom ITool implementations may optionally implement IToolMetadata to participate in policy-based governance.
  • Added ToolPermissionPolicy for centralized tool access control:
    • Fluent API with Allow(), Deny(), AllowCategory(), DenyCategory(), RequireApproval(), RequireApprovalForCategory(), and SetMaxRiskLevel().
    • Supports wildcard patterns (e.g., Deny("fs.*")) and category-level rules.
    • Deny rules always take precedence over allow rules.
    • Configurable DefaultAction (Allow or Deny) for whitelist/blacklist modes.
    • New ToolPermissionResult enum: Allowed, Denied, ApprovalRequired.
  • Added tool approval workflow support:
    • New ToolApprovalRequestEventArgs event args class with ToolCall, Tool, RiskLevel, SideEffect, Approved, and DenialReason properties.
    • BeforeToolInvocationEventArgs now exposes Tool and PermissionResult properties for policy-aware interception.
  • Added ToolPermissionPolicy integration to ToolRegistry and AgentBuilder:
    • ToolRegistry.PermissionPolicy property for attaching a policy to the registry.
    • ToolRegistry.EvaluatePermission(ITool) method for programmatic policy checks.
    • AgentBuilder.WithPermissionPolicy() methods (direct and inline configuration).
  • Added metadata-aware query methods to BuiltInTools:
    • GetByMaxRisk(ToolRiskLevel): filter tools by maximum risk level.
    • GetByCategory(string): filter tools by category.
    • GetReadOnly(): get all read-only tools.
  • Enhanced ToolInfo with rich security metadata:
    • Now includes Category, SideEffect, RiskLevel, DefaultApproval, IsIdempotent, and IsReadOnly in addition to existing HasIOCapabilities.
  • Added pdf_search built-in document tool and reusable LMKit.Document.Pdf.PdfSearch API:
    • New built-in tool: pdf_search for searching text in PDF files with page ranges, case sensitivity, result limits, and contextual snippets.
    • PdfSearchTool now delegates to LMKit.Document.Pdf.PdfSearch (domain logic moved out of tool layer).
    • PdfSearch now uses existing LayoutSearchEngine + TextSearchOptions.
    • Added async-first API PdfSearch.FindTextAsync(...) and sync wrapper PdfSearch.FindText(...).
  • Added filesystem_search built-in IO tool for recursive file search:
    • Search files by name glob, content regex, size range, and modification date.
    • Configurable recursion depth, directory matching, and FileSystemToolOptions policy.
  • Added http_download built-in Net tool for streaming file downloads:
    • Download files from a URL to the local filesystem with streaming I/O and configurable size limits.
    • Supports custom headers, overwrite control, and partial file cleanup on failure.
  • Improved tool calling reliability across all models.
  • Breaking Changes - Split multi-operation built-in tools into atomic single-operation tools (1 tool = 1 feature):
    • All previously monolithic tools (FileSystemTool, ProcessTool, CompressTool, ClipboardTool, HttpTool, FtpTool, DatabaseTool, SpreadsheetTool) have been replaced by individual atomic tools, each performing exactly one operation.
    • PdfSplitTool now handles split operations only; new PdfExtractTool handles page extraction.
    • BuiltInTools factory properties updated: BuiltInTools.FileSystem is now BuiltInTools.FileSystemRead, BuiltInTools.HttpGet is now BuiltInTools.HttpGet, etc.
    • New group registration methods: AddFileSystemTools(), AddHttpTools(), AddProcessTools(), etc. via BuiltInToolsExtensions.
    • ToolPermissionPolicy wildcard patterns now work with atomic names: Allow("filesystem_*"), Deny("filesystem_delete"), RequireApproval("process_*").
Correzioni
  • Fixed and improved GLM (glm4.7-flash) tool calling support.
LM-Kit.NET 2026.2.412 feb 2026
Funzionalità
  • Introduced the PdfSplitter class for physically splitting PDF documents by page ranges.
    • Supports extracting pages from Attachment instances or file paths.
    • Provides ExtractPages methods for single output and Split/SplitToFiles methods for multi-output splitting.
    • Integrates with DocumentSplittingResult to extract AI-detected segments into separate PDF files.
  • Introduced the DocumentSplitting class for detecting logical document boundaries within multi-page files.
  • Introduced the DocumentSplittingResult class.
  • Introduced the DocumentSegment class.
  • Introduced the PdfMerger class for merging multiple PDF documents into one.
    • Supports merging from Attachment instances or file paths.
    • Provides Merge methods for in-memory output and MergeToFile/MergeFiles methods for file output.
  • Added DatabaseTool to built-in tools for SQLite database operations.
    • Query, execute SQL, list tables, describe schemas, import/export CSV and JSON, vacuum, and backup.
    • Read-only by default with configurable write and DDL permissions, path restrictions, and blocked SQL keywords.
  • Added SpreadsheetTool to built-in tools for Excel (.xlsx) file operations.
    • Read ranges, write cells with values or formulas, list sheets, create workbooks, and convert to/from CSV and JSON.
    • Read-only by default with configurable write permissions and path restrictions.
  • Added RssFeedTool to built-in tools for RSS and Atom feed operations.
    • Fetch, parse raw XML, and search feed entries by keyword or date with support for RSS 2.0, Atom, and RSS 1.0 (RDF).
  • Added ClipboardTool to built-in tools for system clipboard access.
    • Cross-platform read/write of clipboard text using native commands (PowerShell, pbcopy/pbpaste, xclip).
  • Added FtpTool to built-in tools for FTP file transfer operations.
    • List, upload, download, delete, rename, mkdir/rmdir on FTP servers with passive mode and explicit FTPS support.
  • Extended the PdfToImage class to support JPEG output.
    • Added JPEG rendering with configurable quality alongside existing PNG and BMP support.
    • RenderToFiles now accepts "jpg" as a format option.
  • Introduced the ImageToPdf class for converting images into PDF documents.
    • Combines one or more JPEG, PNG, or BMP images into a single PDF.
    • Each image occupies a full page sized to match image dimensions.
    • Supports file path and Attachment inputs.
  • Introduced the PdfUnlocker class for removing password protection from PDFs.
    • Opens a password-protected PDF with the known password and saves an unprotected copy.
    • Supports file path and Attachment inputs with file or in-memory output.
  • Added SaveAsJpeg method to ImageBuffer.
    • Native JPEG encoder using libjpeg with configurable quality (0 to 100).
    • Supports RGB24, RGBA32 (alpha stripped), and GRAY8 pixel formats.
  • Added Document category to built-in tools with 11 document processing tools.
    • PdfSplitTool: Extract pages, split PDFs by ranges, and query page count.
    • PdfInfoTool: Retrieve page count, dimensions, metadata, and text content from PDFs.
    • PdfToImageTool: Render PDF pages as JPEG, PNG, or BMP images with configurable zoom and quality.
    • PdfMergeTool: Merge multiple PDF files into a single output file.
    • ImageToPdfTool: Convert one or more JPEG, PNG, or BMP images into a single PDF document.
    • PdfUnlockTool: Remove password protection from a PDF using the known password.
    • ImageDeskewTool: Detect and correct skew in scanned documents.
    • ImageCropTool: Auto-crop uniform borders from scanned documents and images.
    • ImageResizeTool: Resize images with exact dimensions or aspect-ratio-preserving box fit, convert pixel formats.
    • DocumentTextTool: Extract text from PDF, DOCX, XLSX, PPTX, and HTML files.
    • OcrTool: Extract text from images using Tesseract OCR with support for 34 languages.
  • Improved SupervisorOrchestrator to use a single-pass execution model.
    • Replaced the multi-step loop with a single ExecuteAgentAsync call, since AgentExecutor handles multi-turn tool calling internally.
    • Eliminated redundant supervisor iterations that could confuse the model.
  • Improved DelegateTool to return plain text on successful delegation.
    • Worker responses are now returned as plain text instead of a JSON wrapper, allowing the supervisor to relay them verbatim without summarizing.
  • Added real-time streaming of worker agent output during supervisor delegation.
    • Added AfterTextCompletion event to DelegateTool for streaming worker tokens in real time.
    • SupervisorOrchestrator now wires up BeforeDelegation, AfterDelegation, and AfterTextCompletion events to emit AgentStarted, Content, and AgentCompleted stream tokens for worker agents.
    • Users see live worker output instead of a frozen screen during delegation.
  • Improved SupervisorOrchestrator.DefaultSupervisorPrompt to instruct the supervisor to relay single-worker responses verbatim.
LM-Kit.NET 2026.2.39 feb 2026
Funzionalità
  • Added model cards for minicpm-o-45, lightonocr-2:1b, and glm4.7-flash.
  • Added StripStyleAttributes property to VlmOcr.
  • Improved skill activation via tools.
LM-Kit.NET 2026.2.26 feb 2026
Funzionalità
  • Introduced the LM-Kit.NET.Integrations.ExtensionsAI NuGet package for Microsoft.Extensions.AI integration.
    • Implements IChatClient via LMKitChatClient, enabling LM-Kit.NET models to be used through the standard Microsoft.Extensions.AI abstraction layer.
    • Implements IEmbeddingGenerator<string, Embedding<float>> via LMKitEmbeddingGenerator for embedding generation.
    • Supports non-streaming and streaming chat completions.
    • Supports tool/function calling through automatic bridging of AIFunction/AITool to LMKit's ITool interface.
    • Maps ChatOptions properties include: Temperature, TopP, TopK, MaxOutputTokens, StopSequences, FrequencyPenalty, PresencePenalty, ToolMode, and JSON response format.
    • Reports token usage (input/output/total) and finish reasons in ChatResponse.
    • Provides IServiceCollection extension methods (AddLMKitChatClient and AddLMKitEmbeddingGenerator) for dependency injection.
    • Compatible with the Microsoft.Extensions.AI middleware pipeline (caching, telemetry, function invocation).
    • Targets .NET Standard 2.0, .NET 8.0, .NET 9.0, and .NET 10.0.
  • Added real-time streaming support for orchestrators
    • Added IOrchestrationStreamHandler interface for handling streaming output from multi-agent workflows.
    • Added DelegateOrchestrationStreamHandler with built-in console output handlers.
    • Added OrchestrationStreamToken class with agent context (agent name, step, token type).
    • Added StreamHandler and StreamToolCalls properties to OrchestrationOptions.
    • Added extension methods: StreamAsync, StreamContentAsync, RunStreamingAsync, and RunStreamingToConsoleAsync.
    • Supports all orchestrators: SupervisorOrchestrator, PipelineOrchestrator, ParallelOrchestrator, and RouterOrchestrator.
    • Token types include: Content, Thinking, ToolCall, ToolResult, AgentStarted, AgentCompleted, Delegation.
  • Added the ConversationId property to the ChatHistory class for session correlation across distributed systems.
  • Extended MCP client with complete protocol support.
    • Sampling: Allows MCP servers to request LLM completions from the client.
      • SamplingRequested event and SetSamplingHandler method for handling sampling requests.
      • McpSamplingRequest, McpSamplingResponse, McpSamplingMessage, and McpModelPreferences classes.
    • Roots: Client exposes filesystem boundaries to servers.
      • AddRoot, RemoveRoot, ClearRoots methods for managing roots.
      • RootsRequested event for server root list requests.
      • McpRoot class with FromPath factory method.
    • Elicitation: Servers can request structured user input.
      • ElicitationRequested event and SetElicitationHandler method.
      • McpElicitationRequest and McpElicitationResponse classes.
    • Progress tracking: Track long-running operations.
      • ProgressReceived event for progress notifications.
      • CreateProgressToken, UnregisterProgressToken, and SendProgress methods.
      • McpProgressToken and McpProgressEventArgs classes.
    • Cancellation: Cancel in-progress requests.
      • CancellationReceived event for cancellation notifications.
      • CancelRequest method to send cancellation notifications.
      • McpCancellationEventArgs class.
    • Logging: Structured server-side logging.
      • LogMessageReceived event for log messages.
      • SetLogLevel method to configure minimum log level.
      • McpLogLevel enum and McpLogMessageEventArgs class.
    • Completions: Argument autocompletion for prompts and resources.
      • GetPromptCompletions and GetResourceCompletions methods.
      • McpCompletionResult class.
    • Resource templates: Parameterized URI templates (RFC 6570).
      • GetResourceTemplates and RefreshResourceTemplates methods.
      • McpResourceTemplate class.
    • Resource subscriptions: Real-time resource update notifications.
      • SubscribeToResource and UnsubscribeFromResource methods.
      • ResourceUpdated event and McpResourceUpdatedEventArgs class.
  • Enhanced telemetry with comprehensive OpenTelemetry GenAI semantic conventions support.
    • Added gen_ai.client.token.usage histogram metric with token type tagging (input/output).
    • Added gen_ai.client.operation.duration histogram metric.
    • Added gen_ai.conversation.id span attribute for session correlation.
    • Added gen_ai.response.id span attribute for response identification.
    • Added gen_ai.response.finish_reasons span attribute (stop, length, tool_calls, etc.).
    • Added gen_ai.request.temperature, gen_ai.request.top_p, and gen_ai.request.top_k span attributes.
    • Added gen_ai.request.max_tokens span attribute.
    • Added gen_ai.embeddings.dimension.count span attribute for embedding operations.
    • Agent telemetry now includes gen_ai.agent.name, gen_ai.agent.id, and gen_ai.agent.description.
    • Tool invocation events now include gen_ai.tool.name and gen_ai.tool.call.id.
LM-Kit.NET 2026.2.1Versione principale2 feb 2026
Funzionalità
  • Added stdio transport support to the MCP client for local MCP servers.
    • Introduced the IMcpTransport interface for transport abstraction.
    • Introduced the StdioTransport class for subprocess-based MCP communication.
    • Introduced the StdioTransportOptions class for detailed stdio configuration.
    • Introduced the McpTransportException class for transport-specific errors.
    • Introduced the McpClientBuilder class for fluent client construction.
    • Added ForStdio factory methods to the McpClient class.
    • Added TransportType, IsStdioTransport, and Transport properties to McpClient.
    • Support for Node.js (npx), Python (uvx), and native MCP server executables.
    • Features: Process lifecycle management, auto-restart, graceful shutdown, stderr capture.
  • Improved ReAct pattern of agents with tools.
Correzioni
  • Boolean type was not correctly handled in TextExtraction.
LM-Kit.NET 2026.1.531 gen 2026
Funzionalità
  • Extended the LMKit.Agents namespace with comprehensive agent framework.
    • Core classes: Agent, AgentBuilder, AgentExecutor, AgentRegistry.
    • Configuration: AgentCapabilities, AgentIdentity, AgentExecutionOptions.
    • Execution tracking: AgentExecutionResult, AgentExecutionStatus.
  • Introduced the LMKit.Agents.Orchestration namespace.
    • IOrchestrator interface with PipelineOrchestrator, ParallelOrchestrator, RouterOrchestrator, and SupervisorOrchestrator implementations.
    • Supporting classes: OrchestrationContext, OrchestrationOptions, OrchestrationResult.
  • Introduced the LMKit.Agents.Tools.BuiltIn namespace with 56 built-in tools.
    • Data: JsonTool, XmlTool, CsvTool, YamlTool, HtmlTool, MarkdownTool, CountryTool, QRCodeTool, Base64ImageTool, IniTool.
    • Text: TextTool, DiffTool, RegexTool, TemplatingTool, EncodingTool, SlugTool, PhoneticTool, FuzzyTool, AsciiArtTool.
    • Numeric: CalculatorTool, ConversionTool, StatsTool, RandomTool, GuidTool, IpCalcTool, FinancialTool, BitwiseTool, CurrencyTool, ExpressionTool.
    • Security: HashTool, CryptoTool, ValidatorTool, JwtTool, ChecksumTool, PasswordTool.
    • Utility: DateTimeTool, CronTool, SemVerTool, UrlTool, ColorTool, PerformanceTool, PathTool, MimeTool, TimeZoneTool, LocaleTool, HumanizeTool, DurationTool, ScheduleTool.
    • IO: FileSystemTool, EnvironmentTool, ProcessTool, CompressTool, WatchTool.
    • Net: HttpTool, NetworkTool, SmtpTool, WebSearchTool.
    • Factory class BuiltInTools and fluent registration extensions.
  • Introduced the LMKit.Agents.Planning namespace.
    • IPlanningHandler interface with ReActHandler, ChainOfThoughtHandler, TreeOfThoughtHandler, PlanAndExecuteHandler, and ReflectionHandler implementations.
    • Supporting classes: PlanningStep, PlanningStepResult, PlanningContext, PlanningStrategy.
  • Introduced the LMKit.Agents.Delegation namespace.
    • Agent-to-agent delegation via DelegationManager, DelegateTool, IDelegationRouter.
    • Supporting classes: DelegationRequest, DelegationResult.
  • Introduced the LMKit.Agents.Streaming namespace.
    • IAgentStreamHandler interface with BufferedStreamHandler, MulticastStreamHandler, TextWriterStreamHandler, DelegateStreamHandler.
    • Supporting classes: StreamingAgentExecutor, AgentStreamResult, AgentStreamToken.
  • Introduced the LMKit.Agents.Resilience namespace.
    • IResiliencePolicy interface with RetryPolicy, CircuitBreakerPolicy, TimeoutPolicy, RateLimitPolicy, BulkheadPolicy, FallbackPolicy, CompositePolicy.
    • Supporting classes: ResilientAgentExecutor, FallbackAgentExecutor, AgentHealthCheck.
  • Introduced the LMKit.Agents.Observability namespace.
    • IAgentTracer interface with ConsoleTracer, InMemoryTracer, CompositeTracer, NoOpTracer.
    • Supporting classes: AgentSpan, AgentMetrics, AgentTracing, TracingAgentExecutor, JsonTraceExporter.
  • Introduced the LMKit.Agents.Templates namespace.
    • AgentTemplate base class with 18 pre-built templates: ChatAgentTemplate, AssistantAgentTemplate, ToolAgentTemplate, ReActAgentTemplate, CodeAgentTemplate, WriterAgentTemplate, AnalystAgentTemplate, PlannerAgentTemplate, ResearchAgentTemplate, ReviewerAgentTemplate, SummarizerAgentTemplate, ExtractorAgentTemplate, TutorAgentTemplate, TranslatorAgentTemplate, ClassifierAgentTemplate, DebuggerAgentTemplate, EditorAgentTemplate, QAAgentTemplate.
    • Factory class AgentTemplates.
  • Introduced the LMKit.Agents.Skills namespace with Agent Skills Protocol support.
    • Core classes: AgentSkill, SkillRegistry, SkillBuilder, SkillActivator, SkillParser.
    • Metadata: SkillMetadata, SkillContext, SkillMatch, SkillResource.
    • Enumerations: SkillInjectionMode, SkillResourceType.
    • Event args: SkillRegisteredEventArgs, SkillRemovedEventArgs.
    • Exception: SkillParseException.
    • Supports SKILL.md specification for defining reusable agent skills.
    • Progressive disclosure with lazy loading of instructions and resources.
    • Multiple loading sources: filesystem, URLs, GitHub repositories.
    • Keyword-based and semantic (embedding-based) skill matching.
    • Slash command parsing (/skill-name arguments).
  • Added skills support to the MultiTurnConversation class.
    • Added Skills property for registering tool collections.
    • Added RegisterSkill and RegisterSkillAsync methods.
    • Added UnregisterSkill method.
    • Added SkillInvoked and SkillCompleted events.
    • Added EnableSkills property to control skill execution.
  • Improved SpeechToText speed and accuracy.
Correzioni
  • Resolved compilation issue with MAUI for macOS.
LM-Kit.NET 2026.1.427 gen 2026
Funzionalità
  • Added model cards for whisper-large2 and devstral-small2.
  • Introduced the LMKit.Speech.Dictation namespace with Formatter, Command, CommandInfo, CommandMatch, and FormatterOptions classes for dictation text formatting.
  • Added the SuppressHallucinations property to the SpeechToText class.
  • Added the SuppressNonSpeechTokens property to the SpeechToText class.
  • Improved SpeechToText accuracy.
Correzioni
  • Resolved compilation issue with MAUI for macOS.
LM-Kit.NET 2026.1.317 gen 2026
Funzionalità
  • Introduced the NamedEntityRecognitionTrainingDataset class.
  • Improved confidence metrics computation.
  • Improved the target language support of the summarizer engine.
Correzioni
  • Text attachments were not correctly processed in some tasks.
LM-Kit.NET 2026.1.211 gen 2026
Funzionalità
  • Added the DeleteDocument and DeleteDocumentAsync methods to the DocumentRag class.
  • Added AddDataSource and AddDataSourceAsync overloads to the RagEngine class that load an existing DataSource from a vector store.
  • Added LoadWarnings and HasLoadWarnings properties to the DataSource class for inspecting sections that could not be read during partial loading.
  • Introduced the LoadWarning class.
  • Added model cards for nemotron3-nano and falcon-h1r:7b.
  • Added support for the LMKIT_MODELS_DIR environment variable to configure the default model storage directory.
  • General performance enhancements.
  • Improved DataSource create and update performance on cloud vector databases (for example Qdrant).
  • Improved error reporting when loading partially corrupted DataSource files.
  • Improved the accuracy of the keyword extraction engine.
LM-Kit.NET 2026.1.1Versione principale4 gen 2026
Funzionalità
  • Added the ModelID property to the LM class.
  • Added PromptTokenCount and PromptProcessingRate properties to the TextGenerationResult class.
  • Added the GeneratedTokenCount property to the TextGenerationResult class.
  • Introduced the AttachmentReference class.
  • Added GetText and GetTextAsync overloads to the Attachment class that take a page range as a parameter.
  • Added the Structured and Auto members to the TextOutputMode enumeration.
  • Added SetText overloads to the Attachment class that accept a page index.
  • Added URI constructor and CreateFromUriAsync factory method to the Attachment class for loading attachments from remote URIs.
  • Added CreateFromFileAsync and CreateFromStreamAsync factory methods to the Attachment class for asynchronous loading.
  • Added HasTextOnPage and HasTextOnPageAsync methods to the Attachment class.
  • Added support for the PDF format.
  • Introduced the IMultiTurnConversation enumeration.
  • Introduced the FileSystemVectorStore class.
  • Introduced the IChunking interface.
  • Introduced the MarkdownChunking class.
  • Added QueryPartitions and QueryPartitionsAsync overloads to RagEngine that accept a custom prompt template.
  • Introduced the DocumentRag class.
  • Introduced the PdfChat class.
  • Introduced the DocumentReference class.
  • Introduced the DocumentIndexingResult class.
  • Introduced the DocumentImportProgressEventArgs class.
  • Introduced the CacheAccessedEventArgs class.
  • Introduced the PassageRetrievalCompletedEventArgs class.
  • Introduced the ResponseGenerationStartedEventArgs class.
  • Introduced the DocumentImportPhase enumeration.
  • Introduced the DocumentQueryResult class.
  • Introduced the PageProcessingMode class.
  • Added the MaximumCompletionTokens and StripImageMarkup properties to the VlmOcr class.
  • Added SetContent overloads to the TextExtraction class that accept a page index or a page range.
  • Introduced the LMKitTelemetry class.
  • General performance enhancements.
  • Improved speed and accuracy of the VlmOcr engine.
  • Improved speed of the SpeechToText engine.
  • Improved observability with OpenTelemetry GenAI instrumentation.
  • Breaking changes - Removed the Prompt class, use ChatHistory.Message instead.