class

Memo::Namespaces

Inherits Reference < Object

Registry of Memo::Service instances keyed by namespace (ns).

Each ns has its own database, embedding service, and USearch index — providing true isolation between projects sharing one memo-arcana process.

Namespaces can be opened explicitly via open or listed in a config file for preloading at boot. Once opened, services are cached in memory until explicitly closed (or the process exits).

Constructors

Instance methods

close(ns : String) : Bool

Close and remove a namespace. Waits for an open in progress, and for requests already using the service (see use). New requests wait, then open it afresh.

Source
close_all

Close all open services (called on shutdown), each after its in-flight requests finish.

Source
configs
Source
get(ns : String) : Memo::Service

Get the Memo::Service for a namespace, opening it lazily if needed. Raises if the namespace isn't registered.

Opening can be slow (it may replay or rebuild the index), so it holds only that namespace's open lock; requests for other namespaces carry on.

Source
list

List all registered namespaces with their open status.

Source
load_config(path : String)

Load namespace configs from a YAML-ish config file.

Format (very simple, one block per namespace):

namespaces: - ns: wow db: postgres://wow:wow@localhost/wow_dev service: openai preload: true - ns: notes db: /var/lib/memo/notes.db service: mock

Source
open(config : Config) : Memo::Service

Register and immediately open a namespace. Returns the Service.

Source
open_services

Snapshot of the open services, for work done outside the lock (e.g. periodic index saves).

Source
preload_all

Preload all namespaces marked with preload: true in their config.

Source
register(config : Config)

Register a namespace config (without opening).

Source
services
Source
use(ns : String, &)

Run the block with the namespace's service, opening it if needed. close waits for blocks already running before it closes the service.

Source

Nested types