Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
17022e7
feat: restructure as Cargo workspace with unified binary feature flags
Jun 18, 2026
936f82a
fix: wire workspace into main.rs, remove duplicated source
Jun 18, 2026
3142a5b
fix: address remaining review findings
Jun 18, 2026
a9553cf
fix: add unified mode hook in main.rs, update gateway CI workflows
Jun 18, 2026
b507ba2
fix: update Cargo.lock + clean up CI gateway job
Jun 18, 2026
1451bbc
fix: add COPY crates/ to all Dockerfiles for workspace build
Jun 18, 2026
61b7951
fix: optimize Dockerfile layer caching for workspace
Jun 18, 2026
585829d
fix: apply layer cache optimization to agentcore and native Dockerfiles
Jun 18, 2026
db24433
fix: add AppState and related types to gateway lib.rs
Jun 18, 2026
846e2f1
fix(ci): address review findings — unified clippy gate, release notes…
Jun 21, 2026
c320673
fix: restore regressions found in review — ctl IPC, mentions, reactio…
Jun 21, 2026
ab031a8
fix: restore standalone gateway binary + all adapter regressions
Jun 21, 2026
65ff1f5
fix: add #[cfg(feature)] gating to telegram/line in gateway binary
Jun 21, 2026
6244ccd
fix: add parking_lot dep to openab-gateway (required by feishu adapter)
Jun 21, 2026
df27b43
fix: add mapping field to ReactionsConfig Default impl
Jun 21, 2026
9698125
fix: add serde/serde_json/async-trait deps to root + fix ctl.rs imports
Jun 21, 2026
4d8dba8
fix: align main.rs with crate API — remove ctl fields from Handler, f…
Jun 21, 2026
79eabd1
fix: remove unused Instant import (clippy)
Jun 21, 2026
fe2a535
fix: resolve clippy warnings — unused imports/variables
Jun 21, 2026
071059d
fix: add tempfile as dev-dependency for ctl.rs tests
Jun 21, 2026
8ffc1d9
fix: touch crate lib.rs files in Dockerfile to invalidate cargo cache
Jun 21, 2026
10c76db
fix: touch crate lib.rs in all Dockerfile.* for cargo cache invalidation
Jun 21, 2026
94f1ce2
fix: revert incorrect touch in Dockerfile.antigravity adapter-builder…
Jun 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/build-gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
uses: docker/build-push-action@v6
with:
context: .
file: gateway/Dockerfile
file: Dockerfile.gateway
platforms: ${{ matrix.platform.os }}
outputs: type=image,name=${{ env.IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=${{ inputs.dry_run != true }}
cache-from: type=gha,scope=gateway-${{ matrix.platform.os }}
Expand Down Expand Up @@ -146,9 +146,11 @@ jobs:
TAG="${{ steps.tag.outputs.tag }}"
VERSION="${{ steps.tag.outputs.version }}"
cat > /tmp/release-notes.md << EOF
## OpenAB Custom Gateway v${VERSION}
## OpenAB Gateway v${VERSION}

Standalone gateway service — bridges webhook-based platforms to OAB via WebSocket.
Unified binary with all gateway adapters (Telegram, LINE, Feishu, Google Chat, WeCom, Teams) compiled in via \`BUILD_MODE=unified\`.

> **Note**: This image contains the full openab binary with all adapters enabled, not a standalone gateway process. It replaces the previous standalone gateway binary.

### Docker

Expand All @@ -160,7 +162,7 @@ jobs:

### Links

- [Gateway README](https://github.com/openabdev/openab/blob/main/gateway/README.md)
- [Gateway Crate README](https://github.com/openabdev/openab/blob/main/crates/openab-gateway/README.md)
- [ADR: Custom Gateway](https://github.com/openabdev/openab/blob/main/docs/adr/custom-gateway.md)
EOF
sed -i 's/^ //' /tmp/release-notes.md
Expand Down
37 changes: 9 additions & 28 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
paths:
- "src/**"
- "gateway/**"
- "crates/**"
- "operator/**"
- "Cargo.toml"
- "Cargo.lock"
Expand All @@ -18,7 +18,6 @@ jobs:
runs-on: ubuntu-latest
outputs:
core: ${{ steps.filter.outputs.core }}
gateway: ${{ steps.filter.outputs.gateway }}
operator: ${{ steps.filter.outputs.operator }}
steps:
- uses: actions/checkout@v6
Expand All @@ -29,8 +28,7 @@ jobs:
BASE=${{ github.event.pull_request.base.sha }}
HEAD=${{ github.event.pull_request.head.sha }}
CHANGED=$(git diff --name-only "$BASE" "$HEAD")
echo "core=$(echo "$CHANGED" | grep -qE '^(src/|Cargo\.(toml|lock))' && echo true || echo false)" >> "$GITHUB_OUTPUT"
echo "gateway=$(echo "$CHANGED" | grep -q '^gateway/' && echo true || echo false)" >> "$GITHUB_OUTPUT"
echo "core=$(echo "$CHANGED" | grep -qE '^(src/|crates/|Cargo\.(toml|lock))' && echo true || echo false)" >> "$GITHUB_OUTPUT"
echo "operator=$(echo "$CHANGED" | grep -q '^operator/' && echo true || echo false)" >> "$GITHUB_OUTPUT"

check:
Expand All @@ -44,33 +42,16 @@ jobs:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: cargo check
run: cargo check
run: cargo check --workspace
- name: cargo clippy
run: cargo clippy -- -D warnings
run: cargo clippy --workspace -- -D warnings
- name: cargo clippy (unified)
run: cargo clippy --workspace --features unified -- -D warnings
- name: cargo test
run: cargo test
run: cargo test --workspace

gateway:
needs: changes
if: needs.changes.outputs.gateway == 'true'
runs-on: ubuntu-latest
defaults:
run:
working-directory: gateway
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
with:
workspaces: gateway
- name: cargo check
run: cargo check
- name: cargo clippy
run: cargo clippy -- -D warnings
- name: cargo test
run: cargo test
# gateway tests are now covered by `cargo test --workspace` in the check job above
# (openab-gateway is a workspace member in crates/openab-gateway/)

operator:
needs: changes
Expand Down
30 changes: 16 additions & 14 deletions .github/workflows/docker-smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
paths:
- 'Dockerfile*'
- 'src/**'
- 'crates/**'
- 'Cargo.*'

jobs:
Expand All @@ -13,25 +14,26 @@ jobs:
fail-fast: false
matrix:
variant:
- { dockerfile: Dockerfile, suffix: "", agent: "kiro-cli", agent_args: "acp --trust-all-tools" }
- { dockerfile: Dockerfile.claude, suffix: "-claude", agent: "claude-agent-acp", agent_args: "" }
- { dockerfile: Dockerfile.codex, suffix: "-codex", agent: "codex-acp", agent_args: "" }
- { dockerfile: Dockerfile.gemini, suffix: "-gemini", agent: "gemini", agent_args: "--acp" }
- { dockerfile: Dockerfile.copilot, suffix: "-copilot", agent: "copilot", agent_args: "--acp" }
- { dockerfile: Dockerfile.opencode, suffix: "-opencode", agent: "opencode", agent_args: "acp" }
- { dockerfile: Dockerfile.cursor, suffix: "-cursor", agent: "cursor-agent", agent_args: "acp" }
- { dockerfile: Dockerfile.mimocode, suffix: "-mimocode", agent: "mimo", agent_args: "acp" }
- { dockerfile: Dockerfile.hermes, suffix: "-hermes", agent: "hermes-acp", agent_args: "" }
- { dockerfile: Dockerfile.grok, suffix: "-grok", agent: "grok", agent_args: "agent stdio" }
- { dockerfile: Dockerfile.antigravity, suffix: "-antigravity", agent: "agy-acp", agent_args: "" }
- { dockerfile: Dockerfile.pi, suffix: "-pi", agent: "pi-acp", agent_args: "" }
- { dockerfile: openshell/Dockerfile, suffix: "-native-sandbox", agent: "openab-agent", agent_args: "" }
- { dockerfile: Dockerfile, suffix: "", agent: "kiro-cli", agent_args: "acp --trust-all-tools", build_args: "" }
- { dockerfile: Dockerfile, suffix: "-unified", agent: "kiro-cli", agent_args: "acp --trust-all-tools", build_args: "--build-arg BUILD_MODE=unified" }
- { dockerfile: Dockerfile.claude, suffix: "-claude", agent: "claude-agent-acp", agent_args: "", build_args: "" }
- { dockerfile: Dockerfile.codex, suffix: "-codex", agent: "codex-acp", agent_args: "", build_args: "" }
- { dockerfile: Dockerfile.gemini, suffix: "-gemini", agent: "gemini", agent_args: "--acp", build_args: "" }
- { dockerfile: Dockerfile.copilot, suffix: "-copilot", agent: "copilot", agent_args: "--acp", build_args: "" }
- { dockerfile: Dockerfile.opencode, suffix: "-opencode", agent: "opencode", agent_args: "acp", build_args: "" }
- { dockerfile: Dockerfile.cursor, suffix: "-cursor", agent: "cursor-agent", agent_args: "acp", build_args: "" }
- { dockerfile: Dockerfile.mimocode, suffix: "-mimocode", agent: "mimo", agent_args: "acp", build_args: "" }
- { dockerfile: Dockerfile.hermes, suffix: "-hermes", agent: "hermes-acp", agent_args: "", build_args: "" }
- { dockerfile: Dockerfile.grok, suffix: "-grok", agent: "grok", agent_args: "agent stdio", build_args: "" }
- { dockerfile: Dockerfile.antigravity, suffix: "-antigravity", agent: "agy-acp", agent_args: "", build_args: "" }
- { dockerfile: Dockerfile.pi, suffix: "-pi", agent: "pi-acp", agent_args: "", build_args: "" }
- { dockerfile: openshell/Dockerfile, suffix: "-native-sandbox", agent: "openab-agent", agent_args: "", build_args: "" }
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Build image
run: docker build -t openab-test${{ matrix.variant.suffix }} -f ${{ matrix.variant.dockerfile }} .
run: docker build ${{ matrix.variant.build_args }} -t openab-test${{ matrix.variant.suffix }} -f ${{ matrix.variant.dockerfile }} .

- name: Verify openab CMD does not crash
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gateway-release-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- name: Update gateway version
run: |
VERSION="${{ inputs.version }}"
sed -i "s/^version = .*/version = \"${VERSION}\"/" gateway/Cargo.toml
sed -i "s/^version = .*/version = \"${VERSION}\"/" crates/openab-gateway/Cargo.toml
echo "::notice::Gateway release version: ${VERSION}"

- name: Create release PR
Expand Down
Loading
Loading