Skip to content

Restructure into monorepo with cross-language client SDKs #1

Restructure into monorepo with cross-language client SDKs

Restructure into monorepo with cross-language client SDKs #1

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
# Fast "does the metadata parse" job that gates everything else.
metadata:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Validate root package.json
run: node -e "require('./package.json')"
- name: Validate plugin package.json + openclaw.plugin.json
run: |
node -e "require('./packages/plugin/package.json')"
node -e "require('./packages/plugin/openclaw.plugin.json')"
- name: Validate client-js package.json
run: node -e "require('./packages/client-js/package.json')"
- name: Validate schema package.json
run: node -e "require('./schema/package.json')"
- name: Validate fixture JSON
run: |
set -e
find fixtures -name '*.json' | while read f; do
node -e "JSON.parse(require('fs').readFileSync('$f', 'utf8'))"
done
- name: Verify plugin name matches install.npmSpec
working-directory: packages/plugin
run: |
node -e "
const pkg = require('./package.json');
const spec = pkg.openclaw?.install?.npmSpec;
if (spec !== pkg.name) {
console.error('Mismatch: name=' + pkg.name + ' vs install.npmSpec=' + spec);
process.exit(1);
}
"
- name: Verify version alignment across packages
run: node scripts/check-versions.mjs
typescript:
runs-on: ubuntu-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- uses: pnpm/action-setup@v4
with:
version: 9
- name: pnpm install
run: pnpm install --frozen-lockfile
- name: Build schema + client-js
run: pnpm --filter ./schema --filter ./packages/client-js run --if-present build
- name: Test client-js
run: pnpm --filter ./packages/client-js test
- name: Typecheck client-js
run: pnpm --filter ./packages/client-js typecheck
# Plugin typecheck has pre-existing drift against the pinned openclaw
# version (see PR description). Skipped until that's sorted in a
# follow-up; uncomment once the plugin is re-aligned with the openclaw
# plugin-sdk it targets.
# - name: Typecheck plugin
# run: pnpm --filter ./packages/plugin typecheck
kotlin:
runs-on: ubuntu-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- uses: gradle/actions/setup-gradle@v4
- name: Gradle build + test (:core, :android)
working-directory: packages/client-kotlin
run: gradle :core:build :core:test :android:build :android:test --no-daemon
swift:
runs-on: macos-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- uses: swift-actions/setup-swift@v2
with:
swift-version: "5.10"
- name: swift build
working-directory: packages/client-swift
run: swift build
- name: swift test
working-directory: packages/client-swift
run: swift test