mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 23:10:11 +00:00
* fix(registry): version-pinned WASM artifact URLs + ChecksumMismatch fallback (#439) Root cause: all artifact URLs used releases/latest/download/, which is a moving target. Every release rebuilds all WASM extensions non-deterministically, so sha256 baked into an older binary diverges from the content at 'latest'. ChecksumMismatch was also a hard block with no source-build fallback. Three-layer fix: 1. src/registry/installer.rs — allow source-build fallback for ChecksumMismatch on releases/latest URLs (moving-target artifact rotation, not tampering). Version-pinned URLs (releases/download/vX.Y.Z/) remain a hard block. Adds regression test (test_source_fallback_on_latest_url_mismatch) and updates test_should_attempt_source_fallback_policy to cover both URL types. 2. .github/workflows/release.yml — three CI changes: - build-wasm-extensions: version-detect, skip-if-unchanged, versioned filenames (name-{version}-wasm32-wasip2.tar.gz). Skip rebuild when manifest already has a non-null sha256 and the URL embeds the current version — stable checksums until source actually changes. - build-local-artifacts: patch manifests with version-pinned URL + sha256 (for binary embedding via build.rs). - update-registry-checksums: same URL patching for the main-branch PR. All three sed patterns use '.*' (greedy) to correctly handle pre-release version strings like 0.1.0-alpha.1. 3. registry/{tools,channels}/*.json — null out all 14 stale sha256 values. Null sha256 -> MissingChecksum -> source-build fallback (works on all binaries). Next release CI will populate version-pinned URLs + stable checksums. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> * style: cargo fmt * fix(ci): use JSON filename stem for WASM bundle names to fix manifest lookup Manifests like registry/tools/slack.json have name='slack-tool', causing the patching step to look for registry/tools/slack-tool.json (missing). Introduce file_stem (JSON filename without .json) for the bundle filename and checksums.txt entry, while keeping ext_name (manifest .name) for archive contents — the installer extracts files by manifest.name so those must still match. The patching step strips -{version}-wasm32-wasip2.tar.gz from the filename stem and looks up registry/tools/slack.json correctly. * fix(registry): tighten fallback URL check + deduplicate tests Address PR review feedback: 1. Make should_attempt_source_fallback check repo-specific (github.com/nearai/ironclaw/releases/latest/) instead of a generic substring (/releases/latest/download/). 2. Remove duplicate ChecksumMismatch cases from test_should_attempt_source_fallback_policy — that coverage lives in the dedicated regression test test_source_fallback_on_latest_url_mismatch. Co-Authored-By: Claude Opus 4.6 <[email protected]> --------- Co-authored-by: Claude Sonnet 4.6 <[email protected]>
40 lines
865 B
JSON
40 lines
865 B
JSON
{
|
|
"name": "gmail",
|
|
"display_name": "Gmail",
|
|
"kind": "tool",
|
|
"version": "0.2.0",
|
|
"wit_version": "0.3.0",
|
|
"description": "Read, send, and manage Gmail messages and threads",
|
|
"keywords": [
|
|
"email",
|
|
"google",
|
|
"mail",
|
|
"messaging"
|
|
],
|
|
"source": {
|
|
"dir": "tools-src/gmail",
|
|
"capabilities": "gmail-tool.capabilities.json",
|
|
"crate_name": "gmail-tool"
|
|
},
|
|
"artifacts": {
|
|
"wasm32-wasip2": {
|
|
"url": "https://github.com/nearai/ironclaw/releases/latest/download/gmail-wasm32-wasip2.tar.gz",
|
|
"sha256": null
|
|
}
|
|
},
|
|
"auth_summary": {
|
|
"method": "oauth",
|
|
"provider": "Google",
|
|
"secrets": [
|
|
"google_oauth_token"
|
|
],
|
|
"shared_auth": "google_oauth_token",
|
|
"setup_url": "https://console.cloud.google.com/apis/credentials"
|
|
},
|
|
"tags": [
|
|
"default",
|
|
"google",
|
|
"messaging"
|
|
]
|
|
}
|