cdx-manager 0.9.15 → 0.9.16
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/README.md +1 -1
- package/changelogs/CHANGELOGS_0_9_16.md +19 -0
- package/checksums/release-archives.json +4 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/cli.py +1 -1
- package/src/provider_runtime.py +10 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CDX Manager
|
|
2
2
|
|
|
3
|
-
[](LICENSE) ](LICENSE)  
|
|
4
4
|
|
|
5
5
|
**Run multiple Codex, Claude, Antigravity, and Ollama sessions from one terminal. Switch between accounts instantly.**
|
|
6
6
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# CDX Manager 0.9.16
|
|
2
|
+
|
|
3
|
+
## Highlights
|
|
4
|
+
|
|
5
|
+
- Clear error message when a provider CLI binary is broken instead of a raw Python traceback.
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
### Friendlier auth probe failures
|
|
10
|
+
|
|
11
|
+
Launching a session whose provider CLI exists but cannot be executed (corrupted install, wrong architecture, or a script missing its shebang — e.g. `Exec format error` on `~/.local/bin/claude`) previously crashed with an unhandled `OSError` traceback. The auth probe now catches all `OSError` failures and reports an actionable message telling the user to reinstall the provider CLI, exiting with code 126.
|
|
12
|
+
|
|
13
|
+
## Validation
|
|
14
|
+
|
|
15
|
+
- `npm run release:validate`
|
|
16
|
+
- `npm run lint`
|
|
17
|
+
- `npm test`
|
|
18
|
+
- `git diff --check`
|
|
19
|
+
- `npm --cache /private/tmp/cdx-npm-cache pack --dry-run`
|
|
@@ -124,6 +124,10 @@
|
|
|
124
124
|
"v0.9.14": {
|
|
125
125
|
"github_tarball_sha256": "5469be5448eee56b5f0834d0c42d9ed3ca088158f08052bd8addc552635fe33d",
|
|
126
126
|
"github_zip_sha256": "7eb5650cb348e3ef2a082cd7fb39d7f4c170d4a095fe88719a7ebbfb7601db48"
|
|
127
|
+
},
|
|
128
|
+
"v0.9.15": {
|
|
129
|
+
"github_tarball_sha256": "08e6c5a3459fdd65d1f6085ca03a3614f07b4bf44c57a995a3ef47446aa70482",
|
|
130
|
+
"github_zip_sha256": "c8ac01f4a65e85b417f5eba5139868ab17b8f0952bf99f17f0a79f73ef0f36d6"
|
|
127
131
|
}
|
|
128
132
|
}
|
|
129
133
|
}
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
package/src/cli.py
CHANGED
|
@@ -66,7 +66,7 @@ from .status_view import (
|
|
|
66
66
|
)
|
|
67
67
|
from .update_check import check_for_update, check_logics_manager_for_update
|
|
68
68
|
|
|
69
|
-
VERSION = "0.9.
|
|
69
|
+
VERSION = "0.9.16"
|
|
70
70
|
|
|
71
71
|
# Public surface: this module is a facade. Names below are imported above
|
|
72
72
|
# purely to be re-exported (consumed by tests and external callers); listing
|
package/src/provider_runtime.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import errno
|
|
1
2
|
import json
|
|
2
3
|
import os
|
|
3
4
|
import re
|
|
@@ -881,6 +882,14 @@ def _format_probe_failure(session, spec, error):
|
|
|
881
882
|
f"Install {command} and retry cdx add {session['name']}.",
|
|
882
883
|
127,
|
|
883
884
|
)
|
|
885
|
+
if isinstance(error, OSError) and error.errno == errno.ENOEXEC:
|
|
886
|
+
target = getattr(error, "filename", None) or command
|
|
887
|
+
return CdxError(
|
|
888
|
+
f"Failed to check login status for {session['name']}: {target} is not a valid executable "
|
|
889
|
+
f"(corrupted install, wrong architecture, or a script missing its shebang). "
|
|
890
|
+
f"Reinstall {command} and retry.",
|
|
891
|
+
126,
|
|
892
|
+
)
|
|
884
893
|
message = getattr(error, "message", None) or str(error)
|
|
885
894
|
return CdxError(f"Failed to check login status for {session['name']}: {message}")
|
|
886
895
|
|
|
@@ -915,7 +924,7 @@ def _probe_provider_auth(session, spawn_sync=None, env_override=None, trust_loca
|
|
|
915
924
|
stdout = result.get("stdout") if isinstance(result, dict) else getattr(result, "stdout", "")
|
|
916
925
|
stderr = result.get("stderr") if isinstance(result, dict) else getattr(result, "stderr", "")
|
|
917
926
|
output = (stdout or "") + (stderr or "")
|
|
918
|
-
except
|
|
927
|
+
except OSError as error:
|
|
919
928
|
raise _format_probe_failure(session, spec, error) from error
|
|
920
929
|
return spec["parser"](output)
|
|
921
930
|
|