name: Publish Canvas Agent on: push: branches: - main paths: - "canvas-agent/**" - ".github/workflows/publish-canvas-agent.yml" workflow_dispatch: permissions: contents: read concurrency: group: publish-canvas-agent cancel-in-progress: false jobs: publish: runs-on: ubuntu-latest defaults: run: working-directory: canvas-agent steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 registry-url: https://registry.npmjs.org - name: Install dependencies run: npm install --no-audit --no-fund - name: Check package version id: package run: | name=$(node -p "require('./package.json').name") version=$(node -p "require('./package.json').version") published=$(npm view "$name@$version" version 2>/dev/null || true) echo "name=$name" >> "$GITHUB_OUTPUT" echo "version=$version" >> "$GITHUB_OUTPUT" if [ -n "$published" ]; then echo "should_publish=false" >> "$GITHUB_OUTPUT" else echo "should_publish=true" >> "$GITHUB_OUTPUT" fi - name: Publish to npm if: steps.package.outputs.should_publish == 'true' run: npm publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Skip existing version if: steps.package.outputs.should_publish != 'true' run: echo "${{ steps.package.outputs.name }}@${{ steps.package.outputs.version }} already exists on npm, skipping publish."