Skip to content

v1.23.0 — User-local atlas overlays

Choose a tag to compare

@dreamrec dreamrec released this 25 Apr 08:51
· 226 commits to main since this release

v1.23.0 — User-local atlas overlay mechanism

Added

  • User-local atlas overlay loader at ~/.livepilot/atlas-overlays/<namespace>/ — drop YAML files to extend the atlas with custom hardware libraries, signature chains, technique recipes, etc. Survives npm updates. Generalizes the v1.22.0 user-scan pattern from "atlas data" to "any user-local namespace."
  • 3 new MCP tools (430 → 433):
    • extension_atlas_search(query, namespace?, entity_type?, limit?) — weighted substring search
    • extension_atlas_get(namespace, entity_id) — fetch full entry incl. body / requires_firmware
    • extension_atlas_list(namespace?) — enumerate namespaces + entity_type counts
  • New file: mcp_server/atlas/overlays.py (~261 lines) — OverlayEntry dataclass, OverlayIndex class, load_overlays() with safe_load, lazy path resolver, module-level singleton + accessor.
  • New doc: docs/EXTENSION_API.md — public API contract for v1.23.0+ extension authors.
  • Boot hook in mcp_server/server.py calls load_overlays() at startup (try/except wrapped, non-fatal).

Behavior

  • Loader uses yaml.safe_load only — rejects Python tags (!!python/*).
  • Per-file parse failures log a WARN and skip; per-entry validation failures log a WARN and skip; duplicate (namespace, entity_type, entity_id) last-loaded wins with a WARN.
  • For entity_type: signature_chain, tags and artists are required (search ranker depends on them). Other entity types treat these as optional.
  • entity_id and entity_type are str-coerced to defend against YAML scalar values like entity_id: 42.

Notes for extension authors

  • The contract (OverlayEntry field names, extension_atlas_* tool API) is stable from v1.23.0 forward.
  • Tool-name collisions: FastMCP enforces first-registered-wins. Bundled tools always beat extensions.
  • Phase 2 (user-local Python extensions via register(mcp)) lands in a future minor version.

Tests

  • 32 new tests (22 unit + 8 MCP-tool + 2 e2e integration), all green.
  • Full suite: 3176 pass, 1 skip, 0 fail.
  • Contract test now passes at 433 tools (was failing at 430).

M4L bridge

  • m4l_device/livepilot_bridge.js VERSION 1.21.3 → 1.23.0 (was 2 minor releases stale)
  • m4l_device/LivePilot_Analyzer.maxpat text label v1.22.1 → v1.23.0
  • m4l_device/LivePilot_Analyzer.amxd binary patched in place at byte offsets 32653 + 6691677 (file size unchanged at 6754576 bytes)

See CHANGELOG.md and docs/EXTENSION_API.md for details.