Disallow and suppress unsafe assignment (#19736)

This commit is contained in:
Christian Gunderman
2026-02-20 22:28:55 +00:00
committed by GitHub
parent 3e786a161e
commit 981e9a978e
71 changed files with 149 additions and 22 deletions
+5 -2
View File
@@ -16,8 +16,10 @@ import { getIdeProcessInfo } from './process-utils.js';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
import { ListToolsResultSchema } from '@modelcontextprotocol/sdk/types.js';
import {
CallToolResultSchema,
ListToolsResultSchema,
} from '@modelcontextprotocol/sdk/types.js';
import { IDE_REQUEST_TIMEOUT_MS } from './constants.js';
import { debugLogger } from '../utils/debugLogger.js';
import {
@@ -343,6 +345,7 @@ export class IdeClient {
if (textPart?.text) {
try {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const parsedJson = JSON.parse(textPart.text);
if (parsedJson && typeof parsedJson.content === 'string') {
return parsedJson.content;
@@ -89,8 +89,10 @@ export function getStdioConfigFromEnv(): StdioConfig | undefined {
let args: string[] = [];
if (argsStr) {
try {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const parsedArgs = JSON.parse(argsStr);
if (Array.isArray(parsedArgs)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
args = parsedArgs;
} else {
logger.error(
@@ -188,6 +190,7 @@ export async function getConnectionConfigFromFile(
}
if (validWorkspaces.length === 1) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const selected = validWorkspaces[0];
const fileIndex = parsedContents.indexOf(selected);
if (fileIndex !== -1) {
@@ -202,6 +205,7 @@ export async function getConnectionConfigFromFile(
(content) => String(content.port) === portFromEnv,
);
if (matchingPortIndex !== -1) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const selected = validWorkspaces[matchingPortIndex];
const fileIndex = parsedContents.indexOf(selected);
if (fileIndex !== -1) {
@@ -213,6 +217,7 @@ export async function getConnectionConfigFromFile(
}
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const selected = validWorkspaces[0];
const fileIndex = parsedContents.indexOf(selected);
if (fileIndex !== -1) {
+1
View File
@@ -47,6 +47,7 @@ async function getProcessTableWindows(): Promise<Map<number, ProcessInfo>> {
let processes: RawProcessInfo | RawProcessInfo[];
try {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
processes = JSON.parse(stdout);
} catch (_e) {
return processMap;