livepilot 1.9.23 → 1.10.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 (191) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/AGENTS.md +3 -3
  3. package/CHANGELOG.md +119 -0
  4. package/CONTRIBUTING.md +1 -1
  5. package/README.md +144 -13
  6. package/bin/livepilot.js +87 -0
  7. package/installer/codex.js +147 -0
  8. package/livepilot/.Codex-plugin/plugin.json +2 -2
  9. package/livepilot/.claude-plugin/plugin.json +2 -2
  10. package/livepilot/skills/livepilot-core/SKILL.md +21 -4
  11. package/livepilot/skills/livepilot-core/references/device-knowledge/00-index.md +34 -0
  12. package/livepilot/skills/livepilot-core/references/device-knowledge/automation-as-music.md +204 -0
  13. package/livepilot/skills/livepilot-core/references/device-knowledge/chains-genre.md +173 -0
  14. package/livepilot/skills/livepilot-core/references/device-knowledge/creative-thinking.md +211 -0
  15. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-distortion.md +188 -0
  16. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-space.md +162 -0
  17. package/livepilot/skills/livepilot-core/references/device-knowledge/effects-spectral.md +229 -0
  18. package/livepilot/skills/livepilot-core/references/device-knowledge/instruments-synths.md +243 -0
  19. package/livepilot/skills/livepilot-core/references/overview.md +13 -9
  20. package/livepilot/skills/livepilot-core/references/sample-manipulation.md +724 -0
  21. package/livepilot/skills/livepilot-core/references/sound-design-deep.md +140 -0
  22. package/livepilot/skills/livepilot-devices/SKILL.md +16 -2
  23. package/livepilot/skills/livepilot-evaluation/references/capability-modes.md +1 -1
  24. package/livepilot/skills/livepilot-release/SKILL.md +19 -5
  25. package/livepilot/skills/livepilot-sample-engine/SKILL.md +104 -0
  26. package/livepilot/skills/livepilot-sample-engine/references/sample-critics.md +87 -0
  27. package/livepilot/skills/livepilot-sample-engine/references/sample-philosophy.md +51 -0
  28. package/livepilot/skills/livepilot-sample-engine/references/sample-techniques.md +131 -0
  29. package/livepilot/skills/livepilot-sound-design-engine/SKILL.md +45 -0
  30. package/livepilot/skills/livepilot-wonder/SKILL.md +15 -0
  31. package/livepilot.mcpb +0 -0
  32. package/m4l_device/livepilot_bridge.js +1 -1
  33. package/manifest.json +2 -2
  34. package/mcp_server/__init__.py +1 -1
  35. package/mcp_server/atlas/__init__.py +357 -0
  36. package/mcp_server/atlas/device_atlas.json +44067 -0
  37. package/mcp_server/atlas/enrichments/__init__.py +111 -0
  38. package/mcp_server/atlas/enrichments/audio_effects/auto_filter.yaml +162 -0
  39. package/mcp_server/atlas/enrichments/audio_effects/beat_repeat.yaml +183 -0
  40. package/mcp_server/atlas/enrichments/audio_effects/channel_eq.yaml +126 -0
  41. package/mcp_server/atlas/enrichments/audio_effects/chorus_ensemble.yaml +149 -0
  42. package/mcp_server/atlas/enrichments/audio_effects/color_limiter.yaml +109 -0
  43. package/mcp_server/atlas/enrichments/audio_effects/compressor.yaml +159 -0
  44. package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb.yaml +143 -0
  45. package/mcp_server/atlas/enrichments/audio_effects/convolution_reverb_pro.yaml +178 -0
  46. package/mcp_server/atlas/enrichments/audio_effects/delay.yaml +151 -0
  47. package/mcp_server/atlas/enrichments/audio_effects/drum_buss.yaml +142 -0
  48. package/mcp_server/atlas/enrichments/audio_effects/dynamic_tube.yaml +147 -0
  49. package/mcp_server/atlas/enrichments/audio_effects/echo.yaml +167 -0
  50. package/mcp_server/atlas/enrichments/audio_effects/eq_eight.yaml +148 -0
  51. package/mcp_server/atlas/enrichments/audio_effects/eq_three.yaml +121 -0
  52. package/mcp_server/atlas/enrichments/audio_effects/erosion.yaml +103 -0
  53. package/mcp_server/atlas/enrichments/audio_effects/filter_delay.yaml +173 -0
  54. package/mcp_server/atlas/enrichments/audio_effects/gate.yaml +130 -0
  55. package/mcp_server/atlas/enrichments/audio_effects/gated_delay.yaml +133 -0
  56. package/mcp_server/atlas/enrichments/audio_effects/glue_compressor.yaml +142 -0
  57. package/mcp_server/atlas/enrichments/audio_effects/grain_delay.yaml +141 -0
  58. package/mcp_server/atlas/enrichments/audio_effects/hybrid_reverb.yaml +160 -0
  59. package/mcp_server/atlas/enrichments/audio_effects/limiter.yaml +97 -0
  60. package/mcp_server/atlas/enrichments/audio_effects/multiband_dynamics.yaml +174 -0
  61. package/mcp_server/atlas/enrichments/audio_effects/overdrive.yaml +119 -0
  62. package/mcp_server/atlas/enrichments/audio_effects/pedal.yaml +145 -0
  63. package/mcp_server/atlas/enrichments/audio_effects/phaser_flanger.yaml +161 -0
  64. package/mcp_server/atlas/enrichments/audio_effects/redux.yaml +114 -0
  65. package/mcp_server/atlas/enrichments/audio_effects/reverb.yaml +190 -0
  66. package/mcp_server/atlas/enrichments/audio_effects/roar.yaml +159 -0
  67. package/mcp_server/atlas/enrichments/audio_effects/saturator.yaml +146 -0
  68. package/mcp_server/atlas/enrichments/audio_effects/shifter.yaml +154 -0
  69. package/mcp_server/atlas/enrichments/audio_effects/spectral_resonator.yaml +141 -0
  70. package/mcp_server/atlas/enrichments/audio_effects/spectral_time.yaml +164 -0
  71. package/mcp_server/atlas/enrichments/audio_effects/vector_delay.yaml +140 -0
  72. package/mcp_server/atlas/enrichments/audio_effects/vinyl_distortion.yaml +141 -0
  73. package/mcp_server/atlas/enrichments/instruments/analog.yaml +222 -0
  74. package/mcp_server/atlas/enrichments/instruments/bass.yaml +202 -0
  75. package/mcp_server/atlas/enrichments/instruments/collision.yaml +150 -0
  76. package/mcp_server/atlas/enrichments/instruments/drift.yaml +167 -0
  77. package/mcp_server/atlas/enrichments/instruments/electric.yaml +137 -0
  78. package/mcp_server/atlas/enrichments/instruments/emit.yaml +163 -0
  79. package/mcp_server/atlas/enrichments/instruments/meld.yaml +164 -0
  80. package/mcp_server/atlas/enrichments/instruments/operator.yaml +197 -0
  81. package/mcp_server/atlas/enrichments/instruments/poli.yaml +192 -0
  82. package/mcp_server/atlas/enrichments/instruments/sampler.yaml +218 -0
  83. package/mcp_server/atlas/enrichments/instruments/simpler.yaml +217 -0
  84. package/mcp_server/atlas/enrichments/instruments/tension.yaml +156 -0
  85. package/mcp_server/atlas/enrichments/instruments/tree_tone.yaml +162 -0
  86. package/mcp_server/atlas/enrichments/instruments/vector_fm.yaml +165 -0
  87. package/mcp_server/atlas/enrichments/instruments/vector_grain.yaml +166 -0
  88. package/mcp_server/atlas/enrichments/instruments/wavetable.yaml +162 -0
  89. package/mcp_server/atlas/enrichments/midi_effects/arpeggiator.yaml +156 -0
  90. package/mcp_server/atlas/enrichments/midi_effects/bouncy_notes.yaml +93 -0
  91. package/mcp_server/atlas/enrichments/midi_effects/chord.yaml +147 -0
  92. package/mcp_server/atlas/enrichments/midi_effects/melodic_steps.yaml +97 -0
  93. package/mcp_server/atlas/enrichments/midi_effects/note_echo.yaml +108 -0
  94. package/mcp_server/atlas/enrichments/midi_effects/note_length.yaml +97 -0
  95. package/mcp_server/atlas/enrichments/midi_effects/pitch.yaml +76 -0
  96. package/mcp_server/atlas/enrichments/midi_effects/random.yaml +117 -0
  97. package/mcp_server/atlas/enrichments/midi_effects/rhythmic_steps.yaml +103 -0
  98. package/mcp_server/atlas/enrichments/midi_effects/scale.yaml +83 -0
  99. package/mcp_server/atlas/enrichments/midi_effects/step_arp.yaml +112 -0
  100. package/mcp_server/atlas/enrichments/midi_effects/velocity.yaml +119 -0
  101. package/mcp_server/atlas/enrichments/utility/amp.yaml +159 -0
  102. package/mcp_server/atlas/enrichments/utility/cabinet.yaml +109 -0
  103. package/mcp_server/atlas/enrichments/utility/corpus.yaml +150 -0
  104. package/mcp_server/atlas/enrichments/utility/resonators.yaml +131 -0
  105. package/mcp_server/atlas/enrichments/utility/spectrum.yaml +63 -0
  106. package/mcp_server/atlas/enrichments/utility/tuner.yaml +51 -0
  107. package/mcp_server/atlas/enrichments/utility/utility.yaml +136 -0
  108. package/mcp_server/atlas/enrichments/utility/vocoder.yaml +160 -0
  109. package/mcp_server/atlas/scanner.py +236 -0
  110. package/mcp_server/atlas/tools.py +224 -0
  111. package/mcp_server/composer/__init__.py +1 -0
  112. package/mcp_server/composer/engine.py +452 -0
  113. package/mcp_server/composer/layer_planner.py +427 -0
  114. package/mcp_server/composer/prompt_parser.py +329 -0
  115. package/mcp_server/composer/tools.py +201 -0
  116. package/mcp_server/connection.py +53 -8
  117. package/mcp_server/corpus/__init__.py +377 -0
  118. package/mcp_server/device_forge/__init__.py +1 -0
  119. package/mcp_server/device_forge/builder.py +377 -0
  120. package/mcp_server/device_forge/models.py +142 -0
  121. package/mcp_server/device_forge/templates.py +483 -0
  122. package/mcp_server/device_forge/tools.py +162 -0
  123. package/mcp_server/hook_hunter/analyzer.py +23 -0
  124. package/mcp_server/hook_hunter/models.py +1 -0
  125. package/mcp_server/hook_hunter/tools.py +4 -2
  126. package/mcp_server/m4l_bridge.py +1 -0
  127. package/mcp_server/memory/taste_graph.py +68 -1
  128. package/mcp_server/memory/tools.py +15 -4
  129. package/mcp_server/musical_intelligence/detectors.py +14 -1
  130. package/mcp_server/musical_intelligence/tools.py +11 -8
  131. package/mcp_server/persistence/__init__.py +1 -0
  132. package/mcp_server/persistence/base_store.py +82 -0
  133. package/mcp_server/persistence/project_store.py +106 -0
  134. package/mcp_server/persistence/taste_store.py +122 -0
  135. package/mcp_server/preview_studio/models.py +1 -0
  136. package/mcp_server/preview_studio/tools.py +56 -13
  137. package/mcp_server/runtime/capability.py +66 -0
  138. package/mcp_server/runtime/capability_probe.py +137 -0
  139. package/mcp_server/runtime/execution_router.py +143 -0
  140. package/mcp_server/runtime/live_version.py +102 -0
  141. package/mcp_server/runtime/remote_commands.py +87 -0
  142. package/mcp_server/runtime/tools.py +18 -4
  143. package/mcp_server/sample_engine/__init__.py +1 -0
  144. package/mcp_server/sample_engine/analyzer.py +216 -0
  145. package/mcp_server/sample_engine/critics.py +390 -0
  146. package/mcp_server/sample_engine/models.py +193 -0
  147. package/mcp_server/sample_engine/moves.py +127 -0
  148. package/mcp_server/sample_engine/planner.py +186 -0
  149. package/mcp_server/sample_engine/sources.py +540 -0
  150. package/mcp_server/sample_engine/techniques.py +908 -0
  151. package/mcp_server/sample_engine/tools.py +442 -0
  152. package/mcp_server/semantic_moves/__init__.py +3 -0
  153. package/mcp_server/semantic_moves/device_creation_moves.py +237 -0
  154. package/mcp_server/semantic_moves/mix_moves.py +41 -41
  155. package/mcp_server/semantic_moves/performance_moves.py +13 -13
  156. package/mcp_server/semantic_moves/sample_compilers.py +372 -0
  157. package/mcp_server/semantic_moves/sound_design_moves.py +15 -15
  158. package/mcp_server/semantic_moves/tools.py +18 -17
  159. package/mcp_server/semantic_moves/transition_moves.py +16 -16
  160. package/mcp_server/server.py +51 -0
  161. package/mcp_server/services/__init__.py +1 -0
  162. package/mcp_server/services/motif_service.py +67 -0
  163. package/mcp_server/session_continuity/tracker.py +29 -1
  164. package/mcp_server/song_brain/builder.py +28 -1
  165. package/mcp_server/song_brain/models.py +4 -0
  166. package/mcp_server/song_brain/tools.py +20 -2
  167. package/mcp_server/sound_design/critics.py +89 -1
  168. package/mcp_server/splice_client/__init__.py +1 -0
  169. package/mcp_server/splice_client/client.py +347 -0
  170. package/mcp_server/splice_client/models.py +96 -0
  171. package/mcp_server/splice_client/protos/__init__.py +1 -0
  172. package/mcp_server/splice_client/protos/app_pb2.py +319 -0
  173. package/mcp_server/splice_client/protos/app_pb2.pyi +1153 -0
  174. package/mcp_server/splice_client/protos/app_pb2_grpc.py +1946 -0
  175. package/mcp_server/tools/arrangement.py +69 -0
  176. package/mcp_server/tools/automation.py +15 -2
  177. package/mcp_server/tools/devices.py +117 -6
  178. package/mcp_server/tools/notes.py +37 -4
  179. package/mcp_server/wonder_mode/diagnosis.py +5 -0
  180. package/mcp_server/wonder_mode/engine.py +85 -1
  181. package/mcp_server/wonder_mode/tools.py +6 -1
  182. package/package.json +12 -2
  183. package/remote_script/LivePilot/__init__.py +8 -1
  184. package/remote_script/LivePilot/arrangement.py +114 -0
  185. package/remote_script/LivePilot/browser.py +56 -1
  186. package/remote_script/LivePilot/devices.py +236 -6
  187. package/remote_script/LivePilot/mixing.py +8 -3
  188. package/remote_script/LivePilot/server.py +5 -1
  189. package/remote_script/LivePilot/transport.py +3 -0
  190. package/remote_script/LivePilot/version_detect.py +78 -0
  191. package/scripts/sync_metadata.py +132 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
3
  "name": "dreamrec-LivePilot",
4
- "description": "Agentic MCP production system for Ableton Live 12 — 293 tools, 39 domains",
4
+ "description": "Agentic MCP production system for Ableton Live 12 — 316 tools, 43 domains",
5
5
  "owner": {
6
6
  "name": "dreamrec",
7
7
  "email": "dreamrec@users.noreply.github.com"
@@ -9,8 +9,8 @@
9
9
  "plugins": [
10
10
  {
11
11
  "name": "livepilot",
12
- "description": "Agentic production system for Ableton Live 12 — 293 tools, 39 domains, device atlas, spectral perception, technique memory, neo-Riemannian harmony, Euclidean rhythm, species counterpoint, MIDI I/O",
13
- "version": "1.9.23",
12
+ "description": "Agentic production system for Ableton Live 12 — 316 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.0",
14
14
  "author": {
15
15
  "name": "Pilot Studio"
16
16
  },
package/AGENTS.md CHANGED
@@ -1,4 +1,4 @@
1
- # LivePilot v1.9.18 — Ableton Live 12
1
+ # LivePilot v1.10.0 — Ableton Live 12
2
2
 
3
3
  ## Project
4
4
  - **Repo:** This directory (LivePilot)
@@ -22,7 +22,7 @@
22
22
  ## Key Rules
23
23
  - ALL Live Object Model (LOM) calls must execute on Ableton's main thread via schedule_message queue
24
24
  - Live 12 minimum — use modern note API (add_new_notes, get_notes_extended, apply_note_modifications)
25
- - 293 tools across 39 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, midi_io, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, performance_engine
25
+ - 316 tools across 43 domains: transport, tracks, clips, notes, devices, scenes, mixing, browser, arrangement, memory, analyzer, automation, theory, generative, harmony, midi_io, perception, agent_os, composition, motif, research, planner, project_brain, runtime, evaluation, mix_engine, sound_design, transition_engine, reference_engine, translation_engine, performance_engine, song_brain, preview_studio, hook_hunter, stuckness_detector, wonder_mode, session_continuity, creative_constraints, device_forge, sample_engine, atlas, composer
26
26
  - JSON over TCP, newline-delimited, port 9878
27
27
  - Structured errors with codes: INDEX_ERROR, NOT_FOUND, INVALID_PARAM, STATE_ERROR, TIMEOUT, INTERNAL
28
28
 
@@ -43,4 +43,4 @@ When modifying .amxd attributes that Max editor won't persist (e.g., `openinpres
43
43
  4. Structure: 24-byte `ampf` header + `ptch` chunk + `mx@c` header + JSON patcher + frozen deps
44
44
 
45
45
  ## Tool Count
46
- Currently 257 tools. If adding/removing tools, update: README.md, package.json description, livepilot/.Codex-plugin/plugin.json, server.json, livepilot/skills/livepilot-core/SKILL.md, livepilot/skills/livepilot-core/references/overview.md, AGENTS.md, CHANGELOG.md, tests/test_tools_contract.py, docs/manual/index.md, docs/manual/tool-reference.md
46
+ Currently 316 tools. If adding/removing tools, update: README.md, package.json description, livepilot/.Codex-plugin/plugin.json, livepilot/.claude-plugin/plugin.json, server.json, livepilot/skills/livepilot-core/SKILL.md, livepilot/skills/livepilot-core/references/overview.md, AGENTS.md, CLAUDE.md, CHANGELOG.md, tests/test_tools_contract.py, docs/manual/index.md, docs/manual/tool-reference.md
package/CHANGELOG.md CHANGED
@@ -1,5 +1,124 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.10.0 — The Intelligence Release (April 13 2026)
4
+
5
+ 316 tools across 43 domains. Device Atlas v2, Sample Intelligence, Auto-Composition, Splice Integration, Device Forge, Live 12.3 API, Corpus Intelligence.
6
+
7
+ ### Device Atlas v2 — 1305 Devices, 81 Enriched (+6 tools)
8
+ - **`atlas_search`** — fuzzy search across all devices by name, sonic character, use case, or genre
9
+ - **`atlas_device_info`** — full knowledge entry for any device — parameters, recipes, gotchas
10
+ - **`atlas_suggest`** — intent-driven recommendation: "warm bass for techno" → Drift + recipe
11
+ - **`atlas_chain_suggest`** — full device chain for a track role: instrument + effects with rationale
12
+ - **`atlas_compare`** — side-by-side comparison of two devices for a given role
13
+ - **`scan_full_library`** — deep browser scan to build/refresh the atlas
14
+ - 32 instruments (16 enriched), 70 audio effects (35 enriched), 23 MIDI effects (12 enriched), 497 M4L devices, 683 drum kits
15
+ - 71 YAML enrichment files with parameter guides, recipes, and production knowledge
16
+
17
+ ### Composer Engine — Prompt to Multi-Layer Session (+3 tools)
18
+ - **`compose`** — full multi-layer composition from text prompt ("dark minimal techno 128bpm with industrial textures")
19
+ - **`augment_with_samples`** — add sample-based layers to existing session
20
+ - **`get_composition_plan`** — dry run preview without executing
21
+ - NLP parser extracts genre, mood, tempo, key, energy from free text
22
+ - Layer planner with role templates (drums/bass/lead/pad/texture/vocal)
23
+ - 7 genre defaults: techno, house, hip hop, ambient, drum and bass, trap, lo-fi
24
+ - Credit safety system for Splice integration
25
+
26
+ ### Sample Engine — AI Sample Intelligence (+6 tools)
27
+ - **`analyze_sample`**, **`evaluate_sample_fit`**, **`search_samples`**, **`suggest_sample_technique`**, **`plan_sample_workflow`**, **`get_sample_opportunities`**
28
+ - SpliceSource — reads Splice's local sounds.db (read-only) for key, BPM, genre, tags, pack info, popularity
29
+ - BrowserSource + FilesystemSource — Ableton browser and local directory scanning
30
+ - 6-critic fitness battery: key fit, tempo fit, frequency fit, role fit, vibe fit, intent fit
31
+ - 29-technique library: rhythmic (Dilla, Burial, Premier), textural (Paulstretch, granular), melodic (Bon Iver), resampling (Amon Tobin)
32
+ - Dual philosophy: Surgeon (precision integration) vs Alchemist (creative transformation)
33
+ - 6 sample-domain semantic moves for Wonder Mode: chop_rhythm, texture_layer, vocal_ghost, break_layer, resample_destroy, one_shot_accent
34
+ - Sample-aware stuckness diagnosis: no_organic_texture, stale_drums, vocal_processing_monotony, dense_but_static
35
+
36
+ ### Splice gRPC Client
37
+ - Live connection to Splice desktop API for downloading new samples
38
+ - Port auto-detected from port.conf, TLS with self-signed certs
39
+ - Credit safety floor (never drain below 5 credits)
40
+ - Graceful degradation when Splice is not running
41
+
42
+ ### Device Forge — Programmatic M4L Generation (+3 tools)
43
+ - **`generate_m4l_effect`**, **`list_genexpr_templates`**, **`install_m4l_device`**
44
+ - .amxd binary builder from pure Python (reverse-engineered binary format)
45
+ - gen~ DSP template library: 15 building blocks (Lorenz, Karplus-Strong, wavefolder, FDN reverb, bitcrusher, etc.)
46
+ - 7 device_creation semantic moves for Wonder Mode
47
+ - Safety: auto `clip(out, -1, 1)` on all generated gen~ code
48
+ - Auto-installs to Ableton User Library
49
+
50
+ ### Live 12.3 API Integration (+4 tools)
51
+ - **`create_native_arrangement_clip`** — arrangement clips with automation envelope (12.1.10+)
52
+ - **`insert_device`** — insert native device by name, 10x faster than browser (12.3+)
53
+ - **`insert_rack_chain`** — add chains to Instrument/Audio/Drum Racks (12.3+)
54
+ - **`set_drum_chain_note`** — assign MIDI notes to Drum Rack chains (12.3+)
55
+ - Version detection at startup with feature flags via `get_session_info`
56
+ - Three capability tiers: Core (12.0+), Enhanced Arrangement (12.1.10+), Full Intelligence (12.3+)
57
+ - Display values on device parameters (12.2+) — human-readable like "26.0 Hz"
58
+ - `find_and_load_device` auto-routes to `insert_device` on 12.3+ (10x speedup)
59
+
60
+ ### Corpus Intelligence Layer
61
+ - Parses device-knowledge markdown into queryable Python structures at runtime
62
+ - EmotionalRecipe, GenreChain, PhysicalModelRecipe, AutomationGesture data types
63
+ - Consumed by Wonder Mode, Sound Design critics, and Composer Engine
64
+
65
+ ### Wonder Mode Enhancements
66
+ - Corpus intelligence integration — emotional/genre/material hints in variants
67
+ - Sample-domain diagnosis patterns
68
+ - 13 new semantic moves (6 sample + 7 device creation)
69
+
70
+ ### New Domains
71
+ - **atlas** — device knowledge database (6 tools)
72
+ - **composer** — auto-composition engine (3 tools)
73
+ - **sample_engine** — sample intelligence (6 tools)
74
+ - **device_forge** — M4L device generation (3 tools)
75
+
76
+ ## 1.9.24 — Stability & Intelligence Upgrade (April 2026)
77
+
78
+ ### Truth and Boundaries (Wave 1)
79
+ - **feat(runtime):** Capability contract — every advanced tool reports `full/fallback/analytical_only/unavailable` with confidence scores
80
+ - **feat(runtime):** Command boundary audit — CI catches any `send_command()` targeting a non-existent Remote Script command
81
+ - **fix(song_brain):** `get_motif_graph` now uses pure-Python engine instead of invalid TCP call
82
+ - **fix(hook_hunter):** Same motif routing fix
83
+ - **fix(musical_intelligence):** Same motif routing fix + `analyze_phrase_arc` now calls perception engine directly
84
+ - **fix(memory):** `record_positive_preference` actually updates taste dimensions (was a silent no-op due to key mismatch)
85
+ - **fix(metadata):** AGENTS.md synced to v1.9.23/293 tools, test docstring corrected
86
+
87
+ ### Unified Execution Layer (Wave 2)
88
+ - **feat(runtime):** Execution router — classifies steps as `remote_command/bridge_command/mcp_tool/unknown`, dispatches correctly
89
+ - **feat(semantic_moves):** `apply_semantic_move` explore mode uses execution router
90
+ - **feat(preview_studio):** `render_preview_variant` uses execution router
91
+
92
+ ### Persistent Memory (Waves 2-3)
93
+ - **feat(persistence):** Base persistent JSON store (atomic write, corruption recovery, thread-safe)
94
+ - **feat(persistence):** Taste store at `~/.livepilot/taste.json` — move outcomes, novelty band, device affinity, anti-preferences survive restart
95
+ - **feat(persistence):** Project store at `~/.livepilot/projects/<hash>/state.json` — threads, turns, Wonder outcomes per song
96
+ - **feat(memory):** TasteGraph.record_move_outcome writes to persistent backing
97
+ - **feat(session_continuity):** tracker flushes threads and turns to project store on write
98
+
99
+ ### Move Annotations (Wave 3)
100
+ - **feat(semantic_moves):** All 20 moves annotated with explicit `backend` per compile_plan step
101
+ - **test:** Static audit verifies all annotations match the execution router classifier
102
+
103
+ ### Intelligence Upgrade (Waves 3-4)
104
+ - **feat(services):** Shared motif service — one entry point consumed by SongBrain, HookHunter, musical_intelligence
105
+ - **feat(song_brain):** Evidence-weighted identity confidence (motif=0.4, composition=0.2, roles=0.15, scenes=0.15, moves=0.1)
106
+ - **feat(song_brain):** `evidence_breakdown` field shows per-source contributions
107
+ - **feat(hook_hunter):** Hooks carry `evidence_sources` (motif_recurrence, track_name, clip_reuse)
108
+ - **feat(hook_hunter):** Section-placement analysis boosts hooks recurring across sections
109
+ - **feat(detectors):** Motif appearing in >60% of sections triggers fatigue signal
110
+
111
+ ### Preview and Doctor (Wave 4)
112
+ - **feat(preview_studio):** Three explicit preview modes: `audible_preview` (M4L+spectrum), `metadata_only_preview`, `analytical_preview`
113
+ - **feat(preview_studio):** `bars` parameter used for audible preview playback duration
114
+ - **feat(preview_studio):** `preview_mode` field in response — no ambiguity about what was measured
115
+ - **feat(runtime):** Capability probe — 6-area runtime detection (Ableton, Remote Script, M4L, numpy, persistence, tier)
116
+
117
+ ### Release Infrastructure (Wave 5)
118
+ - **feat(scripts):** `sync_metadata.py` — single source of truth for version and tool count, CI-checkable
119
+ - **docs:** README Intelligence Layer section with all 12 engines described
120
+ - **docs:** Manual index rewritten with three-layer architecture and 39-domain map
121
+
3
122
  ## 1.9.23-wonder-v1.5 — Wonder Mode V1.5: Stuck-Rescue Workflow (April 2026)
4
123
 
5
124
  ### Wonder Mode Redesign (292->293 tools)
package/CONTRIBUTING.md CHANGED
@@ -98,7 +98,7 @@ Prefix with `fix:`, `feat:`, `docs:`, `refactor:`, `test:`, or `chore:`.
98
98
 
99
99
  ## Tool Count Discipline
100
100
 
101
- Currently **293 tools**. If you add or remove a `@mcp.tool()` decorator, update all of these files:
101
+ Currently **316 tools**. If you add or remove a `@mcp.tool()` decorator, update all of these files:
102
102
 
103
103
  - `README.md`
104
104
  - `CLAUDE.md`
package/README.md CHANGED
@@ -13,11 +13,12 @@
13
13
  <a href="https://www.npmjs.com/package/livepilot"><img src="https://img.shields.io/npm/dm/livepilot?style=flat-square" alt="npm downloads"></a>
14
14
  <a href="https://github.com/dreamrec/LivePilot/blob/main/LICENSE"><img src="https://img.shields.io/github/license/dreamrec/LivePilot?style=flat-square" alt="License"></a>
15
15
  <a href="https://github.com/dreamrec/LivePilot/releases"><img src="https://img.shields.io/github/v/release/dreamrec/LivePilot?style=flat-square&label=release" alt="Latest Release"></a>
16
+ <a href="https://www.patreon.com/c/dreamrec"><img src="https://img.shields.io/badge/Patreon-Support%20LivePilot-ff424d?style=flat-square&logo=patreon&logoColor=white" alt="Patreon"></a>
16
17
  </p>
17
18
 
18
19
  <p align="center">
19
20
  An agentic production system for Ableton Live 12.<br>
20
- 293 tools. Device atlas. Spectral perception. Technique memory.
21
+ 316 tools. Device atlas. Spectral perception. Technique memory.
21
22
  </p>
22
23
 
23
24
  <br>
@@ -37,10 +38,10 @@
37
38
  │ KNOWLEDGE PERCEPTION MEMORY │
38
39
  │ ─────────── ────────── ────── │
39
40
  │ │
40
- 280+ devices 8-band FFT recall by │
41
- 139 drum kits RMS / peak mood, genre, │
42
- 350+ impulse pitch tracking texture │
43
- responses key detection │
41
+ 1305 devices 8-band FFT recall by │
42
+ 81 enriched RMS / peak mood, genre, │
43
+ 683 drum kits pitch tracking texture │
44
+ Splice catalog key detection │
44
45
  │ │
45
46
  │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
46
47
  │ │ Device │─────▶│ M4L │─────▶│ Technique │ │
@@ -49,8 +50,8 @@
49
50
  │ └───────────────────┼───────────────────┘ │
50
51
  │ ▼ │
51
52
  │ ┌─────────────────┐ │
52
- │ │ 293 MCP Tools │ │
53
- │ │ 39 domains │ │
53
+ │ │ 316 MCP Tools │ │
54
+ │ │ 43 domains │ │
54
55
  │ └────────┬────────┘ │
55
56
  │ │ │
56
57
  │ Remote Script ──┤── TCP 9878 │
@@ -71,7 +72,78 @@ via a Max for Live device.
71
72
  The **memory** gives it history — a searchable library of production decisions
72
73
  that persists across sessions.
73
74
 
74
- All three feed into 293 deterministic tools that execute on Ableton's main thread.
75
+ All three feed into 316 deterministic tools that execute on Ableton's main thread.
76
+
77
+ <br>
78
+
79
+ ---
80
+
81
+ ## The Intelligence Layer
82
+
83
+ Most MCP servers are tool collections — they execute commands. LivePilot is an **agentic production system** — it understands what a song is becoming, diagnoses when a session is stuck, generates real creative options, learns from your decisions, and tracks its own impact.
84
+
85
+ This is the V2 intelligence layer: 12 engines that sit on top of the 316 tools and give the AI musical judgment, not just musical execution.
86
+
87
+ ### SongBrain — What the Song Is
88
+
89
+ SongBrain builds a real-time model of the current session: what the defining idea is (identity core), what elements must not be casually damaged (sacred elements), what each section is trying to do emotionally (section purposes), and where the energy arc is heading. It answers the question every producer asks: *"What is this track?"*
90
+
91
+ It detects when the song's identity is drifting — when recent edits are pulling the track away from what made it work. When identity confidence is high, the system makes bolder suggestions. When it's fragile, it protects what's there.
92
+
93
+ ### Taste Graph — What You Like
94
+
95
+ The Taste Graph learns your production preferences across sessions. Not just "prefers reverb" — it tracks which move families you keep vs. undo (mix moves? arrangement moves?), which devices you gravitate toward, how experimental you want suggestions to be (your novelty band), and which dimensions you actively avoid.
96
+
97
+ Every time you accept or reject a suggestion, the graph updates. Over time, it personalizes which creative options are offered and how they're ranked. Two producers using the same tools get different recommendations.
98
+
99
+ ### Semantic Moves — Musical Actions, Not Parameters
100
+
101
+ A semantic move is a high-level musical intent — "add contrast," "tighten the low end," "build tension toward the chorus" — that compiles into a specific sequence of tool calls. The system has 26+ moves across 6 families (mix, arrangement, transition, sound design, sample, device creation), each with an executable plan.
102
+
103
+ Moves carry risk levels, target dimensions, and protection thresholds. "Add a filter sweep build" targets energy and tension while protecting clarity. The AI doesn't just know what to do — it knows what it's risking.
104
+
105
+ ### Wonder Mode — Stuck-Rescue Workflow
106
+
107
+ When a session is stuck — too many undos, polishing the same loop, no structural progress — Wonder Mode activates. It's not "surprise me." It's a structured diagnosis-and-rescue workflow:
108
+
109
+ 1. **Diagnose** — Why is the session stuck? Repeated undos? Overpolished loop? Missing contrast? Identity unclear? The stuckness detector analyzes the action history and classifies the problem.
110
+
111
+ 2. **Generate** — Based on the diagnosis, Wonder searches for semantic moves that address the specific problem. It enforces real distinctness — each variant must differ by move family or execution approach. If only one real option exists, it says so honestly instead of relabeling the same idea three times.
112
+
113
+ 3. **Preview** — Each executable variant can be applied, captured, and undone using Ableton's undo system. You hear what each option would actually sound like before committing.
114
+
115
+ 4. **Commit or Reject** — Choose one, and the system records it into taste and session continuity. Reject all, and the creative thread stays open for another attempt. No fake outcomes are recorded.
116
+
117
+ ### Creative Engines
118
+
119
+ Six specialized engines handle different aspects of production intelligence:
120
+
121
+ | Engine | What it does |
122
+ |--------|-------------|
123
+ | **Mix Engine** | Critic-driven mix analysis. Identifies masking, headroom issues, stereo problems. Plans corrective moves with before/after evaluation. |
124
+ | **Sound Design Engine** | Analyzes patches for static timbre, missing modulation, weak transients. Suggests parameter moves and evaluates the result. |
125
+ | **Transition Engine** | Classifies transition types (drop, build, breakdown). Scores transition quality and plans improvements using archetypes. |
126
+ | **Composition Engine** | Analyzes song structure, detects motifs, infers section purposes, scores emotional arcs. Plans arrangement moves. |
127
+ | **Performance Engine** | Safety-constrained suggestions for live performance. Knows which moves are safe during playback and which risk audio dropouts. |
128
+ | **Reference Engine** | Distills principles from reference tracks. Maps those principles to your current session as concrete, actionable moves. |
129
+
130
+ ### Hook Hunter — Finding What Matters
131
+
132
+ The Hook Hunter identifies the most salient musical idea in a session — the element listeners would remember. It ranks candidates by rhythmic distinctiveness, melodic contour, and repetition. Then it tracks whether hooks are being developed, neglected, or undermined by arrangement choices.
133
+
134
+ When the hook is strong but underused, it flags it. When a transition fails to deliver the expected payoff, it diagnoses why.
135
+
136
+ ### Session Continuity — The Story of Your Session
137
+
138
+ Session Continuity tracks what happened, what changed, and what's still unresolved. It maintains creative threads (open questions like "the chorus needs more lift") and records turn resolutions (what you tried, whether you kept it, how it affected identity).
139
+
140
+ When you return to a project, the session story tells the AI: *"Last time, you were working on making the bridge darker. You tried three approaches and kept the filter sweep. The chorus lift thread is still open."*
141
+
142
+ ### Evaluation Loop — Verify Before Claiming Success
143
+
144
+ Every creative engine follows the same discipline: **measure before, act, measure after, compare**. The evaluation system captures session state snapshots, runs the change, captures again, and scores the difference. If the change made things worse — more masking, lost headroom, identity drift — the system flags it before you move on.
145
+
146
+ This closes the gap between "the AI did something" and "the AI did something that actually helped."
75
147
 
76
148
  <br>
77
149
 
@@ -79,7 +151,7 @@ All three feed into 293 deterministic tools that execute on Ableton's main threa
79
151
 
80
152
  ## Tools
81
153
 
82
- 293 tools across 39 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
154
+ 316 tools across 43 domains. Highlights below — [full catalog here](docs/manual/tool-catalog.md).
83
155
 
84
156
  <br>
85
157
 
@@ -91,11 +163,11 @@ All three feed into 293 deterministic tools that execute on Ableton's main threa
91
163
  | Tracks | 17 | create MIDI/audio/return, delete, duplicate, arm, mute, solo, color, freeze, flatten |
92
164
  | Clips | 11 | create, delete, duplicate, fire, stop, loop, launch mode, warp mode, quantize |
93
165
  | Notes | 8 | add/get/remove/modify MIDI notes, transpose, duplicate, per-note probability |
94
- | Devices | 15 | load by name or URI, get/set parameters, batch edit, racks, chains, presets, plugin deep control |
166
+ | Devices | 19 | load by name or URI, insert native (12.3+), get/set parameters, batch edit, racks, chains, drum chain note assignment, presets, plugin deep control |
95
167
  | Scenes | 12 | create, delete, duplicate, fire, name, color, tempo, scene matrix |
96
168
  | Browser | 4 | search library, browse tree, load items, filter by category |
97
169
  | Mixing | 11 | volume, pan, sends, routing, meters, return tracks, master, full mix snapshot |
98
- | Arrangement | 19 | timeline clips, arrangement notes, arrangement automation, recording, cue points |
170
+ | Arrangement | 21 | timeline clips, native arrangement clips (12.1.10+), arrangement notes, arrangement automation, recording, cue points |
99
171
 
100
172
  <br>
101
173
 
@@ -105,7 +177,7 @@ The M4L Analyzer sits on the master track. UDP 9880 carries spectral data
105
177
  from Max to the server. OSC 9881 sends commands back.
106
178
 
107
179
  > [!TIP]
108
- > All 207 core tools work without the analyzer — it adds 30 more and closes the feedback loop.
180
+ > All 289 core tools work without the analyzer — it adds 27 bridge tools and closes the feedback loop.
109
181
 
110
182
  ```
111
183
  SPECTRAL ─────── 8-band frequency decomposition (sub → air)
@@ -322,7 +394,34 @@ read_audio_metadata Format, duration, sample rate, tags
322
394
 
323
395
  <br>
324
396
 
325
- > **[View all 293 tools →](docs/manual/tool-catalog.md)**
397
+ ### Agentic Intelligence 106 tools
398
+
399
+ The V2 intelligence layer. These tools don't just execute commands — they analyze, diagnose, plan, evaluate, and learn.
400
+
401
+ | Domain | # | What it does |
402
+ |--------|:-:|-------------|
403
+ | Agent OS | 8 | session kernel, action ledger, capability state, routing, turn budget |
404
+ | Composition | 9 | section analysis, motif detection, emotional arc, form planning, section transforms |
405
+ | Evaluation | 1 | before/after evaluation with structured scoring |
406
+ | Mix Engine | 6 | critic-driven mix analysis, issue detection, move planning, masking reports |
407
+ | Sound Design | 4 | patch analysis, modulation planning, timbre scoring |
408
+ | Transition Engine | 5 | transition classification, scoring, archetype-based planning |
409
+ | Reference Engine | 5 | reference profiling, principle distillation, gap analysis, move mapping |
410
+ | Translation Engine | 3 | cross-domain translation, issue detection |
411
+ | Performance Engine | 3 | safety-constrained suggestions, safe move lists, scene handoff planning |
412
+ | Song Brain | 3 | identity inference, sacred element detection, drift monitoring |
413
+ | Hook Hunter | 9 | hook detection, salience scoring, development strategies, neglect detection, phrase impact |
414
+ | Stuckness Detector | 3 | momentum analysis, rescue classification, structured rescue workflows |
415
+ | Wonder Mode | 3 | diagnosis-driven variant generation, taste-aware ranking, session discard |
416
+ | Session Continuity | 7 | creative threads, turn resolution, taste vs identity ranking, session story |
417
+ | Creative Constraints | 5 | constraint activation, reference-inspired variants, constrained generation |
418
+ | Preview Studio | 5 | variant creation, preview rendering, comparison, commit, discard |
419
+ | **Device Atlas** | **6** | **search 1305 devices, suggest by intent, chain building, device comparison, library scan** |
420
+ | **Sample Engine** | **6** | **multi-source sample search (Splice/Browser/filesystem), fitness critics, technique library** |
421
+ | **Device Forge** | **3** | **generate M4L devices from gen~ templates, install to browser** |
422
+ | **Composer** | **3** | **prompt → multi-layer composition, sample augmentation, plan preview** |
423
+
424
+ > **[View all 316 tools →](docs/manual/tool-catalog.md)**
326
425
 
327
426
  <br>
328
427
 
@@ -372,6 +471,11 @@ claude mcp add LivePilot -- npx livepilot
372
471
  claude plugin add github:dreamrec/LivePilot/plugin
373
472
  ```
374
473
 
474
+ **Codex App:**
475
+ ```bash
476
+ npx livepilot --install-codex-plugin
477
+ ```
478
+
375
479
  **Claude Desktop (macOS)** — `~/Library/Application Support/Claude/claude_desktop_config.json`:
376
480
  ```json
377
481
  {
@@ -441,6 +545,17 @@ npx livepilot --status
441
545
 
442
546
  ## Plugin
443
547
 
548
+ **Codex App**
549
+
550
+ ```bash
551
+ npx livepilot --install-codex-plugin
552
+ ```
553
+
554
+ Installs the bundled plugin into `~/plugins/livepilot` and registers it in
555
+ `~/.agents/plugins/marketplace.json`.
556
+
557
+ **Claude Code**
558
+
444
559
  ```bash
445
560
  claude plugin add github:dreamrec/LivePilot/plugin
446
561
  ```
@@ -471,6 +586,8 @@ Check memory before creative decisions. Verify every mutation.
471
586
  npx livepilot # Start MCP server (stdio)
472
587
  npx livepilot --install # Install Remote Script
473
588
  npx livepilot --uninstall # Remove Remote Script
589
+ npx livepilot --install-codex-plugin # Install bundled Codex plugin
590
+ npx livepilot --uninstall-codex-plugin # Remove bundled Codex plugin
474
591
  npx livepilot --status # Check Ableton connection
475
592
  npx livepilot --doctor # Full diagnostic check
476
593
  npx livepilot --version # Show version
@@ -518,6 +635,20 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture details, code guidelines
518
635
 
519
636
  ---
520
637
 
638
+ ## Support
639
+
640
+ LivePilot is free and open source. Building it takes hundreds of hours, an Ableton Suite license, and a Claude subscription. If LivePilot saves you time in your sessions, consider supporting development:
641
+
642
+ <p align="center">
643
+ <a href="https://www.patreon.com/c/dreamrec"><strong>Support on Patreon</strong></a> · <a href="https://github.com/sponsors/dreamrec">GitHub Sponsors</a>
644
+ </p>
645
+
646
+ Supporters get early access to new features, premium skills, curated technique libraries, and direct support.
647
+
648
+ <br>
649
+
650
+ ---
651
+
521
652
  <p align="center">
522
653
  <a href="LICENSE">MIT</a> — Pilot Studio
523
654
  <br><br>
package/bin/livepilot.js CHANGED
@@ -211,6 +211,45 @@ function checkStatus() {
211
211
  });
212
212
  }
213
213
 
214
+ function probeAnalyzer(venvPy) {
215
+ const probeCode = `
216
+ import asyncio
217
+ import json
218
+ import sys
219
+ from types import SimpleNamespace
220
+
221
+ sys.path.insert(0, ${JSON.stringify(ROOT)})
222
+
223
+ from mcp_server.server import lifespan, _master_has_livepilot_analyzer
224
+ from mcp_server.runtime.capability_probe import probe_capabilities
225
+
226
+ async def main():
227
+ async with lifespan(None) as ctx:
228
+ loaded = _master_has_livepilot_analyzer(ctx["ableton"])
229
+ report = probe_capabilities(
230
+ ableton=ctx["ableton"],
231
+ ctx=SimpleNamespace(lifespan_context=ctx),
232
+ )
233
+ print(json.dumps({
234
+ "loaded_on_master": loaded,
235
+ "m4l_bridge": report["m4l_bridge"],
236
+ "tier": report["tier"]["active"],
237
+ }))
238
+
239
+ asyncio.run(main())
240
+ `;
241
+
242
+ const out = execFileSync(venvPy, ["-c", probeCode], {
243
+ cwd: ROOT,
244
+ encoding: "utf-8",
245
+ timeout: 15000,
246
+ stdio: ["pipe", "pipe", "pipe"],
247
+ }).trim();
248
+
249
+ const lines = out.split(/\r?\n/).filter(Boolean);
250
+ return JSON.parse(lines[lines.length - 1]);
251
+ }
252
+
214
253
  // ---------------------------------------------------------------------------
215
254
  // Doctor — comprehensive diagnostic
216
255
  // ---------------------------------------------------------------------------
@@ -312,6 +351,37 @@ async function doctor() {
312
351
  ok = false;
313
352
  }
314
353
 
354
+ // 9. Analyzer / bridge capability
355
+ if (connected && fs.existsSync(venvPy)) {
356
+ const HOST = process.env.LIVE_MCP_HOST || "127.0.0.1";
357
+ const PORT = parseInt(process.env.LIVE_MCP_PORT || "9878", 10);
358
+ const otherClient = findOtherLiveClient(HOST, PORT);
359
+
360
+ if (otherClient) {
361
+ console.log(" Analyzer: skipped (another LivePilot client is connected: %s)", otherClient);
362
+ } else {
363
+ try {
364
+ const analyzer = probeAnalyzer(venvPy);
365
+ if (analyzer.loaded_on_master) {
366
+ console.log(
367
+ " Analyzer: %s",
368
+ analyzer.m4l_bridge.status === "ok"
369
+ ? "loaded on master and bridge is active"
370
+ : `loaded on master but bridge unavailable (${analyzer.m4l_bridge.detail})`,
371
+ );
372
+ if (analyzer.m4l_bridge.status !== "ok") {
373
+ ok = false;
374
+ }
375
+ } else {
376
+ console.log(" Analyzer: not detected on master track (optional)");
377
+ }
378
+ } catch (err) {
379
+ console.log(" Analyzer: could not probe (%s)", err.message || String(err));
380
+ ok = false;
381
+ }
382
+ }
383
+ }
384
+
315
385
  // Summary
316
386
  console.log("");
317
387
  console.log("─".repeat(50));
@@ -580,6 +650,7 @@ async function setup() {
580
650
  console.log(" 3. Set Control Surface to 'LivePilot'");
581
651
  console.log(" 4. Start making music with AI!");
582
652
  console.log("");
653
+ console.log(" Codex App: npx livepilot --install-codex-plugin");
583
654
  console.log(" Claude Code: claude mcp add LivePilot -- npx livepilot");
584
655
  console.log(" Claude Desktop: Already configured if using Desktop Extension");
585
656
  } else {
@@ -613,6 +684,8 @@ async function main() {
613
684
  console.log(" --setup Full setup wizard (install + configure + test)");
614
685
  console.log(" --install Install Remote Script into Ableton Live");
615
686
  console.log(" --uninstall Remove Remote Script from Ableton Live");
687
+ console.log(" --install-codex-plugin Install the bundled Codex plugin locally");
688
+ console.log(" --uninstall-codex-plugin Remove the locally installed Codex plugin");
616
689
  console.log(" --status Check if Ableton Live is reachable");
617
690
  console.log(" --doctor Run diagnostics (Python, deps, connection)");
618
691
  console.log(" --version Show version");
@@ -639,6 +712,20 @@ async function main() {
639
712
  return;
640
713
  }
641
714
 
715
+ // --install-codex-plugin
716
+ if (flag === "--install-codex-plugin") {
717
+ const { installCodexPlugin } = require(path.join(ROOT, "installer", "codex.js"));
718
+ installCodexPlugin();
719
+ return;
720
+ }
721
+
722
+ // --uninstall-codex-plugin
723
+ if (flag === "--uninstall-codex-plugin") {
724
+ const { uninstallCodexPlugin } = require(path.join(ROOT, "installer", "codex.js"));
725
+ uninstallCodexPlugin();
726
+ return;
727
+ }
728
+
642
729
  // --status
643
730
  if (flag === "--status") {
644
731
  const reachable = await checkStatus();