code-aide 1.18.0__tar.gz → 1.18.2__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.
- code_aide-1.18.2/CLAUDE.md +1 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/PKG-INFO +1 -1
- {code_aide-1.18.0 → code_aide-1.18.2}/script-archive/amp-install.sh +9 -6
- {code_aide-1.18.0 → code_aide-1.18.2}/script-archive/claude-install.sh +62 -19
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/__init__.py +1 -1
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/data/tools.json +2 -2
- code_aide-1.18.0/CLAUDE.md +0 -1
- {code_aide-1.18.0 → code_aide-1.18.2}/.github/workflows/ci.yml +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/.github/workflows/publish.yml +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/.gitignore +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/.gitlab-ci.yml +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/.pre-commit-config.yaml +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/AGENTS.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/LICENSE +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/Makefile +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/README.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/TODO.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/pyproject.toml +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/script-archive/README.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/script-archive/antigravity-install.sh +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/script-archive/cursor-install.sh +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/2026-05-03-qwen3.6-code-quality-analysis-original.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/2026-05-03-qwen3.6-code-quality-analysis.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/antigravity-cli-integration.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/auto-migrate-deprecated-installs.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/claude-native-installer-migration.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/missing-coding-llm-cli-tools.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/pre-commit-uv-setup.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/remove-bundled-version-baseline.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/specs/unify-upgrade-eligibility-with-shared-evaluator.md +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/__main__.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/commands_actions.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/commands_tools.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/config.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/console.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/constants.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/detection.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/detection_types.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/entry.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/install.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/install_types.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/operation_handlers.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/operations.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/package_info.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/package_managers.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/prereqs.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/status.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/status_print.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/src/code_aide/versions.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_commands_actions.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_commands_tools.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_config.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_console.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_constants.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_detection.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_entry.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_error_paths.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_install.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_install_types.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_operations.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_package_info.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_package_managers.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_prereqs.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_status.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/tests/test_versions.py +0 -0
- {code_aide-1.18.0 → code_aide-1.18.2}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: code-aide
|
|
3
|
-
Version: 1.18.
|
|
3
|
+
Version: 1.18.2
|
|
4
4
|
Summary: Manage AI coding CLI tools (Claude, Antigravity, Copilot, Cursor, Gemini, Amp, Codex)
|
|
5
5
|
Project-URL: Homepage, https://github.com/dajobe/code-aide
|
|
6
6
|
Project-URL: Repository, https://github.com/dajobe/code-aide
|
|
@@ -347,6 +347,8 @@ install_amp_binary() {
|
|
|
347
347
|
fi
|
|
348
348
|
|
|
349
349
|
local binary_path="$BIN_DIR/$binary_name"
|
|
350
|
+
local staged_binary_path
|
|
351
|
+
staged_binary_path=$(mktemp "$BIN_DIR/tmp.XXXXXX")
|
|
350
352
|
local checksum_path="$AMP_HOME/amp-install-checksum.txt"
|
|
351
353
|
|
|
352
354
|
# Download checksum first
|
|
@@ -356,21 +358,22 @@ install_amp_binary() {
|
|
|
356
358
|
|
|
357
359
|
if has_gzip_support; then
|
|
358
360
|
# Download compressed binary and verify the decompressed bytes against checksum
|
|
359
|
-
download_gzipped_file "${binary_url}.gz" "$
|
|
361
|
+
download_gzipped_file "${binary_url}.gz" "$staged_binary_path" 'Amp binary'
|
|
360
362
|
else
|
|
361
363
|
warn "gzip not found; downloading uncompressed binary"
|
|
362
|
-
download_file "$binary_url" "$
|
|
364
|
+
download_file "$binary_url" "$staged_binary_path" 'Amp binary'
|
|
363
365
|
fi
|
|
364
366
|
|
|
365
367
|
# Verify checksum
|
|
366
|
-
verify_checksum "$
|
|
368
|
+
verify_checksum "$staged_binary_path" "$expected_checksum"
|
|
367
369
|
|
|
368
370
|
# Verify signature (optional, only if minisign is installed)
|
|
369
371
|
# Disabled until release signing is enabled
|
|
370
|
-
# verify_signature "$
|
|
372
|
+
# verify_signature "$staged_binary_path" "$minisign_signature_url"
|
|
371
373
|
|
|
372
|
-
# Make executable
|
|
373
|
-
chmod
|
|
374
|
+
# Make executable before atomically replacing the installed binary
|
|
375
|
+
chmod 0755 "$staged_binary_path"
|
|
376
|
+
mv "$staged_binary_path" "$binary_path"
|
|
374
377
|
|
|
375
378
|
# Clean up checksum file
|
|
376
379
|
rm -f "$checksum_path"
|
|
@@ -55,6 +55,11 @@ if command -v jq >/dev/null 2>&1; then
|
|
|
55
55
|
HAS_JQ=true
|
|
56
56
|
fi
|
|
57
57
|
|
|
58
|
+
HAS_ZSTD=false
|
|
59
|
+
if command -v zstd >/dev/null 2>&1; then
|
|
60
|
+
HAS_ZSTD=true
|
|
61
|
+
fi
|
|
62
|
+
|
|
58
63
|
# Download function that works with both curl and wget
|
|
59
64
|
download_file() {
|
|
60
65
|
local url="$1"
|
|
@@ -85,8 +90,9 @@ get_checksum_from_manifest() {
|
|
|
85
90
|
# Normalize JSON to single line and extract checksum
|
|
86
91
|
json=$(echo "$json" | tr -d '\n\r\t' | sed 's/ \+/ /g')
|
|
87
92
|
|
|
88
|
-
# Extract checksum for platform using bash regex
|
|
89
|
-
|
|
93
|
+
# Extract checksum for platform using bash regex. [^{}] keeps the match
|
|
94
|
+
# inside the platform's own object (manifest.zst.json nests a darwin bundle).
|
|
95
|
+
if [[ $json =~ \"$platform\"[[:space:]]*:[[:space:]]*[{][^{}]*\"checksum\"[[:space:]]*:[[:space:]]*\"([a-f0-9]{64})\" ]]; then
|
|
90
96
|
echo "${BASH_REMATCH[1]}"
|
|
91
97
|
return 0
|
|
92
98
|
fi
|
|
@@ -94,6 +100,17 @@ get_checksum_from_manifest() {
|
|
|
94
100
|
return 1
|
|
95
101
|
}
|
|
96
102
|
|
|
103
|
+
get_size_from_manifest() {
|
|
104
|
+
local json="$1"
|
|
105
|
+
local platform="$2"
|
|
106
|
+
json=$(echo "$json" | tr -d '\n\r\t' | sed 's/ \+/ /g')
|
|
107
|
+
if [[ $json =~ \"$platform\"[[:space:]]*:[[:space:]]*[{][^{}]*\"size\"[[:space:]]*:[[:space:]]*([0-9]+) ]]; then
|
|
108
|
+
echo "${BASH_REMATCH[1]}"
|
|
109
|
+
return 0
|
|
110
|
+
fi
|
|
111
|
+
return 1
|
|
112
|
+
}
|
|
113
|
+
|
|
97
114
|
# Detect platform
|
|
98
115
|
case "$(uname -s)" in
|
|
99
116
|
Darwin) os="darwin" ;;
|
|
@@ -144,8 +161,10 @@ manifest_json=$(download_file "$DOWNLOAD_BASE_URL/$version/manifest.json")
|
|
|
144
161
|
# Use jq if available, otherwise fall back to pure bash parsing
|
|
145
162
|
if [ "$HAS_JQ" = true ]; then
|
|
146
163
|
checksum=$(echo "$manifest_json" | jq -r ".platforms[\"$platform\"].checksum // empty")
|
|
164
|
+
size=$(echo "$manifest_json" | jq -r ".platforms[\"$platform\"].size // empty")
|
|
147
165
|
else
|
|
148
|
-
checksum=$(get_checksum_from_manifest "$manifest_json" "$platform")
|
|
166
|
+
checksum=$(get_checksum_from_manifest "$manifest_json" "$platform" || true)
|
|
167
|
+
size=$(get_size_from_manifest "$manifest_json" "$platform" || true)
|
|
149
168
|
fi
|
|
150
169
|
|
|
151
170
|
# Validate checksum format (SHA256 = 64 hex characters)
|
|
@@ -154,25 +173,49 @@ if [ -z "$checksum" ] || [[ ! "$checksum" =~ ^[a-f0-9]{64}$ ]]; then
|
|
|
154
173
|
exit 1
|
|
155
174
|
fi
|
|
156
175
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
fi
|
|
176
|
+
checksum_matches() {
|
|
177
|
+
local actual
|
|
178
|
+
if [ "$os" = "darwin" ]; then
|
|
179
|
+
actual=$(shasum -a 256 "$1" | cut -d' ' -f1)
|
|
180
|
+
else
|
|
181
|
+
actual=$(sha256sum "$1" | cut -d' ' -f1)
|
|
182
|
+
fi
|
|
183
|
+
[ "$actual" = "$2" ]
|
|
184
|
+
}
|
|
164
185
|
|
|
165
|
-
|
|
166
|
-
if [ "$
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
186
|
+
zst_checksum=""
|
|
187
|
+
if [ "$HAS_ZSTD" = true ] && [[ "$size" =~ ^[1-9][0-9]*$ ]]; then
|
|
188
|
+
zst_manifest_json=$(download_file "$DOWNLOAD_BASE_URL/$version/manifest.zst.json" 2>/dev/null || true)
|
|
189
|
+
if [ "$HAS_JQ" = true ]; then
|
|
190
|
+
zst_checksum=$(echo "$zst_manifest_json" | jq -r ".platforms[\"$platform\"].checksum // empty" 2>/dev/null || true)
|
|
191
|
+
else
|
|
192
|
+
zst_checksum=$(get_checksum_from_manifest "$zst_manifest_json" "$platform" || true)
|
|
193
|
+
fi
|
|
170
194
|
fi
|
|
171
195
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
196
|
+
binary_path="$DOWNLOAD_DIR/claude-$version-$platform"
|
|
197
|
+
verified=false
|
|
198
|
+
if [[ "$zst_checksum" =~ ^[a-f0-9]{64}$ ]]; then
|
|
199
|
+
if download_file "$DOWNLOAD_BASE_URL/$version/$platform/claude.zst" "$binary_path.zst" \
|
|
200
|
+
&& checksum_matches "$binary_path.zst" "$zst_checksum"; then
|
|
201
|
+
zstd -d -q -c "$binary_path.zst" 2>/dev/null | head -c "$size" > "$binary_path" || true
|
|
202
|
+
if checksum_matches "$binary_path" "$checksum"; then
|
|
203
|
+
verified=true
|
|
204
|
+
fi
|
|
205
|
+
fi
|
|
206
|
+
rm -f "$binary_path.zst"
|
|
207
|
+
fi
|
|
208
|
+
if [ "$verified" = false ]; then
|
|
209
|
+
if ! download_file "$DOWNLOAD_BASE_URL/$version/$platform/claude" "$binary_path"; then
|
|
210
|
+
echo "Download failed" >&2
|
|
211
|
+
rm -f "$binary_path"
|
|
212
|
+
exit 1
|
|
213
|
+
fi
|
|
214
|
+
if ! checksum_matches "$binary_path" "$checksum"; then
|
|
215
|
+
echo "Checksum verification failed" >&2
|
|
216
|
+
rm -f "$binary_path"
|
|
217
|
+
exit 1
|
|
218
|
+
fi
|
|
176
219
|
fi
|
|
177
220
|
|
|
178
221
|
chmod +x "$binary_path"
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"command": "claude",
|
|
34
34
|
"install_type": "script",
|
|
35
35
|
"install_url": "https://claude.ai/install.sh",
|
|
36
|
-
"install_sha256": "
|
|
36
|
+
"install_sha256": "3a68d3406cf674e17bed1733a4dcf37805e2e47d87417700007d7e1aa766a944",
|
|
37
37
|
"version_url": "https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest",
|
|
38
38
|
"prerequisites": [],
|
|
39
39
|
"min_node_version": null,
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"command": "amp",
|
|
90
90
|
"install_type": "script",
|
|
91
91
|
"install_url": "https://ampcode.com/install.sh",
|
|
92
|
-
"install_sha256": "
|
|
92
|
+
"install_sha256": "07bea1669144a5191c873a61a3244266ca046557bff7123f0be41d0723592297",
|
|
93
93
|
"install_script_path_prepend": [
|
|
94
94
|
"~/.local/bin"
|
|
95
95
|
],
|
code_aide-1.18.0/CLAUDE.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
See AGENTS.md for project instructions.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_aide-1.18.0 → code_aide-1.18.2}/specs/2026-05-03-qwen3.6-code-quality-analysis-original.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_aide-1.18.0 → code_aide-1.18.2}/specs/unify-upgrade-eligibility-with-shared-evaluator.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|