name: VS Code extension package # Gates the op-vscode extension (typecheck + unit tests + esbuild bundle) and # packages a platform-neutral .vsix artifact on every change. The daemon # binary + wasm bundle are NOT embedded yet (the extension probes # /target/debug/op-host-web-server or `openpencil.dev.daemonPath`); # per-platform vsix bundling lands with the packaging plan (Plan 3). on: push: branches: ['**'] tags: ['v*'] paths: - 'packages/op-vscode/**' # op-vscode is a member of the packages/ Bun workspace: its # dependency graph is locked at the WORKSPACE root, so a root # package.json / bun.lock bump changes this extension's deps # without touching packages/op-vscode/**. - 'packages/package.json' - 'packages/bun.lock' # build.mjs extracts the bundled AI skill from the CLI's asset. - 'crates/op-cli/assets/skill-bundle.json' - '.github/workflows/vscode-extension.yml' pull_request: paths: - 'packages/op-vscode/**' - 'packages/package.json' - 'packages/bun.lock' - 'crates/op-cli/assets/skill-bundle.json' - '.github/workflows/vscode-extension.yml' jobs: package: name: Check and package .vsix runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies (workspace root — bun.lock lives there) working-directory: packages run: bun install --frozen-lockfile - name: Type check working-directory: packages/op-vscode run: bunx tsc -p tsconfig.json --noEmit - name: Unit tests working-directory: packages/op-vscode run: bun test src - name: Build extension bundle working-directory: packages/op-vscode run: node build.mjs - name: Stage packaging metadata working-directory: packages/op-vscode # vsce wants a LICENSE next to package.json; the repo root carries it. run: cp ../../LICENSE LICENSE - name: Package .vsix working-directory: packages/op-vscode run: | version="$(node -p "require('./package.json').version")" bunx @vscode/vsce package --no-dependencies --allow-missing-repository \ --out "openpencil-vscode-${version}.vsix" ls -la ./*.vsix - name: Upload .vsix artifact uses: actions/upload-artifact@v4 with: name: openpencil-vscode-vsix path: packages/op-vscode/*.vsix if-no-files-found: error retention-days: 30