Skip to content

fix(ci): unblock release pipeline and auto-sync plugin code pins#101

Merged
amondnet merged 3 commits into
mainfrom
fix/lsp-multiplex-release-pipeline
Jul 1, 2026
Merged

fix(ci): unblock release pipeline and auto-sync plugin code pins#101
amondnet merged 3 commits into
mainfrom
fix/lsp-multiplex-release-pipeline

Conversation

@amondnet

@amondnet amondnet commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Releases were blocked and the code-intelligence-lsp plugin was crashing at runtime. This PR fixes both.

Root cause: the code-intelligence-lsp plugin installs @pleaseai/code from npm and runs code lsp-multiplex, but the pinned @pleaseai/code@0.1.13 predates that command (added in PR #100, still unreleased), so the LSP server crashed with Unknown command: lsp-multiplex. Releases were blocked because the Release Please workflow's create-github-app-token step had no App credentials configured (Input required and not supplied: app-id).

Changes

  • ci: .github/workflows/release-please.yml — upgrade create-github-app-token v1→v3 and switch to the recommended client-id input (+ private-key), using variable RELEASE_GITHUB_APP_CLIENT_ID (client id is public) and secret RELEASE_GITHUB_APP_PRIVATE_KEY.
  • release: release-please-config.json — auto-bump every LSP plugin's @pleaseai/code pin to the code version on each packages/code release via extra-files json updaters (jsonpath: $.dependencies['@pleaseai/code']); pins were previously manual and never auto-synced.
  • plugins: plugins/code-intelligence-lsp/package.json — bump the @pleaseai/code pin 0.1.130.1.14 (the release that ships lsp-multiplex).

Required manual step (after merge)

Two GitHub repo/org credentials must be set for the Release Please workflow to run:

  • RELEASE_GITHUB_APP_CLIENT_ID — a repo/org Variable (client id is a public identifier, not a secret); value = the GitHub App's Client ID
  • RELEASE_GITHUB_APP_PRIVATE_KEY — a repo/org Secret; value = the GitHub App's private key (.pem contents)

The legacy PF_BOT_APP_ID secret is no longer needed — client-id supersedes app-id.

Also note: @pleaseai/code@0.1.14 must be published (via the resulting Release Please PR) before code-intelligence-lsp actually works end-to-end; the plugin pin bump and the npm publish of @pleaseai/code@0.1.14 land together in that release PR.

Test Plan

  • Confirm variable RELEASE_GITHUB_APP_CLIENT_ID and secret RELEASE_GITHUB_APP_PRIVATE_KEY are set in repo/org settings
  • Confirm Release Please workflow runs successfully (App token step succeeds)
  • Confirm the next Release Please PR bumps code-intelligence-lsp's @pleaseai/code pin automatically
  • After @pleaseai/code@0.1.14 publishes, confirm code-intelligence-lsp plugin's lsp-multiplex command works without crashing

Summary by cubic

Unblocks the release pipeline and fixes the code-intelligence-lsp crash by upgrading the GitHub App token step and bumping @pleaseai/code to 0.1.14. Also auto-syncs all LSP plugins’ @pleaseai/code pins on each packages/code release.

  • Bug Fixes

    • CI: upgrade actions/create-github-app-token to v3; use vars.RELEASE_GITHUB_APP_CLIENT_ID + secrets.RELEASE_GITHUB_APP_PRIVATE_KEY.
    • Plugins: bump @pleaseai/code in plugins/code-intelligence-lsp from 0.1.13 to 0.1.14 (adds lsp-multiplex).
    • Release: add extra-files updaters so every LSP plugin’s @pleaseai/code pin tracks packages/code releases.
  • Migration

    • Set repo/org variable RELEASE_GITHUB_APP_CLIENT_ID and secret RELEASE_GITHUB_APP_PRIVATE_KEY.
    • PF_BOT_APP_ID is no longer used.
    • After @pleaseai/code@0.1.14 publishes, code-intelligence-lsp will run lsp-multiplex without crashing.

Written for commit eea9744. Summary will update on new commits.

Summary by CodeRabbit

  • Chores
    • Updated release automation to use the latest GitHub App token generation action and refreshed related variable/secret names.
    • Expanded release dependency tracking to include additional plugin package manifests for shared code updates.
    • Bumped the shared code dependency in the code intelligence LSP plugin to the latest patch version.

The code-intelligence-lsp plugin runs `code lsp-multiplex`, but the pinned
@pleaseai/code@0.1.13 predates that command (added in #100, unreleased), so
the LSP server crashed with "Unknown command: lsp-multiplex". Releases were
blocked because create-github-app-token had no app credentials.

- ci: upgrade create-github-app-token v1 -> v3 and use client-id (recommended
  input; requires secrets CLIENT_ID and PRIVATE_KEY)
- release: auto-bump every plugin's @pleaseai/code pin to the code version on
  each packages/code release via extra-files json updaters (pins were manual)
- plugins: bump code-intelligence-lsp pin to 0.1.14 (the release that ships
  lsp-multiplex)
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Updates the release-please workflow token step, bumps the @pleaseai/code plugin dependency, and adds release-please tracking for that dependency across plugin package files.

Changes

Release Please Config and Workflow

Layer / File(s) Summary
Release-please workflow token update
.github/workflows/release-please.yml
Switches the app-token step from actions/create-github-app-token@v1 to @v3, replacing app-id/private-key inputs sourced from PF_BOT_APP_ID/PF_BOT_PRIVATE_KEY with client-id/private-key from RELEASE_GITHUB_APP_CLIENT_ID/RELEASE_GITHUB_APP_PRIVATE_KEY.
Dependency version bump and tracking config
plugins/code-intelligence-lsp/package.json, release-please-config.json
Bumps @pleaseai/code from 0.1.13 to 0.1.14, and adds an extra-files array in packages.code listing plugin package.json paths with JSONPath $.dependencies['@pleaseai/code'] for tracking.

Estimated code review effort: 1 (Trivial) | ~5 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the CI fix and the plugin code pin sync changes in this PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/lsp-multiplex-release-pipeline

Comment @coderabbitai help to get the list of available commands.

@gemini-code-assist

Copy link
Copy Markdown

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

@greptile-apps

greptile-apps Bot commented Jul 1, 2026

Copy link
Copy Markdown

Greptile Summary

This PR fixes two independent problems: a blocked Release Please pipeline (missing GitHub App credentials) and a crashing code-intelligence-lsp plugin (stale @pleaseai/code pin that predated the lsp-multiplex command). It also adds automation to keep all plugin pins in sync on future packages/code releases.

  • CI: create-github-app-token upgraded v1→v3, switching from the legacy numeric app-id secret to the recommended client-id variable and a scoped private-key secret.
  • Config: release-please-config.json gains extra-files JSON updaters for all 14 plugin package.json files that depend on @pleaseai/code.
  • Plugin: plugins/code-intelligence-lsp/package.json bumps @pleaseai/code from 0.1.130.1.14.

Confidence Score: 5/5

Safe to merge — all three changes are targeted, self-contained fixes with no side-effects on other workflows or packages.

The workflow change correctly adopts the recommended client-id + private-key inputs, uses properly scoped names, and stores only the private key as a secret. The extra-files list covers exactly the 14 plugins that depend on @pleaseai/code. No logic errors or missing guards were found.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/release-please.yml Upgrades create-github-app-token v1 to v3, switches from numeric app-id secret to recommended client-id variable and scoped private-key secret; unblocks the blocked release pipeline.
plugins/code-intelligence-lsp/package.json Bumps @pleaseai/code pin from 0.1.13 to 0.1.14, which is the release that ships the lsp-multiplex command required by the plugin.
release-please-config.json Adds extra-files JSON updaters to the packages/code release entry, covering all 14 plugin package.json files that depend on @pleaseai/code; no plugins are missing from the list.

Reviews (3): Last reviewed commit: "fix(ci): match app-token vars to provisi..." | Re-trigger Greptile

Comment thread .github/workflows/release-please.yml Outdated
Comment thread .github/workflows/release-please.yml Outdated
@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.github/workflows/release-please.yml (1)

36-41: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Consider scoping the app token's permissions.

zizmor flags that this step "inherits blanket installation permissions" since no permission-* inputs are set. Since this token is only used to drive googleapis/release-please-action, consider adding explicit permission-contents: write / permission-pull-requests: write (or whatever the action actually needs) to reduce blast radius if the token/step is ever compromised or misused.

🔒 Example of scoping permissions
       - uses: actions/create-github-app-token@v3
         id: app-token
         with:
           # client-id is the recommended input (supersedes the legacy app-id).
           client-id: ${{ secrets.CLIENT_ID }}
           private-key: ${{ secrets.PRIVATE_KEY }}
+          permission-contents: write
+          permission-pull-requests: write
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release-please.yml around lines 36 - 41, The app token
generated in the `actions/create-github-app-token@v3` step is currently unscoped
and inherits blanket installation permissions. Update the `app-token` step to
set explicit `permission-*` inputs for only what
`googleapis/release-please-action` needs, such as `permission-contents` and
`permission-pull-requests`, so the token is least-privileged. Keep the change
localized to the `release-please` workflow step that configures `client-id` and
`private-key`.

Source: Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/release-please.yml:
- Around line 36-41: The app token generated in the
`actions/create-github-app-token@v3` step is currently unscoped and inherits
blanket installation permissions. Update the `app-token` step to set explicit
`permission-*` inputs for only what `googleapis/release-please-action` needs,
such as `permission-contents` and `permission-pull-requests`, so the token is
least-privileged. Keep the change localized to the `release-please` workflow
step that configures `client-id` and `private-key`.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7f7d4176-502f-4742-880e-1b9e6a51227b

📥 Commits

Reviewing files that changed from the base of the PR and between 95a84ac and 2ea8a77.

📒 Files selected for processing (3)
  • .github/workflows/release-please.yml
  • plugins/code-intelligence-lsp/package.json
  • release-please-config.json

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 3 files

Architecture diagram
sequenceDiagram
    participant GHWorkflow as GitHub Actions Workflow
    participant GHAppAPI as GitHub App Token API
    participant ReleasePlease as Release Please Action
    participant Config as release-please-config.json
    participant PluginPkg as Plugin package.json files
    participant NPM as npm Registry
    participant LSPPlugin as code-intelligence-lsp Runtime

    Note over GHWorkflow,LSPPlugin: CHANGED: Release pipeline now uses client-id/private-key and extra-files updaters

    GHWorkflow->>GHWorkflow: Trigger (push to main / release branch)
    GHWorkflow->>GHAppAPI: CHANGED: create-github-app-token v3 with client-id + private-key
    Note over GHWorkflow,GHAppAPI: Secrets CLIENT_ID and PRIVATE_KEY required
    GHAppAPI-->>GHWorkflow: GitHub App installation token
    GHWorkflow->>ReleasePlease: Run release-please-action with token
    ReleasePlease->>Config: Read extra-files updaters for @pleaseai/code
    Note over ReleasePlease,Config: NEW: extra-files bumps all LSP plugin pins on each code release
    loop For each plugin package.json (clangd, csharp, dart, etc.)
        ReleasePlease->>PluginPkg: Update $.dependencies['@pleaseai/code'] to new version
        PluginPkg-->>ReleasePlease: JSON updated
    end
    alt Release is created
        ReleasePlease->>NPM: Publish @pleaseai/code@newVersion
        NPM-->>ReleasePlease: Published
    end
    Note over LSPPlugin: After release, LSP plugin installs @pleaseai/code@newVersion
    LSPPlugin->>LSPPlugin: Run code lsp-multiplex (no crash)
Loading

Re-trigger cubic

Comment thread .github/workflows/release-please.yml Outdated
@amondnet
amondnet merged commit 8af00cc into main Jul 1, 2026
9 checks passed
@amondnet
amondnet deleted the fix/lsp-multiplex-release-pipeline branch July 1, 2026 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant