mtrx-cli 0.1.8 → 0.1.10
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/package.json +3 -1
- package/src/matrx/__init__.py +1 -1
- package/src/matrx/cli/cursor_config.py +331 -0
- package/src/matrx/cli/cursor_proxy.py +351 -0
- package/src/matrx/cli/launcher.py +160 -8
- package/src/matrx/cli/main.py +278 -12
- package/src/matrx/cli/state.py +22 -0
package/src/matrx/cli/state.py
CHANGED
|
@@ -9,6 +9,9 @@ from urllib.parse import urlparse, urlunparse
|
|
|
9
9
|
|
|
10
10
|
DEFAULT_MATRX_BASE_URL = "https://api.mtrx.so"
|
|
11
11
|
DEFAULT_MATRX_APP_URL = "https://mtrx.so"
|
|
12
|
+
INVALID_MATRX_KEYS = {
|
|
13
|
+
"mx_from_web",
|
|
14
|
+
}
|
|
12
15
|
LEGACY_MATRX_BASE_URLS = {
|
|
13
16
|
"https://api.matrx.dev": DEFAULT_MATRX_BASE_URL,
|
|
14
17
|
}
|
|
@@ -43,6 +46,7 @@ DEFAULT_STATE: dict = {
|
|
|
43
46
|
"defaults": {
|
|
44
47
|
"codex": None,
|
|
45
48
|
"claude": None,
|
|
49
|
+
"cursor": None,
|
|
46
50
|
},
|
|
47
51
|
"workspaces": {
|
|
48
52
|
"bindings": {},
|
|
@@ -141,6 +145,13 @@ def mask_secret(value: str | None) -> str:
|
|
|
141
145
|
return f"{value[:4]}...{value[-4:]}"
|
|
142
146
|
|
|
143
147
|
|
|
148
|
+
def normalize_matrx_key(value: str | None) -> str:
|
|
149
|
+
cleaned = (value or "").strip()
|
|
150
|
+
if cleaned in INVALID_MATRX_KEYS:
|
|
151
|
+
return ""
|
|
152
|
+
return cleaned
|
|
153
|
+
|
|
154
|
+
|
|
144
155
|
def ensure_v1_url(base_url: str | None) -> str:
|
|
145
156
|
cleaned = _normalize_base_url(base_url).rstrip("/")
|
|
146
157
|
if cleaned.endswith("/v1"):
|
|
@@ -268,11 +279,22 @@ def _merge_dicts(target: dict, source: dict) -> None:
|
|
|
268
279
|
|
|
269
280
|
def _normalize_state(state: dict) -> None:
|
|
270
281
|
auth = state.setdefault("auth", {}).setdefault("matrx", {})
|
|
282
|
+
auth["key"] = normalize_matrx_key(auth.get("key")) or None
|
|
271
283
|
auth["base_url"] = _normalize_base_url(auth.get("base_url"))
|
|
272
284
|
auth["app_url"] = ensure_app_url(
|
|
273
285
|
auth.get("app_url"),
|
|
274
286
|
base_url=auth.get("base_url"),
|
|
275
287
|
)
|
|
288
|
+
bindings = state.setdefault("workspaces", {}).setdefault("bindings", {})
|
|
289
|
+
for root, binding in list(bindings.items()):
|
|
290
|
+
if not isinstance(binding, dict):
|
|
291
|
+
bindings.pop(root, None)
|
|
292
|
+
continue
|
|
293
|
+
matrx_key = normalize_matrx_key(binding.get("matrx_key"))
|
|
294
|
+
if matrx_key:
|
|
295
|
+
binding["matrx_key"] = matrx_key
|
|
296
|
+
else:
|
|
297
|
+
binding.pop("matrx_key", None)
|
|
276
298
|
|
|
277
299
|
|
|
278
300
|
def _normalize_base_url(base_url: str | None) -> str:
|