Class MemoryUpdateTool

ITool implementation that applies partial updates to an existing memory trace stored in the agent's SQLite brain database.

Usage:

const tool = new MemoryUpdateTool(brain);
const result = await tool.execute(
{ traceId: 'mt_3f2b8c1e-5d4a-4e6f-9b7c-2a1d0e8f6c5b', content: 'Updated content here.' },
context,
);
// result.output.updated → true

Implements

  • ITool<MemoryUpdateInput, MemoryUpdateOutput>

Constructors

Methods

  • The refusal an update meets whatever a human would answer, read before the tool orchestrator's approval gate (ITool.refusalBeforeApproval), so no one is asked to approve a write that cannot act: a freeze, and, with the turn's scope ids on the call, a session that records no writes. A refusal that reads the trace (other_user, conflict) is given when the call runs. execute refuses the same call itself, in the same order.

    Parameters

    • args: Record<string, any>

      The call's arguments, before the input schema is checked.

    • context: ToolExecutionContext

      The call's context.

    Returns undefined | ToolExecutionResult<MemoryUpdateOutput>

    The refusal, or undefined when the call may run.

  • Update a memory trace identified by traceId.

    The method builds a dynamic SET clause based on which optional fields are provided:

    • content provided → set content = ?, also set embedding = NULL to signal that the cached vector is stale.
    • tags provided → serialise array as JSON and set tags = ?.

    If neither content nor tags is specified, the method returns { updated: false } immediately without touching the database.

    A trace that does not exist or has deleted = 1 returns { updated: false }.

    Parameters

    • args: MemoryUpdateInput

      Update input (traceId, optional content/tags).

    • context: ToolExecutionContext

      Tool execution context; where it carries the turn's scope ids, the call reaches only a live trace of the turn's own scopes that the turn's own user filed (another scope's reads as not found, another user's is refused, other_user), and the write runs through the learner session's recorder, writing only while the trace holds what was read (conflict otherwise). Only a freeze stops a write, with a layer or without one (frozen).

    Returns Promise<ToolExecutionResult<MemoryUpdateOutput>>

    { updated } status, or an error result.

Properties

id: "memory-update-v1" = 'memory-update-v1'

Globally unique tool identifier.

name: "memory_update" = 'memory_update'

LLM-facing tool name.

displayName: "Update Memory" = 'Update Memory'

Human-readable display name.

description: string = ...

LLM-facing description.

category: "memory" = 'memory'

Logical category for discovery and grouping.

hasSideEffects: true = true

This tool writes to the database.

inputSchema: JSONSchemaObject = ...

JSON schema for input validation and LLM tool-call construction.