ableton-ai 2.1.0__tar.gz

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 (66) hide show
  1. ableton_ai-2.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +70 -0
  2. ableton_ai-2.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +42 -0
  3. ableton_ai-2.1.0/.github/PULL_REQUEST_TEMPLATE.md +29 -0
  4. ableton_ai-2.1.0/.github/workflows/fix-code-style.yml +36 -0
  5. ableton_ai-2.1.0/.github/workflows/lint.yml +32 -0
  6. ableton_ai-2.1.0/.github/workflows/tests.yml +34 -0
  7. ableton_ai-2.1.0/.gitignore +19 -0
  8. ableton_ai-2.1.0/.pre-commit-config.yaml +28 -0
  9. ableton_ai-2.1.0/.python-version +1 -0
  10. ableton_ai-2.1.0/AbletonMCP_M4L/AbletonMCP.amxd.maxpat +456 -0
  11. ableton_ai-2.1.0/AbletonMCP_M4L/README.md +124 -0
  12. ableton_ai-2.1.0/AbletonMCP_M4L/code/main.js +2800 -0
  13. ableton_ai-2.1.0/AbletonMCP_Remote_Script/__init__.py +7221 -0
  14. ableton_ai-2.1.0/CHANGELOG.md +88 -0
  15. ableton_ai-2.1.0/CONTRIBUTING.md +199 -0
  16. ableton_ai-2.1.0/Dockerfile +18 -0
  17. ableton_ai-2.1.0/LICENSE +23 -0
  18. ableton_ai-2.1.0/MCP_Server/__init__.py +9 -0
  19. ableton_ai-2.1.0/MCP_Server/requirements-rest.txt +5 -0
  20. ableton_ai-2.1.0/MCP_Server/rest_api_server.py +2130 -0
  21. ableton_ai-2.1.0/PKG-INFO +178 -0
  22. ableton_ai-2.1.0/README.md +141 -0
  23. ableton_ai-2.1.0/docs/API_REFERENCE.md +1478 -0
  24. ableton_ai-2.1.0/docs/CONFIG.md +381 -0
  25. ableton_ai-2.1.0/docs/MANUAL.md +1334 -0
  26. ableton_ai-2.1.0/docs/TOOLS.md +1304 -0
  27. ableton_ai-2.1.0/docs/TROUBLESHOOTING.md +239 -0
  28. ableton_ai-2.1.0/examples/README.md +119 -0
  29. ableton_ai-2.1.0/examples/ollama_example.py +267 -0
  30. ableton_ai-2.1.0/pyproject.toml +148 -0
  31. ableton_ai-2.1.0/pytest.ini +11 -0
  32. ableton_ai-2.1.0/skills/ableton/SKILL.md +189 -0
  33. ableton_ai-2.1.0/smithery.yaml +16 -0
  34. ableton_ai-2.1.0/src/ableton_mcp/__init__.py +39 -0
  35. ableton_ai-2.1.0/src/ableton_mcp/config.py +95 -0
  36. ableton_ai-2.1.0/src/ableton_mcp/connection.py +210 -0
  37. ableton_ai-2.1.0/src/ableton_mcp/exceptions.py +66 -0
  38. ableton_ai-2.1.0/src/ableton_mcp/install.py +103 -0
  39. ableton_ai-2.1.0/src/ableton_mcp/server.py +60 -0
  40. ableton_ai-2.1.0/src/ableton_mcp/tools/__init__.py +58 -0
  41. ableton_ai-2.1.0/src/ableton_mcp/tools/_base.py +71 -0
  42. ableton_ai-2.1.0/src/ableton_mcp/tools/arrangement.py +179 -0
  43. ableton_ai-2.1.0/src/ableton_mcp/tools/automation.py +72 -0
  44. ableton_ai-2.1.0/src/ableton_mcp/tools/browser.py +214 -0
  45. ableton_ai-2.1.0/src/ableton_mcp/tools/clips.py +290 -0
  46. ableton_ai-2.1.0/src/ableton_mcp/tools/devices.py +183 -0
  47. ableton_ai-2.1.0/src/ableton_mcp/tools/music.py +40 -0
  48. ableton_ai-2.1.0/src/ableton_mcp/tools/notes.py +138 -0
  49. ableton_ai-2.1.0/src/ableton_mcp/tools/session.py +396 -0
  50. ableton_ai-2.1.0/src/ableton_mcp/tools/tracks.py +477 -0
  51. ableton_ai-2.1.0/tests/__init__.py +0 -0
  52. ableton_ai-2.1.0/tests/conftest.py +343 -0
  53. ableton_ai-2.1.0/tests/fixtures/__init__.py +0 -0
  54. ableton_ai-2.1.0/tests/fixtures/mock_ableton.py +275 -0
  55. ableton_ai-2.1.0/tests/integration/__init__.py +0 -0
  56. ableton_ai-2.1.0/tests/integration/test_workflows.py +621 -0
  57. ableton_ai-2.1.0/tests/requirements-test.txt +6 -0
  58. ableton_ai-2.1.0/tests/unit/__init__.py +0 -0
  59. ableton_ai-2.1.0/tests/unit/test_connection.py +195 -0
  60. ableton_ai-2.1.0/tests/unit/test_error_handling.py +601 -0
  61. ableton_ai-2.1.0/tests/unit/test_install.py +70 -0
  62. ableton_ai-2.1.0/tests/unit/test_rest_api_complete.py +1795 -0
  63. ableton_ai-2.1.0/tests/unit/test_security.py +649 -0
  64. ableton_ai-2.1.0/tests/unit/test_tools.py +140 -0
  65. ableton_ai-2.1.0/tests/unit/test_validation.py +777 -0
  66. ableton_ai-2.1.0/uv.lock +1230 -0
@@ -0,0 +1,70 @@
1
+ name: Bug Report
2
+ description: Report a bug or issue
3
+ labels: ["bug"]
4
+ body:
5
+ - type: dropdown
6
+ id: component
7
+ attributes:
8
+ label: Component
9
+ description: Which part of AbletonMCP is affected?
10
+ options:
11
+ - Remote Script (Ableton control surface)
12
+ - MCP Server (Claude Desktop / Cursor)
13
+ - REST API Server
14
+ - Max for Live Device
15
+ - Documentation
16
+ validations:
17
+ required: true
18
+
19
+ - type: input
20
+ id: ableton-version
21
+ attributes:
22
+ label: Ableton Live Version
23
+ placeholder: "e.g. 12.1, 11.3.4"
24
+ validations:
25
+ required: true
26
+
27
+ - type: input
28
+ id: os
29
+ attributes:
30
+ label: Operating System
31
+ placeholder: "e.g. macOS 15.2, Windows 11"
32
+ validations:
33
+ required: true
34
+
35
+ - type: textarea
36
+ id: description
37
+ attributes:
38
+ label: What happened?
39
+ description: Describe the bug. What did you expect to happen vs what actually happened?
40
+ validations:
41
+ required: true
42
+
43
+ - type: textarea
44
+ id: steps
45
+ attributes:
46
+ label: Steps to reproduce
47
+ description: How can we reproduce this issue?
48
+ placeholder: |
49
+ 1. Load the Remote Script
50
+ 2. Send command X
51
+ 3. See error
52
+ validations:
53
+ required: true
54
+
55
+ - type: textarea
56
+ id: logs
57
+ attributes:
58
+ label: Error logs
59
+ description: Paste any relevant error messages or logs (check Ableton's Log.txt or Max Console)
60
+ render: shell
61
+ validations:
62
+ required: false
63
+
64
+ - type: input
65
+ id: command
66
+ attributes:
67
+ label: Command that failed (if applicable)
68
+ placeholder: "e.g. set_clip_automation, freeze_track"
69
+ validations:
70
+ required: false
@@ -0,0 +1,42 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: dropdown
6
+ id: component
7
+ attributes:
8
+ label: Component
9
+ description: Which part of AbletonMCP would this affect?
10
+ options:
11
+ - Remote Script (new Ableton command)
12
+ - MCP Server
13
+ - REST API Server
14
+ - Max for Live Device
15
+ - Documentation
16
+ - Other
17
+ validations:
18
+ required: true
19
+
20
+ - type: textarea
21
+ id: description
22
+ attributes:
23
+ label: What would you like?
24
+ description: Describe the feature or improvement you'd like to see
25
+ validations:
26
+ required: true
27
+
28
+ - type: textarea
29
+ id: use-case
30
+ attributes:
31
+ label: Use case
32
+ description: How would you use this feature in your workflow?
33
+ validations:
34
+ required: false
35
+
36
+ - type: textarea
37
+ id: alternatives
38
+ attributes:
39
+ label: Alternatives considered
40
+ description: Have you tried any workarounds?
41
+ validations:
42
+ required: false
@@ -0,0 +1,29 @@
1
+ ## What does this PR do?
2
+
3
+ <!-- Brief description of the changes -->
4
+
5
+ ## Component
6
+
7
+ <!-- Check the relevant boxes -->
8
+
9
+ - [ ] Remote Script
10
+ - [ ] MCP Server
11
+ - [ ] REST API Server
12
+ - [ ] Max for Live Device
13
+ - [ ] Documentation
14
+ - [ ] Tests
15
+
16
+ ## Testing
17
+
18
+ <!-- How did you test these changes? -->
19
+
20
+ - [ ] Tested in Ableton Live (version: )
21
+ - [ ] Ran existing tests
22
+ - [ ] Added new tests
23
+
24
+ ## Checklist
25
+
26
+ - [ ] Code follows existing style
27
+ - [ ] Updated ALLOWED_COMMANDS in rest_api_server.py (if adding new commands)
28
+ - [ ] Updated command routing in Remote Script _process_command (if adding new commands)
29
+ - [ ] No secrets or credentials in code
@@ -0,0 +1,36 @@
1
+ # The equivalent of Spatie's fix-php-code-style-issues workflow.
2
+ # Instead of failing a PR over formatting, it fixes it and pushes the fix back.
3
+ name: fix code style
4
+
5
+ on:
6
+ push:
7
+ branches: [main]
8
+ paths:
9
+ - "**.py"
10
+ - "pyproject.toml"
11
+
12
+ permissions:
13
+ contents: write
14
+
15
+ jobs:
16
+ ruff:
17
+ runs-on: ubuntu-latest
18
+ name: ruff fix
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ ref: ${{ github.head_ref }}
23
+
24
+ - uses: astral-sh/setup-uv@v5
25
+ with:
26
+ enable-cache: true
27
+
28
+ - name: Fix and format
29
+ run: |
30
+ uvx ruff check --fix src tests
31
+ uvx ruff format src tests
32
+
33
+ - name: Commit anything that changed
34
+ uses: stefanzweifel/git-auto-commit-action@v5
35
+ with:
36
+ commit_message: "Fix code style with ruff"
@@ -0,0 +1,32 @@
1
+ name: lint
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ ruff:
10
+ runs-on: ubuntu-latest
11
+ name: ruff
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: astral-sh/setup-uv@v5
15
+ with:
16
+ enable-cache: true
17
+ - run: uv sync --all-extras
18
+ - name: Check formatting
19
+ run: uv run ruff format --check src tests
20
+ - name: Lint
21
+ run: uv run ruff check src tests
22
+
23
+ mypy:
24
+ runs-on: ubuntu-latest
25
+ name: mypy
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: astral-sh/setup-uv@v5
29
+ with:
30
+ enable-cache: true
31
+ - run: uv sync --all-extras
32
+ - run: uv run mypy
@@ -0,0 +1,34 @@
1
+ name: tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest]
15
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
16
+
17
+ name: ${{ matrix.os }} / python ${{ matrix.python-version }}
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Install uv
23
+ uses: astral-sh/setup-uv@v5
24
+ with:
25
+ enable-cache: true
26
+
27
+ - name: Set up Python
28
+ run: uv python install ${{ matrix.python-version }}
29
+
30
+ - name: Install dependencies
31
+ run: uv sync --all-extras
32
+
33
+ - name: Run tests
34
+ run: uv run pytest --cov --cov-report=term-missing -m "not integration"
@@ -0,0 +1,19 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ .DS_Store
12
+
13
+ # Coverage
14
+ .coverage
15
+ .coverage.*
16
+ htmlcov/
17
+
18
+ # bundled at build time via force-include; source-tree copy for local dev only
19
+ src/ableton_mcp/_remote_script/
@@ -0,0 +1,28 @@
1
+ # Install once with: uv run pre-commit install
2
+ # Run against everything with: uv run pre-commit run --all-files
3
+ repos:
4
+ - repo: https://github.com/astral-sh/ruff-pre-commit
5
+ rev: v0.14.2
6
+ hooks:
7
+ # Autofix first, then format. Order matters: fixes can change formatting.
8
+ - id: ruff
9
+ args: [--fix, --exit-non-zero-on-fix]
10
+ - id: ruff-format
11
+
12
+ - repo: https://github.com/pre-commit/pre-commit-hooks
13
+ rev: v5.0.0
14
+ hooks:
15
+ - id: trailing-whitespace
16
+ - id: end-of-file-fixer
17
+ - id: check-yaml
18
+ - id: check-toml
19
+ - id: check-added-large-files
20
+ - id: check-merge-conflict
21
+ - id: debug-statements
22
+
23
+ - repo: https://github.com/pre-commit/mirrors-mypy
24
+ rev: v1.18.2
25
+ hooks:
26
+ - id: mypy
27
+ files: ^src/
28
+ additional_dependencies: [types-requests]
@@ -0,0 +1 @@
1
+ 3.13