cdx-manager 0.7.5 → 0.7.6
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 +2 -2
- package/changelogs/CHANGELOGS_0_7_6.md +37 -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 +30 -2
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
|
|
|
@@ -136,7 +136,7 @@ For a specific version:
|
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
138
|
curl -fsSL https://raw.githubusercontent.com/AlexAgo83/cdx-manager/main/install.sh -o install.sh
|
|
139
|
-
CDX_VERSION=v0.7.
|
|
139
|
+
CDX_VERSION=v0.7.6 sh install.sh
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
From source:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Changelog (`0.7.5 -> 0.7.6`)
|
|
2
|
+
|
|
3
|
+
Release date: 2026-06-05
|
|
4
|
+
|
|
5
|
+
## Claude Launches
|
|
6
|
+
|
|
7
|
+
- Normalized Claude model names before invoking Claude Code so persisted API-style IDs such as `claude-sonnet-4-5-20250929` launch as the Claude Code CLI form `claude-sonnet-4-5`.
|
|
8
|
+
- Added compatibility for marketing-style Claude model values such as `sonnet-4.5` while preserving unknown custom model values unchanged.
|
|
9
|
+
- Applied the same Claude model normalization to both interactive launches and headless `cdx run` launches.
|
|
10
|
+
|
|
11
|
+
## Release Integrity
|
|
12
|
+
|
|
13
|
+
- Added official standalone release archive checksums for `v0.7.5` so verified installer upgrades can resolve the previous release.
|
|
14
|
+
- Added regression coverage for the `v0.7.5` release checksum metadata.
|
|
15
|
+
|
|
16
|
+
## CI Hardening
|
|
17
|
+
|
|
18
|
+
- Restricted GitHub Actions workflow token permissions for the CI workflow.
|
|
19
|
+
|
|
20
|
+
## Coverage and Tests
|
|
21
|
+
|
|
22
|
+
- Added regression coverage for Claude CLI model normalization in runtime launch specs and interactive CLI launch behavior.
|
|
23
|
+
- Increased the Python test suite to 285 tests.
|
|
24
|
+
|
|
25
|
+
## Release Metadata
|
|
26
|
+
|
|
27
|
+
- Updated package metadata, CLI version output, README badge, pinned installer example, and release changelog to `v0.7.6`.
|
|
28
|
+
|
|
29
|
+
## Validation and Regression Evidence
|
|
30
|
+
|
|
31
|
+
- `npm run lint`
|
|
32
|
+
- `npm test`
|
|
33
|
+
- `node bin/cdx.js --version`
|
|
34
|
+
- `npm audit --omit=dev --json`
|
|
35
|
+
- `sh -n install.sh`
|
|
36
|
+
- PowerShell parser check for `install.ps1`
|
|
37
|
+
- `python3 -m logics_manager lint --require-status`
|
|
@@ -48,6 +48,10 @@
|
|
|
48
48
|
"v0.7.4": {
|
|
49
49
|
"github_tarball_sha256": "02b399899e611300ddf367bfb8c22ad57b499e94265e50256c8afe3f4bd73851",
|
|
50
50
|
"github_zip_sha256": "87043d49cdd50dcd7d51349984ea4abfb1a2ff50f2eab69c75a421bedd2f2fe8"
|
|
51
|
+
},
|
|
52
|
+
"v0.7.5": {
|
|
53
|
+
"github_tarball_sha256": "18f5f6230bb5704913a90cfe2bfc5f55599c6ca0813bfd9f4bc97fc9f19e074a",
|
|
54
|
+
"github_zip_sha256": "cafd400c65c255aa9569853ec9d1cc80cf691ff849660496779334ee7abf71b4"
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
}
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
package/src/cli.py
CHANGED
package/src/provider_runtime.py
CHANGED
|
@@ -40,6 +40,14 @@ HEADLESS_CODEX_PERMISSION_ARGS = {
|
|
|
40
40
|
"full": ["--dangerously-bypass-approvals-and-sandbox"],
|
|
41
41
|
}
|
|
42
42
|
REDACTED_PROMPT_ARG = "[prompt redacted]"
|
|
43
|
+
CLAUDE_CLI_MODEL_ALIASES = {
|
|
44
|
+
"claude-sonnet": "sonnet",
|
|
45
|
+
"claude-opus": "opus",
|
|
46
|
+
"claude-haiku": "haiku",
|
|
47
|
+
"sonnet-latest": "sonnet",
|
|
48
|
+
"opus-latest": "opus",
|
|
49
|
+
"haiku-latest": "haiku",
|
|
50
|
+
}
|
|
43
51
|
|
|
44
52
|
|
|
45
53
|
def _home_env_overrides(auth_home):
|
|
@@ -207,6 +215,26 @@ def _normalize_reasoning_effort(reasoning_effort=None, power=None, usage="Unsupp
|
|
|
207
215
|
}
|
|
208
216
|
|
|
209
217
|
|
|
218
|
+
def _claude_cli_model(model):
|
|
219
|
+
if not model:
|
|
220
|
+
return model
|
|
221
|
+
raw = str(model).strip()
|
|
222
|
+
normalized = raw.lower().replace("_", "-")
|
|
223
|
+
if normalized in CLAUDE_CLI_MODEL_ALIASES:
|
|
224
|
+
return CLAUDE_CLI_MODEL_ALIASES[normalized]
|
|
225
|
+
|
|
226
|
+
marketing = re.fullmatch(r"(?:claude-)?(sonnet|opus|haiku)-(\d+)(?:[.-](\d+))?", normalized)
|
|
227
|
+
if marketing:
|
|
228
|
+
family, major, minor = marketing.groups()
|
|
229
|
+
return f"claude-{family}-{major}-{minor}" if minor else family
|
|
230
|
+
|
|
231
|
+
dated = re.fullmatch(r"(claude-(?:sonnet|opus|haiku)-4(?:-\d+)*)-\d{8}", normalized)
|
|
232
|
+
if dated:
|
|
233
|
+
return dated.group(1)
|
|
234
|
+
|
|
235
|
+
return raw
|
|
236
|
+
|
|
237
|
+
|
|
210
238
|
def _launch_config_args(session):
|
|
211
239
|
launch = session.get("launch") or {}
|
|
212
240
|
args = []
|
|
@@ -317,7 +345,7 @@ def _build_launch_spec(session, cwd=None, env_override=None, initial_prompt=None
|
|
|
317
345
|
launch = session.get("launch") or {}
|
|
318
346
|
args = ["--name", session["name"]]
|
|
319
347
|
if launch.get("model"):
|
|
320
|
-
args += ["--model", launch["model"]]
|
|
348
|
+
args += ["--model", _claude_cli_model(launch["model"])]
|
|
321
349
|
args += _launch_config_args(session)
|
|
322
350
|
if initial_prompt:
|
|
323
351
|
args.append(initial_prompt)
|
|
@@ -402,7 +430,7 @@ def _build_headless_launch_spec(session, cwd=None, env_override=None, initial_pr
|
|
|
402
430
|
if session["provider"] == PROVIDER_CLAUDE:
|
|
403
431
|
args = ["--print", "--output-format", "json", "--name", session["name"]]
|
|
404
432
|
if model:
|
|
405
|
-
args += ["--model", model]
|
|
433
|
+
args += ["--model", _claude_cli_model(model)]
|
|
406
434
|
args += _launch_config_args(session)
|
|
407
435
|
if initial_prompt:
|
|
408
436
|
args.append(initial_prompt)
|