chore!: remove astrid-openclaw and the OpenClaw plugin build path - #833
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request removes the legacy OpenClaw plugin ecosystem, which was identified as a source of technical debt and CI instability. The changes include deleting the compiler crate, cleaning up build configuration, and renaming internal infrastructure to align with the new bridge-based architecture. The removal simplifies the workspace and eliminates dependencies that were no longer maintainable or reproducible. Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. The claw is gone, the code is clean, No more the QuickJS machine. The bridge remains to hold the light, And keep the build paths shining bright. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request completely removes the astrid-openclaw crate, the openclaw-mcp-bridge package, and all associated build paths, scripts, and tests. The TypeScript/JavaScript-to-WASM compilation pipeline has been deprecated and removed. References to OpenClaw have been cleaned up across the codebase, including renaming UplinkSource::OpenClaw to UplinkSource::Bridge and updating configuration files, tests, and documentation accordingly. There are no review comments to address, and we have no additional feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
## Linked Issue Closes #830 ## Summary Stops the CI Test-job SIGBUS by no longer building `astrid-openclaw`'s Tier 1 QuickJS kernel from source. The Test job ran `cargo test --workspace` with `ASTRID_AUTO_BUILD_KERNEL=1`; that auto-build pulls wasi-sdk and exhausts the runner disk, SIGBUSing the linker. Minimal stopgap — `astrid-openclaw` stays on `main` (the full removal is #833). ## Changes - Drop `ASTRID_AUTO_BUILD_KERNEL=1` from the Test job. - Remove the `Cache QuickJS kernel` step and the now-orphaned `QUICKJS_KERNEL_VERSION` env. - Run `cargo test --workspace --exclude astrid-openclaw` — only that crate's Tier 1 e2e tests need the kernel; it still compiles via `build.rs`'s placeholder kernel under `check`/`clippy`. `ci.yml` only; no source changes. ## Test Plan ### Automated - [x] `cargo test -p astrid-build` passes 20/0 with the placeholder kernel (astrid-build is the crate that builds the openclaw lib) — confirms the workspace test run stays green without the auto-build - [x] No new clippy warnings (YAML-only change; no Rust touched) ### Manual N/A — CI configuration change. ## Checklist - [x] Linked to an issue (#830) - [ ] CHANGELOG.md updated under `[Unreleased]` — N/A (CI-only change, no user-facing behaviour)
The TypeScript/JavaScript-to-WASM compiler (astrid-openclaw) is broken three ways and was the last extism vestige in core: - The Tier 1 QuickJS kernel was built from github.com/nicholasgasior/extism-js (a personal js-pdk fork that carried a fix), now HTTP 404; build.rs separately pointed at upstream extism/js-pdk, so the two build paths already disagreed. - kernel/engine.wasm was never committed (only its BLAKE3 hash), and the committed hash can't be reproduced from upstream — a clean checkout had no path back to a working kernel. - It emitted extism-PDK core-module exports while the capsule host migrated to the wasmtime Component Model, so its output could no longer load. It was also a CI breaker (the QuickJS auto-build + wasi-sdk exhausted the runner disk, SIGBUS). Removes: the astrid-openclaw crate; astrid-build's openclaw builder, --wizer-internal subcommand, openclaw project type + openclaw.plugin.json autodetection; the CLI openclaw: install source; the kernel-router openclaw: rejection; the capsule watcher's openclaw.plugin.json detection; packages/openclaw-mcp-bridge; scripts/build-quickjs-kernel.sh and compile-test-plugin.sh; the orphaned oxc/oxc_allocator/wizer workspace deps; the CI QuickJS-kernel cache + auto-build steps and the wasm32-wasip1 target; and doc/README references advertising the compiler. UplinkSource::OpenClaw is left intact: it is live channel-registration infrastructure that merely carries the legacy name, slated for a separate rename. BREAKING CHANGE: astrid build --type openclaw, astrid capsule install openclaw:..., and installing a bare openclaw.plugin.json directory are no longer supported. Closes #829
Follow-up to the openclaw removal — scrubs every remaining trace so the branch carries nothing of the deleted compiler (#829). - Rename the live UplinkSource::OpenClaw -> UplinkSource::Bridge (it is bridge-registered-uplink infrastructure that merely carried the name): variant, new_openclaw -> new_bridge, serde tag open_claw -> bridge, Display openclaw(...) -> bridge(...), all call sites (astrid-mcp uplinkRegistered handler + tests, astrid-core tests) and docs. Verified in-memory-only (sole holder is an in-process Vec in the MCP client handler; no disk/wire serialization path), so the serde-tag change is format-safe today and ships with no back-compat alias. - Delete .cargo/config.toml: its only directive was the --allow-multiple-definition linker hack for the duplicate wasmtime_continuation_start symbol across wasmtime v36 (wizer) and v37 (extism); both arrived solely via openclaw and are gone (only wasmtime 45 remains). cargo check --workspace links cleanly without it. - .cargo/audit.toml: drop the three RUSTSEC wasmtime-37-via-extism advisory ignores (unreachable on wasmtime 45) and the extism wording. - Scrub openclaw-branded strings: config uplink examples (openclaw-telegram/discord -> telegram-uplink/discord-uplink) in astrid-config + docs/config.md, sandbox test fixtures (openclaw-unicity -> bridge-unicity), apparmor comment. - Remove dangling refs to deleted files: .gitattributes engine.wasm attr, .gitignore QuickJS-kernel + packages/ blocks, the astrid_bridge.mjs filter in the capsule watcher, and the compile-test-plugin.sh references (script + its already-absent test-plugin-guest crate) in .gitignore / integration-tests README / lifecycle_e2e docs. - Update the CHANGELOG Removed entry to record the rename. Refs #829
c60edb7 to
0781de5
Compare
There was a problem hiding this comment.
Pull request overview
This PR removes the astrid-openclaw compiler and all remaining OpenClaw-related build/install/watch paths from the Astrid workspace (Closes #829), and it also renames the lingering “OpenClaw” uplink source naming to “Bridge” to reflect current architecture.
Changes:
- Delete the OpenClaw/QuickJS kernel build scripts and remove the Node-based
openclaw-mcp-bridgepackage. - Scrub OpenClaw references from top-level documentation.
- Rename
UplinkSource::OpenClaw→UplinkSource::Bridge(including its serde tag).
Reviewed changes
Copilot reviewed 75 out of 77 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/compile-test-plugin.sh | Deleted legacy WASM fixture compilation script tied to removed OpenClaw/testing flow. |
| scripts/build-quickjs-kernel.sh | Deleted QuickJS kernel build script (previously depended on a dead extism-js fork). |
| packages/openclaw-mcp-bridge/tsconfig.json | Removed the OpenClaw MCP bridge package configuration. |
| packages/openclaw-mcp-bridge/src/types.ts | Removed OpenClaw plugin type surface for the bridge. |
| packages/openclaw-mcp-bridge/src/tool-adapter.ts | Removed OpenClaw tool→MCP adapter layer. |
| packages/openclaw-mcp-bridge/src/loader.ts | Removed dynamic plugin loader (jiti) for OpenClaw plugins. |
| packages/openclaw-mcp-bridge/src/index.ts | Removed the OpenClaw MCP bridge CLI entry point. |
| README.md | Removed OpenClaw compiler references from project documentation. |
| crates/astrid-build/README.md | Documentation update needed: still references wasm32-wasip1 target incorrectly. |
| crates/astrid-core/src/uplink/types.rs | Uplink source rename to Bridge; needs back-compat consideration for serde tag rename. |
| CHANGELOG.md | Records OpenClaw removal; includes a claim about serialization safety that should be tightened/updated. |
Files not reviewed (1)
- packages/openclaw-mcp-bridge/package-lock.json: Language not supported
Comments suppressed due to low confidence (1)
CHANGELOG.md:31
- This changelog entry asserts the
UplinkSourceserde tag rename (open_claw→bridge) is "format-safe" because the type is in-memory only and "nothing persists or transmits it". In code,UplinkSourceandUplinkDescriptorderiveSerialize/Deserialize, andUplinkDescriptoris documented as deserializable for trusted persistence (e.g. SurrealDB), so it’s safer to either (a) mention the potential breaking change for persisted data, or (b) add a serde alias foropen_clawand update this sentence accordingly.
- **`astrid build` injects the getrandom custom-backend cfg for `wasm32-unknown-unknown` capsules.** Every capsule on that target must compile with `--cfg=getrandom_backend="custom"` so `uuid` v4 / `HashMap` seeding link against `astrid-sys`'s host-routed RNG (`astrid:sys/host.random-bytes`); getrandom 0.4 requires the cfg on the final binary crate, so a capsule whose `.cargo/config.toml` omitted it failed to build with a cryptic getrandom `compile_error!`. `astrid-build` now injects the cfg itself via a merged `CARGO_ENCODED_RUSTFLAGS` — because host ≠ wasm this is a cross-compile, so the flag reaches only the wasm artifacts, never host build scripts / proc-macros. The injection merges rather than clobbers — it concatenates inherited `RUSTFLAGS`/`CARGO_ENCODED_RUSTFLAGS`, the capsule's own config `rustflags` (array or string form), and the getrandom cfg, de-duplicating only the getrandom cfg so multi-token flags like `-C opt-level=3` stay intact — so a capsule already carrying the flag is unaffected. This is a safety net for the canonical build tool; capsules still keep the flag in config because a plain `cargo build` / `cargo test` never runs through `astrid-build`. Closes #800.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Three correct review comments on #833: 1. UplinkSource::Bridge now carries #[serde(alias = "open_claw")] so a persisted/transmitted UplinkDescriptor row written under the legacy open_claw tag still deserializes. UplinkDescriptor derives Serialize/Deserialize and is documented as deserializable for trusted persistence, so the prior 'in-memory-only, format-safe' assumption was wrong. New writes still serialize as 'bridge'. Adds a back-compat deser test. 2. astrid-build/README.md no longer claims 'cargo build --target wasm32-wasip1 --release'. The builder runs 'cargo build --release' and lets the capsule's .cargo/config.toml select the target (canonical wasm32-unknown-unknown, wasm32-wasip2 accepted); wasip1 was the removed openclaw target. 3. CHANGELOG entry corrected to describe the alias + back-compat instead of the inaccurate 'nothing persists or transmits it' claim.
|
Addressed the three review comments in 1c7b177:
|
## Linked Issue Closes #853 ## Summary `chore: release` — bumps all workspace crates **0.7.0 → 0.8.0** and rolls `CHANGELOG [Unreleased]` into `[0.8.0] - 2026-06-10`. Consolidates the ~50 PRs landed since v0.7.0: - **HTTP admin gateway** (#756 + follow-ups) — `astrid-gateway`: principals/caps/quotas/groups/invites/env over HTTP, audit SSE + historical queries, agent-prompt SSE, OpenAPI emission, bus-direct admin path (285× throughput), rustls TLS, CORS, metrics, invite + keypair CLI verbs. - **Runtime concurrency overhaul** (#813/#816/#819/#820) — routed per-(capsule, topic, principal) IPC with DRR fairness, async Wasmtime, dynamic instance pools, split blocking/IO semaphores, per-principal fuel + memory ledgers with enforcement and usage reporting. - **Host process + introspection surface** — `astrid:process` persistent tier (#866/#867/#871/#873), capability introspection (#868/#869), `astrid mcp serve` (#879/#880), `astrid-emit` (#814/#842). - **Security** — macOS 15+ sandbox no longer silently disabled (#855/#857), audit-feed principal scoping (#850/#851), failed-redeem audit rows (#846), `self:agent:list` roster leak (#848), pair-device redeem rate-limit (#844), bearer revocation + wire format v2 (#772). Breaking: `Capsule.toml` `[publish]`/`[subscribe]`-only IPC surface (#858/#864/#865, `[[interceptor]]` / `ipc_*` arrays / `[[topic]]` removed), bearer v2, MSRV 1.95, `astrid-openclaw` removed (#833). ## Changes - `[workspace.package].version` `0.7.0` → `0.8.0` + the 23 in-workspace path-dependency pins (now including `astrid-emit`; `axum`/`axum-server` stay on their external 0.7). - CHANGELOG: `[Unreleased]` → `[0.8.0] - 2026-06-10` with a release **synopsis** (extracted into the GitHub release body by release.yml on tag). Keeps the earlier roll's curation (canonical section order, bullets verbatim) and merges the 13 entries added to `[Unreleased]` by the 12 PRs that landed after the branch was first cut (#851–#885) — verified both directions that no bullet was lost. Branch history note: rebuilt on current `main` (was `CONFLICTING` and 12 commits behind); previous tip was `54c7294`. ## Release steps (maintainer) 1. Merge this PR. 2. Tag `v0.8.0` on the merge commit → release.yml creates the GitHub release from the CHANGELOG block. 3. Publish/distribute the new `astrid` binaries as usual. ## Test Plan Release PR — no code changes. `cargo check --workspace` passes on the rebuilt branch; full test/clippy/MSRV matrix runs in CI. The changelog merge was verified bullet-by-bullet in both directions: every `[Unreleased]` bullet on `main` appears in the rolled `[0.8.0]` section, and every bullet from the earlier curated roll is preserved verbatim.
Linked Issue
Closes #829
Summary
Removes
astrid-openclaw(the TypeScript→WASM compiler that absorbed the OpenClaw plugin ecosystem) and every trace of it from core. It was broken three ways — a dead extism-js fork pin (nicholasgasior/extism-js, now HTTP 404), an unreproducible uncommitted QuickJS kernel, and extism-PDK core-module output that no longer loads on the wasmtime Component Model host — and was the last extism vestige in the workspace as well as the CI Test-job SIGBUS source.Changes
astrid-openclawcrate;astrid-build's openclaw builder,--wizer-internalsubcommand,openclawproject type andopenclaw.plugin.jsonautodetect; the CLIopenclaw:install source; the kernel-routeropenclaw:rejection; the capsule watcher'sopenclaw.plugin.jsondetection;packages/openclaw-mcp-bridge;scripts/build-quickjs-kernel.shandcompile-test-plugin.sh; the orphanedoxc/oxc_allocator/wizerworkspace deps; the CI QuickJS-kernel cache, auto-build, andwasm32-wasip1target; and doc/README references.UplinkSource::OpenClaw→Bridge(variant,new_openclaw→new_bridge, serde tagopen_claw→bridge,Display, all call sites + tests); delete.cargo/config.toml(its only directive was the--allow-multiple-definitionlinker hack for the duplicatewasmtime_continuation_startsymbol across wasmtime v36/v37, both of which arrived only via openclaw); drop three stale wasmtime-37-via-extism RUSTSEC ignores from.cargo/audit.toml; scrub openclaw-branded example/test strings and dangling references to the deleted files.Breaking:
astrid build --type openclaw,astrid capsule install openclaw:…, and bareopenclaw.plugin.jsoninstalls are removed. TheUplinkSourceserde tag renameopen_claw→bridgeis format-safe today — the enum is in-memory-only (no disk/wire serialization path), so it ships with no back-compat alias.Test Plan
Automated
cargo check --workspacelinks cleanly against currentmain(after rebase; regenerated lock carries only wasmtime 45, no.cargo/config.tomlneeded) andcargo testpasses on every touched crate (astrid-core, astrid-mcp, astrid-config, astrid-workspace, astrid-capsule, astrid-build) — 0 failuresManual
Workspace-wide grep confirms zero residual
openclaw/open_claw/quickjs/wizer/oxcin source, docs, config, or CI.Checklist
[Unreleased](Removed entry)Rebased onto current
main: the CI-only stopgap #831 has merged, and this branch's fullci.ymlcleanup supersedes it (--exclude astrid-openclawis dropped — the crate no longer exists, so a plaincargo test --workspaceis correct). The full openclaw source is preserved on thearchive/openclawbranch.