skip to content
$worker

memory

v0.1.5

Durable cross-session agent memory — named banks of always-injected markdown rules and auto-extracted memories, hybrid BM25 + entity recall, pinning, and supersede-never-delete history. Plain files on disk; every operation is a traced function.

iiiverified
57 installs57 in 7d20 today
install
$iii worker add memory
  • macOS: arm64 · x64
  • Linux: arm64 · armv7 · x64
  • Windows: arm64 · x64 · x86

exact versions are immutable; binary and bundle artifacts are digest-pinned.

functions

22

memory::bank::create

function

Create (or idempotently ensure) a named memory bank — an isolated scope of rules and memories, e.g. one per project or persona. Sessions select it via metadata `memory_bank`.

request
  • descriptionstring

    Human description shown in listings and the console.

  • namestringrequired

    Bank name, `[a-z0-9][a-z0-9_-]{0,63}` (it becomes a folder name).

response
  • bankobjectrequired

    Summary row for `memory::bank::list` and the console page.

    • descriptionstring
    • memoriesinteger· uintrequiredmin 0

      Live memory (memory) count.

    • namestringrequired
    • pinnedinteger· uintrequiredmin 0
    • rulesinteger· uintrequiredmin 0

      Rule (always-injected markdown) count.

  • createdbooleanrequired

    False when the bank already existed (create is idempotent).

memory::bank::delete

function

Move a bank's folder into the store's .trash (recoverable by hand); never destroys data.

request
  • namestringrequired
response
  • okbooleanrequired
  • trashed_tostringrequired

    Where the bank folder was moved (under the store's `.trash/`).

memory::bank::list

function

List every memory bank with memory/rule/pin counts.

request
empty object
response
  • banksobject[]required
    • descriptionstring
    • memoriesinteger· uintrequiredmin 0

      Live memory (memory) count.

    • namestringrequired
    • pinnedinteger· uintrequiredmin 0
    • rulesinteger· uintrequiredmin 0

      Rule (always-injected markdown) count.

memory::delete

function

Tombstone a memory (sets invalid_at). It leaves recall immediately but stays on disk and readable with include_superseded.

request
  • bankstring
  • idstringrequired
response
  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

memory::doctor

function

End-to-end self-test: data-dir writability, a save→recall→trash roundtrip in a scratch bank, and sibling reachability (router, session-manager). Reports degraded states explicitly instead of a bare process-up health.

request
empty object
response
  • checksobject[]required
    • detailstringrequired
    • namestringrequired
    • okbooleanrequired
  • okbooleanrequired

    True only when every REQUIRED check passed (sibling reachability is reported but advisory).

memory::extract-job

function

Internal: queue-delivered extraction job — errors propagate so the queue retries and dead-letters instead of losing the pass.

request
  • session_idstringrequired
response
  • okbooleanrequired

memory::get

function

Fetch one memory by id, including superseded/tombstoned records.

request
  • bankstring
  • idstringrequired
response
  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

memory::hook::pre-generate

function

Internal: harness pre-generate hook — injects the session bank's rules into the system prompt and recalled memories as one appended message. Never denies.

request
  • generateany of
    any of (2)
    variant 1
    • messagesunknown

      Transcript messages as assembled so far (schema-free: shapes belong to the router).

    • system_promptstring
    variant 2
    valuenull
  • metadataunknown

    Turn metadata (`harness::send` options.metadata); `memory_bank` here overrides the session-level selection for this turn.

  • session_idstring
response
  • annotationsobject
  • decisionstringrequired
  • mutationsany of
    any of (2)
    variant 1
    • append_messagesunknown[]required
    • system_promptstring
    variant 2
    valuenull

memory::list

function

Page through a bank's memories, newest first. `include_superseded` shows history too.

request
  • bankstring
  • include_supersededboolean

    Include superseded/tombstoned records (the history view).

  • limitinteger· uintmin 0

    Page size, default 50, max 500.

  • offsetinteger· uintmin 0
  • tagstring

    Only memories carrying this tag.

response
  • memoriesobject[]required
    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0
  • totalinteger· uintrequiredmin 0

memory::on-config-change

function

Internal: hot-reload memory from the authoritative configuration when it changes — reopens the store on a data_dir change and swaps the per-call tuning snapshot otherwise.

request
  • idstring

    Configuration id that changed (advisory; the handler re-fetches).

response
  • okbooleanrequired

memory::on-session-deleted

function

Internal: session::deleted handler — drops the session's extraction cursor.

request
  • session_idstring
response
  • okbooleanrequired

memory::on-turn-completed

function

Internal: harness turn-completed handler — enqueues one durable extraction job (a single router::complete call) for the finished turn; inline fallback without a queue.

request
  • session_idstring
  • statusstring
  • turn_idstring
response
  • okbooleanrequired

memory::pin

function

Pin or unpin a memory. Pinned memories rank higher in recall and are untouchable by every automatic path.

request
  • bankstring
  • idstringrequired
  • pinnedbooleanrequired
response
  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

memory::preview

function

Full injection dry-run for a hypothetical chat message: the exact system-prompt memory section (rules, budgets, truncation markers), the memories the turn would be handed (post ambient floor and token budget), and the appended message verbatim. Runs the same code as the pre-generate hook.

request
  • bankstring

    Bank to preview; the configured default when omitted.

  • querystringrequired

    The hypothetical user message (what someone would type in chat).

response
  • bankstringrequired
  • memoriesobject[]required

    Memories the turn would be handed, post ambient floor and token budget, in injection order.

    • memoryobjectrequired

      One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

      • confidenceone ofrequired

        How a memory entered the store.

        … expand 3 nested
        one of (3)
        variant 1
        valuestringenum: extracted
        variant 2
        valuestringenum: inferred
        variant 3
        valuestringenum: stated
      • corroborationinteger· uint32min 0

        Times this memory was independently re-observed. Boosts recall rank.

      • created_atinteger· uint64requiredmin 0

        Milliseconds since epoch.

      • entitiesstring[]

        Entity handles used as an exact-match retrieval signal.

      • idstringrequired

        Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

      • invalid_atinteger· uint64min 0

        Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

      • pinnedboolean

        Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

      • revisioninteger· uint64min 0

        Bumped on every appended revision of this id; replay keeps the highest.

      • sourceany of
        … expand 2 nested
        any of (2)
        variant 1
        • agentstring
        • entry_idstring
        • session_idstring
        variant 2
        valuenull
      • superseded_bystring

        Memory id that replaced this one, when superseded by content.

      • tagsstring[]

        Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

      • textstringrequired
      • updated_atinteger· uint64requiredmin 0
    • scorenumber· floatrequired

      Recall score; 0.0 for memories added by the ambient floor.

  • messagestring

    The appended `<memory>` message body, verbatim; absent when no memory fits the budget.

  • retrievalstringrequired

    Retrieval mode that ran (`bm25-entity` or `bm25-entity-semantic`).

  • rulesinteger· uintrequiredmin 0

    Rules included, and whether any were cut by `max_rule_chars`.

  • rules_truncatedbooleanrequired
  • system_prompt_sectionstringrequired

    The memory section appended to the system prompt (ambient header + rules), exactly as injected — truncation markers included.

memory::recall

function

Rank a bank's memories against a query (BM25 + entity match + corroboration + recency; no LLM). The same scorer the pre-generate hook uses — call it to preview an injection.

request
  • bankstring

    Bank to search; the configured default when omitted.

  • include_supersededboolean

    Also rank superseded/tombstoned records (the history view).

  • limitinteger· uintmin 0

    Max memories returned (default: the configured recall_limit).

  • querystringrequired
  • tagstring

    Only rank memories carrying this tag.

response
  • bankstringrequired
  • memoriesobject[]required
    • memoryobjectrequired

      One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

      • confidenceone ofrequired

        How a memory entered the store.

        … expand 3 nested
        one of (3)
        variant 1
        valuestringenum: extracted
        variant 2
        valuestringenum: inferred
        variant 3
        valuestringenum: stated
      • corroborationinteger· uint32min 0

        Times this memory was independently re-observed. Boosts recall rank.

      • created_atinteger· uint64requiredmin 0

        Milliseconds since epoch.

      • entitiesstring[]

        Entity handles used as an exact-match retrieval signal.

      • idstringrequired

        Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

      • invalid_atinteger· uint64min 0

        Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

      • pinnedboolean

        Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

      • revisioninteger· uint64min 0

        Bumped on every appended revision of this id; replay keeps the highest.

      • sourceany of
        … expand 2 nested
        any of (2)
        variant 1
        • agentstring
        • entry_idstring
        • session_idstring
        variant 2
        valuenull
      • superseded_bystring

        Memory id that replaced this one, when superseded by content.

      • tagsstring[]

        Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

      • textstringrequired
      • updated_atinteger· uint64requiredmin 0
    • scorenumber· floatrequired
  • retrievalstringrequired

    Retrieval mode actually used — degradation is explicit, never silent. Currently always `bm25-entity`; a semantic signal joins when the router grows an embeddings surface.

memory::reload

function

Drop all in-RAM state and reload every bank from disk — the recovery hatch after editing bank files by hand.

request
empty object
response
  • banksinteger· uintrequiredmin 0
  • okbooleanrequired

memory::rule::list

function

List a bank's rules (markdown, injected whole into the system prompt on every turn). Stored as plain files under the bank's rules/ folder; editing them by hand is equivalent.

request
  • bankstring

    Bank whose rules to list; the configured default when omitted.

response
  • bankstringrequired
  • rulesobject[]required
    • contentstringrequired
    • namestringrequired
    • updated_atinteger· uint64requiredmin 0

      Milliseconds since epoch (file mtime).

memory::rule::set

function

Create or replace one rule (atomic write; empty content removes it). Rules are plain markdown files under the bank's rules/ folder.

request
  • bankstring

    Bank to write into; the configured default when omitted. Created on first use.

  • contentstringrequired

    Markdown content. Empty removes the rule.

  • namestringrequired

    Rule name, `[a-z0-9][a-z0-9_-]{0,63}` (it becomes `<name>.md`).

response
  • existsbooleanrequired

    False when the empty content removed the rule.

  • okbooleanrequired

memory::save

function

Save one memory explicitly. Content-fingerprinted: re-saving the same text reinforces the existing memory instead of duplicating it. Use when the user says `remember this`.

request
  • bankstring

    Target bank; the configured default when omitted.

  • entitiesstring[]

    Entity handles (people/projects/tools) used as a retrieval signal.

  • pinnedboolean
  • session_idstring

    Provenance session, when saved on behalf of a conversation.

  • tagsstring[]

    Topical labels for filtering within the bank (organization, not ranking).

  • textstringrequired

    The memory, one self-contained sentence.

response
  • createdbooleanrequired

    False when the text fingerprint matched an existing memory (it was reinforced instead).

  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

memory::supersede

function

Retire one memory in favor of another: tombstone with a superseded_by pointer, never a plain delete. The consolidation seam; pinned memories cannot be superseded.

request
  • bankstring
  • idstringrequired

    Memory to retire.

  • superseded_bystringrequired

    Live memory that replaces it.

response
  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

memory::tags

function

Distinct tags across a bank's live memories with usage counts, most used first — the filter source for tag-scoped list/recall.

request
  • bankstring
response
  • bankstringrequired
  • tagsobject[]required
    • countinteger· uintrequiredmin 0
    • tagstringrequired

memory::update

function

Revise a memory's text, entities, or pin flag in place (same id, bumped revision; the prior revision stays in the on-disk log).

request
  • bankstring
  • entitiesstring[]
  • idstringrequired
  • pinnedboolean
  • tagsstring[]

    Replace the tag set (empty list clears).

  • textstring
response
  • memoryobjectrequired

    One memory item. Serialized whole as a `memories.jsonl` line; replay is last-wins by `id`, so an update appends a full record with a bumped `revision` and a delete appends a tombstoned record (`invalid_at` set) — history is never destroyed, only superseded.

    • confidenceone ofrequired

      How a memory entered the store.

      one of (3)
      variant 1
      valuestringenum: extracted
      variant 2
      valuestringenum: inferred
      variant 3
      valuestringenum: stated
    • corroborationinteger· uint32min 0

      Times this memory was independently re-observed. Boosts recall rank.

    • created_atinteger· uint64requiredmin 0

      Milliseconds since epoch.

    • entitiesstring[]

      Entity handles used as an exact-match retrieval signal.

    • idstringrequired

      Content fingerprint (`fp` + FNV-1a of the normalized text), so re-ingesting the same source reinforces instead of duplicating.

    • invalid_atinteger· uint64min 0

      Set when the memory stopped being true (superseded or deleted). The record stays on disk and remains queryable with `include_superseded: true`.

    • pinnedboolean

      Pinned memories are never touched by any automatic path (consolidation, decay); only an explicit `memory::pin`/`memory::update` changes them.

    • revisioninteger· uint64min 0

      Bumped on every appended revision of this id; replay keeps the highest.

    • sourceany of
      any of (2)
      variant 1
      • agentstring
      • entry_idstring
      • session_idstring
      variant 2
      valuenull
    • superseded_bystring

      Memory id that replaced this one, when superseded by content.

    • tagsstring[]

      Topical labels for filtering WITHIN a bank ("iii", "workers", "billing") — organization, not ranking. Normalized lowercase, capped like entities. Old records without the field load as untagged.

    • textstringrequired
    • updated_atinteger· uint64requiredmin 0

triggers

2

memory::bank-changed

trigger

A memory bank was created or trashed. Payload: { event_type, bank }.

invocation
  • bankstring

    Only deliver events for this bank.

return
valueunknown

memory::item-changed

trigger

A memory was created, updated, superseded, or deleted in a memory bank. Payload: { event_type, bank, memory }. Bind console/live views here.

invocation
  • bankstring

    Only deliver events for this bank.

return
valueunknown