Skip to content

Release Notes

Versioning and published release notes for this documentation are still under construction, so there is nothing to list here yet.


Upcoming

Breaking Changes — Protocol v2

Workflow wiring moved onto node params. GraphDescription.routes removed.

The routes: [ExitRoute] field has been removed from GraphDescription. Wiring now lives on each node's typed params as <exit_name>_exit string fields (e.g. default_exit, triggered_exit, not_triggered_exit). Empty string means route to END; this is also each field's default value, so exits that terminate the turn do not need to be set at all.

Existing client code calling .Wire() / .wire() continues to work via a compatibility shim that sets the corresponding exit field on the source node's params. New code should set exit fields directly on the params object before passing it to AddNode().

Protocol version bumped from 1 to 2. Old clients connecting to a v2 server receive a clean ProtocolVersionMismatch error from SessionReady instead of a parse failure.

New error code: 3008 InvalidExitTarget — returned from CreateAgent when a node's exit field names a target node that does not exist in the graph. The message field identifies the offending node, exit name, and bad target string.


Intent classification pipeline

  • ClassifyIntent node — top-1 embedding similarity over a labelled knowledge base; attaches an IntentionComponent on "found" or routes to "not_found". Supports threshold, filter, metadata_field, and notify_client parameters.
  • IntentToInstruction node — looks up the intent label from a Map-kind string storage and attaches a matching InstructionComponent for the downstream Generate node to render via Mustache.
  • notify_client on ClassifyIntent — when "true", fires a NodeEvent with event_type="intent_classified" carrying intent, record_id, record_index, and distance to the client in real time.
  • C++ client: AgentProxy::SetOnIntentClassified — typed callback for intent_classified events; receives intent, recordId, recordIndex, and distance directly as typed parameters. See C++ Client API Reference.
  • C++ client: AgentProxy::SetOnNodeEvent — generic fallback callback for any NodeEvent type not covered by a typed handler. Also declared in AgentProxy.h.

Filtered retrieval

  • filter parameter on Retrieve and ClassifyIntent — JSON predicate evaluated against candidate record metadata during vector search; records that fail the predicate are excluded before top_k is applied. Full grammar documented in Retrieve filter grammar.
  • KB metadata schema (fields array) — typed field declarations (int, float, string, bool, set<string>) in the embedded-string-storage config. See Embedded String Storage — Metadata schema.

Map and Multimap string storage

  • Map and Multimap kinds on CreateStringStorageRequest — store ordered key → value pairs with keyed access (FindFirst, FindAll). Map enforces key uniqueness; Multimap allows duplicates. Available inline (parallel keys/strings arrays) or file-backed (.json array of {id, text} objects).

  • Auto model downloading — pass allow_auto_model_downloading=true to ConfigureSession; CreateAgent then downloads any missing models automatically and streams DownloadProgress frames under the same request_id before replying with CreateAgentResponse. New error code 6006 ModelAutoDownloadFailed is returned when a model has no download source configured. Supported in C++, Python, Unity, and Unreal clients. See Enable Auto Model Downloading.