Skip to content

AbstractFramework 0.11.15

Choose a tag to compare

@lpalbou lpalbou released this 28 Oct 11:24
· 188 commits to main since this release
f5e9bf7

Pins the 2026-10-27/28 release wave (backlog 1055) across the light, Apple and GPU profiles:
AbstractCore 2.31.0, AbstractRuntime 0.15.0, AbstractAgent 0.4.0, AbstractGateway 0.17.0,
AbstractMemory 0.4.0, AbstractVoice 0.19.2, AbstractAssistant 0.15.0 and AbstractSkill 0.3.3
(AbstractSemantics 0.0.5, AbstractVision 0.3.34, AbstractMusic 0.1.17 and Abstract3D 0.3.2 unchanged). The installers
and the install manifest install gateway 0.17.0 and the npm apps AbstractCode web 0.12.0, Observer 0.9.0,
Entity 0.8.0 and Continuum 0.7.1; container images ghcr.io/lpalbou/abstractgateway:0.17.0 and
ghcr.io/lpalbou/abstractcore-server:2.31.0. AbstractAgent moves to 0.4.0 because gateway 0.17.0 requires it.

Upgrade notes (one-way)

  • AbstractMemory 0.4.0 migrates a memory home on first write: a SQLite home's JSON-text vectors are rewritten as
    float32 BLOBs, and graph homes gain four tables (memg_revisions, memg_provenance, memg_derivations,
    memg_history). A 0.3.x reader then finds no vectors. Back up the data folder before upgrading if you may need to
    roll back to 0.11.14.
  • AbstractRuntime 0.15.0 writes a ledger_<run_id>.idx row index beside each JSON-file ledger; older readers
    ignore it.
  • /kg/query is owner-scoped for non-admins (gateway 0.17.0): a client that read another principal's
    owner_id or all_owners now gets only its own owners.

The wave

  • Voice library and personal voices: the gateway lists the languages each voice engine accepts and the cloned
    voices, and with user accounts each account keeps the voices it clones or designs in its own store; the shared
    voice picker and Create a voice reach the console, Code, Entity and the desktop Assistant (voices grouped by whose
    they are). AbstractVoice 0.19.2 keeps clones listed when a TTS model is selected and lists the cloning checkpoints;
    AbstractCore 2.31.0 takes the clone language over HTTP.
  • Session tool policy (backlog 1061): "approve all" / "approve this kind" / "deny" for a conversation is held by
    the gateway (/api/gateway/sessions/{session_id}/tool-policy), clamped to the account's authorized tools and read
    by the runtime before any wait: an approved call runs with no approval gate flashing in any app, and each decision
    is an abstract.tool_policy_decision ledger record. Runtime 0.14.0+, gateway 0.16.0+, panel-chat 0.5.0, desktop
    Assistant 0.15.0; the iPhone/watch and AbstractCode still use their local grants.
  • Replay view: one replayable ledger (runtime reducer, durable per-run seq, LedgerStore.get_record) and the
    gateway's replay view routes that every thin client builds on.
  • Memory graph consolidation: abstractmemory.graph is the one write path of a mind (revisions, provenance,
    history, narrow_assertion, the merged closure kind); the runtime reaches it through its memory facade
    (MEMORY_REVISE, provenance stamping) and the gateway through new memory graph routes. AbstractNote 0.2.0 (statements
    that say where they came from) builds on it; it is not pinned by the root (an optional gateway seam).
  • Prefix-cache reuse: AbstractCore 2.31.0 places the MLX prefix-cache snapshot before per-call system riders, so a
    tool loop with attachments restores the cached prefix instead of re-prefilling the conversation at every call;
    AbstractAgent 0.4.0 keeps the loop prompts' prefix byte-stable (iteration counters and scratchpad out of the cached
    system prompt, byte-stable turn grounding).
  • UI kit consolidation: ui-kit 0.9.2 and panel-chat 0.5.0 (AbstractUIC 0.7.x) carry the shared chat, approvals,
    voice and session-policy primitives the apps now compose.
  • App releases: AbstractCode web 0.12.0, Observer 0.9.0, Entity 0.8.0, Continuum 0.7.1, desktop Assistant 0.15.0.
  • Events, triggers and attention (2026-10-25/26 rounds, built before this wave and first pinned here). User
    guide: Triggers, attention and push.

Not in this release: @abstractframework/note 0.2.0 (its npm publish failed; the Python package is on PyPI),
@abstractframework/flow 0.11.0 and the abstractcode 0.11.0 crate (not published; the root keeps Flow 0.10.1 and
the crate 0.10.0). The iPhone and Apple Watch app 0.16.0 ships separately through TestFlight.

  • Triggers native to the runtime: per-user connections (a mailbox, a feed, a webhook) registered once
    on the gateway's Triggers page and reused by name; CloudEvents-shaped envelopes; feed (RSS/Atom) and
    signed webhook sources beside schedules and mail; several read-only mailboxes per user with Google or
    Microsoft sign-in and address-first autodiscovery; a connection fetches only while an automation uses it.
  • Attention stream: one per-user event stream (run pointers, trigger events, wakes, attention items,
    human waits, notifications) with catch-up and SSE routes and named channels; the gateway tray, the
    Assistant desktop, the watch, the iPhone and Code follow it, with one notification per Mac.
  • Reminders and wakes: an agent schedules a later run in its own session (schedule_run), with at
    most its own tools; a reminder notifies by default.
  • Flow: "+" asks what starts the flow; triggered flows open with typed start and end pins only; Turn it
    on; Run as if triggered with real sampled data; an Email type with deterministic Mail nodes (search,
    get, mark, flag, label, move, delete, send, reply, forward, attachment) and Publish to channel.
  • Observer and console: triggers in words everywhere; My email as tabs; a one-field Add-mailbox form.
  • Evening round (2026-10-25): a mailbox's access is an explicit choice, Read only (default) or Read and
    write (change and send; sending also needs the outgoing server), with a switch on each mailbox row and a
    PUT /me/email/accounts/{id}/access route, two plain refusals in the mail verbs, web and terminal console
    parity; Flow warns when a loop's body ends at On Flow End (the run would stop after the first item) with a
    one-click "Fix the loop", offers Break Email from an Email pin drop and ForEach from a list pin drop.
  • Late round (2026-10-25): Flow Library by what starts a flow (Chat / Triggered / Other; schedules are set
    in Observer and the Assistant, not in Flow), folded nodes show only their wired pins, New/Open/Save in colour
    with a readable Save state; a catalogue of well-known open feeds (27, verified live, editable copy in the
    data dir) in the console's New connection; RSS 1.0 (RDF) feeds parse; Apple push for the watch and the
    phone on the gateway side (device routes, dispatcher with a SQLite outbox,
    abstractgateway push-relay with fixed localized messages; backlog 1049); ADR-0040 (critical workflows
    live in the Flow library, agents draft, the operator publishes); backlog 1051–1053.
  • 2026-10-26 round: ADR-0041 (no hidden effects after a flow): On Flow End records response,
    success and note, Notify me chooses whom and where (tray, watch, phone, email, console), the
    older notify pin is a labelled compatibility path, and every run answers After the run
    (GET /api/gateway/runs/{run_id}/after, in Flow and the Observer). Push: the forwarder is one admin
    setting (Built-in, Off or Your own forwarder; the built-in one is not live yet), the console lists
    your devices, a recently registered watch takes an alert before the iPhone, and the packaged topics
    are the merged app's ids. AbstractAssistant for iPhone and Apple Watch is one app (0.16.0): the
    iPhone app carries the watch app, one sign-in in the Keychain shared through the app group,
    notification service extensions that read each push's event from your gateway. The gateway under
    load (backlog 1054): run listings from an in-memory index (shadow-checked by default), bounded work
    pools, account services built off the event loop, garbage-collector tuning, a CI load test on
    10,000 runs and 100,000 artifacts, and the API and the runs in two processes as an opt-in (split
    mode).
  • Live test on the operator's gateway: a Gmail message → inbox → automation → local-model judgement →
    attention → tray, console and email (untracked/roadmap/FINAL.md).