livepilot 1.14.1 → 1.16.0

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +176 -1
  2. package/README.md +6 -6
  3. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  4. package/mcp_server/__init__.py +1 -1
  5. package/mcp_server/atlas/device_atlas.json +91219 -7161
  6. package/mcp_server/atlas/tools.py +30 -2
  7. package/mcp_server/runtime/live_version.py +4 -2
  8. package/mcp_server/runtime/remote_commands.py +5 -0
  9. package/mcp_server/sample_engine/tools.py +692 -60
  10. package/mcp_server/splice_client/client.py +511 -65
  11. package/mcp_server/splice_client/http_bridge.py +361 -0
  12. package/mcp_server/splice_client/models.py +266 -2
  13. package/mcp_server/splice_client/quota.py +229 -0
  14. package/mcp_server/tools/_analyzer_engine/__init__.py +4 -0
  15. package/mcp_server/tools/_analyzer_engine/sample.py +73 -0
  16. package/mcp_server/tools/analyzer.py +666 -6
  17. package/mcp_server/tools/browser.py +164 -13
  18. package/mcp_server/tools/devices.py +56 -11
  19. package/mcp_server/tools/mixing.py +64 -15
  20. package/mcp_server/tools/scales.py +18 -6
  21. package/mcp_server/tools/tracks.py +92 -4
  22. package/package.json +2 -2
  23. package/remote_script/LivePilot/__init__.py +2 -1
  24. package/remote_script/LivePilot/_clip_helpers.py +86 -0
  25. package/remote_script/LivePilot/_drum_helpers.py +40 -0
  26. package/remote_script/LivePilot/_scale_helpers.py +87 -0
  27. package/remote_script/LivePilot/arrangement.py +44 -15
  28. package/remote_script/LivePilot/clips.py +182 -2
  29. package/remote_script/LivePilot/devices.py +82 -2
  30. package/remote_script/LivePilot/notes.py +17 -2
  31. package/remote_script/LivePilot/scales.py +31 -16
  32. package/remote_script/LivePilot/simpler_sample.py +186 -0
  33. package/server.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,180 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.16.0 — Villalobos session bug batch + Splice plan model (April 22 2026)
4
+
5
+ Hardens the 1.15.0 beta into a full release. Resolves 18 of the 19 bugs
6
+ catalogued in `docs/2026-04-22-bugs-discovered.md` during an end-to-end
7
+ Villalobos-style production session, ships a plan-aware Splice download
8
+ model, adds drum-rack pad-by-pad construction, and lands clip-length +
9
+ note-range invariants so programmatic workflows stop corrupting
10
+ arrangement timing.
11
+
12
+ **Tool count**: 403 → 421 (+18).
13
+ **Domain count**: unchanged at 52.
14
+ **Tests**: 49 new contract tests across five helper modules. No regressions.
15
+
16
+ ### Added
17
+
18
+ **Drum Rack pad-by-pad construction (BUG #1)**
19
+ - `add_drum_rack_pad(track_index, pad_note, file_path)` — atomic tool
20
+ that does the full drum-rack build per pad: insert_rack_chain →
21
+ set_drum_chain_note → insert empty Simpler → load sample via native
22
+ Live 12.4 replace_sample with nested addressing. Returns
23
+ `{ok, chain_index, pad_note, nested_device_index}`. Requires Live 12.4+.
24
+ - `replace_simpler_sample` and `load_sample_to_simpler` now accept
25
+ `chain_index` + `nested_device_index` for deep addressing inside
26
+ drum-rack chains.
27
+ - Auto-increment of `in_note` on `insert_rack_chain` for drum racks
28
+ (BUG #13) — no more "all new chains pile up on note 36 (Multi)".
29
+
30
+ **Live-session device-alive verification (BUG #19)**
31
+ - `verify_device_alive(track_index, device_index)` — static check
32
+ returning `{alive, reason, recommendation}` based on parameter_count
33
+ and health_flags.
34
+ - Optional `fire_test_note=True` path for definitive answer: captures
35
+ pre-hit RMS, fires a scratch MIDI clip, samples the meter over the
36
+ duration, captures post-hit RMS. Scratch clip auto-cleaned.
37
+ - Remote Script handlers: `fire_test_note`, `cleanup_test_note`.
38
+
39
+ **Splice plan-aware download gating (2026-04-14 carry-over)**
40
+ - `SpliceGRPCClient.decide_download` with three branches: free samples
41
+ bypass, Ableton Live plan uses daily quota, credit-metered plans use
42
+ credit floor. Fixes the bug where the Ableton Live plan (100/day
43
+ unmetered) was blocked by the credit-floor check.
44
+ - `DailyQuotaTracker` persisting `~/.livepilot/splice_quota.json` keyed
45
+ by UTC date. 100/day default, 90 warn threshold.
46
+ - `classify_plan` reads feature flags (ableton_unmetered,
47
+ ableton_live_plan, unmetered_downloads, creator_plus) with precedence
48
+ locked down by regression-trap tests.
49
+
50
+ **Splice HTTPS bridge scaffolding**
51
+ - `mcp_server/splice_client/http_bridge.py` — auth + endpoint +
52
+ retry/timeout plumbing for the plugin-exclusive Describe-a-Sound and
53
+ Variations features. Tools return a clear "bridge not yet wired"
54
+ error until the real endpoint shapes are captured via mitmproxy.
55
+
56
+ **Extended analyzer perception**
57
+ - `analyze_loudness_live` (BUG #8) — LUFS + true-peak on the live
58
+ master without requiring a file render.
59
+ - `get_master_spectrum` now accepts `window_ms` (BUG #6) — stable
60
+ averaged reads vs the previous single-sample jitter.
61
+
62
+ **Clip length + note-range invariants (BUG #1c)**
63
+ - `create_clip(length=N)` now forces `loop_end = N` and `end_marker = N`
64
+ after creation. Response exposes both fields.
65
+ - `add_notes` auto-extends `loop_end` if any incoming note's
66
+ `start_time + duration` exceeds it. Response reports
67
+ `loop_end_extended_to` when extension fired.
68
+
69
+ **Smart Simpler defaults (BUG #17 + #18)**
70
+ - `load_browser_item(role=...)` applies post-load Simpler defaults:
71
+ - `drum`: Snap=0, Vol=0dB, Trigger Mode=0 (Trigger), root=C1 (36)
72
+ - `melodic`: Snap=1, Vol=0dB, Trigger Mode=1 (Gate), root=C3 (60)
73
+ - `texture`: Snap=0, Vol=-6dB, Trigger Mode=1 (Gate), root=C3 (60)
74
+
75
+ **Miscellaneous**
76
+ - `get_track_info(-1000)` returns master track info (BUG #11).
77
+ - `scan_full_library(max_per_category=5000)` — removed the hardcoded
78
+ 1000 cap that silently truncated large categories (BUG #12).
79
+ - `batch_set_parameters` accepts `{index: N, value}` and `{name: "X", value}`
80
+ shapes — the keys `get_device_parameters` actually returns (BUG #3).
81
+ - `search_browser` / `search_samples` accept intuitive parameter aliases
82
+ (BUG #4).
83
+ - `get_browser_items` paginates when output would exceed the token cap
84
+ (BUG #5).
85
+ - `get_track_meters` returns consistent peak/L/R triple on a single time
86
+ window (BUG #7).
87
+ - `set_song_scale` accepts string root notes ("C", "F#", "Bb") and
88
+ handles Live 12.4.0's moved `scale_names` attribute via a tolerant
89
+ resolver with a built-in fallback scale list (BUG #2).
90
+
91
+ ### Documentation
92
+
93
+ - `docs/load_browser_item-uri-grammar.md` (BUG #14) — the three URI
94
+ forms, failure modes, discovery recipe, top-level folder map. Moved
95
+ under `livepilot/skills/livepilot-devices/references/`.
96
+ - `livepilot-devices` SKILL — new "Custom Drum Rack Construction" and
97
+ "Parameter Name Quirks" sections (BUG #10, #16).
98
+ - `livepilot-arrangement` SKILL — documents the Live LOM limitation
99
+ behind BUG #1b (programmatic arrangement automation) with two
100
+ workaround patterns (session-clip + record, or stepped section
101
+ clips).
102
+ - `docs/M4L_BRIDGE.md` — drift fixes: bridge command count 28 → 30,
103
+ analyzer MCP tool count 20 → 33, Max 8 → Max 9 reference, new
104
+ Phase 3 section documenting 8 previously undocumented bridge
105
+ commands.
106
+
107
+ ### Fixed
108
+
109
+ - `_live_caps` no longer caches the 12.0.0 fallback when
110
+ `get_session_info` returns no live_version — previously pinned the
111
+ entire session to the oldest capability tier.
112
+
113
+ ### Changed
114
+
115
+ - `insert_rack_chain` on drum racks now auto-increments `in_note`
116
+ (BUG #13). Pass `auto_pad_note=false` to keep Live's default
117
+ collide-on-36 behavior.
118
+
119
+ ### Deferred
120
+
121
+ - **BUG #15** — adding a sub_low (30-60 Hz) spectrum band requires a
122
+ Max 9 re-freeze of `LivePilot_Analyzer.amxd`. Deferred to the next
123
+ .amxd rebuild cycle. `get_mel_spectrum` provides finer-grained
124
+ perceptual bands as a workaround.
125
+ - **BUG #1b** — programmatic creation of arrangement automation
126
+ breakpoints. Live LOM limitation (per Ableton docs,
127
+ `Clip.automation_envelope` returns None for arrangement clips);
128
+ documented workaround patterns instead of a synthetic fix.
129
+
130
+ ### Platform
131
+
132
+ - LivePilot_Analyzer.amxd ping version bytes patched 1.15.0 → 1.16.0
133
+ (in-place binary patch — source bumps don't auto-refresh the frozen
134
+ JS, lesson from two prior releases).
135
+
136
+ ## 1.15.0-beta — Live 12.4 replace_sample native (April 21 2026)
137
+
138
+ First Live 12.4 beta support release. Adds a native fast path for
139
+ SimplerDevice.replace_sample(path) while preserving 100% backward
140
+ compatibility for 12.0-12.3.x users.
141
+
142
+ **Tool count**: unchanged at 403.
143
+ **Domain count**: unchanged at 52.
144
+ **Tests**: 2503 passed, 1 skipped, 0 regressions (+13 new from this release).
145
+
146
+ ### Added
147
+ - **Live 12.4 support (beta):** `SimplerDevice.replace_sample(path)` native
148
+ LOM path is now used automatically on Live 12.4+. Handles empty Simplers —
149
+ fixes the long-standing workaround documented in
150
+ `feedback_load_browser_item_is_source_of_truth.md`.
151
+ - New capability tier `"collaborative"` (Live 12.4+) exposed via
152
+ `LiveVersionCapabilities.capability_tier` and `.has_replace_sample_native`.
153
+ - Remote Script: new `replace_sample_native` handler.
154
+ - MCP server: new `_live_caps(ctx)` helper with lazy version-capability
155
+ caching on the lifespan context.
156
+ - Registered `replace_sample_native` in `mcp_server/runtime/remote_commands.py`
157
+ REMOTE_COMMANDS (required by the boundary audit contract).
158
+
159
+ ### Changed
160
+ - `replace_simpler_sample` and `load_sample_to_simpler` now route to the
161
+ native path when available and fall back to the M4L-bridge path
162
+ otherwise. Tool signatures, argument names, and return shapes unchanged.
163
+
164
+ ### Backward Compatibility
165
+ - Live 12.0–12.3.x: zero behavior change. All routing still goes through
166
+ the M4L bridge.
167
+ - Live 12.4+: native path preferred; bridge used only on fallback.
168
+
169
+ ### Verification status
170
+ - Full test suite: 2503 passed, 0 failures.
171
+ - Backward compat on Live 12.4: verified in-session — `replace_simpler_sample`
172
+ and `load_sample_to_simpler` both work via the bridge path on 12.4 (legacy
173
+ flow intact).
174
+ - Native E2E on Live 12.4 empty-Simpler case: deferred until the plugin
175
+ swap activates the worktree's MCP code. Unit tests prove the routing
176
+ logic and the native handler wiring.
177
+
3
178
  ## 1.14.1 — reload_handlers workflow + device/mixing fixes (April 21 2026)
4
179
 
5
180
  Patch release that lands the post-1.14.0 audit work: one new diagnostics
@@ -13,7 +188,7 @@ tool, three bug fixes, and a new plugin-sync verification script.
13
188
 
14
189
  - Replaces the manual "toggle Control Surface in Live → Preferences →
15
190
  Link/MIDI" step that every Remote Script edit required. New workflow:
16
- after `node installer/install.js`, call `reload_handlers` via the MCP
191
+ after `npx livepilot --install`, call `reload_handlers` via the MCP
17
192
  tool. The Remote Script side uses `pkgutil` + `importlib.reload()` to
18
193
  re-fire all `@register` decorators in place in <1s, without dropping
19
194
  the MCP TCP connection on port 9878.
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  <p align="center">
19
19
  An agentic production system for Ableton Live 12.<br>
20
- 403 tools. 52 domains. Device atlas. Splice integration. Auto-composition. Spectral perception. Technique memory.
20
+ 421 tools. 52 domains. Device atlas. Splice integration. Auto-composition. Spectral perception. Technique memory.
21
21
  </p>
22
22
 
23
23
  <br>
@@ -79,7 +79,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
79
79
  │ └─────────────────┼──────────────────┘ │
80
80
  │ ▼ │
81
81
  │ ┌─────────────────┐ │
82
- │ │ 403 MCP Tools │ │
82
+ │ │ 421 MCP Tools │ │
83
83
  │ │ 52 domains │ │
84
84
  │ └────────┬────────┘ │
85
85
  │ │ │
@@ -120,7 +120,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
120
120
 
121
121
  ## The Intelligence Layer
122
122
 
123
- 12 engines sit on top of the 403 tools. They give the AI musical judgment, not just musical execution.
123
+ 12 engines sit on top of the 421 tools. They give the AI musical judgment, not just musical execution.
124
124
 
125
125
  ### SongBrain — What the Song Is
126
126
 
@@ -172,7 +172,7 @@ Every engine follows: **measure before → act → measure after → compare**.
172
172
 
173
173
  ## Tools
174
174
 
175
- 403 tools across 52 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
175
+ 421 tools across 52 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
176
176
 
177
177
  <br>
178
178
 
@@ -360,7 +360,7 @@ The V2 intelligence layer. These tools analyze, diagnose, plan, evaluate, and le
360
360
  | Creative Constraints | 5 | constraint activation, reference-inspired variants |
361
361
  | Preview Studio | 5 | variant creation, preview rendering, comparison, commit |
362
362
 
363
- > **[View all 403 tools →](docs/manual/tool-catalog.md)**
363
+ > **[View all 421 tools →](docs/manual/tool-catalog.md)**
364
364
 
365
365
  <br>
366
366
 
@@ -587,7 +587,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture details, code guidelines
587
587
 
588
588
  | Document | What's inside |
589
589
  |----------|---------------|
590
- | [Manual](docs/manual/index.md) | Complete reference: architecture, all 403 tools, workflows |
590
+ | [Manual](docs/manual/index.md) | Complete reference: architecture, all 421 tools, workflows |
591
591
  | [Intelligence Layer](docs/manual/intelligence.md) | How the 12 engines connect — conductor, moves, preview, evaluation |
592
592
  | [Device Atlas](docs/manual/device-atlas.md) | 1305 devices indexed — search, suggest, chain building |
593
593
  | [Samples & Slicing](docs/manual/samples.md) | 3-source search, fitness critics, slice workflows |
Binary file
@@ -1,2 +1,2 @@
1
1
  """LivePilot MCP Server — bridges MCP protocol to Ableton Live."""
2
- __version__ = "1.14.1"
2
+ __version__ = "1.16.0"