livepilot 1.26.2 → 1.27.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +34 -14
  3. package/bin/livepilot.js +4 -2
  4. package/installer/install.js +21 -12
  5. package/livepilot/.Codex-plugin/plugin.json +2 -2
  6. package/livepilot/.claude-plugin/plugin.json +2 -2
  7. package/livepilot/skills/livepilot-core/SKILL.md +12 -12
  8. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +2 -1
  9. package/livepilot/skills/livepilot-core/references/overview.md +6 -4
  10. package/livepilot/skills/livepilot-core/references/sound-design.md +5 -2
  11. package/livepilot/skills/livepilot-creative-director/SKILL.md +36 -0
  12. package/livepilot/skills/livepilot-creative-director/references/move-family-diversity-rule.md +1 -1
  13. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +15 -9
  14. package/livepilot/skills/livepilot-release/SKILL.md +7 -5
  15. package/m4l_device/LivePilot_Analyzer.amxd +0 -0
  16. package/m4l_device/livepilot_bridge.js +1 -1
  17. package/mcp_server/__init__.py +1 -1
  18. package/mcp_server/atlas/__init__.py +20 -1
  19. package/mcp_server/atlas/tools.py +83 -22
  20. package/mcp_server/composer/full/apply.py +9 -0
  21. package/mcp_server/composer/full/layer_planner.py +16 -6
  22. package/mcp_server/creative_constraints/engine.py +46 -0
  23. package/mcp_server/experiment/engine.py +10 -3
  24. package/mcp_server/grader/client.py +30 -2
  25. package/mcp_server/grader/tools.py +8 -2
  26. package/mcp_server/hook_hunter/analyzer.py +15 -2
  27. package/mcp_server/m4l_bridge.py +19 -21
  28. package/mcp_server/memory/taste_graph.py +16 -0
  29. package/mcp_server/memory/technique_store.py +23 -3
  30. package/mcp_server/mix_engine/state_builder.py +4 -2
  31. package/mcp_server/musical_intelligence/detectors.py +11 -2
  32. package/mcp_server/musical_intelligence/tools.py +15 -2
  33. package/mcp_server/preview_studio/engine.py +30 -1
  34. package/mcp_server/project_brain/tools.py +56 -52
  35. package/mcp_server/reference_engine/tools.py +22 -2
  36. package/mcp_server/runtime/capability_probe.py +1 -1
  37. package/mcp_server/runtime/capability_state.py +66 -9
  38. package/mcp_server/runtime/live_version.py +45 -8
  39. package/mcp_server/runtime/safety_kernel.py +11 -0
  40. package/mcp_server/runtime/session_kernel.py +7 -0
  41. package/mcp_server/runtime/tools.py +324 -22
  42. package/mcp_server/sample_engine/critics.py +7 -3
  43. package/mcp_server/sample_engine/slice_workflow.py +3 -2
  44. package/mcp_server/sample_engine/tools.py +53 -21
  45. package/mcp_server/song_brain/builder.py +17 -1
  46. package/mcp_server/sound_design/tools.py +1 -1
  47. package/mcp_server/splice_client/http_bridge.py +43 -1
  48. package/mcp_server/splice_client/models.py +7 -3
  49. package/mcp_server/synthesis_brain/adapters/analog.py +13 -1
  50. package/mcp_server/synthesis_brain/adapters/operator.py +5 -2
  51. package/mcp_server/synthesis_brain/adapters/wavetable.py +4 -4
  52. package/mcp_server/tools/_composition_engine/models.py +6 -0
  53. package/mcp_server/tools/_composition_engine/sections.py +4 -0
  54. package/mcp_server/tools/analyzer.py +38 -1
  55. package/mcp_server/tools/clips.py +5 -4
  56. package/mcp_server/tools/composition.py +5 -1
  57. package/mcp_server/tools/midi_io.py +40 -1
  58. package/mcp_server/tools/transport.py +1 -1
  59. package/mcp_server/user_corpus/plugin_engine/detector.py +66 -11
  60. package/mcp_server/user_corpus/runner.py +7 -1
  61. package/mcp_server/user_corpus/scanners/amxd.py +24 -13
  62. package/mcp_server/user_corpus/tools.py +45 -9
  63. package/mcp_server/wonder_mode/tools.py +66 -27
  64. package/package.json +2 -2
  65. package/remote_script/LivePilot/__init__.py +1 -1
  66. package/remote_script/LivePilot/server.py +23 -3
  67. package/remote_script/LivePilot/version_detect.py +3 -0
  68. package/requirements.txt +4 -4
  69. package/server.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,97 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.27.1 — 2026-06-21
4
+
5
+ Maintenance release: 35 verified fixes from a deep multi-agent audit, recursive installed-plugin scanning, and Windows-CI hardening. No change to the tool surface (467 tools / 56 domains).
6
+
7
+ ### Restored — tools that were silently broken
8
+ - `augment_with_samples`, `get_composition_plan`, `propose_composer_branches` — crashed or returned nothing since the v1.24 refactor removed section templates; they now degrade to a single full-length section.
9
+ - `check_clip_key_consistency` — always returned `"unknown"` (removed FastMCP `.fn` accessor).
10
+ - `compare_phrase_renders` — returned an identical empty critique; now analyzes each render.
11
+
12
+ ### Fixed — correctness
13
+ - Reference engine: project spectrum and stereo width are now populated (gap analysis previously ran against an all-zero project).
14
+ - `infer_section_purposes`: drops are no longer mislabeled as tension.
15
+ - Grader: master/return/group tracks identified by their real field names (group containers were inflating track counts).
16
+ - Hook salience: the memorability boost no longer fires on every candidate.
17
+ - Mix: the `flat_dynamics` critic is now reachable (`over_compressed` is a 3–6 dB band).
18
+ - Wavetable adapter uses the real `Osc 1 Pos` parameter name.
19
+ - Simpler slice playback uses the correct base note (36+N); `vibe_fit` energy proxy normalized.
20
+ - Harmony and phrase-grid analysis read from the correct clip slot.
21
+ - `exclude_globs` now match files inside named directories.
22
+ - A single shared technique store so in-session saves are visible to recall/search.
23
+ - Read-only prefix matcher no longer misclassifies mutating tools as safe.
24
+ - Atlas id/name collisions no longer shadow entries; the overlay index is no longer rescanned per namespace.
25
+ - AMXD device-type map recognizes MIDI Tool devices (Live 12.1+).
26
+ - `apply_full_plan_v2` postflight no longer deletes a reused existing track.
27
+ - Fatigue level no longer diluted by low-severity issues; energy-arc no longer desyncs on skipped scenes; `create_preview_set` no longer silently overwrites an existing set.
28
+
29
+ ### Fixed — installed-plugin scanning (#44)
30
+ - The plugin scanner now recurses into vendor subfolders (e.g. `VST3/<Vendor>/Plugin.vst3`); nested plugins are found and vendor folders are no longer emitted as junk inventory records.
31
+
32
+ ### Fixed — safety and resources
33
+ - Splice `is_free` misclassification that could bypass credit/quota gating.
34
+ - Experiment rollback undoes only `remote_command` steps (no longer reverts unrelated edits).
35
+ - Timed-out write commands are dropped instead of re-executing later on the main thread.
36
+ - Order-tolerant M4L bridge chunk reassembly (no permanent response loss on UDP reordering).
37
+ - Installer install-path guard hardened; Splice bearer token gated to splice.com HTTPS hosts; non-numeric Live version strings tolerated instead of crashing the capability probe.
38
+
39
+ ### Performance
40
+ - Blocking sample I/O (SQLite, file decode, FFT, network) moved off the asyncio event loop.
41
+ - Capped previously-unbounded tool responses (`atlas_device_info`, `extension_atlas_search`, corpus synthesis briefs, piano-roll matrix, plugin `sdk_metadata`).
42
+ - Deduped redundant session round-trips (`enter_wonder_mode`, `build_project_brain`).
43
+
44
+ ### CI and tooling
45
+ - Fixed the Windows CI matrix (cp1252 `UnicodeEncodeError` in verifier scripts; POSIX-path test fixture).
46
+ - `build_mcpb.sh` enforces `.mcpbignore`; portable dev scripts.
47
+
48
+ ### Dependencies
49
+ - fastmcp, soundfile 0.14.0, grpcio 1.81.1, protobuf 7.35.1.
50
+
51
+ ## v1.27.0 — 2026-06-16
52
+
53
+ Probe-first Live 12.4 capability release.
54
+
55
+ ### Added
56
+
57
+ - Added read-only `probe_link_audio()` and `probe_stem_workflow()` runtime tools. They report observed capability modes and reasons without invoking UI scripting, menu automation, or destructive stem operations.
58
+ - Added `link_audio` and `stem_workflow` capability domains to `get_capability_state()` and `get_session_kernel()`. Both default to `manual_only` unless a real probe supplies routable/callable evidence.
59
+ - Added Live 12.4 version flags for Link Audio, selected-time stem separation, and merge-selected-stems while keeping workflow support probe-gated.
60
+ - Added `operation_profile` to the session kernel with `studio_deep` as the legacy default and profile names for `safe_live`, `arrangement_build`, `sound_design_deep`, and `release_audit`.
61
+
62
+ ### Changed
63
+
64
+ - `replace_simpler_sample()` and `load_sample_to_simpler()` now report `native_attempted`, `bridge_attempted`, and `fallback_reason` so native-vs-bridge behavior is observable during Live 12.4 sample workflows.
65
+ - Creative Director guidance now includes a Producer Decision Center: library hunt before loading, inspect enriched atlas hits, avoid Analog/Poli/Drift filler unless explicitly requested, and require instrument/source-level programming before effects-only polish.
66
+ - Capability-mode docs now describe the new Link Audio and stem workflow probe domains instead of treating them as undocumented future work.
67
+
68
+ ### Tests
69
+
70
+ - Added coverage for Live 12.4 version flags, Link/stem capability domains and probe tools, session-kernel operation profiles, sample fallback reporting, and Producer Decision Center contract text.
71
+
72
+ ## v1.26.3 — 2026-06-16
73
+
74
+ Truth/knowledge patch for Live 12.4.2, local Codex plugin sync, and runtime capability reporting.
75
+
76
+ ### Fixed
77
+
78
+ - Runtime FluCoMa capability probing now checks the Max/FluCoMa package and live M4L streams instead of a nonexistent Python `flucoma` module, so installed-but-bridge-blocked systems report `flucoma_bridge_unavailable` or `flucoma_no_streams` instead of the misleading `flucoma_not_installed`.
79
+ - Metadata drift checks now cover `AGENTS.md` bridge-command claims and the runtime capability probe's analyzer-tool unavailable message.
80
+ - README compatibility docs now advertise all four Live 12 capability tiers, including the Live 12.4+ Collaborative tier for native Simpler sample replacement.
81
+ - M4L bridge docs and operating contracts now distinguish the M4L `replace_sample` empty-Simpler limitation from the Live 12.4+ native `replace_sample_native` route.
82
+
83
+ ### Added
84
+
85
+ - Added `scripts/verify_codex_plugin_sync.py` to verify the local Codex plugin active dir, versioned cache dir, mirrored manifests, `.mcp.json`, payload directories, and Local Plugins marketplace entry.
86
+
87
+ ### Changed
88
+
89
+ - Refreshed Live 12.4.2 knowledge notes for Link Audio, stem-selection workflows, Erosion, Chorus-Ensemble, Delay LFOs, Max 9.1.4, and `SimplerDevice.replace_sample`, while keeping unprobed Link Audio/stem workflows marked as future LivePilot work.
90
+
91
+ ### Tests
92
+
93
+ - Added drift guards for AGENTS bridge-command claims, analyzer-tool capability probe text, README Live tier docs, and Codex plugin sync verification.
94
+
3
95
  ## v1.26.2 — 2026-05-27
4
96
 
5
97
  Patch release for Claude/Codex plugin instruction correctness and local install reliability.
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
- 465 tools. 56 domains. Device atlas. Plan-aware Splice integration. Auto-composition. Spectral perception. Technique memory. Drum-rack pad builder. Live dead-device detection.
20
+ 467 tools. 56 domains. Device atlas. Plan-aware Splice integration. Auto-composition. Spectral perception. Technique memory. Drum-rack pad builder. Live dead-device detection.
21
21
  </p>
22
22
 
23
23
  <br>
@@ -38,6 +38,20 @@
38
38
 
39
39
  ---
40
40
 
41
+ ## What's New in v1.27.1
42
+
43
+ A maintenance release that fixes 35 issues from a deep audit and restores tools that had silently broken:
44
+
45
+ - **Restored tools** — `augment_with_samples`, `get_composition_plan`, `propose_composer_branches`, `check_clip_key_consistency`, and `compare_phrase_renders` were crashing or returning empty results; they now work.
46
+ - **Recursive plugin scanning (#44)** — the User Corpus scanner now finds plugins nested in vendor subfolders (e.g. `VST3/<Vendor>/Plugin.vst3`) instead of only the top level.
47
+ - **Truer analysis** — reference-gap, hook-salience, dynamics, drop-detection, harmony-slot, and grader fixes that previously produced fabricated or empty results.
48
+ - **Safer & faster** — Splice credit-gating fixed, blocking sample I/O moved off the event loop, unbounded tool responses capped, and the M4L bridge no longer loses responses on UDP reordering.
49
+ - **v1.27.0** added two read-only Live 12.4 capability-probe tools (`probe_link_audio`, `probe_stem_workflow`).
50
+
51
+ Full details in the [CHANGELOG](CHANGELOG.md).
52
+
53
+ ---
54
+
41
55
  ## What LivePilot Does
42
56
 
43
57
  Most MCP servers are tool collections — they execute commands. LivePilot is an **agentic production system**. It has eight layers that work together:
@@ -59,7 +73,7 @@ Most MCP servers are tool collections — they execute commands. LivePilot is an
59
73
 
60
74
  ## Two Ways to Talk to LivePilot
61
75
 
62
- Pick whichever is faster for the idea in your head — both reach the same 465-tool surface.
76
+ Pick whichever is faster for the idea in your head — both reach the same 467-tool surface.
63
77
 
64
78
  ### Route A — Artist / aesthetic shorthand
65
79
 
@@ -112,7 +126,7 @@ Most sessions do both. Lead with shorthand to anchor the aesthetic, then refine
112
126
  │ └─────────────────┼──────────────────┘ │
113
127
  │ ▼ │
114
128
  │ ┌─────────────────┐ │
115
- │ │ 465 MCP Tools │ │
129
+ │ │ 467 MCP Tools │ │
116
130
  │ │ 56 domains │ │
117
131
  │ └────────┬────────┘ │
118
132
  │ │ │
@@ -129,7 +143,7 @@ Most sessions do both. Lead with shorthand to anchor the aesthetic, then refine
129
143
 
130
144
  ### How the pieces connect
131
145
 
132
- **Remote Script** (`remote_script/LivePilot/`) — A Python ControlSurface that runs inside Ableton's process. Listens on TCP 9878. All Live Object Model calls execute on Ableton's main thread via `schedule_message`. Detects Ableton version at startup and enables three capability tiers: Core (12.0+), Enhanced Arrangement (12.1.10+), Full Intelligence (12.3+).
146
+ **Remote Script** (`remote_script/LivePilot/`) — A Python ControlSurface that runs inside Ableton's process. Listens on TCP 9878. All Live Object Model calls execute on Ableton's main thread via `schedule_message`. Detects Ableton version at startup and enables four capability tiers: Core (12.0+), Enhanced Arrangement (12.1.10+), Full Intelligence (12.3+), Collaborative (12.4+).
133
147
 
134
148
  **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.
135
149
 
@@ -153,7 +167,7 @@ Most sessions do both. Lead with shorthand to anchor the aesthetic, then refine
153
167
 
154
168
  ## The Intelligence Layer
155
169
 
156
- 12 engines sit on top of the 465 tools. They give the AI musical judgment, not just musical execution.
170
+ 12 engines sit on top of the 467 tools. They give the AI musical judgment, not just musical execution.
157
171
 
158
172
  ### SongBrain — What the Song Is
159
173
 
@@ -205,7 +219,7 @@ Every engine follows: **measure before → act → measure after → compare**.
205
219
 
206
220
  ## Tools
207
221
 
208
- 465 tools across 56 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
222
+ 467 tools across 56 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
209
223
 
210
224
  <br>
211
225
 
@@ -473,7 +487,7 @@ Full track with song form: intro, verse, hook, breakdown, outro. Uses a two-phas
473
487
  - Native arrangement clips via `create_native_arrangement_clip` (one clip per section, looped to fill section length)
474
488
  - Zombie-track cleanup in postflight (removes tracks with no clips and no instrument device)
475
489
  - Drum-role pitch repair ported from fast mode
476
- - **Known gap (v1.25):** `KnowledgePack.atlas_candidates_per_role` is an empty stub the agent currently falls through to `search_browser` filename matching instead of consulting the indexed atlas. This is BUG-FULL-MODE-24 and is the headline feature of v1.25.
490
+ - **Atlas anchors:** role-level device knowledge is supplied through `KnowledgePack.atlas_anchors`, which consults the indexed atlas rather than filename matching. The older `atlas_candidates_per_role` field is a deprecated legacy stub, kept empty for back-compat.
477
491
  - Invoke with: *"Write a full [genre] track at [tempo] BPM"* or *"Build a full arrangement"*
478
492
 
479
493
  #### develop mode — `develop_apply`
@@ -492,7 +506,7 @@ All three modes share a `KnowledgePack` that provides structured creative contex
492
506
  - `event_lexicon` — 42 structural events across 7 categories (drum density, harmonic, texture, vocal, rhythm feel, tension, fx gesture)
493
507
  - `genre_context` — parses the 15-genre `genre-vocabularies.md` at load time
494
508
  - `artist_context` — parses the ~25-producer `artist-vocabularies.md` at load time
495
- - `atlas_candidates_per_role` — **stubbed in v1.25.0**, will be populated in v1.25
509
+ - `atlas_anchors` — indexed-atlas device anchors per role (replaced the legacy `atlas_candidates_per_role` stub)
496
510
 
497
511
  #### Core composer tools
498
512
 
@@ -540,7 +554,7 @@ The V2 intelligence layer. These tools analyze, diagnose, plan, evaluate, and le
540
554
  | Creative Constraints | 5 | constraint activation, reference-inspired variants |
541
555
  | Preview Studio | 5 | variant creation, preview rendering, comparison, commit |
542
556
 
543
- > **[View all 465 tools →](docs/manual/tool-catalog.md)**
557
+ > **[View all 467 tools →](docs/manual/tool-catalog.md)**
544
558
 
545
559
  <br>
546
560
 
@@ -550,7 +564,7 @@ The V2 intelligence layer. These tools analyze, diagnose, plan, evaluate, and le
550
564
 
551
565
  ### Easiest: Claude Desktop Extension (1 click)
552
566
 
553
- Download [`livepilot.mcpb`](https://github.com/dreamrec/LivePilot/releases/latest) and double-click it.
567
+ Download the latest `livepilot-<version>.mcpb` from the [Releases page](https://github.com/dreamrec/LivePilot/releases/latest) and double-click it.
554
568
  Claude Desktop installs everything automatically. Then:
555
569
 
556
570
  1. Open Ableton Live 12
@@ -584,10 +598,14 @@ Restart Ableton → Preferences → Link, Tempo & MIDI → Control Surface → *
584
598
  <details>
585
599
  <summary><strong>2. MCP Client</strong></summary>
586
600
 
587
- **Claude Code:**
601
+ **Claude Code** — pick one (installing both registers the MCP server twice and collides on port 9878):
588
602
  ```bash
603
+ # MCP server only:
589
604
  claude mcp add LivePilot -- npx livepilot
590
- claude plugin add github:dreamrec/LivePilot/plugin
605
+
606
+ # Or the full plugin (MCP server + skills + slash commands):
607
+ claude plugin marketplace add github:dreamrec/LivePilot
608
+ claude plugin install livepilot@dreamrec-LivePilot
591
609
  ```
592
610
 
593
611
  **Codex App:**
@@ -680,7 +698,8 @@ npx livepilot --install-codex-plugin
680
698
  **Claude Code**
681
699
 
682
700
  ```bash
683
- claude plugin add github:dreamrec/LivePilot/plugin
701
+ claude plugin marketplace add github:dreamrec/LivePilot
702
+ claude plugin install livepilot@dreamrec-LivePilot
684
703
  ```
685
704
 
686
705
  | Command | What |
@@ -741,6 +760,7 @@ npx livepilot --version # Show version
741
760
  - **Core (12.0+):** All session tools, mixing, devices, MIDI, theory, generative, memory
742
761
  - **Enhanced Arrangement (12.1.10+):** Native arrangement clips, arrangement automation
743
762
  - **Full Intelligence (12.3+):** `insert_device_native`, complete device insertion pipeline
763
+ - **Collaborative (12.4+):** `replace_sample_native` and newer sample-editing routes that bypass the M4L fallback when Live exposes a native LOM path
744
764
 
745
765
  <br>
746
766
 
@@ -767,7 +787,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture details, code guidelines
767
787
 
768
788
  | Document | What's inside |
769
789
  |----------|---------------|
770
- | [Manual](docs/manual/index.md) | Complete reference: architecture, all 465 tools, workflows |
790
+ | [Manual](docs/manual/index.md) | Complete reference: architecture, all 467 tools, workflows |
771
791
  | [Intelligence Layer](docs/manual/intelligence.md) | How the 12 engines connect — conductor, moves, preview, evaluation |
772
792
  | [Device Atlas](docs/manual/device-atlas.md) | 5264 devices indexed — search, suggest, chain building |
773
793
  | [Samples & Slicing](docs/manual/samples.md) | 3-source search, fitness critics, slice workflows |
package/bin/livepilot.js CHANGED
@@ -823,8 +823,10 @@ async function main() {
823
823
  console.log(" --help Show this help");
824
824
  console.log("");
825
825
  console.log("Environment:");
826
- console.log(" LIVE_MCP_HOST Remote Script host (default: 127.0.0.1)");
827
- console.log(" LIVE_MCP_PORT Remote Script port (default: 9878)");
826
+ console.log(" LIVE_MCP_HOST Remote Script host (default: 127.0.0.1)");
827
+ console.log(" LIVE_MCP_PORT Remote Script port (default: 9878)");
828
+ console.log(" LIVEPILOT_AUTO_INSTALL Auto-install Remote Script on launch (set to 'true')");
829
+ console.log(" LIVEPILOT_TCP_PORT Override Remote Script port (Desktop Extension/MCPB)");
828
830
  return;
829
831
  }
830
832
 
@@ -46,23 +46,32 @@ function _assertSafeInstallPath(resolvedPath, candidates) {
46
46
  "/Applications/Ableton",
47
47
  "C:\\ProgramData\\Ableton",
48
48
  ];
49
- // The detected Ableton candidate paths are always considered safe
49
+ // True iff `child` equals `root` or is a descendant of it. The path.sep
50
+ // suffix prevents `/Applications/Ableton-evil` from matching the
51
+ // `/Applications/Ableton` prefix (prefix-boundary check).
52
+ const within = (child, root) => {
53
+ const c = path.resolve(child);
54
+ const r = path.resolve(root);
55
+ return c === r || c.startsWith(r + path.sep);
56
+ };
57
+ // The destination must be a detected Ableton Remote Scripts dir, a descendant
58
+ // of one, or under a known-safe prefix. We deliberately do NOT treat an
59
+ // *ancestor* of a candidate as safe — that previously let
60
+ // LIVEPILOT_INSTALL_PATH=/ or /Applications slip through (candidate path
61
+ // "starts with" the broad parent), defeating the guard.
50
62
  for (const c of candidates) {
51
- if (path.resolve(c.path).startsWith(path.resolve(resolvedPath))) {
52
- return;
53
- }
54
- if (path.resolve(resolvedPath).startsWith(path.resolve(c.path))) {
63
+ if (within(resolvedPath, c.path)) {
55
64
  return;
56
65
  }
57
66
  }
58
- const safe = allowedPrefixes.some((p) => resolvedPath.startsWith(path.resolve(p)));
59
- if (!safe) {
60
- throw new InstallerAbort(
61
- `LIVEPILOT_INSTALL_PATH=${resolvedPath} is outside permitted directories. ` +
62
- `Refusing to install. Allowed roots: ${allowedPrefixes.join(", ")}`,
63
- { recoverable: false }
64
- );
67
+ if (allowedPrefixes.some((p) => within(resolvedPath, p))) {
68
+ return;
65
69
  }
70
+ throw new InstallerAbort(
71
+ `LIVEPILOT_INSTALL_PATH=${resolvedPath} is outside permitted directories. ` +
72
+ `Refusing to install. Allowed roots: ${allowedPrefixes.join(", ")}`,
73
+ { recoverable: false }
74
+ );
66
75
  }
67
76
 
68
77
  /**
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "livepilot",
3
- "version": "1.26.2",
4
- "description": "Agentic production system for Ableton Live 12 \u2014 465 tools, 56 domains, 44 semantic moves, device atlas (5264 devices, 120 enriched, 7 indexes), Splice intelligence (gRPC + GraphQL describe-a-sound + preview + collections + presets), 9-band spectral perception auto-loaded via ensure_analyzer_on_master, Creative Director skill, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
3
+ "version": "1.27.1",
4
+ "description": "Agentic production system for Ableton Live 12 \u2014 467 tools, 56 domains, 44 semantic moves, device atlas (5264 devices, 120 enriched, 7 indexes), Splice intelligence (gRPC + GraphQL describe-a-sound + preview + collections + presets), 9-band spectral perception auto-loaded via ensure_analyzer_on_master, Creative Director skill, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
5
  "author": {
6
6
  "name": "Pilot Studio"
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "livepilot",
3
- "version": "1.26.2",
4
- "description": "Agentic production system for Ableton Live 12 \u2014 465 tools, 56 domains, 44 semantic moves, device atlas (5264 devices, 120 enriched, 7 indexes), Splice intelligence (gRPC + GraphQL describe-a-sound + preview + collections + presets), 9-band spectral perception auto-loaded via ensure_analyzer_on_master, Creative Director skill, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
3
+ "version": "1.27.1",
4
+ "description": "Agentic production system for Ableton Live 12 \u2014 467 tools, 56 domains, 44 semantic moves, device atlas (5264 devices, 120 enriched, 7 indexes), Splice intelligence (gRPC + GraphQL describe-a-sound + preview + collections + presets), 9-band spectral perception auto-loaded via ensure_analyzer_on_master, Creative Director skill, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
5
5
  "author": {
6
6
  "name": "Pilot Studio"
7
7
  }
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: livepilot-core
3
- description: Core discipline for LivePilot — agentic production system for Ableton Live 12. 465 tools across 56 domains. This skill should be used whenever working with Ableton Live through MCP tools. Provides golden rules, tool speed tiers, error handling protocol, and pointers to domain and engine skills.
3
+ description: Core discipline for LivePilot — agentic production system for Ableton Live 12. 467 tools across 56 domains. This skill should be used whenever working with Ableton Live through MCP tools. Provides golden rules, tool speed tiers, error handling protocol, and pointers to domain and engine skills.
4
4
  ---
5
5
 
6
6
  # LivePilot Core — Ableton Live 12
7
7
 
8
- Agentic production system for Ableton Live 12. 465 tools across 56 domains, three layers:
8
+ Agentic production system for Ableton Live 12. 467 tools across 56 domains, three layers:
9
9
 
10
10
  - **Device Atlas** — 5264 devices indexed (120 enriched with sonic intelligence, 683 drum kits). Consult `atlas_search` or `atlas_suggest` before loading any device. Never guess a device name.
11
11
  - **M4L Analyzer** — Real-time audio analysis on the master bus (9-band spectrum sub_low → air, RMS/peak, key detection). Optional — all core tools work without it.
@@ -52,7 +52,7 @@ Agentic production system for Ableton Live 12. 465 tools across 56 domains, thre
52
52
  ## Tool Speed Tiers
53
53
 
54
54
  ### Instant (<1s) — Use freely
55
- All 465 tools plus M4L perception tools.
55
+ All 467 tools plus M4L perception tools.
56
56
 
57
57
  ### Fast (1-5s) — Use freely
58
58
  `analyze_loudness` · `analyze_mix` · `analyze_sound_design`
@@ -142,7 +142,7 @@ Deep production knowledge in `references/`:
142
142
 
143
143
  | File | Content |
144
144
  |------|---------|
145
- | `references/overview.md` | All 465 tools with params and ranges |
145
+ | `references/overview.md` | All 467 tools with params and ranges |
146
146
  | `references/device-atlas/` | 280+ device corpus with URIs and presets |
147
147
  | `references/device-knowledge/` | Per-device parameter + technique knowledge |
148
148
  | `references/pack-knowledge.md` | All 44 installed packs scored for aesthetic fit (Tier S / A / B / C), with Top / Use-when guidance |
@@ -198,14 +198,14 @@ Use when the user wants options, variants, or is stuck ("surprise me", "try some
198
198
  **Rule of thumb**: if the user asked for a specific fix, Flow A. If they asked "what would you do?" or mentioned feel/vibe without parameters, Flow B.
199
199
 
200
200
  ### Semantic Moves
201
- High-level musical intents that compile to deterministic tool sequences. 7 families (44 moves as of v1.26.2):
202
- - **mix** — `tighten_low_end`, `widen_stereo`, `make_punchier`, `darken_without_losing_width`, `reduce_repetition_fatigue`, `make_kick_bass_lock`, `reduce_foreground_competition`
203
- - **arrangement** — `refresh_repeated_section`, plus structural moves defined alongside mix
204
- - **transition** — `create_buildup_tension`, `smooth_scene_handoff`, `increase_contrast_before_payoff`, `bridge_sections`, `increase_forward_motion`, `open_chorus`, `create_breakdown`
205
- - **sound_design** — `add_warmth`, `add_texture`, `shape_transients`, `add_space`
206
- - **performance** — `recover_energy`, `decompress_tension`, `safe_spotlight`, `emergency_simplify`
207
- - **device_creation** — `create_chaos_modulator`, `create_feedback_resonator`, `create_wavefolder_effect`, `create_bitcrusher_effect`, `create_karplus_string`, `create_stochastic_texture`, `create_fdn_reverb` (procedural M4L device generation)
208
- - **sample** — `sample_chop_rhythm`, `sample_texture_layer`, `sample_vocal_ghost`, `sample_break_layer`, `sample_resample_destroy`, `sample_one_shot_accent` (registered from `sample_engine/moves.py`)
201
+ High-level musical intents that compile to deterministic tool sequences. 7 families (44 moves as of v1.27.1):
202
+ - **mix** (9) — `tighten_low_end`, `widen_stereo`, `make_punchier`, `darken_without_losing_width`, `reduce_repetition_fatigue`, `make_kick_bass_lock`, `set_track_routing`, `set_track_metadata`, `configure_send_architecture`
203
+ - **device_creation** (9) — `create_chaos_modulator`, `create_feedback_resonator`, `create_wavefolder_effect`, `create_bitcrusher_effect`, `create_karplus_string`, `create_stochastic_texture`, `create_fdn_reverb`, `create_drum_rack_pad`, `build_send_chain` (procedural M4L device generation)
204
+ - **sound_design** (7) — `add_warmth`, `add_texture`, `shape_transients`, `add_space`, `configure_device`, `remove_device`, `load_chord_source`
205
+ - **sample** (6) — `sample_chop_rhythm`, `sample_texture_layer`, `sample_vocal_ghost`, `sample_break_layer`, `sample_resample_destroy`, `sample_one_shot_accent` (registered from `sample_engine/moves.py`)
206
+ - **performance** (5) — `recover_energy`, `decompress_tension`, `safe_spotlight`, `emergency_simplify`, `configure_record_readiness`
207
+ - **arrangement** (4) — `create_buildup_tension`, `smooth_scene_handoff`, `configure_groove`, `set_scene_metadata`
208
+ - **transition** (4) — `bridge_sections`, `increase_forward_motion`, `open_chorus`, `create_breakdown`
209
209
 
210
210
  Use `list_semantic_moves(domain="mix")` to discover available moves.
211
211
 
@@ -63,7 +63,7 @@ Combines convolution (early reflections from real spaces) with algorithmic (cust
63
63
 
64
64
  ## Delay
65
65
 
66
- Updated in 12.4 with new LFO modes. The most creative delay in Live.
66
+ Updated in Live 12.4 with a deeper LFO section: rate can be set in Hz, ms, or tempo-synced divisions, with seven waveforms and Morph shaping. The most creative delay in Live.
67
67
 
68
68
  ### Key Parameters
69
69
 
@@ -77,6 +77,7 @@ Updated in 12.4 with new LFO modes. The most creative delay in Live.
77
77
  **Mod Freq / Dly < Mod / Filter < Mod:** The modulation section.
78
78
  - **Dly < Mod:** Modulates delay time — creates pitch wobble on echoes. At 5-15%, subtle tape-like wow. At 20-40%, obvious pitch warping — dub character. At 50%+, extreme — pitch spirals.
79
79
  - **Filter < Mod:** Modulates the filter cutoff with the same LFO — echoes alternately brighten and darken. Combined with Dly < Mod, this creates echoes that are never the same twice.
80
+ - **Morph:** Live 12.4+ waveform shaping. Use small Morph values for stable repeat motion; push Morph when the delay tail should feel handmade, unstable, or visibly animated.
80
81
 
81
82
  **Filter Freq / Width:** Bandpass filter in the feedback loop. This shapes how each echo changes:
82
83
  - Freq 500-1000 Hz, Width 4-6: Dark, telephone-like echoes that thin out over time (classic dub)
@@ -1,6 +1,6 @@
1
- # LivePilot v1.26.2 — Architecture & Tool Reference
1
+ # LivePilot v1.27.1 — Architecture & Tool Reference
2
2
 
3
- Agentic production system for Ableton Live 12. 465 tools across 56 domains. Device atlas (5264 devices, 120 enriched, 47 with aesthetic-tagged `signature_techniques`), spectral perception (M4L analyzer with 9-band FFT — sub_low / sub / low / low_mid / mid / high_mid / high / presence / air), 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, **LIVE Splice describe-a-sound + variations via captured GraphQL endpoints (v1.17)**, drum-rack pad-by-pad construction, live dead-device detection via meter sampling, role-aware Simpler defaults, session-record arrangement-automation workaround.
3
+ Agentic production system for Ableton Live 12. 467 tools across 56 domains. Device atlas (5264 devices, 120 enriched, 47 with aesthetic-tagged `signature_techniques`), spectral perception (M4L analyzer with 9-band FFT — sub_low / sub / low / low_mid / mid / high_mid / high / presence / air), 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, **LIVE Splice describe-a-sound + variations via captured GraphQL endpoints (v1.17)**, drum-rack pad-by-pad construction, live dead-device detection via meter sampling, role-aware Simpler defaults, session-record arrangement-automation workaround.
4
4
 
5
5
  **Concept surface (v1.17):** `artist-vocabularies.md` and `genre-vocabularies.md` in `references/` provide structured translation from the LLM's training (producers like Villalobos, Hawtin, Basic Channel, Gas, Basinski, Hecker, Aphex, Dilla, Burial, Henke; genres like microhouse, dub_techno, ambient, idm) into LivePilot's device surface. New MCP tools `atlas_describe_chain` (free-text → chain proposal) and `atlas_techniques_for_device` (reverse-lookup: 146 technique cross-references across 58 devices).
6
6
 
@@ -12,6 +12,8 @@ Agentic production system for Ableton Live 12. 465 tools across 56 domains. Devi
12
12
 
13
13
  **Compose framework rebuild (v1.25.0):** three modes share a shared Applier substrate (bridge handshake retry + monitoring=Auto postflight + back_to_arranger). `compose_fast_apply` — quick loop in session view, curated-.adg-first hunt order, drum-role pitch repair. `compose_full_apply` — full song form (intro/verse/hook/breakdown/outro), per-section MIDI variants, native arrangement clips via `create_native_arrangement_clip`, zombie-track cleanup. `develop_apply` — extends an existing 8-bar seed, introspects tracks by name+content, pulls references from prompt. `KnowledgePack` scaffolding: `event_lexicon` (42 events), `genre_context` (15 genres), `artist_context` (~25 producers). Known gap: `atlas_candidates_per_role` is an empty stub in v1.25.0 — device lookup still falls back to `search_browser` filename matching. Resolved in v1.25 (BUG-FULL-MODE-24).
14
14
 
15
+ **Live 12.4.2 knowledge refresh (2026-06-16):** Ableton's current stable line is Live 12.4.2 (June 11, 2026). The 12.4 baseline added Link Audio, selected-time stem separation and stem merge, updated Erosion, refined Chorus mode in Chorus-Ensemble, expanded Delay LFO modulation, Max 9.1.4, and `SimplerDevice.replace_sample` in the Live API. LivePilot exploits the native Simpler replacement path on Live 12.4+ and ships read-only `probe_link_audio()` / `probe_stem_workflow()` checks; Link Audio routing and stem write workflows remain unavailable unless a real probe proves a stable non-UI-scripted API path.
16
+
15
17
  ## Architecture
16
18
 
17
19
  ```
@@ -42,7 +44,7 @@ A flat tool list lets the AI press buttons. LivePilot's three layers give it con
42
44
 
43
45
  This turns "set EQ band 3 to -4 dB" into "cut 400 Hz by 4 dB, then read the spectrum to confirm the mud is actually reduced."
44
46
 
45
- ## The 465 Tools — What Each One Does
47
+ ## The 467 Tools — What Each One Does
46
48
 
47
49
  ### Transport (12) — Playback, tempo, global state, diagnostics
48
50
 
@@ -216,7 +218,7 @@ This turns "set EQ band 3 to -4 dB" into "cut 400 Hz by 4 dB, then read the spec
216
218
  | `memory_update` | Updates name, tags, or qualities | `technique_id`, `name`, `tags`, `qualities` |
217
219
  | `memory_delete` | Removes technique (backs up first) | `technique_id` |
218
220
 
219
- ### Analyzer (30) — Real-time DSP analysis (requires LivePilot Analyzer M4L device on master track)
221
+ ### Analyzer (38) — Real-time DSP analysis (requires LivePilot Analyzer M4L device on master track)
220
222
 
221
223
  | Tool | What it does | Key params |
222
224
  |------|-------------|------------|
@@ -165,6 +165,7 @@ Simple 3-band EQ for quick tonal shaping.
165
165
  - `Filter` — LP/HP on feedback path
166
166
  - `Dry/Wet` — Mix
167
167
  - `Ping Pong` — Alternates between L/R
168
+ - **Live 12.4+ LFO** — Rate can be Hz, ms, or tempo-synced; seven LFO shapes plus Morph make Delay a stronger movement source before reaching for Echo.
168
169
  - **Common sync values**: 1/4, 1/8, 3/16 (dotted eighth), 1/4T (triplet)
169
170
 
170
171
  **Echo** (combines delay + reverb + modulation)
@@ -191,8 +192,9 @@ Simple 3-band EQ for quick tonal shaping.
191
192
  - **Use for**: Guitar-amp style warmth, bass grit
192
193
 
193
194
  **Erosion**
194
- - Adds digital artifacts: noise, sine wave modulation
195
- - `Amount`, `Frequency`, `Width`
195
+ - Adds digital artifacts: noise/sine modulation, edge, air, bitcrush-like abrasion
196
+ - `Amount`, `Frequency`, `Noise Blend`, `Stereo Width`
197
+ - **Live 12.4+** — refreshed Erosion blends sine/noise continuously, scales stereo modulation precisely, and has lower algorithmic latency. Older Sets load as Erosion Legacy.
196
198
  - **Use for**: Lo-fi, bitcrushed textures, digital degradation
197
199
 
198
200
  **Redux**
@@ -206,6 +208,7 @@ Simple 3-band EQ for quick tonal shaping.
206
208
  - `Rate 1/2` — LFO speeds
207
209
  - `Amount 1/2` — Modulation depths
208
210
  - `Feedback` — Flanging intensity
211
+ - `Time` / `Taps` — Live 12.4+ Chorus mode controls for fixed delay-line times and one- vs two-tap chorus textures
209
212
  - `Dry/Wet` — Mix
210
213
  - **Use for**: Thickening, stereo width, classic chorus
211
214
 
@@ -113,6 +113,42 @@ For open-ended quality requests, treat timbre and spectral character as the main
113
113
 
114
114
  The `mix` family is dominant only when the user asks for balance, loudness, headroom, masking, stereo translation, send levels, or an explicit mix pass. Otherwise use mix analysis as safety/evidence and keep it out of the main creative slot.
115
115
 
116
+ ## Producer Decision Center
117
+
118
+ Before choosing any instrument, preset, sample, or dominant move, run a
119
+ producer decision center pass. This pass exists to prevent generic AI synth
120
+ choices and effects-only "sound design".
121
+
122
+ **Library hunt order:**
123
+
124
+ 1. `search_browser(path="sounds", name_filter="<role or sonic target>")`
125
+ for curated Ableton `.adg` chains.
126
+ 2. `atlas_search(query="<sonic description>", category="instruments")`
127
+ for scored character matches.
128
+ 3. If `atlas_search` returns `enriched: true`, read the surfaced fields and
129
+ call `atlas_device_info(device_id)` when the device is borderline or the
130
+ plan depends on gotchas, self-contained status, or signature techniques.
131
+ 4. `search_browser(path="instruments", name_filter="<specific candidate>")`
132
+ only after the curated/preset search has been exhausted.
133
+
134
+ **Generic-default guardrail:** do not reach for Analog/Poli/Drift as a
135
+ default bass, pad, or lead unless the user explicitly asked for analog
136
+ subtractive synthesis or that exact instrument. Those defaults read as a
137
+ generic AI synth in this project. If one of them is still the right choice,
138
+ state the reason and program the source immediately.
139
+
140
+ **Instrument/source-level first:** real sound design changes what the sound
141
+ is before effects-only polish. For every melodic, harmonic, bass, drum, or
142
+ texture layer, plan at least one instrument/source-level move before adding
143
+ effects: envelopes, LFO routing, filter envelope, oscillator/wavetable/FM
144
+ position, pitch modulation, sample start, slice selection, velocity mapping,
145
+ spread, detune, or sampler playback mode.
146
+
147
+ **Layer precision gate:** before declaring a plan or execution complete,
148
+ each active layer needs a role and an evidence path: timbre/spectrum,
149
+ sequence feel, stereo placement, movement/automation, and parameter
150
+ programming. Low-volume buried layers do not count as solved layers.
151
+
116
152
  ### Phase 1 — Ground
117
153
 
118
154
  Read in parallel (all are fast). All of these are REQUIRED, not
@@ -44,7 +44,7 @@ Never invent an eighth family at the director level.
44
44
 
45
45
  **Discovery:** always call `list_semantic_moves(domain=<family>)` at
46
46
  runtime to enumerate — do not hardcode move IDs. Families are stable;
47
- the move catalog grows. As of v1.26.2 the runtime returns 44 moves
47
+ the move catalog grows. As of v1.26.3 the runtime returns 44 moves
48
48
  across all 7 domains.
49
49
 
50
50
  **Why the director never invents an eighth `rhythmic` family:** the
@@ -111,7 +111,9 @@ Call `get_capability_state` at the start of any evaluation session. The response
111
111
  "memory": {"name": "memory", "available": true, "confidence": 1.0, "mode": "available", "reasons": []},
112
112
  "web": {"name": "web", "available": true, "confidence": 0.7, "mode": "available", "reasons": []},
113
113
  "research": {"name": "research", "available": true, "confidence": 0.9, "mode": "available", "reasons": []},
114
- "flucoma": {"name": "flucoma", "available": false, "confidence": 0.0, "mode": "unavailable", "reasons": ["flucoma_not_installed"]}
114
+ "flucoma": {"name": "flucoma", "available": false, "confidence": 0.2, "mode": "unavailable", "reasons": ["flucoma_bridge_unavailable"], "device_loaded": true},
115
+ "link_audio": {"name": "link_audio", "available": false, "confidence": 0.2, "mode": "manual_only", "reasons": ["link_audio_unprobed"]},
116
+ "stem_workflow": {"name": "stem_workflow", "available": false, "confidence": 0.2, "mode": "manual_only", "reasons": ["stem_workflow_unprobed"]}
115
117
  }
116
118
  }
117
119
  }
@@ -127,11 +129,11 @@ Call `get_capability_state` at the start of any evaluation session. The response
127
129
 
128
130
  Every entry in `domains` has the same shape:
129
131
 
130
- - `name`: the domain key (`"session_access"`, `"analyzer"`, `"memory"`, `"web"`, `"research"`, `"flucoma"`).
132
+ - `name`: the domain key (`"session_access"`, `"analyzer"`, `"memory"`, `"web"`, `"research"`, `"flucoma"`, `"link_audio"`, `"stem_workflow"`).
131
133
  - `available`: boolean — is this capability ready to use right now?
132
134
  - `confidence`: 0.0–1.0 — how much to trust the `available` flag (e.g. stale analyzer data lowers confidence).
133
135
  - `mode`: short human label specific to the domain (`"healthy"`, `"available"`, `"measured"`, `"stale"`, `"targeted_only"`, `"full"`, `"unavailable"`).
134
- - `reasons`: list of short machine-readable tokens explaining why the domain is in its current state (`"analyzer_offline"`, `"web_unavailable"`, `"flucoma_not_installed"`, …). Empty when healthy.
136
+ - `reasons`: list of short machine-readable tokens explaining why the domain is in its current state (`"analyzer_offline"`, `"web_unavailable"`, `"flucoma_bridge_unavailable"`, `"flucoma_no_streams"`, `"flucoma_not_installed"`, …). Empty when healthy.
135
137
  - `freshness_ms`: optional — milliseconds since the domain last received fresh data (currently only the analyzer domain populates this).
136
138
 
137
139
  ### Domain definitions
@@ -141,7 +143,9 @@ Every entry in `domains` has the same shape:
141
143
  - **memory** — the local technique-store / taste memory. `available=true` means the persistent stores can be read and written.
142
144
  - **web** — server-side outbound HTTP capability. True when the MCP host can reach an arbitrary public URL (probed by a 500 ms HEAD request to `https://api.github.com`). Does NOT imply curated research corpora are installed — see the `research` domain for that.
143
145
  - **research** — composite over `session_access`, `memory`, and `web`. `mode="full"` when all three are available; `"targeted_only"` when at least one source is up; `"unavailable"` when nothing is reachable.
144
- - **flucoma** — whether the optional `flucoma` Python package is importable (probed via `importlib.util.find_spec`). FluCoMa-backed tools (`check_flucoma`, `extract_timbre_fingerprint`, etc.) degrade gracefully when this domain is unavailable.
146
+ - **flucoma** — Max/FluCoMa real-time stream readiness. `device_loaded=true` means the FluidCorpusManipulation Max package is installed, or active streams prove a frozen analyzer is working. `available=true` requires at least one FluCoMa stream (`spectral_shape`, `mel_bands`, `chroma`, `onset`, `novelty`, or `loudness`) to have reached the M4L spectral cache. FluCoMa-backed tools (`check_flucoma`, `extract_timbre_fingerprint`, etc.) degrade gracefully when this domain is unavailable.
147
+ - **link_audio** — Live 12.4 Link Audio capability. `probe_link_audio` is read-only and reports `mode="manual_only"` until peer/input/routing evidence proves the surface is readable or routable. Version number alone never makes this domain available.
148
+ - **stem_workflow** — Live 12.4 selected-time stem separation / merge capability. `probe_stem_workflow` is read-only and reports `mode="manual_only"` until a stable callable path is observed. Stem tools must not run on full tracks/clips by default.
145
149
 
146
150
  ## Collaborative Mode (Live 12.4+)
147
151
 
@@ -169,8 +173,10 @@ Live 12.4 introduces a new capability tier that unlocks native LOM access for sa
169
173
  **Tool signatures:** unchanged. Callers do not need to detect the tier —
170
174
  routing is transparent.
171
175
 
172
- **Follow-up plans (not yet shipped):**
173
- - Link Audio (tempo-sync sharing between Live sets) — tracked as a
174
- future Collaborative-tier feature.
175
- - Stem Separation v2 tracked as a future Collaborative-tier feature.
176
- Neither is available in the 1.26.2 release — still pending.
176
+ **Probe-first 12.4 surfaces in v1.27.1:**
177
+ - `probe_link_audio()` reports observed peer/input/routing visibility and
178
+ returns `manual_only`, `readable`, `routable`, or `unavailable`.
179
+ - `probe_stem_workflow()` reports observed callable paths and returns
180
+ `manual_only`, `callable`, or `unavailable`.
181
+ - Write workflows are intentionally absent unless a real Live probe proves
182
+ a stable non-UI-scripted route.