livepilot 1.9.14 → 1.9.15
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/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +42 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +7 -7
- package/livepilot/.Codex-plugin/plugin.json +2 -2
- package/livepilot/.claude-plugin/plugin.json +2 -2
- package/livepilot/agents/livepilot-producer/AGENT.md +243 -49
- package/livepilot/skills/livepilot-core/SKILL.md +81 -6
- package/livepilot/skills/livepilot-core/references/m4l-devices.md +2 -2
- package/livepilot/skills/livepilot-core/references/overview.md +2 -2
- package/livepilot/skills/livepilot-core/references/sound-design.md +3 -2
- package/livepilot/skills/livepilot-release/SKILL.md +13 -13
- package/m4l_device/livepilot_bridge.js +5 -2
- package/mcp_server/curves.py +11 -3
- package/mcp_server/evaluation/__init__.py +1 -0
- package/mcp_server/evaluation/fabric.py +575 -0
- package/mcp_server/evaluation/feature_extractors.py +84 -0
- package/mcp_server/evaluation/policy.py +67 -0
- package/mcp_server/evaluation/tools.py +53 -0
- package/mcp_server/memory/__init__.py +11 -2
- package/mcp_server/memory/anti_memory.py +78 -0
- package/mcp_server/memory/promotion.py +94 -0
- package/mcp_server/memory/session_memory.py +108 -0
- package/mcp_server/memory/taste_memory.py +158 -0
- package/mcp_server/memory/technique_store.py +2 -1
- package/mcp_server/memory/tools.py +112 -0
- package/mcp_server/mix_engine/__init__.py +1 -0
- package/mcp_server/mix_engine/critics.py +299 -0
- package/mcp_server/mix_engine/models.py +152 -0
- package/mcp_server/mix_engine/planner.py +103 -0
- package/mcp_server/mix_engine/state_builder.py +316 -0
- package/mcp_server/mix_engine/tools.py +214 -0
- package/mcp_server/performance_engine/__init__.py +1 -0
- package/mcp_server/performance_engine/models.py +148 -0
- package/mcp_server/performance_engine/planner.py +267 -0
- package/mcp_server/performance_engine/safety.py +162 -0
- package/mcp_server/performance_engine/tools.py +183 -0
- package/mcp_server/project_brain/__init__.py +6 -0
- package/mcp_server/project_brain/arrangement_graph.py +64 -0
- package/mcp_server/project_brain/automation_graph.py +72 -0
- package/mcp_server/project_brain/builder.py +123 -0
- package/mcp_server/project_brain/capability_graph.py +64 -0
- package/mcp_server/project_brain/models.py +282 -0
- package/mcp_server/project_brain/refresh.py +80 -0
- package/mcp_server/project_brain/role_graph.py +103 -0
- package/mcp_server/project_brain/session_graph.py +51 -0
- package/mcp_server/project_brain/tools.py +144 -0
- package/mcp_server/reference_engine/__init__.py +1 -0
- package/mcp_server/reference_engine/gap_analyzer.py +239 -0
- package/mcp_server/reference_engine/models.py +105 -0
- package/mcp_server/reference_engine/profile_builder.py +149 -0
- package/mcp_server/reference_engine/tactic_router.py +117 -0
- package/mcp_server/reference_engine/tools.py +235 -0
- package/mcp_server/runtime/__init__.py +1 -0
- package/mcp_server/runtime/action_ledger.py +117 -0
- package/mcp_server/runtime/action_ledger_models.py +84 -0
- package/mcp_server/runtime/action_tools.py +57 -0
- package/mcp_server/runtime/capability_state.py +218 -0
- package/mcp_server/runtime/safety_kernel.py +339 -0
- package/mcp_server/runtime/safety_tools.py +42 -0
- package/mcp_server/runtime/tools.py +64 -0
- package/mcp_server/server.py +17 -0
- package/mcp_server/sound_design/__init__.py +1 -0
- package/mcp_server/sound_design/critics.py +297 -0
- package/mcp_server/sound_design/models.py +147 -0
- package/mcp_server/sound_design/planner.py +104 -0
- package/mcp_server/sound_design/tools.py +297 -0
- package/mcp_server/tools/_agent_os_engine.py +947 -0
- package/mcp_server/tools/_composition_engine.py +1530 -0
- package/mcp_server/tools/_conductor.py +199 -0
- package/mcp_server/tools/_conductor_budgets.py +222 -0
- package/mcp_server/tools/_evaluation_contracts.py +91 -0
- package/mcp_server/tools/_form_engine.py +416 -0
- package/mcp_server/tools/_motif_engine.py +351 -0
- package/mcp_server/tools/_planner_engine.py +516 -0
- package/mcp_server/tools/_research_engine.py +542 -0
- package/mcp_server/tools/_research_provider.py +185 -0
- package/mcp_server/tools/_snapshot_normalizer.py +49 -0
- package/mcp_server/tools/agent_os.py +440 -0
- package/mcp_server/tools/analyzer.py +18 -0
- package/mcp_server/tools/automation.py +25 -10
- package/mcp_server/tools/composition.py +563 -0
- package/mcp_server/tools/motif.py +104 -0
- package/mcp_server/tools/planner.py +144 -0
- package/mcp_server/tools/research.py +223 -0
- package/mcp_server/tools/tracks.py +18 -3
- package/mcp_server/tools/transport.py +10 -2
- package/mcp_server/transition_engine/__init__.py +6 -0
- package/mcp_server/transition_engine/archetypes.py +167 -0
- package/mcp_server/transition_engine/critics.py +340 -0
- package/mcp_server/transition_engine/models.py +90 -0
- package/mcp_server/transition_engine/tools.py +291 -0
- package/mcp_server/translation_engine/__init__.py +5 -0
- package/mcp_server/translation_engine/critics.py +297 -0
- package/mcp_server/translation_engine/models.py +27 -0
- package/mcp_server/translation_engine/tools.py +74 -0
- package/package.json +2 -2
- package/remote_script/LivePilot/arrangement.py +12 -2
|
@@ -32,7 +32,7 @@ Ableton's browser is the source for all devices, presets, and samples. The `sear
|
|
|
32
32
|
| **Delay** | Delay, Echo, Grain Delay, Beat Repeat, Spectral Time |
|
|
33
33
|
| **Reverb** | Reverb, Convolution Reverb (M4L), Hybrid Reverb |
|
|
34
34
|
| **Distortion** | Saturator, Overdrive, Erosion, Redux, Pedal, Amp, Cabinet |
|
|
35
|
-
| **Modulation** | Chorus-Ensemble, Phaser-Flanger,
|
|
35
|
+
| **Modulation** | Chorus-Ensemble, Phaser-Flanger, Shifter, Ring Mod |
|
|
36
36
|
| **Utility** | Utility, Tuner, Spectrum, External Audio Effect |
|
|
37
37
|
| **Spatial** | Surround Panner (if available) |
|
|
38
38
|
|
|
@@ -295,7 +295,7 @@ find_and_load_device(track_index=0, name="Arpeggiator")
|
|
|
295
295
|
| Delay | `Delay`, `Echo`, `Grain Delay`, `Beat Repeat` |
|
|
296
296
|
| Reverb | `Reverb`, `Hybrid Reverb` |
|
|
297
297
|
| Distortion | `Saturator`, `Overdrive`, `Erosion`, `Redux`, `Pedal`, `Amp`, `Cabinet` |
|
|
298
|
-
| Modulation | `Chorus-Ensemble`, `Phaser-Flanger`, `
|
|
298
|
+
| Modulation | `Chorus-Ensemble`, `Phaser-Flanger`, `Shifter` |
|
|
299
299
|
| Utility | `Utility`, `Tuner`, `Spectrum` |
|
|
300
300
|
| MIDI FX | `Arpeggiator`, `Chord`, `Note Length`, `Pitch`, `Random`, `Scale`, `Velocity`, `CC Control` |
|
|
301
301
|
| Racks | `Instrument Rack`, `Audio Effect Rack`, `MIDI Effect Rack` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# LivePilot v1.9.14 — Architecture & Tool Reference
|
|
2
2
|
|
|
3
|
-
Agentic production system for Ableton Live 12.
|
|
3
|
+
Agentic production system for Ableton Live 12. 236 tools across 32 domains. Device atlas (280+ devices), 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
|
|
|
5
5
|
## Architecture
|
|
6
6
|
|
|
@@ -32,7 +32,7 @@ A flat tool list lets the AI press buttons. LivePilot's three layers give it con
|
|
|
32
32
|
|
|
33
33
|
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."
|
|
34
34
|
|
|
35
|
-
## The
|
|
35
|
+
## The 236 Tools — What Each One Does
|
|
36
36
|
|
|
37
37
|
### Transport (12) — Playback, tempo, global state, diagnostics
|
|
38
38
|
|
|
@@ -215,11 +215,12 @@ Simple 3-band EQ for quick tonal shaping.
|
|
|
215
215
|
- `Feedback` — Intensity/resonance
|
|
216
216
|
- **Phaser**: Sweeping notches. **Flanger**: Jet/whoosh effect.
|
|
217
217
|
|
|
218
|
-
**Frequency Shifter
|
|
218
|
+
**Shifter** (renamed from Frequency Shifter in Live 12)
|
|
219
219
|
- `Frequency` — Shift amount in Hz (not semitones — inharmonic)
|
|
220
220
|
- `Drive` — Input gain
|
|
221
221
|
- `Dry/Wet` — Mix
|
|
222
222
|
- **Use for**: Metallic textures, detuned unease, ring-mod effects
|
|
223
|
+
- **Browser name**: `Shifter` (use this with `find_and_load_device`)
|
|
223
224
|
|
|
224
225
|
### Utility
|
|
225
226
|
|
|
@@ -320,7 +321,7 @@ LFO: Multiple slow LFOs mapped to position, filter, pitch (subtle)
|
|
|
320
321
|
```
|
|
321
322
|
- Heavy Reverb (5-10s decay, high diffusion, 80-100% wet)
|
|
322
323
|
- Delay with high feedback (60-80%), filtered
|
|
323
|
-
-
|
|
324
|
+
- Shifter at very small values (+/- 1-5 Hz) for movement
|
|
324
325
|
- Grain Delay for granular textures
|
|
325
326
|
|
|
326
327
|
### 808 Bass (Simpler or Drum Rack)
|
|
@@ -28,26 +28,26 @@ Run this checklist EVERY time the user says "update everything", "push", "releas
|
|
|
28
28
|
|
|
29
29
|
## 2. Tool Count (must ALL match)
|
|
30
30
|
|
|
31
|
-
Current: **
|
|
31
|
+
Current: **236 tools across 32 domains**.
|
|
32
32
|
Core (no M4L): **149**. Analyzer (M4L): **29**. Perception (offline): **4**.
|
|
33
33
|
|
|
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, PERCEPTION section ("
|
|
38
|
-
- [ ] `package.json` → `"description"` (
|
|
37
|
+
- [ ] `README.md` — header, PERCEPTION section ("207 core...29 analyzer"), Analyzer table header "(29)", Perception table header "(4)"
|
|
38
|
+
- [ ] `package.json` → `"description"` (236 tools, 32 domains)
|
|
39
39
|
- [ ] `server.json` → `"description"`
|
|
40
40
|
- [ ] `livepilot/.Codex-plugin/plugin.json` → `"description"` (primary Codex manifest)
|
|
41
41
|
- [ ] `livepilot/.claude-plugin/plugin.json` → `"description"` (must match Codex plugin)
|
|
42
42
|
- [ ] `.claude-plugin/marketplace.json` → `"description"`
|
|
43
|
-
- [ ] `CLAUDE.md` → "
|
|
44
|
-
- [ ] `livepilot/skills/livepilot-core/SKILL.md` — "
|
|
45
|
-
- [ ] `livepilot/skills/livepilot-core/references/overview.md` — "
|
|
43
|
+
- [ ] `CLAUDE.md` → "236 tools across 32 domains"
|
|
44
|
+
- [ ] `livepilot/skills/livepilot-core/SKILL.md` — "236 tools across 32 domains", Analyzer (29), Perception (4)
|
|
45
|
+
- [ ] `livepilot/skills/livepilot-core/references/overview.md` — "236 tools across 32 domains"
|
|
46
46
|
- [ ] `docs/manual/index.md` — domain table: Analyzer (29), Perception (4)
|
|
47
|
-
- [ ] `docs/manual/getting-started.md` — "
|
|
47
|
+
- [ ] `docs/manual/getting-started.md` — "207 core tools...29 analyzer"
|
|
48
48
|
- [ ] `docs/manual/tool-reference.md` — all domains present with correct counts
|
|
49
49
|
- [ ] `docs/TOOL_REFERENCE.md` — all domains present
|
|
50
|
-
- [ ] `docs/M4L_BRIDGE.md` — "
|
|
50
|
+
- [ ] `docs/M4L_BRIDGE.md` — "207 core tools...29 analyzer"
|
|
51
51
|
- [ ] `docs/social-banner.html`
|
|
52
52
|
- [ ] `mcp_server/tools/analyzer.py` → module docstring
|
|
53
53
|
- [ ] `tests/test_tools_contract.py` → expected total count
|
|
@@ -56,10 +56,10 @@ Files that reference tool count:
|
|
|
56
56
|
|
|
57
57
|
## 3. Domain Count
|
|
58
58
|
|
|
59
|
-
Current: **
|
|
59
|
+
Current: **32 domains**: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, midi_io, perception, agent_os, composition, research, planner, project_brain, runtime, evaluation, memory_fabric, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, performance_engine.
|
|
60
60
|
|
|
61
|
-
- [ ] All files that mention domain count say "
|
|
62
|
-
- [ ] Domain lists include ALL
|
|
61
|
+
- [ ] All files that mention domain count say "32 domains"
|
|
62
|
+
- [ ] Domain lists include ALL 32 (especially newer domains — they're the most often omitted)
|
|
63
63
|
|
|
64
64
|
## 4. npm Registry
|
|
65
65
|
|
|
@@ -89,8 +89,8 @@ Current: **17 domains**: transport, tracks, clips, notes, devices, scenes, mixin
|
|
|
89
89
|
|
|
90
90
|
- [ ] `README.md` — features match current capabilities, "Coming" section is accurate
|
|
91
91
|
- [ ] `docs/manual/getting-started.md` — install instructions current
|
|
92
|
-
- [ ] `docs/manual/tool-reference.md` — all
|
|
93
|
-
- [ ] `docs/TOOL_REFERENCE.md` — all
|
|
92
|
+
- [ ] `docs/manual/tool-reference.md` — all 32 domains listed, all 236 tools present
|
|
93
|
+
- [ ] `docs/TOOL_REFERENCE.md` — all 32 domains present
|
|
94
94
|
- [ ] `docs/M4L_BRIDGE.md` — architecture accurate, core tool count correct
|
|
95
95
|
|
|
96
96
|
## 9. Derived Artifacts
|
|
@@ -1311,7 +1311,9 @@ function cmd_get_plugin_params(args) {
|
|
|
1311
1311
|
var is_plugin = (class_name === "PluginDevice" || class_name === "AuPluginDevice");
|
|
1312
1312
|
if (!is_plugin) {
|
|
1313
1313
|
send_response({
|
|
1314
|
-
"error": "Device is " + class_name + ", not a plugin (PluginDevice/AuPluginDevice)"
|
|
1314
|
+
"error": "Device is " + class_name + ", not a plugin (PluginDevice/AuPluginDevice). " +
|
|
1315
|
+
"This tool only works on AU/VST plugins. Use get_device_parameters for native Ableton devices. " +
|
|
1316
|
+
"Check get_device_info().is_plugin to verify before calling."
|
|
1315
1317
|
});
|
|
1316
1318
|
return;
|
|
1317
1319
|
}
|
|
@@ -1427,7 +1429,8 @@ function cmd_get_plugin_presets(args) {
|
|
|
1427
1429
|
var is_plugin = (class_name === "PluginDevice" || class_name === "AuPluginDevice");
|
|
1428
1430
|
if (!is_plugin) {
|
|
1429
1431
|
send_response({
|
|
1430
|
-
"error": "Device is " + class_name + ", not a plugin"
|
|
1432
|
+
"error": "Device is " + class_name + ", not a plugin. " +
|
|
1433
|
+
"This tool only works on AU/VST plugins. Check get_device_info().is_plugin first."
|
|
1431
1434
|
});
|
|
1432
1435
|
return;
|
|
1433
1436
|
}
|
package/mcp_server/curves.py
CHANGED
|
@@ -277,10 +277,18 @@ def _square(duration: float, density: int, low: float, high: float,
|
|
|
277
277
|
return points
|
|
278
278
|
|
|
279
279
|
|
|
280
|
-
def _steps(values: list[float], duration: float,
|
|
281
|
-
|
|
280
|
+
def _steps(values: list[float], duration: float, start: float = 0.0,
|
|
281
|
+
end: float = 1.0, steps: int = 16, density: int = 16,
|
|
282
|
+
**_) -> list:
|
|
283
|
+
"""Quantized staircase from explicit value list or auto-generated from start/end.
|
|
284
|
+
|
|
285
|
+
If values is empty, generates a staircase with `steps` evenly spaced
|
|
286
|
+
levels from `start` to `end`.
|
|
287
|
+
"""
|
|
282
288
|
if not values:
|
|
283
|
-
|
|
289
|
+
# Auto-generate staircase from start/end with the given number of steps
|
|
290
|
+
n = max(steps, 2)
|
|
291
|
+
values = [start + (end - start) * i / (n - 1) for i in range(n)]
|
|
284
292
|
step_dur = duration / len(values)
|
|
285
293
|
return [
|
|
286
294
|
{"time": i * step_dur, "value": v, "duration": step_dur}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Evaluation Fabric — unified evaluation layer for all engines."""
|