diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6c467bdef..18db0963dd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: - name: Checkout Code uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 - name: Run cargo fmt run: cargo fmt --check @@ -55,7 +55,7 @@ jobs: - name: Checkout Code uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 - name: Install Dependencies run: | @@ -63,7 +63,7 @@ jobs: sudo apt install -y libdbus-1-dev gnome-keyring libxcb1-dev - name: Cache Cargo artifacts - uses: Swatinem/rust-cache@v2 + uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 - name: Build and Test run: | @@ -76,6 +76,31 @@ jobs: RUST_MIN_STACK: 8388608 + rust-build-windows: + name: Build Rust Project on Windows + runs-on: windows-latest + needs: changes + if: needs.changes.outputs.code == 'true' || github.event_name != 'pull_request' + steps: + - name: Checkout Code + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + + - name: Cache Cargo artifacts + uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 + with: + key: windows-ci + + - name: Setup Rust + shell: bash + run: | + rustup show + rustup target add x86_64-pc-windows-msvc + + - name: Build + run: cargo build --target x86_64-pc-windows-msvc + env: + CARGO_INCREMENTAL: "0" + rust-lint: name: Lint Rust Code runs-on: ubuntu-latest @@ -84,7 +109,7 @@ jobs: steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 - uses: Swatinem/rust-cache@v2 @@ -106,7 +131,7 @@ jobs: - name: Checkout Code uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1 - name: Install Dependencies run: | @@ -114,7 +139,7 @@ jobs: sudo apt install -y libdbus-1-dev libxcb1-dev - name: Cache Cargo artifacts - uses: Swatinem/rust-cache@v2 + uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 - name: Install Node.js Dependencies for OpenAPI Check run: source ../../bin/activate-hermit && pnpm install --frozen-lockfile diff --git a/crates/goose-mcp/src/subprocess.rs b/crates/goose-mcp/src/subprocess.rs index b2dfec6eb6..c2b63d1542 100644 --- a/crates/goose-mcp/src/subprocess.rs +++ b/crates/goose-mcp/src/subprocess.rs @@ -11,7 +11,6 @@ impl SubprocessExt for Command { fn set_no_window(&mut self) -> &mut Self { #[cfg(windows)] { - use std::os::windows::process::CommandExt; self.creation_flags(CREATE_NO_WINDOW_FLAG); } self diff --git a/crates/goose/src/acp/provider.rs b/crates/goose/src/acp/provider.rs index 4461351c6f..6f9d0f3ba8 100644 --- a/crates/goose/src/acp/provider.rs +++ b/crates/goose/src/acp/provider.rs @@ -32,6 +32,7 @@ use crate::permission::permission_confirmation::PrincipalType; use crate::permission::{Permission, PermissionConfirmation}; use crate::providers::base::{MessageStream, PermissionRouting, Provider}; use crate::providers::errors::ProviderError; +use crate::subprocess::configure_subprocess; /// Sentinel: resolved to SessionModelState.current_model_id at connect time. pub const ACP_CURRENT_MODEL: &str = "current"; @@ -938,6 +939,7 @@ async fn spawn_acp_process(config: &AcpProviderConfig) -> Result { cmd.env(key, value); } + configure_subprocess(&mut cmd); cmd.spawn().context("failed to spawn ACP process") } diff --git a/crates/goose/src/subprocess.rs b/crates/goose/src/subprocess.rs index 7e97dfad3d..a288d290c0 100644 --- a/crates/goose/src/subprocess.rs +++ b/crates/goose/src/subprocess.rs @@ -11,7 +11,6 @@ impl SubprocessExt for Command { fn set_no_window(&mut self) -> &mut Self { #[cfg(windows)] { - use std::os::windows::process::CommandExt; self.creation_flags(CREATE_NO_WINDOW_FLAG); } self