name: Publish @mem0/openclaw-mem0 📦 to npm

# Dispatched by release.yml (Release Router) when a release tagged
# openclaw-v* is published. Can also be dispatched manually to re-publish
# a tag.
on:
  workflow_dispatch:
    inputs:
      tag:
        description: 'Release tag to build and publish (e.g. openclaw-v0.5.0)'
        required: true
        type: string
      prerelease:
        description: 'Publish under the version preid dist-tag instead of latest'
        required: false
        type: boolean
        default: false

jobs:
  build-n-publish:
    name: Build and publish @mem0/openclaw-mem0 📦 to npm
    if: startsWith(inputs.tag, 'openclaw-v')
    runs-on: ubuntu-latest
    permissions:
      id-token: write
    defaults:
      run:
        working-directory: integrations/openclaw
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ inputs.tag }}

      - name: Install pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 9

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '22'
          registry-url: 'https://registry.npmjs.org'
          cache: 'pnpm'
          cache-dependency-path: integrations/openclaw/pnpm-lock.yaml

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm build

      - name: Publish to npm
        run: |
          if [ "${{ inputs.prerelease }}" = "true" ]; then
            PREID=$(node -p "require('./package.json').version.split('-')[1].split('.')[0]")
            npx npm@latest publish --provenance --access public --tag "$PREID"
          else
            npx npm@latest publish --provenance --access public
          fi
