Repository navigation
fix(sdk): cap @github/copilot-sdk below 1.0.29 - #2416
Conversation
copilot-sdk 1.0.29 depends on vscode-jsonrpc 10, which exports ./node but not ./node.js. The CLI's ESM import patch (the #449 workaround, run by the postinstall and by `squad upgrade`) rewrites copilot-sdk's import to vscode-jsonrpc/node.js, so Squad's Copilot adapter fails to load with ERR_PACKAGE_PATH_NOT_EXPORTED. This broke test/cli-packaging-smoke.test.ts on every PR into dev and breaks fresh global npm installs. Hold the SDK at 1.0.28 (vscode-jsonrpc 8.2.1) until #2415 makes the patch conditional. Closes #2414 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
🛫 PR Readiness Check
PR Scope: 🔧 Infrastructure
|
| Status | Check | Details |
|---|---|---|
| ✅ | Single commit | 1 commit — clean history |
| ❌ | Not in draft | PR is still in draft — mark as ready for review when done |
| ✅ | Branch up to date | Up to date with dev |
| ❌ | Copilot review | No Copilot review yet — it may still be processing |
| ✅ | Changeset present | Changeset file found |
| ✅ | Scope clean | No .squad/ or docs/proposals/ files |
| ✅ | No merge conflicts | No merge conflicts |
| ✅ | Copilot threads resolved | No Copilot review threads |
| ❌ | CI passing | 3 check(s) failing: Verify exact SHA and build evidence, github-advanced-security, submit-nuget |
Files Changed (3 files, +8 −2)
| File | +/− |
|---|---|
.changeset/cap-copilot-sdk-1-0-29.md |
+6 −0 |
package-lock.json |
+1 −1 |
packages/squad-sdk/package.json |
+1 −1 |
Total: +8 −2
This check runs automatically on every push. Fix any ❌ items and push again.
See CONTRIBUTING.md and PR Requirements for details.
|
CI status before merge:
This change only touches a dependency range, so I'm merging to unblock |
There was a problem hiding this comment.
🟢 Approval recommended
The dependency cap, synchronized lockfile entry, and coordinated changesets address the incompatible SDK release, with no active review issues identified.
No open issues 🎉
What changed in this PR
This pull request caps @github/copilot-sdk below 1.0.29 to avoid the incompatible vscode-jsonrpc ESM import rewrite and adds coordinated patch releases for the SDK and CLI.
Changes:
- Restricts the SDK dependency to
>=1.0.19 <1.0.29-0. - Synchronizes the dependency specification in the workspace lockfile.
- Adds patch changesets for
@bradygaster/squad-sdkand the CLI.
| File | Description |
|---|---|
packages/squad-sdk/package.json |
Adds the temporary Copilot SDK version cap. |
package-lock.json |
Synchronizes the workspace dependency specification. |
.changeset/cap-copilot-sdk-1-0-29.md |
Documents the mitigation and patch releases for the SDK and CLI. |
This pull request is ready to be approved.
Review effort: Lite (auto)
What
Caps
@github/copilot-sdkat>=1.0.19 <1.0.29-0in@bradygaster/squad-sdk, with the matching spec inpackage-lock.json. Fresh installs then resolve copilot-sdk 1.0.28 instead of 1.0.29. Adds a patch changeset for the SDK and the CLI.Working as release-engineer (Release Engineer).
Why
copilot-sdk 1.0.29, published 2026-11-06, depends on vscode-jsonrpc 10.0.0. That version exports
./nodebut not./node.js. The CLI's ESM import patch (packages/squad-cli/scripts/patch-esm-imports.mjs, the #449 workaround for vscode-jsonrpc 8) rewrites copilot-sdk'svscode-jsonrpc/nodeimport tovscode-jsonrpc/node.js. The rewritten import fails, so Squad's Copilot adapter can't load (ERR_PACKAGE_PATH_NOT_EXPORTED).test/cli-packaging-smoke.test.tsfails 2 tests on every PR intodev, in both Squad CItestand Squad Release Verify.testis required, so nothing can merge. In this test the rewrite comes fromsquad upgrade.npm install -g @bradygaster/squad-clion npm 10/11, where the postinstall does the rewrite, and project installs aftersquad upgrade.Closes #2414
How
>=1.0.19 <1.0.29-0, npm resolves 1.0.28 (vscode-jsonrpc 8.2.1), the setup that last passed CI. The-0also excludes1.0.29-preview.N, which use vscode-jsonrpc 10, in tools that include prereleases.semverdependency.squad upgrade, thecli-entry.tshook andsquad doctor, then lifts this cap.latest(1.1.0) andpreview/insider(2.0.0-preview.3) are both affected.devafter this merges.mainwith the same cap.mainalso needs the repository metadata fix from fix(release): point package and NuGet metadata at github/squad #2408 before it can publish with provenance.Validation (on this branch; Windows, Node 27, npm 12):
node scripts/release/workspace-lockfile.mjs checknpm ci --ignore-scripts --dry-runon a scratch copy of the manifests and lockfiledev). A deliberately mismatched spec fails with "not in sync"npx vitest run test/cli-packaging-smoke.test.ts --hookTimeout=120000, with the range reverted to^1.0.19ERR_PACKAGE_PATH_NOT_EXPORTED, same as CI run 42460059168npm run lintnode scripts/release/policy-gates.mjs --mode=cinode scripts/check-changeset-drift.mjs --mode=fail@bradygaster/squad-sdk/dist/adapter/client.jsERR_PACKAGE_PATH_NOT_EXPORTEDLocal smoke-test runs needed two Windows-only workarounds, and CI runs the test unmodified:
node-ptyinstalled in the profile'snode_modulesmakes the "forced-missing node-pty" test start a real Copilot.--hookTimeout=120000gives the cleanup step enough time on Windows.npx changeset add/.changeset/*.md, directCHANGELOG.mdentry for maintainers, orskip-changeloglabel for no user-facing changes)PR Readiness Checklist
Branch & Commit
dev(notmain)dev(git fetch upstream && git rebase upstream/dev)git diff --cached --stat)Build & Test
npm run buildpasses: the smoke test builds both the SDK and the CLI; this change is a dependency range onlynpm testpasses (all tests green): the targeted suite above; the full suite runs in CInpm run lintpasses (type check clean)npm run lint:eslintpasses: not run, no source files changedChangeset
npx changeset add(ifpackages/squad-sdk/src/orpackages/squad-cli/src/changed):.changeset/cap-copilot-sdk-1-0-29.mdCHANGELOG.mdentry (maintainers only — write-protected for external contributors)skip-changeloglabel applied (if no user-facing changes)Docs
Exports
Breaking Changes
None. Consumers that already resolved copilot-sdk 1.0.29 get 1.0.28 on their next install. The repo develops and tests against 1.0.19 (the lockfile version), so nothing depends on 1.0.29.
Waivers
None.