Skip to content

Commit 403b39b

Browse files
committed
Merge remote-tracking branch 'origin/main' into wpfleger/socket-support
* origin/main: fix: handle reasoning content blocks in OpenAI-compat streaming parser (#8078) chore(acp): build native packages on latest mac (#8075) Display delegate sub agents logs in UI (#7519) Update tar version to avoid CVE-2026-33056 (#8073) refactor: consolidate duplicated dependencies into workspace (#8041) tui: set up for publishing via github actions (#8020) feat: feature-gate local inference dependencies (#7976) feat: ability to manage sub recipes in desktop ui (#6360)
2 parents 9854fef + ce160b1 commit 403b39b

85 files changed

Lines changed: 4893 additions & 7553 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
name: Build Native Packages
2+
3+
on:
4+
workflow_call:
5+
outputs:
6+
artifact-name:
7+
description: "Name of the artifact containing all native binaries"
8+
value: ${{ jobs.collect.outputs.artifact-name }}
9+
workflow_dispatch:
10+
push:
11+
branches:
12+
- main
13+
paths:
14+
- 'crates/goose-acp/**'
15+
- 'ui/acp/**'
16+
- '.github/workflows/build-native-packages.yml'
17+
pull_request:
18+
paths:
19+
- 'crates/goose-acp/**'
20+
- 'ui/acp/**'
21+
- '.github/workflows/build-native-packages.yml'
22+
23+
jobs:
24+
build-matrix:
25+
name: Build ${{ matrix.platform }}
26+
runs-on: ${{ matrix.os }}
27+
strategy:
28+
fail-fast: false
29+
matrix:
30+
include:
31+
- platform: darwin-arm64
32+
os: macos-latest
33+
target: aarch64-apple-darwin
34+
- platform: darwin-x64
35+
os: macos-latest
36+
target: x86_64-apple-darwin
37+
- platform: linux-arm64
38+
os: ubuntu-24.04-arm
39+
target: aarch64-unknown-linux-gnu
40+
- platform: linux-x64
41+
os: ubuntu-latest
42+
target: x86_64-unknown-linux-gnu
43+
- platform: win32-x64
44+
os: windows-latest
45+
target: x86_64-pc-windows-msvc
46+
47+
steps:
48+
- name: Checkout
49+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
50+
51+
- name: Setup Rust
52+
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
53+
with:
54+
targets: ${{ matrix.target }}
55+
56+
- name: Add Intel target for cross-compilation (macOS ARM64 → x86_64)
57+
if: matrix.platform == 'darwin-x64'
58+
run: rustup target add x86_64-apple-darwin
59+
60+
- name: Install cross-compilation tools (Linux ARM64)
61+
if: matrix.platform == 'linux-arm64'
62+
run: |
63+
sudo apt-get update
64+
sudo apt-get install -y gcc-aarch64-linux-gnu
65+
66+
- name: Setup Rust cache
67+
uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2
68+
with:
69+
key: ${{ matrix.platform }}
70+
71+
- name: Build goose-acp-server
72+
run: cargo build --release --target ${{ matrix.target }} --bin goose-acp-server
73+
74+
- name: Prepare artifact (Unix)
75+
if: runner.os != 'Windows'
76+
run: |
77+
mkdir -p artifact/bin
78+
cp target/${{ matrix.target }}/release/goose-acp-server artifact/bin/
79+
chmod +x artifact/bin/goose-acp-server
80+
81+
- name: Prepare artifact (Windows)
82+
if: runner.os == 'Windows'
83+
shell: bash
84+
run: |
85+
mkdir -p artifact/bin
86+
cp target/${{ matrix.target }}/release/goose-acp-server.exe artifact/bin/
87+
88+
- name: Upload artifact
89+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
90+
with:
91+
name: goose-acp-server-${{ matrix.platform }}
92+
path: artifact/bin/
93+
if-no-files-found: error
94+
retention-days: 7
95+
96+
collect:
97+
name: Collect all binaries
98+
runs-on: ubuntu-latest
99+
needs: build-matrix
100+
outputs:
101+
artifact-name: native-binaries-all
102+
103+
steps:
104+
- name: Download all artifacts
105+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
106+
with:
107+
path: native-binaries
108+
109+
- name: List downloaded artifacts
110+
run: |
111+
echo "Downloaded artifacts:"
112+
ls -R native-binaries/
113+
114+
- name: Upload combined artifact
115+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
116+
with:
117+
name: native-binaries-all
118+
path: native-binaries/
119+
if-no-files-found: error
120+
retention-days: 7

.github/workflows/publish-npm.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Publish to npm
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
concurrency: ${{ github.workflow }}-${{ github.ref }}
9+
10+
permissions:
11+
contents: write
12+
pull-requests: write
13+
id-token: write # Required for npm provenance
14+
15+
jobs:
16+
build-native:
17+
name: Build native binaries
18+
uses: ./.github/workflows/build-native-packages.yml
19+
20+
release:
21+
name: Release
22+
runs-on: ubuntu-latest
23+
needs: build-native
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
27+
28+
- name: Setup Node.js
29+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
30+
with:
31+
node-version: '20'
32+
registry-url: 'https://registry.npmjs.org'
33+
34+
- name: Setup Rust
35+
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
36+
37+
- name: Setup Rust cache
38+
uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2
39+
40+
- name: Download native binaries
41+
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
42+
with:
43+
name: ${{ needs.build-native.outputs.artifact-name }}
44+
path: native-binaries
45+
46+
- name: Copy binaries to package directories
47+
run: |
48+
for platform_dir in native-binaries/goose-acp-server-*; do
49+
platform=$(basename "$platform_dir")
50+
pkg_dir="ui/goose-acp-server/${platform}"
51+
52+
echo "Copying binaries for ${platform}..."
53+
mkdir -p "${pkg_dir}/bin"
54+
cp -v "${platform_dir}/bin/"* "${pkg_dir}/bin/"
55+
chmod +x "${pkg_dir}/bin/"*
56+
done
57+
58+
- name: Install dependencies
59+
run: |
60+
cd ui
61+
npm ci
62+
63+
- name: Build packages
64+
run: |
65+
cd ui/acp
66+
npm run build
67+
68+
cd ../text
69+
npm run build
70+
71+
- name: Create Release Pull Request or Publish to npm
72+
id: changesets
73+
uses: changesets/action@6d3568c53fbe1db6c1f9ab1c7fbf9092bc18627f # v1
74+
with:
75+
publish: npm run release
76+
version: npm run version
77+
commit: 'chore: version packages'
78+
title: 'chore: version packages'
79+
cwd: ui
80+
env:
81+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
83+
NPM_CONFIG_PROVENANCE: true
84+
85+
- name: Summary
86+
if: steps.changesets.outputs.published == 'true'
87+
run: |
88+
echo "## Published Packages" >> $GITHUB_STEP_SUMMARY
89+
echo "" >> $GITHUB_STEP_SUMMARY
90+
echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[] | "- \(.name)@\(.version)"' >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)