Repository navigation
chore(deps): update all non-major dependencies (main) - #4268
renovate[bot] wants to merge 1 commit into
Conversation
|
View your CI Pipeline Execution ↗ for commit b678039
💡 Dealing with memory or CPU issues? See memory and CPU details with the resource usage add-on ↗. ☁️ Nx Cloud last updated this comment at |
Codecov Report✅ All modified and coverable lines are covered by tests. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
67924bc to
9cf632a
Compare
9cf632a to
c3bebff
Compare
c3bebff to
8005984
Compare
8005984 to
54d7516
Compare
54d7516 to
21c34b0
Compare
21c34b0 to
90d9ead
Compare
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We believe these changes will fix the lint failure. The @types/chrome bump to ^0.3.0 reworked chrome.devtools.inspectedWindow.eval's overloads, and because EvalOptions has only optional properties, our existing two-argument callback call was structurally matching the Promise-returning overload instead of the callback overload, so ESLint flagged an unhandled floating promise. Passing undefined explicitly for the options argument forces TypeScript to resolve the callback overload, and widening updateSelectedComponentInfo's signature to accept the new exceptionInfo parameter keeps the callback type-compatible with that overload's stricter tuple signature.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..7727fb9ff 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -152,12 +152,13 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
+ undefined,
this.updateSelectedComponentInfoCallback
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally VVoq-7Rji
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
List of reported errors
|
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the chrome.devtools.inspectedWindow.eval callback in app.ts to match the new signature introduced by the @types/chrome bump (^0.1.0 → ^0.3.0), which now types the callback as a rest-parameter tuple (...args: [result, exceptionInfo]) instead of a single optional argument. This fixes the TS2769 build failure by passing an inline two-parameter arrow function so TypeScript can correctly resolve the overload, instead of a pre-bound single-argument callback reference.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..48679883a 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info, _exceptionInfo) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally cOEl-3YxR
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the chrome.devtools.inspectedWindow.eval call in app.ts so it will fix the build-components compile failure introduced by the @types/chrome bump (^0.1.0 → ^0.3.0). The new type definitions changed the callback signature to a two-element rest-tuple (result/exceptionInfo), which the previously bound single-argument callback no longer satisfied. Passing an inline two-parameter arrow function lets TypeScript contextually infer the matching overload, resolving the TS2769 error without changing runtime behavior.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..48679883a 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info, _exceptionInfo) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally pYRb-FWIv
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We've updated the updateSelectedComponentInfo callback signature to fix the chrome-devtools:build-components compile failure. The @types/chrome bump in this PR (^0.1.0 → ^0.3.0) changed chrome.devtools.inspectedWindow.eval's callback type to a two-element tuple (result, exceptionInfo), which the existing single-parameter callback no longer satisfied (TS2769). Adding the optional exceptionInfo parameter aligns the callback with the new typings and resolves the overload mismatch without altering runtime behavior.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally lrDf-5uJs
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the lint failure by marking the chrome.devtools.inspectedWindow.eval call with the void operator. After the @types/chrome bump to ^0.3.0, that call most likely returns a Promise, which @typescript-eslint/no-floating-promises flags. The result is already handled through the callback, so the promise is now explicitly ignored. ESLint on the changed file passes locally.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..f320cfbdd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -148,7 +148,7 @@ export class App {
private requestSelectedComponentInfo() {
/* eslint-disable @typescript-eslint/restrict-template-expressions -- we want to print the content of the functions */
- chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
+ void chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally 2rWs-RBPe
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the build error by updating our updateSelectedComponentInfo callback to accept the second exceptionInfo argument. The @types/chrome 0.3 bump changed the inspectedWindow.eval callback to a (result, exceptionInfo) tuple, and our one-argument callback no longer matched it. With the extra optional parameter the call type-checks again and the callback behaves as before.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..b2b400739 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: unknown) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally lhig-e4my
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the TS2769 build error in chrome-devtools:build-components by changing the callback signature. The @types/chrome upgrade to ^0.3.0 now types the inspectedWindow.eval callback as (result, exceptionInfo), so our single-parameter callback no longer matched any overload. Our callback now also accepts the optional exceptionInfo argument, so it matches the new typings without loosening type safety.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..9c2c0a797 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(...[info]: [info?: OtterLikeComponentInfo, exceptionInfo?: unknown]) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally x7ce-VXaE
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
Our @types/chrome upgrade (0.1 → 0.3) most likely changed chrome.devtools.inspectedWindow.eval to return a Promise, which @typescript-eslint/no-floating-promises now flags. We fixed it by prefixing the call with void, which marks the promise as intentionally ignored. This should clear the lint error in chrome-devtools:lint:ci.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..f320cfbdd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -148,7 +148,7 @@ export class App {
private requestSelectedComponentInfo() {
/* eslint-disable @typescript-eslint/restrict-template-expressions -- we want to print the content of the functions */
- chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
+ void chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally II50-RinF
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We bumped @types/chrome from 0.1 to 0.3, which changed the chrome.devtools.inspectedWindow.eval callback to receive (result, exceptionInfo) tuples, so our one-argument callback no longer matched any overload (TS2769). With these changes, updateSelectedComponentInfo also accepts the optional exceptionInfo argument, so it matches the new callback signature and chrome-devtools:build-components should compile again.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally Tlhc-udgF
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We bumped @types/chrome to 0.3, which now types the chrome.devtools.inspectedWindow.eval callback as (result, exceptionInfo) tuple args, so our one-parameter callback no longer type-checked. With this change, updateSelectedComponentInfo accepts an optional second exceptionInfo parameter, so it matches the new signature and chrome-devtools:build-components should compile again.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally ThlY-eNOw
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the callback passed to chrome.devtools.inspectedWindow.eval so it matches the @types/chrome 0.3 callback signature, which also passes the exception info as a second argument. Our old one-argument callback matched no overload, so TypeScript fell back to the Promise overload and no-floating-promises flagged the call. With the matching signature the callback overload is selected and the lint error goes away.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally EKea-93I9
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We bumped @types/chrome to ^0.3.0, whose inspectedWindow.eval callback is now typed as (result, exceptionInfo) => void. That made our pre-bound updateSelectedComponentInfo callback fail with TS2769. Wrapping it in an arrow function (info) => this.updateSelectedComponentInfo(info) matches the new overload and should fix the build-components error.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..018bd7a2f 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info, exceptionInfo) => this.updateSelectedComponentInfo(exceptionInfo ? undefined : info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally LdtS-BhM3
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the chrome-devtools:build-components failure caused by the @types/chrome upgrade to 0.3.x. The inspectedWindow.eval callback is now typed with (result, exceptionInfo) tuple arguments, so we updated updateSelectedComponentInfo to accept the optional second exceptionInfo parameter. This makes the bound callback assignable again, with no loosening of types.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally NH4Q-VhWJ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We bumped @types/chrome to 0.3, which types the chrome.devtools.inspectedWindow.eval callback as (result, exceptionInfo). Our one-argument bound callback no longer matched, which caused the TS2769 build error. With this change the callback accepts the new two-element argument list and still forwards only result, so chrome-devtools:build-components should compile again.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..80c2053ce 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,7 +115,7 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
+ private readonly updateSelectedComponentInfoCallback = (...[info]: [result: OtterLikeComponentInfo | undefined, exceptionInfo?: unknown]) => this.updateSelectedComponentInfo(info);
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally 7cth-THZ5
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the lint failure by marking the chrome.devtools.inspectedWindow.eval call as intentionally ignored with void. The @types/chrome upgrade means the call is now flagged by @typescript-eslint/no-floating-promises, and the existing callback still handles the result. yarn nx lint chrome-devtools now passes with 0 errors.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..f320cfbdd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -148,7 +148,7 @@ export class App {
private requestSelectedComponentInfo() {
/* eslint-disable @typescript-eslint/restrict-template-expressions -- we want to print the content of the functions */
- chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
+ void chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally QZyq-RBa6
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We're fixing the TS2769 error in chrome-devtools:build-components with these changes. The @types/chrome 0.3 bump types the inspectedWindow.eval callback with (result, exceptionInfo) arguments, which the old single-parameter bound callback didn't match. Our inline lambda lets TypeScript infer the new argument types and forwards only the result.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..b5ab967fd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (...[info]) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally ucjZ-gUvq
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the build by passing an inline arrow function to chrome.devtools.inspectedWindow.eval, instead of the pre-bound method reference. The new @types/chrome 0.3 typings declare the callback as a (result, exceptionInfo) tuple union, and our explicitly typed (info?) callback was not assignable to it. With the inline arrow, TypeScript infers the parameter types from the new signature, so the TS2769 error goes away.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..48679883a 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info, _exceptionInfo) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally B0lA-T3Pu
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed our build by widening the updateSelectedComponentInfo callback in the chrome-devtools app so it also accepts the exceptionInfo argument. The updated @types/chrome typings now call the inspectedWindow.eval callback with (result, exceptionInfo), which our one-parameter handler no longer matched. With this change the TS2769 error is gone, and build-components for chrome-devtools now completes successfully.
Tip
✅ We verified this fix by re-running chrome-devtools:build-components.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally N0CL-2hTZ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed both compile failures caused by the dependency bumps. In ama-mcp-core, our registerPrompt override now declares the same overloads as McpServer 2.3 (without argsSchema, and with a Standard Schema argsSchema). In chrome-devtools, updateSelectedComponentInfo now accepts the extra exceptionInfo argument that the new @types/chrome passes to the inspectedWindow.eval callback. ama-mcp-core:compile and chrome-devtools:build-components now succeed locally, and lint passes for both projects.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..b2b400739 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: unknown) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..1e9ce860b 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -44,12 +47,32 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
+ public override registerPrompt(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: undefined; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback
+ ): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: Args; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback<Args>
+ ): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: Args; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback | PromptCallback<Args>
+ ): RegisteredPrompt {
const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
let error;
try {
- return super.registerPrompt(name, config, callback);
+ // Cast is required because the overload typing on MCP SDK is not correct
+ return super.registerPrompt(name, config as any, callback as any);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally ZBJd-IvE3
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We adapted our code to the typings introduced by the dependency bumps in this PR. AmaMcpServer.registerPrompt now declares explicit overloads matching the MCP SDK 2.3 prompt callback types, and the chrome-devtools eval callback accepts the new (result, exceptionInfo) arguments from @types/chrome 0.3. This resolves the TS2416 error in ama-mcp-core:compile and the TS2769 error in chrome-devtools:build-components.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..4a38253f0 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -33,6 +36,15 @@ const sendMetricsIfAuthorized = async (...args: Parameters<typeof sendGenAIEvent
return sendGenAIEventMetricsIfAuthorized(...args);
};
+type PromptConfig<Args extends StandardSchemaWithJSON | undefined = undefined> = {
+ title?: string;
+ description?: string;
+ argsSchema?: Args;
+ icons?: Icon[];
+ scopeChallenge?: ScopeChallengeHandler;
+ _meta?: Record<string, unknown>;
+};
+
/**
* MCP server with telemetry support
*/
@@ -44,12 +56,23 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
- const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
+ public override registerPrompt(name: string, config: PromptConfig, promptCallback: PromptCallback): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args>, promptCallback: PromptCallback<Args>): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(
+ name: string,
+ config: PromptConfig<Args | undefined>,
+ promptCallback: PromptCallback<Args> | PromptCallback
+ ): RegisteredPrompt {
+ const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger }) as PromptCallback<Args>;
let error;
try {
- return super.registerPrompt(name, config, callback);
+ return super.registerPrompt(name, config as PromptConfig<Args>, callback);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally Eqgm-39qJ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated our code to match the new typings that came in with this dependency bump. Our registerPrompt override now declares the same overloads as McpServer in @modelcontextprotocol/server 2.3.1. Our devtools eval callback now accepts the (result, exceptionInfo) arguments from @types/chrome 0.3. This should fix both TypeScript compile errors.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..b2b400739 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: unknown) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..1da56a003 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -33,6 +36,18 @@ const sendMetricsIfAuthorized = async (...args: Parameters<typeof sendGenAIEvent
return sendGenAIEventMetricsIfAuthorized(...args);
};
+/**
+ * Configuration of a prompt registration
+ */
+type PromptConfig<Args extends StandardSchemaWithJSON | undefined> = {
+ title?: string;
+ description?: string;
+ argsSchema?: Args;
+ icons?: Icon[];
+ scopeChallenge?: ScopeChallengeHandler;
+ _meta?: Record<string, unknown>;
+};
+
/**
* MCP server with telemetry support
*/
@@ -44,12 +59,19 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
+ public override registerPrompt(name: string, config: PromptConfig<undefined>, promptCallback: PromptCallback): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args>, promptCallback: PromptCallback<Args>): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args | undefined>, promptCallback: PromptCallback<Args> | PromptCallback): RegisteredPrompt {
const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
let error;
try {
- return super.registerPrompt(name, config, callback);
+ return super.registerPrompt(name, config as PromptConfig<Args>, callback as PromptCallback<Args>);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally d40E-xdL8
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
Our dependency bumps changed two typings: McpServer.registerPrompt now has overloads with a ServerContext callback parameter, and chrome.devtools.inspectedWindow.eval callbacks now receive (result, exceptionInfo). We fix this by giving AmaMcpServer.registerPrompt explicit overloads that match the SDK, and by accepting the new optional exception argument in the devtools callback. Both ama-mcp-core:compile and chrome-devtools:build-components now pass.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..9ed9a60a2 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -22,6 +25,16 @@ import type {
Logger,
} from '../logger';
+/** Configuration of a prompt registered on the MCP server */
+type PromptConfig<Args extends StandardSchemaWithJSON | undefined> = {
+ title?: string;
+ description?: string;
+ argsSchema?: Args;
+ icons?: Icon[];
+ scopeChallenge?: ScopeChallengeHandler;
+ _meta?: Record<string, unknown>;
+};
+
const createCallback = <T extends (...args: any[]) => any>(...args: Parameters<typeof createGenAICallbackWithMetrics>) => async (...callbackArgs: Parameters<T>) => {
const { createGenAICallbackWithMetrics } = await import('@o3r/telemetry');
const wrappedCallback = createGenAICallbackWithMetrics(...args);
@@ -44,12 +57,20 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
- const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
+ public override registerPrompt(name: string, config: PromptConfig<undefined>, promptCallback: PromptCallback): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args>, promptCallback: PromptCallback<Args>): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON | undefined>(name: string, config: PromptConfig<Args>, promptCallback: PromptCallback<Args>): RegisteredPrompt {
+ const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger }) as PromptCallback<Args>;
let error;
try {
- return super.registerPrompt(name, config, callback);
+ // Cast is required because the overload typing on MCP SDK does not accept a union of overload arguments
+ return super.registerPrompt(name, config as PromptConfig<StandardSchemaWithJSON>, callback as PromptCallback<StandardSchemaWithJSON>);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally 9UMS-DJCV
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the two compile failures introduced by the dependency bumps. AmaMcpServer.registerPrompt now uses an explicit generic signature compatible with @modelcontextprotocol/server 2.3, and the chrome-devtools eval callback now accepts the (result, exceptionInfo) arguments required by @types/chrome 0.3. Both ama-mcp-core:compile and chrome-devtools:build-components now succeed locally.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..45cb58f45 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -44,12 +47,16 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
- const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
+ public override registerPrompt<Args extends StandardSchemaWithJSON | undefined = undefined>(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: Args; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback<Args>
+ ): RegisteredPrompt {
+ const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger }) as PromptCallback<Args>;
let error;
try {
- return super.registerPrompt(name, config, callback);
+ // Cast is required because the overload typing on MCP SDK does not accept an optional schema generic
+ return super.registerPrompt(name, config as any, callback as any);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally w7Nd-YxMi
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated AmaMcpServer.registerPrompt and the chrome-devtools inspectedWindow.eval callback so they match the new typings from @modelcontextprotocol/server 2.3.x and @types/chrome 0.3.x. With these changes, ama-mcp-core:compile and chrome-devtools:build-components should compile again.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..48679883a 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info, _exceptionInfo) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..dddde469e 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -33,6 +36,8 @@ const sendMetricsIfAuthorized = async (...args: Parameters<typeof sendGenAIEvent
return sendGenAIEventMetricsIfAuthorized(...args);
};
+type PromptConfig = { title?: string; description?: string; argsSchema?: StandardSchemaWithJSON; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> };
+
/**
* MCP server with telemetry support
*/
@@ -44,12 +49,16 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
- const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
+ public override registerPrompt<Args extends StandardSchemaWithJSON | undefined = undefined>(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: Args; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback<Args>
+ ): RegisteredPrompt {
+ const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger }) as PromptCallback<Args>;
let error;
try {
- return super.registerPrompt(name, config, callback);
+ // Cast is required because the generic `Args` cannot be narrowed to a single SDK overload
+ return super.registerPrompt(name, config as PromptConfig, callback as PromptCallback<StandardSchemaWithJSON>);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally E5gs-l8jy
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the lint failure by marking the chrome.devtools.inspectedWindow.eval(...) call with the void operator. The @types/chrome upgrade most likely made eval return a Promise, which @typescript-eslint/no-floating-promises now flags. Results are still delivered through the existing callback, so behavior is unchanged. ESLint on the changed file now passes with no errors.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..f320cfbdd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -148,7 +148,7 @@ export class App {
private requestSelectedComponentInfo() {
/* eslint-disable @typescript-eslint/restrict-template-expressions -- we want to print the content of the functions */
- chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
+ void chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally 2cYc-Q3eV
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the code to match the new typings from the dependency bumps. In ama-mcp-core, registerPrompt now has an explicit generic signature, as registerTool already does, instead of using Parameters<> on an overloaded method. In chrome-devtools, the inspectedWindow.eval callback now accepts the (result, exceptionInfo) arguments that the new @types/chrome expects. Together these should fix both compile errors.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..27f94d721 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -157,7 +157,7 @@ export class App {
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
- private updateSelectedComponentInfo(info?: OtterLikeComponentInfo) {
+ private updateSelectedComponentInfo(info?: OtterLikeComponentInfo, _exceptionInfo?: chrome.devtools.inspectedWindow.EvaluationExceptionInfo) {
this.selectedComponentInfo.next(info);
this.cd.detectChanges();
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..0689fa788 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -44,12 +47,16 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
- const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
+ // TODO: revert to `...args: Parameters<typeof McpServer.prototype.registerPrompt>` once the LegacyPromptCallback overload is removed from the SDK
+ public override registerPrompt<Args extends StandardSchemaWithJSON | undefined = undefined>(
+ name: string,
+ config: { title?: string; description?: string; argsSchema?: Args; icons?: Icon[]; scopeChallenge?: ScopeChallengeHandler; _meta?: Record<string, unknown> },
+ promptCallback: PromptCallback<Args>
+ ): RegisteredPrompt {
+ const callback = createCallback(promptCallback as (...args: any[]) => any, name, 'promptCall', { logger: this.logger }) as PromptCallback<Args>;
let error;
try {
- return super.registerPrompt(name, config, callback);
+ return super.registerPrompt(name, config as any, callback as any);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally iPEX-yBZQ
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We fixed the lint failure by prefixing the chrome.devtools.inspectedWindow.eval call with the void operator. The @types/chrome bump to ^0.3.0 most likely makes eval return a Promise even when a callback is passed, so the existing call was flagged by @typescript-eslint/no-floating-promises. The callback still handles the result, so behavior is unchanged and the lint error is resolved.
Tip
✅ We verified this fix by re-running chrome-devtools:lint:ci.
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..f320cfbdd 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -148,7 +148,7 @@ export class App {
private requestSelectedComponentInfo() {
/* eslint-disable @typescript-eslint/restrict-template-expressions -- we want to print the content of the functions */
- chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
+ void chrome.devtools.inspectedWindow.eval<OtterLikeComponentInfo | undefined>(
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally 9kWr-RrNp
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated our code so it compiles against the bumped dependencies. AmaMcpServer.registerPrompt now declares explicit overloads that mirror @modelcontextprotocol/server 2.3.1, and the chrome-devtools inspectedWindow.eval callback now matches the (result, exceptionInfo) signature from @types/chrome 0.3. This should fix both the ama-mcp-core:compile and chrome-devtools:build-components errors.
Tip
✅ We verified this fix by re-running ama-mcp-core:compile.
Suggested Fix changes
diff --git a/apps/chrome-devtools/src/app-components/app.ts b/apps/chrome-devtools/src/app-components/app.ts
index 2e256df01..71691c863 100644
--- a/apps/chrome-devtools/src/app-components/app.ts
+++ b/apps/chrome-devtools/src/app-components/app.ts
@@ -115,8 +115,6 @@ export class App {
private readonly selectedComponentInfo = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);
- private readonly updateSelectedComponentInfoCallback = this.updateSelectedComponentInfo.bind(this);
-
public selectedComponentInfo$ = this.selectedComponentInfo.asObservable();
constructor() {
@@ -152,7 +150,7 @@ export class App {
`function getTranslations(node){ return (${getTranslationsRec})(node, getTranslations); } `
+ `function getAnalyticEvents(node){ return (${getAnalyticEventsRec})(node, getAnalyticEvents); } `
+ `(${getSelectedComponentInfo})(getTranslations, getAnalyticEvents);`,
- this.updateSelectedComponentInfoCallback
+ (info: OtterLikeComponentInfo | undefined, _exceptionInfo?: unknown) => this.updateSelectedComponentInfo(info)
);
/* eslint-enable @typescript-eslint/restrict-template-expressions */
}
diff --git a/packages/@ama-mcp/core/src/server/index.ts b/packages/@ama-mcp/core/src/server/index.ts
index 06acf55be..7f5a403bf 100644
--- a/packages/@ama-mcp/core/src/server/index.ts
+++ b/packages/@ama-mcp/core/src/server/index.ts
@@ -2,13 +2,16 @@ import {
type Icon,
type Implementation,
McpServer,
+ type PromptCallback,
type ReadResourceCallback,
type ReadResourceTemplateCallback,
+ type RegisteredPrompt,
type RegisteredResource,
type RegisteredResourceTemplate,
type RegisteredTool,
type ResourceMetadata,
type ResourceTemplate,
+ type ScopeChallengeHandler,
type ServerOptions,
type StandardSchemaWithJSON,
type ToolAnnotations,
@@ -22,6 +25,15 @@ import type {
Logger,
} from '../logger';
+type PromptConfig<Args extends StandardSchemaWithJSON | undefined> = {
+ title?: string;
+ description?: string;
+ argsSchema?: Args;
+ icons?: Icon[];
+ scopeChallenge?: ScopeChallengeHandler;
+ _meta?: Record<string, unknown>;
+};
+
const createCallback = <T extends (...args: any[]) => any>(...args: Parameters<typeof createGenAICallbackWithMetrics>) => async (...callbackArgs: Parameters<T>) => {
const { createGenAICallbackWithMetrics } = await import('@o3r/telemetry');
const wrappedCallback = createGenAICallbackWithMetrics(...args);
@@ -44,12 +56,19 @@ export class AmaMcpServer extends McpServer {
/**
* @inheritdoc
*/
- public override registerPrompt(...args: Parameters<typeof McpServer.prototype.registerPrompt>) {
- const [name, config, promptCallback] = args;
+ public override registerPrompt(name: string, config: PromptConfig<undefined>, cb: PromptCallback): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args>, cb: PromptCallback<Args>): RegisteredPrompt;
+ /**
+ * @inheritdoc
+ */
+ public override registerPrompt<Args extends StandardSchemaWithJSON>(name: string, config: PromptConfig<Args | undefined>, promptCallback: PromptCallback<Args> | PromptCallback): RegisteredPrompt {
const callback = createCallback(promptCallback, name, 'promptCall', { logger: this.logger });
let error;
try {
- return super.registerPrompt(name, config, callback);
+ return super.registerPrompt(name, config as PromptConfig<Args>, callback as PromptCallback<Args>);
} catch (e) {
error = e;
throw e;
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally xD51-YV7N
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
~2.4.0→~2.7.01.138.0→1.141.0~0.40.0→~0.44.0~9.3.0→~9.4.0~8.3.0→~8.4.0~8.3.0→~8.4.0~8.3.0→~8.4.0~8.3.0→~8.4.0~0.16.0→~0.17.0~2.0.0→~2.3.0~2.0.0→~2.3.0~2.39.1→~2.41.0~2.39.1→~2.41.0~2.31.0→~2.62.02.63.0(+1)^0.1.0→^0.3.0~24.13.0→~24.19.0~24.13.0→~24.19.0~24.13.0→~24.19.0~1.120.0→~1.140.0~0.38.0→~0.45.0v6.0.0→v6.1.0v7.0.0→v7.1.0~8.18.0→~8.20.0v7.0.0→v7.1.1v3.0.0→v3.2.0v4.36.3→v4.38.3~13.3.0→~13.5.0~13.3.0→~13.5.0~4.57.0→~4.80.0~0.56.0→~0.57.0~22.0.0→~22.1.024.16→24.21v24.22.024.16→24.21~1.100.0→~1.105.0v7.1.0→v7.2.0~5.4.0→~5.6.05.6.15.9.0→5.10.05.9.0→5.10.06.28.1→6.29.0~6.7.0→~6.10.0~8.0.0→~8.3.0~8.0.0→~8.3.0~8.0.0→~8.3.0~3.11.4→~3.12.0~9.0.5→~9.5.0~5.107.0→~5.111.0~5.107.0→~5.111.0~18.0.0→~18.2.0~4.4.0→~4.6.04.6.7(+1)~4.4.0→~4.6.04.6.7(+1)Release Notes
crxjs/chrome-extension-tools (@crxjs/vite-plugin)
v2.7.1Patch Changes
efa9c63: Update direct dependency ranges forconvert-source-map,debug,and
fs-extra.6efde9d: Filter Vite 8/Rolldown-only options before the dev file writer callsRollup, removing
Unknown input options: platformwarnings.v2.7.0Minor Changes
9f00943: Add dev HMR support for manifest-declared MAIN world content scripts.Patch Changes
a9cc89a: Remove unused vite-plugin dependencies and update selected dependencyversions.
v2.6.1Patch Changes
2b88621: Coalesce file writer readiness waits so large dev-server graphupdates do not repeatedly recompute the same dependency traversal. This also
fixes late HMR readiness waits that could miss the shared ready event and
delay content script updates.
v2.6.0Minor Changes
4f5d2ec: feat: add IIFE content script bundlingContent scripts named with
.iife.tsextension are automatically bundled asself-contained IIFE files with all dependencies inlined. This is useful for
MAIN world content scripts used with
chrome.scripting.executeScriptorchrome.scripting.registerContentScripts.Patch Changes
5316e9c: Allowchrome-extension://andmoz-extension://origins in Vitedev-server CORS automatically. This keeps extension pages able to fetch
dev-server files on Vite releases with the stricter localhost-only CORS
default, including Vite
4.5.6,5.4.12, and6.0.9+, without requiringprojects to configure
server.cors.originmanually.1aee9ad: fix: dynamic content scripts failing in build --watch mode2f8bab5: Fix the dev-mode loading page so it waits for the requested extensionHTML file, preserves the page URL query string, allows extension-origin
readiness polling, and throttles automatic reloads to avoid rapid flicker.
1681511: Expand vite-plugin CI to run e2e tests against supported Viteversions and fix compatibility issues exposed by the matrix.
0593d58: fix: publish ESM declarations for the Vite plugin entrypointv2.5.0Minor Changes
4756baf: feat: add HMR support for CSS declared in manifest content_scripts4756baf: add: browser_specific_settings.gecko properties4756baf: Fix "TypeError: plugins is not iterable" error when usingrolldown-vite (Vite 7).
In rolldown-vite, the buildStart hook doesn't receive options.plugins. This
fix uses the configResolved hook to get plugins from the resolved config, with
buildStart kept as a fallback for older Vite versions.
4756baf: Fixed#852, the plugin
now emits a correct URL in
service-worker-loader.jswhen the Vite optionserver.httpsis enabled.4756baf: fix: resolve TypeScript types correctly for ESM and CJS consumers4756baf: feat: add Vite 8 beta supportPatch Changes
4756baf: ci: migrate release workflow to npm trusted publishers570312a: fix: sanitize colons from output filenames on Windows4756baf: fix: copy CSS files declared in manifest content_scripts to output4756baf: Replace cheerio with node-html-parser to fix npm deprecation warningfor whatwg-encoding.
Also adds explicit vite peerDependency declaration (^3.0.0 through ^7.0.0) to
enable proper version resolution when used with different vite versions.
4756baf: ci: run compat tests against stable Vite 8, make the vite8 availableas a peer dependency
4756baf: fix: UnoCSS/TailwindCSS HMR issues with virtual CSS modules8a99b4f: made data_collection_permissions optional4756baf: fix: respect user's build.manifest setting in Vite 4+When users set
build.manifest: falsein their Vite config, the Vite manifestfile (
.vite/manifest.jsonin Vite 5+, ormanifest.jsonin older versions)is now properly removed from the output bundle.
CRXJS internally requires the Vite manifest to derive content script resources
during build, so it forces
build.manifest: true. Previously, this meant theVite manifest was always included in the output even if the user explicitly
disabled it. Now, CRXJS removes the manifest from the bundle after processing
if the user didn't want it.
Closes #1077
d364bd8: chore: upgrade chokidar to 5.0.04756baf: feat(client): Update the style and content of the development modeloading page
figma/plugin-typings (@figma/plugin-typings)
v1.141.0Compare Source
v1.140.0Compare Source
v1.139.0Compare Source
figma/rest-api-spec (@figma/rest-api-spec)
v0.44.0Compare Source
v0.43.0Compare Source
v0.42.0Compare Source
v0.41.0Compare Source
jsverse/transloco (@jsverse/transloco)
v8.4.0Compare Source
🚀 Features
🩹 Fixes
❤️ Thank You
microsoft/tsdoc (@microsoft/tsdoc)
v0.17.1Tue, 29 Sep 2026 18:52:33 GMT
Patches
TSDocEmitterdropped a line break that appeared before an inline node such as a code span,{@link}tag, or HTML element, joining the adjacent words.v0.17.0Wed, 16 Sep 2026 01:24:29 GMT
Minor changes
modelcontextprotocol/typescript-sdk (@modelcontextprotocol/server)
v2.3.1Compare Source
Patch Changes
v2.3.0Compare Source
Minor Changes
433eb41Thanks @claude! - The HTTP client transports and the OAuth client helpers now follow a redirect only when it stays within the origin of the request (same scheme, host and port, or http to https on the same host with default ports) and keeps the method (a 307 or 308, or any redirect of a GET). Any other redirect is not followed. A transport then fails the request with an error that names the target; the session is kept and later messages still send. OAuth metadata discovery moves on to the next well-known URL, and any other OAuth request fails with an error that gives the status. Same-origin redirects that keep the method keep working on Node, up to five in a row, and no code changes are needed there. If your endpoint redirects to another origin, configure the transport with the URL it redirects to. ArequestInit.redirectof'error'or'manual'is passed to fetch as it is for the requests a transport sends to the server (POST, GET and DELETE of the Streamable HTTP transport, POST of the SSE transport); for its OAuth requests, and for any other value,requestInit.redirectis not consulted by default. Browsers do not expose the target of a redirect to a page, so there a redirected request fails instead of being followed. SettingredirectPolicy: 'follow'on a transport leaves its redirects to the fetch implementation, as before this change.Patch Changes
#2599
5238fbaThanks @freya0926! - A server can now serve, and a client can now call,tasks/getandtasks/cancelof the Tasks extension (SEP-2663) on a 2026-07-28 connection, when the handler is registered and the request is sent with an explicit schema. Every other method that a protocol revision removed is still refused. If one server factory serves both eras and such a handler is meant for 2025-era clients only, register it only whenctx.era === 'legacy'.#2846
63c0fcaThanks @Sthreal! - Receiving a large message as a single SSE event over Streamable HTTP, such as a tool result of tens of megabytes, is now fast: a 50 MB result that took about 13 seconds arrives in under a second. The client now requireseventsource-parser3.0.8 or later.SSEClientTransportreads through theeventsourcepackage and gets the same speed-up once that also resolveseventsource-parser3.0.8 or later.#2908
633dd3eThanks @claude! - Thelicensefield of the package manifests is nowApache-2.0; theLICENSEfile shipped in each package carries the full terms, including the MIT text for earlier contributions. No code change.#2903
e765b3bThanks @claude! - WithversionNegotiationin'auto'or pin mode, aserver/discoverprobe answered with a 2xx that carries no usable reply (a body thatis not JSON under
application/json, a bare204, a missing or unaccepted content type) still rejectsconnect()withEraNegotiationFailed; an empty SSE stream or a202surfaces as the probe timeout instead. The message now saysthe server answered with an unusable reply (...)instead of reading like a network failure. To connect to a 2025 server behind a front thatanswers the probe this way, pass
connect(transport, { prior: { kind: 'legacy' } })or usemode: 'legacy'.#2905
c0cd01aThanks @claude! -SSEClientTransportnow retries the SSE connection once afteronUnauthorized()resolves, as documented. If the retry is also answered with 401,start()rejects withSdkHttpError(ClientHttpAuthentication) instead of callingonUnauthorized()again. A 401 on a later reconnect of a stream that had opened still gets one refresh.Updated dependencies [
633dd3e]:v2.2.0Compare Source
Minor Changes
#2887
edd12e2Thanks @maxisbey! - ConstructingClientCredentialsProvider,PrivateKeyJwtProvider,StaticPrivateKeyJwtProviderorCrossAppAccessProviderwithoutexpectedIssueris deprecated: the constructor logs oneconsole.warnand that call signature is marked@deprecated. Behaviour is otherwise unchanged. Pass theissuerof the authorization server the credentials were registered with.fetchToken()throwsAuthorizationServerMismatchError, before sending anything, when the provider's client information is bound to a different authorization server than the one it is called with. TheAuthorizationServerMismatchErrormessage no longer assumes the authorization-code callback; its fields are unchanged.OAuthTokensSchemaandOAuthClientInformationSchemaaccept the optionalissuerstamp, so a provider that reads storage back through them keeps it.auth()overwrites it on every save.Patch Changes
#2885
9dd722fThanks @claude! - Sending a notification on a closed connection no longer produces a briefly unhandled promise rejection (seen asunhandledrejectionon Cloudflare Workers) in addition to the returned rejection.#2883
c0f7aecThanks @claude! - Fix a type-check failure for CommonJS TypeScript projects introduced in 2.1.0:dist/index.d.ctsimported types fromjose, which is ESM-only, sotscwithmodule: node16/node18andskipLibCheck: falsefailed with TS1479. The twojosetypes used by the DPoP API (CryptoKey,JWK) are now inlined into the declaration files. No runtime change.#2768
efebf5bThanks @web-abin! - Correct the JSDoc for insecure OAuth token endpoints. The TLS requirement comes from the MCP authorization specification's OAuth 2.1 communication-security rules, not SEP-2207, which covers OIDC-flavored refresh-token guidance. Documentation only; no runtime behavior change.#2729
a4ae2f9Thanks @claude! - Correct theregisterClient@deprecatednotice: Dynamic Client Registration was deprecated by spec PR #2858 (Client ID Metadata Documents), not SEP-2577 (which deprecates roots, sampling, and logging). The notice now also names the earliest possible removal date under the feature lifecycle policy (2027-07-28) and clarifies that theclient_id_metadata_document_supportedgating lives in the built-inauth()flow —registerClientcalled directly always sends the registration request. Documentation only; no runtime behavior change.#2862
e780e13Thanks @SyedTashfin! - Preserve_metaoninput_requiredresults. The 2026-07-28 decode seam rebuilt the payload frominputRequestsandrequestStateonly, so result-level metadata a server sent on aninput_requiredresult (includingio.modelcontextprotocol/serverInfo) was dropped before anallowInputRequired: truecaller could see it.Result._metais a result-level field, soinput_requiredcarries it exactly like any other result.#2886
ef39308Thanks @claude! -listTools(),listPrompts(),listResources()andlistResourceTemplates()called without a cursor now follownextCursoruntil the server stops sending one, instead of stopping silently with a short list when a cursor repeats; a page that has the same items and the samenextCursoras the page before it ends the walk and is not added twice, andlistMaxPagesstill caps the walk.#2642
cfa09dbThanks @claude! - FixClient.listen()rejections escaping as process-level unhandled rejections. The internalopeningpromise could reject (ack timeout, transport close, server cancel, caller abort) whilelisten()was still serially awaitingtransport.send(...), so no rejection handler was attached yet — the rejection surfaced as anunhandledRejectionthat caller-side handling cannot prevent, and a send that never settles (e.g. a stdio write parked on'drain') leftlisten()suspended forever even though the ack timer had already fired.listen()now suspends on theopeningstate machine directly and routes send failures into it, so every termination path rejects the returned promise and nothing escapes.#2597
7f7a94cThanks @arimu1! - Treat hostnames ending in.localhostas loopback for the SEP-2207 token-endpoint https guard (RFC 6761 §6.3), so host-based multi-tenant local OAuth works. The SDK does not resolve the name itself:*.localhostreaches the local machine only if the system resolver follows RFC 6761.Updated dependencies [
edd12e2]:v2.1.0Compare Source
Minor Changes
dcc0102Thanks @gbshankar! - Add DPoP (RFC 9449 / SEP-1932) sender-constrained access token support to the client.OAuthClientProvider.dpop()returning aDpopSession(new, along withgenerateDpopKeyPair,accessTokenHash,isDpopNonceChallenge).auth()/exchangeAuthorization/refreshAuthorization/fetchTokenthen sign a DPoP proof into token requests (retrying once on an authorization-serveruse_dpop_noncechallenge, with client authentication re-applied per attempt), andStreamableHTTPClientTransport,SSEClientTransportandwithOAuthpresent atoken_type: "DPoP"access token asAuthorization: DPoP <token>plus a fresh per-request proof, retry a resource-serveruse_dpop_noncechallenge once, and pick up aDPoP-Noncedelivered on any response. Tokens the AS issued asBearerare still presented as Bearer.fetch(including a caller-suppliedfetch/eventSourceInit.fetch) with the newwithDpopFromProvider(provider)middleware, so proofs are always bound to the request actually sent.withDpop(session, getToken)is exported for callers that manage tokens themselves (e.g. alongside a minimalAuthProvider); theAuthProviderinterface itself is unchanged.auth()now recovers frominvalid_dpop_proofon refresh (e.g. a refresh token bound to a key that is no longer held) by discarding the tokens and re-authorizing, likeinvalid_grant.OAuthErrorCodegainsInvalidDpopProofandUseDpopNonce;extractWWWAuthenticateParamsrecognizes theDPoPchallenge scheme;OAuthMetadataSchemagainsdpop_signing_alg_values_supported.Patch Changes
#2726
6fa4227Thanks @LuckTerence! -SdkErrorandSdkHttpErroraccept standardErrorOptionsas an optional fourth constructor argument and forward it toError, so a wrapped error is reachable through the standardError.causechain. Version-negotiation probe failures (SdkErrorCode.EraNegotiationFailed) now use it: the underlyingTypeError: fetch failedand the DNS or socket error beneath it surface viaerror.cause, so pino, Sentry, andutil.inspectrenderENOTFOUND/ECONNREFUSED/ETIMEDOUTinstead of stopping at theSdkError(#2657). The previouserror.data.causeslot is still populated for compatibility but is deprecated and slated for removal; readerror.causeinstead.#2654
03842cdThanks @pshah19! - Treat request id0as a real id. Two guards tested aRequestIdfor truthiness, so the legal JSON-RPC ids0and''were read as absent. Id0is not a corner case: the outbound request counter is zero-based, so it is the first id every peer assigns, which on the server→client leg is the firstsampling/createMessage,elicitation/create, orroots/lista server sends.notifications/cancelledcarrying id0was ignored, and the in-flight handler ran to completion with itsAbortSignalnever fired.relatedRequestId: 0wrongly passed the debounce gate (for methods opted intodebouncedNotificationMethods). Because the pending set is keyed by method alone, a second such notification in the same tick was silently dropped rather than sent.Absent is now the only value that means "no id".
#2043
c4248a9Thanks @ChrisJr404! - On Windows, stdio servers spawned byStdioClientTransportnow also inheritCOMSPEC,PATHEXT,PROGRAMDATA,PROGRAMFILES(X86),PROGRAMW6432, andWINDIR(added toDEFAULT_INHERITED_ENV_VARS). Programs a server launches can depend on them: PowerShell finds no native executables withoutPATHEXT, and Windows OpenSSH exits 255 withoutProgramData.#2668
3e90449Thanks @KKonstantinov! - Stop sendingnotifications/cancelledfor theinitializehandshake. The spec is explicit that a client MUST NOT attempt to cancel itsinitializerequest, but the outbound cancel path fired for any in-flight request: aborting theAbortSignalpassed toconnect(), or letting the handshake hit its timeout, put a forbidden cancellation on the wire naming the initialize request id.The local behaviour is unchanged — the caller's promise still rejects with the same abort/timeout error, and
connect()still tears the connection down. Only the wire notification is suppressed. Every other method keeps the existing cancellation path.#2475
b654261Thanks @sanjibani! -StreamableHTTPClientTransportandSSEClientTransportnow give their transport-managed headers precedence over same-named entries inrequestInit.headers:AuthorizationwhenauthProvideryields a token,mcp-protocol-version, and (Streamable HTTP)mcp-session-id. Header names compare case-insensitively and everyHeadersInitform is covered (plain object, tuple array,Headersinstance). Previously the caller-supplied value won, so a staticAuthorizationplaceholder (e.g. an env-var API key) kept overriding the OAuth token even after the provider obtained one and the fallback-to-OAuth flow never completed; aHeadersinstance or lowercase key produced a combinedBearer <fresh>, Bearer <stale>value instead. A configuredAuthorizationis still sent while the provider has no token, and other configured headers pass through unchanged. Closes #2208.#2581
5119ee7Thanks @hugosmoreira! - Preserve the exact OAuth resource indicator from protected resource metadata when building authorization and token requests. Previously a pathlessresourcesuch ashttps://example.comwas normalized tohttps://example.com/viaURL.href, which breaks authorization servers that require theresourceparameter to match the published value exactly (Microsoft Entra ID rejects it withAADSTS9010010). The exported OAuth helpers (startAuthorization,exchangeAuthorization,refreshAuthorization,fetchToken,executeTokenRequest) now also accept astringforresource;selectResourceURLstill returns aURL, and a provider'svalidateResourceURLresult is used unchanged. Fixes #1968.3924de9- LetsaveTokensfailures surface after a successful token refresh. Inauth(), onetrywrapped both
refreshAuthorization()and theprovider.saveTokens()that persists itsresult, and the
catchdeliberately swallows anything that is not anOAuthError— plusServerError— so that a failed refresh falls through to a fresh authorization request.A persistence error thrown by the provider landed in that same branch: it was discarded
with no log and no rethrow, and
auth()continued tostartAuthorization()and returned'REDIRECT'.Against an authorization server that rotates refresh tokens (the OAuth 2.1 default, and
Keycloak's) this loses credentials rather than merely hiding an error. The exchange has
already succeeded server-side, so the old refresh token is invalidated at the moment the
new one is issued; dropping the new token set leaves nothing usable on either side. On a
headless or CLI client, where
redirectToAuthorizationis typically a no-op, the fallthroughis silent and the client is left with stale tokens and no indication of why.
The
try/catchnow covers onlyrefreshAuthorization(). Persisting the result happensafter it, on an unguarded path, so a provider's I/O error propagates to the caller.
Refresh-request failures keep their existing control flow exactly: a
ServerErroror anunknown error still falls through to a new authorization flow, a non-
ServerErrorOAuthErroris still rethrown, andInsecureTokenEndpointErroris still surfaced. TheSEP-2352
issuerstamp written with the refreshed tokens is unchanged.Those fallbacks no longer happen in silence, though. Both routes to an unexplained
re-authorization now emit a
console.warnnaming the cause: the in-place fallthrough inthe refresh block, and
auth()'s outer recovery forinvalid_grant,invalid_client,and
unauthorized_client, which discards stored credentials and retries. The second onematters most in practice — an expired, revoked, or rotation-reuse-detected refresh token
is reported as
invalid_grant, which is precisely the state a dropped token set leavesbehind for the next call.
Consumers whose
OAuthClientProvider.saveTokenscan reject should note thatauth()maynow reject where it previously returned
'REDIRECT'— that rejection is the failure thatwas being discarded.
#2613
70de0c8Thanks @jwcarman! - Emit and validate theMcp-Nameheader for tasks requests per SEP-2663's Streamable HTTP binding: the client transport now mirrorsparams.taskIdintoMcp-Nameontasks/get/tasks/update/tasks/cancel(previously omitted, causing conforming servers to reject every task poll with-32020 HeaderMismatch), and the server-side standard-header validation cross-checks it via the same sharedMCP_NAME_HEADER_SOURCEtable.On the server,
createMcpHandlernow answers a modern (2026-07-28)tasks/get/tasks/update/tasks/cancelPOST that omitsMcp-Name, or whose header disagrees withparams.taskId, with400/-32020(HeaderMismatch) at thestandard-header-validationrung, the same treatmenttools/call/prompts/get/resources/readalready get. Legacy-era (2025-11-25) tasks traffic is unaffected. Clients built with this SDK release send the header; hand-rolled clients that omitted it must add it.Updated dependencies [[
dcc0102](hConfiguration
📅 Schedule: (in timezone Europe/Paris)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.