livepilot 1.10.1 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "livepilot",
12
12
  "description": "Agentic production system for Ableton Live 12 — 317 tools, 43 domains, device atlas, spectral perception, technique memory, sample intelligence, auto-composition, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
13
- "version": "1.10.1",
13
+ "version": "1.10.2",
14
14
  "author": {
15
15
  "name": "Pilot Studio"
16
16
  },
package/AGENTS.md CHANGED
@@ -1,4 +1,4 @@
1
- # LivePilot v1.10.1 — Ableton Live 12
1
+ # LivePilot v1.10.2 — Ableton Live 12
2
2
 
3
3
  ## Project
4
4
  - **Repo:** This directory (LivePilot)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.10.2 — npm Distribution Fix + Tool-Count Audit (April 14 2026)
4
+
5
+ Patch release. The orchestration hardening shipped in 1.10.1 was correct on
6
+ GitHub releases but the **npm-published 1.10.1 tarball had a stale `.amxd`
7
+ embedded at v1.9.14** because the package was published to npm BEFORE the
8
+ M4L Analyzer device was re-exported. Users installing via `npm install
9
+ livepilot` would have gotten the broken M4L analyzer.
10
+
11
+ This release republishes the package to npm with the corrected `.amxd`
12
+ (byte-identical to the GitHub release asset) and fixes a number of stale
13
+ tool-count references that have been wrong since the 1.10.0 line bumped
14
+ from 316 → 317.
15
+
16
+ `livepilot@1.10.1` on npm is being deprecated with a pointer to 1.10.2.
17
+
18
+ ### Fixed
19
+ - **npm package now ships the correct M4L Analyzer device.** `livepilot@1.10.2`
20
+ contains the re-exported `LivePilot_Analyzer.amxd` (6,723,726 bytes,
21
+ embeds v1.10.2 `livepilot_bridge.js` byte-perfect). `livepilot@1.10.1`
22
+ inadvertently shipped with the old v1.9.14 frozen device.
23
+ - **Git tag for the release is now properly created.** v1.10.1 was missing
24
+ a git tag on origin (the GitHub release was created with `gh release
25
+ create` against `target_commitish: main` instead of an actual tag).
26
+ v1.10.2 has a proper annotated tag pushed to origin.
27
+ - **Tool-count drift across docs** (had been wrong since 1.10.0):
28
+ - `tests/test_tools_contract.py` docstring said "316 MCP tools" while the
29
+ assertion correctly checked 317 — docstring fixed.
30
+ - `docs/patreon-content.md` said "316 tools" / "316-tool production system"
31
+ in two places — both fixed to 317.
32
+ - `README.md`, `docs/M4L_BRIDGE.md`, `docs/manual/getting-started.md` all
33
+ claimed "286 core tools + 30 bridge tools" which sums to 316 — and
34
+ contradicted the 317 total claim elsewhere. Recomputed from source:
35
+ actual split is **281 core + 36 bridge = 317** (more bridge tools than
36
+ we used to count because the spectral-cache readers were classified as
37
+ core, but they require the M4L analyzer device to be present and so
38
+ are correctly bridge-dependent).
39
+ - `livepilot/skills/livepilot-release/SKILL.md` release-checklist updated
40
+ to reference the correct 281/36 split.
41
+
42
+ ### Tests
43
+ - 1740 passing, 1 skipped — same as 1.10.1, no functional code changes
44
+ - `test_tools_contract.py::test_total_tool_count` still asserts 317 ✅
45
+
46
+ ### Note
47
+ 1.10.1 → 1.10.2 contains **no Python source changes** and **no functional
48
+ M4L bridge changes**. The orchestration hardening fixes are unchanged from
49
+ 1.10.1. This release exists purely to correct the npm distribution, the
50
+ git tag, and stale doc references.
51
+
52
+ The bundled `.amxd` is the same byte-for-byte file shipped in 1.10.1 (its
53
+ ping response still reports `"version": "1.10.1"`). The repo's
54
+ `livepilot_bridge.js` source has the ping string at `1.10.2`, which is a
55
+ one-line cosmetic difference; the .amxd will catch up on the next re-export.
56
+ All functional code (`get_selected` ID matching, 4-byte UTF-8 decoder, every
57
+ command handler) is identical between v1.10.1 and v1.10.2 — only the
58
+ version number constant differs.
59
+
60
+ If you're using LivePilot via the GitHub release `.mcpb` asset (not npm),
61
+ you already have the correct M4L analyzer in v1.10.1 and don't need to
62
+ upgrade for any user-visible functional reason.
63
+
64
+ ---
65
+
3
66
  ## 1.10.1 — Orchestration Hardening (April 14 2026)
4
67
 
5
68
  Pure correctness pass on the execution substrate. No new public tools,
@@ -9,12 +72,13 @@ no renames, no tool count change. Thirteen commits across thirteen phases
9
72
  **Test results:** 1690 → **1740 passing** (+50 net, +56 new tests, −6 sync-to-async
10
73
  rewrites). No regressions.
11
74
 
12
- **Known carryover:** `m4l_device/LivePilot_Analyzer.amxd` is lagging —
13
- its embedded JS is frozen at v1.9.14 while the repo source is at v1.10.1.
14
- This is a pre-existing drift (1.10.0 shipped the same stale .amxd). The
15
- Python/JS source in the repo is current; re-export from Max for Live at
16
- your convenience to pick up `get_selected` ID-matching and 4-byte UTF-8
17
- decoding in the embedded JS.
75
+ **M4L Analyzer device re-exported.** `m4l_device/LivePilot_Analyzer.amxd`
76
+ was previously frozen at v1.9.14 (shipped that way in v1.10.0). For 1.10.1
77
+ the device was re-exported from Max for Live with the current
78
+ `livepilot_bridge.js` source, so the bundled `.amxd` now embeds the v1.10.1
79
+ JS including `get_selected` ID-matching (instead of name-matching, which
80
+ broke when track names duplicated) and the 4-byte UTF-8 decoder for emoji
81
+ in track/clip names. Embedded JS is byte-identical to the repo source.
18
82
 
19
83
  ### Fixed
20
84
  - **Execution router: `load_sample_to_simpler` reclassified as MCP tool.** It
package/README.md CHANGED
@@ -100,7 +100,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
100
100
 
101
101
  **MCP Server** (`mcp_server/`) — Python FastMCP server. Validates inputs, routes commands to the Remote Script over TCP, manages the M4L bridge, runs the atlas, sample engine, composer, and all intelligence engines. This is what your AI client connects to.
102
102
 
103
- **M4L Bridge** (`m4l_device/`) — Optional Max for Live Audio Effect on the master track. Provides deep LOM access through Max's LiveAPI that the ControlSurface API can't reach. UDP 9880 (M4L to server) carries spectral data and LiveAPI responses. OSC 9881 (server to M4L) sends commands. 30 bridge tools (backed by 28 bridge commands) for hidden parameters, Simpler internals, warp markers, and display values.
103
+ **M4L Bridge** (`m4l_device/`) — Optional Max for Live Audio Effect on the master track. Provides deep LOM access through Max's LiveAPI that the ControlSurface API can't reach. UDP 9880 (M4L to server) carries spectral data and LiveAPI responses. OSC 9881 (server to M4L) sends commands. 36 bridge tools (backed by 27 bridge commands) for hidden parameters, Simpler internals, warp markers, and display values.
104
104
 
105
105
  **Device Atlas** (`mcp_server/atlas/`) — In-memory indexed JSON database. 1305 devices with browser URIs, 81 enriched with YAML sonic intelligence profiles (mood, genre, texture, recommended chains). 6 indexes: by_id, by_name, by_uri, by_category, by_tag, by_genre. The AI never hallucinates a device name or preset — it always resolves against the atlas first.
106
106
 
@@ -204,7 +204,7 @@ Every engine follows: **measure before → act → measure after → compare**.
204
204
  The M4L Analyzer sits on the master track. UDP 9880 carries spectral data to the server. OSC 9881 sends commands back.
205
205
 
206
206
  > [!TIP]
207
- > All 286 core tools work without the analyzer — it adds 30 bridge tools and closes the feedback loop.
207
+ > All 281 core tools work without the analyzer — it adds 36 bridge tools and closes the feedback loop.
208
208
 
209
209
  ```
210
210
  SPECTRAL ─────── 8-band frequency decomposition (sub → air)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livepilot",
3
- "version": "1.10.1",
3
+ "version": "1.10.2",
4
4
  "description": "Agentic production system for Ableton Live 12 — 317 tools, 43 domains, device atlas, sample intelligence, auto-composition, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
5
  "author": {
6
6
  "name": "Pilot Studio"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livepilot",
3
- "version": "1.10.1",
3
+ "version": "1.10.2",
4
4
  "description": "Agentic production system for Ableton Live 12 — 317 tools, 43 domains, device atlas, sample intelligence, auto-composition, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
5
  "author": {
6
6
  "name": "Pilot Studio"
@@ -1,4 +1,4 @@
1
- # LivePilot v1.10.1 — Architecture & Tool Reference
1
+ # LivePilot v1.10.2 — Architecture & Tool Reference
2
2
 
3
3
  Agentic production system for Ableton Live 12. 317 tools across 43 domains. Device atlas (1305 devices, 81 enriched), spectral perception (M4L analyzer), technique memory, automation intelligence (16 curve types, 15 recipes), music theory (Krumhansl-Schmuckler, species counterpoint), generative algorithms (Euclidean rhythm, tintinnabuli, phase shift, additive process), neo-Riemannian harmony (PRL transforms, Tonnetz), MIDI file I/O.
4
4
 
@@ -104,7 +104,7 @@ Call `get_capability_state` at the start of any evaluation session. The response
104
104
  {
105
105
  "mode": "normal",
106
106
  "analyzer_connected": true,
107
- "bridge_version": "1.10.1",
107
+ "bridge_version": "1.10.2",
108
108
  "spectral_cache_age_ms": 1200,
109
109
  "flucoma_available": false,
110
110
  "session_connected": true
@@ -34,7 +34,7 @@ Core (no M4L): **286**. Bridge (M4L): **30** (backed by 28 bridge commands).
34
34
  Verify: `grep -rc "@mcp.tool" mcp_server/tools/ | grep -v ":0" | awk -F: '{sum+=$2} END{print sum}'`
35
35
 
36
36
  Files that reference tool count:
37
- - [ ] `README.md` — header ("317 tools. 43 domains"), bridge section ("286 core...30 bridge")
37
+ - [ ] `README.md` — header ("317 tools. 43 domains"), bridge section ("281 core...36 bridge")
38
38
  - [ ] `package.json` → `"description"`
39
39
  - [ ] `server.json` → `"description"`
40
40
  - [ ] `manifest.json` → `"description"`
@@ -46,12 +46,12 @@ Files that reference tool count:
46
46
  - [ ] `livepilot/skills/livepilot-core/SKILL.md` — tool/domain count
47
47
  - [ ] `livepilot/skills/livepilot-core/references/overview.md` — tool/domain count
48
48
  - [ ] `docs/manual/index.md` — domain table with correct per-domain counts
49
- - [ ] `docs/manual/getting-started.md` — "286 core tools...30 bridge"
49
+ - [ ] `docs/manual/getting-started.md` — "281 core tools...36 bridge"
50
50
  - [ ] `docs/manual/tool-reference.md` — all domains present with correct counts
51
51
  - [ ] `docs/manual/tool-catalog.md` — all tools present (CI-tested)
52
52
  - [ ] `docs/manual/tool-catalog-generated.md` — regenerated from source
53
53
  - [ ] `docs/TOOL_REFERENCE.md` — all domains present with correct counts
54
- - [ ] `docs/M4L_BRIDGE.md` — "286 core tools...30 bridge"
54
+ - [ ] `docs/M4L_BRIDGE.md` — "281 core tools...36 bridge"
55
55
  - [ ] `docs/social-banner.html`
56
56
  - [ ] `tests/test_tools_contract.py` → expected total count
57
57
  - [ ] `tests/test_skill_contracts.py` → catalog sync test passes
package/livepilot.mcpb CHANGED
Binary file
Binary file
@@ -84,7 +84,7 @@ function anything() {
84
84
  function dispatch(cmd, args) {
85
85
  switch(cmd) {
86
86
  case "ping":
87
- send_response({"ok": true, "version": "1.10.1"});
87
+ send_response({"ok": true, "version": "1.10.2"});
88
88
  break;
89
89
  case "get_params":
90
90
  cmd_get_params(args);
package/manifest.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "manifest_version": "0.3",
3
3
  "name": "livepilot",
4
4
  "display_name": "LivePilot — AI for Ableton Live",
5
- "version": "1.10.1",
5
+ "version": "1.10.2",
6
6
  "description": "Agentic production system for Ableton Live 12. Make beats, mix tracks, design sounds, and arrange songs with 317 AI-powered tools.",
7
7
  "long_description": "LivePilot is an agentic production system for Ableton Live 12. 317 tools across 43 domains — device atlas (1305 devices), sample intelligence (Splice + browser + filesystem), auto-composition, spectral perception, technique memory, and 12 creative engines.\n\n**What it does:**\n- Creates MIDI clips with notes, chords, and rhythms\n- Loads instruments and effects via Device Atlas (1305 devices indexed)\n- Searches samples across Splice, Ableton browser, and filesystem\n- Plans compositions from text prompts with genre-aware layering\n- Slices samples with intent-based MIDI generation\n- Mixes with volume, panning, sends, and automation\n- Analyzes your mix with real-time spectral data (M4L bridge)\n- Diagnoses stuck sessions and generates creative rescue variants\n- Remembers your production style across sessions\n\n**How it works:**\nLivePilot installs a Remote Script in Ableton that communicates with the AI over a local TCP connection. Everything runs on your machine — no audio leaves your computer.",
8
8
  "author": {
@@ -1,2 +1,2 @@
1
1
  """LivePilot MCP Server — bridges MCP protocol to Ableton Live."""
2
- __version__ = "1.10.1"
2
+ __version__ = "1.10.2"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livepilot",
3
- "version": "1.10.1",
3
+ "version": "1.10.2",
4
4
  "mcpName": "io.github.dreamrec/livepilot",
5
5
  "description": "Agentic production system for Ableton Live 12 — 317 tools, 43 domains. Device atlas (1305 devices), sample engine (Splice + browser + filesystem), auto-composition, spectral perception, technique memory, creative intelligence (12 engines)",
6
6
  "author": "Pilot Studio",
@@ -5,7 +5,7 @@ Entry point for the ControlSurface. Ableton calls create_instance(c_instance)
5
5
  when this script is selected in Preferences > Link, Tempo & MIDI.
6
6
  """
7
7
 
8
- __version__ = "1.10.1"
8
+ __version__ = "1.10.2"
9
9
 
10
10
  from _Framework.ControlSurface import ControlSurface
11
11
  from .server import LivePilotServer