44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
import importlib.util
|
|
import os
|
|
import sys
|
|
|
|
|
|
_SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
_MODULE_NAME = "AbletonMCP_AI_runtime"
|
|
_RUNTIME_CANDIDATES = [
|
|
os.path.join(os.path.dirname(_SCRIPT_DIR), "abletonmcp_init.py"), # Prioridad: runtime canonico
|
|
os.path.join(_SCRIPT_DIR, "AbletonMCP_AI_BAK_20260328_200801", "Remote_Script.py"), # Fallback: backup
|
|
]
|
|
|
|
|
|
def _resolve_runtime_file():
|
|
for candidate in _RUNTIME_CANDIDATES:
|
|
if os.path.exists(candidate):
|
|
return candidate
|
|
raise ImportError("Remote script runtime not found in any known location")
|
|
|
|
|
|
def _load_runtime_module():
|
|
if _MODULE_NAME in sys.modules:
|
|
return sys.modules[_MODULE_NAME]
|
|
|
|
runtime_file = _resolve_runtime_file()
|
|
|
|
spec = importlib.util.spec_from_file_location(_MODULE_NAME, runtime_file)
|
|
if spec is None or spec.loader is None:
|
|
raise ImportError("Unable to create module spec for %s" % runtime_file)
|
|
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
sys.modules[_MODULE_NAME] = module
|
|
return module
|
|
|
|
|
|
def create_instance(c_instance):
|
|
runtime = _load_runtime_module()
|
|
if not hasattr(runtime, "create_instance"):
|
|
raise ImportError("Runtime module does not expose create_instance")
|
|
return runtime.create_instance(c_instance)
|