You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DirectBackend and QueuedBackend have a new method, turns(), which returns the AgentTurns store. An application with its own backend implementation must add it; the JDBC and
in-memory backends already do.
The database must use UTF8 encoding (the PostgreSQL default). nessy_agent_turn.trajectory
stores tool names as text, so a name outside the database's character set would stop a turn's
ending from committing.
An application with nessy.initialize-schema=false must create nessy_agent_turn, the
table of completed turns, with the rest of its schema; the DDL is in nessy-schema.sql in the
JDBC backend jar.
An application with nessy.initialize-schema=false must create nessy_note and nessy_plan_task, the notebook's and the plan's tables, with the rest of its schema; the DDL is nessy-schema.sql in the notebook jar and in the planning jar.
The notebook index is present when it is empty, and the remember tool's description says
what a note is for.
Added
Trajectory fingerprints. Every completed turn gets a deterministic, versioned digest of its
behavior: which tools ran in which rounds, what each came to, and how the turn ended, with
inputs, arguments, results, timing and cost left out. It is computed in the fold and written to
the new nessy_agent_turn table in the same transaction as the turn-ending event, with the
turn's round, tool and inference counts beside it; the same values are tagged on the turn's span. TurnOutcome and Trajectory are the new public types; AgentTurns is the new backend store.
See docs/concepts/trajectories.md.
The readable trajectory. Each nessy_agent_turn row now carries its trajectory as JSONB
beside the hash: the rounds of tool calls with their outcomes, then how the turn ended. A query
reads behavior directly, and @> finds turns by what they did.
The notebook installs itself. With nessy-memory-notebook and nessy-backend-jdbc on a Spring Boot application's classpath,
every agent of both doors gets the notebook index and remember, revise, recall and forget. nessy.notebook.enabled=false turns it off, and an application's own Notebook bean
keeps the starter's out.
The plan store installs itself. With nessy-planning and nessy-backend-jdbc on a Spring Boot application's classpath,
every agent of both doors gets the ambient current plan and update_plan. nessy.plan.enabled=false turns it off, and an application's own Plans bean keeps the
starter's out.
QueuedHarnessFactoryConfig.feature(...) adds a feature to the queued factory, as the direct
factory's configuration already did.
Both harness auto-configurations collect every Customizer<HarnessConfig<?>> bean and apply
it as a feature to each harness they create.
NotebookTools.feature(Notebook) installs the index and the four tools in one call.
PlanTools.feature(Plans) installs the ambient plan and update_plan in one call.