Repository navigation
v1.23.0 — User-local atlas overlays
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 searchextension_atlas_get(namespace, entity_id)— fetch full entry incl. body / requires_firmwareextension_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.pycallsload_overlays()at startup (try/except wrapped, non-fatal).
Behavior
- Loader uses
yaml.safe_loadonly — 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,tagsandartistsare required (search ranker depends on them). Other entity types treat these as optional. entity_idandentity_typeare str-coerced to defend against YAML scalar values likeentity_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.jsVERSION 1.21.3 → 1.23.0 (was 2 minor releases stale)m4l_device/LivePilot_Analyzer.maxpattext label v1.22.1 → v1.23.0m4l_device/LivePilot_Analyzer.amxdbinary patched in place at byte offsets 32653 + 6691677 (file size unchanged at 6754576 bytes)
See CHANGELOG.md and docs/EXTENSION_API.md for details.