From 12ba97c8f1c5daf8d1393116868ccecfdf69d8cf Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Thu, 12 Nov 2026 17:43:40 +0100 Subject: [PATCH] build: resolve the image manifests from crates.io The Dockerfiles copied every framework crate's manifest because the old root workspace path-patched crossterm and carried in-tree resolution. The claw resolves from crates.io now, so the builder copies only the claw's own manifests, and the vendored-crossterm COPY (and its explanation) is gone. --- deploy/docker/claw.Dockerfile | 43 +---------------------------- deploy/docker/sandboxd.Dockerfile | 45 +++---------------------------- 2 files changed, 5 insertions(+), 83 deletions(-) diff --git a/deploy/docker/claw.Dockerfile b/deploy/docker/claw.Dockerfile index 1756825..ca64e8f 100644 --- a/deploy/docker/claw.Dockerfile +++ b/deploy/docker/claw.Dockerfile @@ -10,55 +10,14 @@ WORKDIR /build # Manifests first: the registry cache this populates survives source edits. COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ -COPY crates/rhema-acp/Cargo.toml crates/rhema-acp/Cargo.toml -COPY crates/rhema-agent-tools/Cargo.toml crates/rhema-agent-tools/Cargo.toml -COPY crates/rhema-autonomous-agent/Cargo.toml crates/rhema-autonomous-agent/Cargo.toml COPY crates/rhema-claw/Cargo.toml crates/rhema-claw/Cargo.toml -COPY crates/rhema-cloud-agent/Cargo.toml crates/rhema-cloud-agent/Cargo.toml -COPY crates/rhema-cloudflare-code/Cargo.toml crates/rhema-cloudflare-code/Cargo.toml -COPY crates/rhema-code/Cargo.toml crates/rhema-code/Cargo.toml -COPY crates/rhema-coding-agent/Cargo.toml crates/rhema-coding-agent/Cargo.toml -COPY crates/rhema-config/Cargo.toml crates/rhema-config/Cargo.toml -COPY crates/rhema-core/Cargo.toml crates/rhema-core/Cargo.toml -COPY crates/rhema-identity/Cargo.toml crates/rhema-identity/Cargo.toml -COPY crates/rhema-memory/Cargo.toml crates/rhema-memory/Cargo.toml -COPY crates/rhema-mcp/Cargo.toml crates/rhema-mcp/Cargo.toml -COPY crates/rhema-provider/Cargo.toml crates/rhema-provider/Cargo.toml -COPY crates/rhema-provider-anthropic/Cargo.toml crates/rhema-provider-anthropic/Cargo.toml -COPY crates/rhema-provider-chatgpt/Cargo.toml crates/rhema-provider-chatgpt/Cargo.toml -COPY crates/rhema-provider-copilot/Cargo.toml crates/rhema-provider-copilot/Cargo.toml -COPY crates/rhema-provider-google/Cargo.toml crates/rhema-provider-google/Cargo.toml -COPY crates/rhema-provider-llama-cpp/Cargo.toml crates/rhema-provider-llama-cpp/Cargo.toml -COPY crates/rhema-provider-openai-compatible/Cargo.toml crates/rhema-provider-openai-compatible/Cargo.toml -COPY crates/rhema-provider-opencode/Cargo.toml crates/rhema-provider-opencode/Cargo.toml -COPY crates/rhema-provider-openrouter/Cargo.toml crates/rhema-provider-openrouter/Cargo.toml -COPY crates/rhema-provider-registry/Cargo.toml crates/rhema-provider-registry/Cargo.toml -COPY crates/rhema-rsd/Cargo.toml crates/rhema-rsd/Cargo.toml -COPY crates/rhema-sandbox/Cargo.toml crates/rhema-sandbox/Cargo.toml -COPY crates/rhema-sandbox-docker/Cargo.toml crates/rhema-sandbox-docker/Cargo.toml -COPY crates/rhema-sandbox-ecrou/Cargo.toml crates/rhema-sandbox-ecrou/Cargo.toml -COPY crates/rhema-sandbox-http/Cargo.toml crates/rhema-sandbox-http/Cargo.toml -COPY crates/rhema-sandbox-local/Cargo.toml crates/rhema-sandbox-local/Cargo.toml -COPY crates/rhema-sandbox-lxd/Cargo.toml crates/rhema-sandbox-lxd/Cargo.toml -COPY crates/rhema-sandbox-server/Cargo.toml crates/rhema-sandbox-server/Cargo.toml -COPY crates/rhema-sandbox-ssh/Cargo.toml crates/rhema-sandbox-ssh/Cargo.toml -COPY crates/rhema-subagents/Cargo.toml crates/rhema-subagents/Cargo.toml -COPY crates/rhema-transcript/Cargo.toml crates/rhema-transcript/Cargo.toml -COPY integrations/rhema-calendar-integration/Cargo.toml integrations/rhema-calendar-integration/Cargo.toml COPY integrations/rhema-forge-integration/Cargo.toml integrations/rhema-forge-integration/Cargo.toml -# rhema-claw path-depends on the tools contract, which lives in its own -# workspace: the member manifests inherit from that root, so the root -# rides along with them. +COPY integrations/rhema-calendar-integration/Cargo.toml integrations/rhema-calendar-integration/Cargo.toml COPY tools/Cargo.toml tools/Cargo.toml COPY tools/contract/Cargo.toml tools/contract/Cargo.toml COPY tools/common/Cargo.toml tools/common/Cargo.toml COPY tools/notify/Cargo.toml tools/notify/Cargo.toml - -# Resolution reads the vendored crossterm (the root manifest path-patches -# to it) even though the image builds the daemon, which does not link it. -COPY vendor/ vendor/ - # Cargo validates explicit target # paths at manifest-parse time, so the fetch needs stub files at every # declared target path: src/ for every member, plus examples/tests/benches diff --git a/deploy/docker/sandboxd.Dockerfile b/deploy/docker/sandboxd.Dockerfile index eaf80d0..d864443 100644 --- a/deploy/docker/sandboxd.Dockerfile +++ b/deploy/docker/sandboxd.Dockerfile @@ -12,53 +12,16 @@ WORKDIR /build # Manifests first: the registry cache this populates survives source edits. COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ -COPY crates/rhema-acp/Cargo.toml crates/rhema-acp/Cargo.toml -COPY crates/rhema-agent-tools/Cargo.toml crates/rhema-agent-tools/Cargo.toml -COPY crates/rhema-autonomous-agent/Cargo.toml crates/rhema-autonomous-agent/Cargo.toml COPY crates/rhema-claw/Cargo.toml crates/rhema-claw/Cargo.toml -COPY crates/rhema-cloud-agent/Cargo.toml crates/rhema-cloud-agent/Cargo.toml -COPY crates/rhema-cloudflare-code/Cargo.toml crates/rhema-cloudflare-code/Cargo.toml -COPY crates/rhema-code/Cargo.toml crates/rhema-code/Cargo.toml -COPY crates/rhema-coding-agent/Cargo.toml crates/rhema-coding-agent/Cargo.toml -COPY crates/rhema-config/Cargo.toml crates/rhema-config/Cargo.toml -COPY crates/rhema-core/Cargo.toml crates/rhema-core/Cargo.toml -COPY crates/rhema-identity/Cargo.toml crates/rhema-identity/Cargo.toml -COPY crates/rhema-memory/Cargo.toml crates/rhema-memory/Cargo.toml -COPY crates/rhema-mcp/Cargo.toml crates/rhema-mcp/Cargo.toml -COPY crates/rhema-provider/Cargo.toml crates/rhema-provider/Cargo.toml -COPY crates/rhema-provider-anthropic/Cargo.toml crates/rhema-provider-anthropic/Cargo.toml -COPY crates/rhema-provider-chatgpt/Cargo.toml crates/rhema-provider-chatgpt/Cargo.toml -COPY crates/rhema-provider-copilot/Cargo.toml crates/rhema-provider-copilot/Cargo.toml -COPY crates/rhema-provider-google/Cargo.toml crates/rhema-provider-google/Cargo.toml -COPY crates/rhema-provider-llama-cpp/Cargo.toml crates/rhema-provider-llama-cpp/Cargo.toml -COPY crates/rhema-provider-openai-compatible/Cargo.toml crates/rhema-provider-openai-compatible/Cargo.toml -COPY crates/rhema-provider-opencode/Cargo.toml crates/rhema-provider-opencode/Cargo.toml -COPY crates/rhema-provider-openrouter/Cargo.toml crates/rhema-provider-openrouter/Cargo.toml -COPY crates/rhema-rsd/Cargo.toml crates/rhema-rsd/Cargo.toml -COPY crates/rhema-sandbox/Cargo.toml crates/rhema-sandbox/Cargo.toml -COPY crates/rhema-sandbox-docker/Cargo.toml crates/rhema-sandbox-docker/Cargo.toml -COPY crates/rhema-sandbox-ecrou/Cargo.toml crates/rhema-sandbox-ecrou/Cargo.toml -COPY crates/rhema-sandbox-http/Cargo.toml crates/rhema-sandbox-http/Cargo.toml -COPY crates/rhema-sandbox-local/Cargo.toml crates/rhema-sandbox-local/Cargo.toml -COPY crates/rhema-sandbox-lxd/Cargo.toml crates/rhema-sandbox-lxd/Cargo.toml -COPY crates/rhema-sandbox-server/Cargo.toml crates/rhema-sandbox-server/Cargo.toml -COPY crates/rhema-sandbox-ssh/Cargo.toml crates/rhema-sandbox-ssh/Cargo.toml -COPY crates/rhema-subagents/Cargo.toml crates/rhema-subagents/Cargo.toml -COPY crates/rhema-transcript/Cargo.toml crates/rhema-transcript/Cargo.toml -COPY integrations/rhema-calendar-integration/Cargo.toml integrations/rhema-calendar-integration/Cargo.toml COPY integrations/rhema-forge-integration/Cargo.toml integrations/rhema-forge-integration/Cargo.toml -# rhema-claw path-depends on the tools contract, which lives in its own -# workspace: the member manifests inherit from that root, so the root -# rides along with them. +COPY integrations/rhema-calendar-integration/Cargo.toml integrations/rhema-calendar-integration/Cargo.toml COPY tools/Cargo.toml tools/Cargo.toml COPY tools/contract/Cargo.toml tools/contract/Cargo.toml COPY tools/common/Cargo.toml tools/common/Cargo.toml COPY tools/notify/Cargo.toml tools/notify/Cargo.toml - - -# Resolution reads the vendored crossterm (the root manifest path-patches -# to it) even though the image builds the daemon, which does not link it. -COPY vendor/ vendor/ +# rhema-claw path-depends on the tools contract, which lives in its own +# workspace: the member manifests inherit from that root, so the root +# rides along with them. # Cargo validates explicit target # paths at manifest-parse time, so the fetch needs stub files at every