livepilot 1.19.0 → 1.19.1
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.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.19.1 — v1.19.0 polish (April 24 2026)
|
|
4
|
+
|
|
5
|
+
Patch release addressing the three "Known gaps" documented at the
|
|
6
|
+
end of the v1.19.0 CHANGELOG entry. All three were cosmetic or
|
|
7
|
+
observability issues — no correctness changes. 3 new tests + 1
|
|
8
|
+
pre-existing test tolerance widened. Test suite 2854 → 2858 pass.
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
|
|
12
|
+
- **#1 `baseline_transport` not exposed via `compare_experiments`.**
|
|
13
|
+
The field was populated internally on `ExperimentSet` (verified
|
|
14
|
+
by unit tests) but `compare_experiments`' MCP response omitted
|
|
15
|
+
it — operators had no surface-level path to verify the
|
|
16
|
+
between-branch drift fix was actually firing. Now present on
|
|
17
|
+
every response (`None` when the experiment hasn't run yet, so
|
|
18
|
+
clients can rely on key presence and check
|
|
19
|
+
`result["baseline_transport"] is None` without `in` guards).
|
|
20
|
+
|
|
21
|
+
- **#2 Tempo warning midpoint rounds to int while range is exact.**
|
|
22
|
+
Pre-v1.19.1 `compile_hybrid_brief` with disjoint tempo ranges
|
|
23
|
+
reported warning text "midpoint 108 BPM" while the returned
|
|
24
|
+
range was 105-110 (centered on 107.5). Two rounding
|
|
25
|
+
conventions — human-facing text rounded to `:0f`, machine-facing
|
|
26
|
+
range kept the exact float. Fix: `:g` format in the warning
|
|
27
|
+
produces the shortest accurate representation (107.5 stays
|
|
28
|
+
"107.5"; 128.0 renders as "128") so both surfaces agree.
|
|
29
|
+
|
|
30
|
+
- **#3 `weights` display full float precision.**
|
|
31
|
+
Uniform 3-packet hybrids rendered weights as
|
|
32
|
+
`0.3333333333333333` — noisy output that contrasted with
|
|
33
|
+
`evaluation_bias.target_dimensions` values already being
|
|
34
|
+
rounded to 4 decimal places. Weights are now rounded to 4 dp
|
|
35
|
+
in the response dict (`[0.3333, 0.3333, 0.3333]`). Internal
|
|
36
|
+
computation still uses full precision; only the output is
|
|
37
|
+
rounded.
|
|
38
|
+
|
|
39
|
+
### Tests added
|
|
40
|
+
|
|
41
|
+
- `test_compare_experiments_surfaces_baseline_transport` — round-trip
|
|
42
|
+
seed a distinctive baseline on ExperimentSet, assert
|
|
43
|
+
`compare_experiments` surfaces all fields (is_playing, song_time,
|
|
44
|
+
track_states, captured_at_ms).
|
|
45
|
+
- `test_compare_experiments_baseline_none_when_not_captured` — fresh
|
|
46
|
+
experiment has `baseline_transport: None` in the response rather
|
|
47
|
+
than an omitted key.
|
|
48
|
+
- `test_tempo_warning_midpoint_matches_range_center` — regex-parse
|
|
49
|
+
the warning text and assert its numeric midpoint matches the
|
|
50
|
+
returned range's center within 0.01 BPM.
|
|
51
|
+
- `test_weights_rounded_to_4dp` — uniform 3-packet weights must be
|
|
52
|
+
representable at 4 dp precision (`round(w, 4) == w`).
|
|
53
|
+
|
|
54
|
+
Test suite: 2858 pass, 1 skipped. Zero regressions. `sync_metadata
|
|
55
|
+
--check` clean.
|
|
56
|
+
|
|
3
57
|
## 1.19.0 — Experiment baseline + hybrid packet compilation (April 24 2026)
|
|
4
58
|
|
|
5
59
|
Minor version bump. Ships two of the three open items documented in
|
package/mcp_server/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""LivePilot MCP Server — bridges MCP protocol to Ableton Live."""
|
|
2
|
-
__version__ = "1.19.
|
|
2
|
+
__version__ = "1.19.1"
|
|
@@ -333,9 +333,15 @@ def _compile_from_packets(
|
|
|
333
333
|
f"{name or 'packet'} {lo:.0f}-{hi:.0f}"
|
|
334
334
|
for lo, hi, name in tempo_ranges
|
|
335
335
|
)
|
|
336
|
+
# v1.19.1 #2 — :g format keeps warning midpoint consistent with
|
|
337
|
+
# the returned range center. Pre-v1.19.1 used :.0f (int-rounded)
|
|
338
|
+
# so BC+Dilla reported 'midpoint 108 BPM' while range was
|
|
339
|
+
# 105-110 centered on 107.5 — two rounding conventions.
|
|
340
|
+
# :g gives the shortest accurate representation: 107.5 stays
|
|
341
|
+
# "107.5", 128.0 becomes "128".
|
|
336
342
|
warnings.append(
|
|
337
343
|
f"Tempo ranges don't overlap ({range_desc}) — defaulting "
|
|
338
|
-
f"to midpoint {midpoint
|
|
344
|
+
f"to midpoint {midpoint:g} BPM. Specify which anchor "
|
|
339
345
|
f"you want or pick a single packet."
|
|
340
346
|
)
|
|
341
347
|
|
|
@@ -346,7 +352,10 @@ def _compile_from_packets(
|
|
|
346
352
|
return {
|
|
347
353
|
"type": "hybrid",
|
|
348
354
|
"source_packets": list(packet_ids),
|
|
349
|
-
|
|
355
|
+
# v1.19.1 #3 — round weights to 4 dp for clean display, matching the
|
|
356
|
+
# convention target_dimensions already uses. Pre-v1.19.1 uniform
|
|
357
|
+
# 3-packet weights rendered as 0.3333333333333333 — noisy output.
|
|
358
|
+
"weights": [round(w, 4) for w in weights],
|
|
350
359
|
"name": hybrid_name,
|
|
351
360
|
"sonic_identity": sonic_identity,
|
|
352
361
|
"reach_for": reach_for,
|
|
@@ -601,10 +601,21 @@ def compare_experiments(
|
|
|
601
601
|
"evaluation": b.evaluation,
|
|
602
602
|
}
|
|
603
603
|
|
|
604
|
+
# v1.19.1 #1 — surface baseline_transport for operator observability.
|
|
605
|
+
# Always present in the response (None when not captured) so clients
|
|
606
|
+
# can `result["baseline_transport"] is None` instead of checking for
|
|
607
|
+
# key presence first. Populated during run_experiment's first pass.
|
|
608
|
+
baseline_dict = (
|
|
609
|
+
experiment.baseline_transport.to_dict()
|
|
610
|
+
if experiment.baseline_transport is not None
|
|
611
|
+
else None
|
|
612
|
+
)
|
|
613
|
+
|
|
604
614
|
return {
|
|
605
615
|
"experiment_id": experiment_id,
|
|
606
616
|
"request": experiment.request_text,
|
|
607
617
|
"branch_count": experiment.branch_count,
|
|
618
|
+
"baseline_transport": baseline_dict,
|
|
608
619
|
"ranking": [
|
|
609
620
|
{
|
|
610
621
|
"rank": i + 1,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "livepilot",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.1",
|
|
4
4
|
"mcpName": "io.github.dreamrec/livepilot",
|
|
5
5
|
"description": "Agentic production system for Ableton Live 12 — 429 tools, 53 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.19.
|
|
8
|
+
__version__ = "1.19.1"
|
|
9
9
|
|
|
10
10
|
from _Framework.ControlSurface import ControlSurface
|
|
11
11
|
from . import router
|
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/dreamrec/LivePilot",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "1.19.
|
|
9
|
+
"version": "1.19.1",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "livepilot",
|
|
14
|
-
"version": "1.19.
|
|
14
|
+
"version": "1.19.1",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
}
|