Skip to content

Commit ea5a11c

Browse files
authored
Update versions & CHANGELOG for v2.25.1-next.2 (#200)
Prep for the v2.25.1-next.2 release as a hotfix for the v2.25.1-next.1 release.
1 parent 7854829 commit ea5a11c

File tree

31 files changed

+93
-52
lines changed

31 files changed

+93
-52
lines changed

CHANGELOG.md

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ _Changes on `main` since the latest tagged release that have not yet been includ
2020

2121
- **Persistent MRVA workflow state and caching** — Introduced a new `SqliteStore` backend plus opt-in annotation, audit, and query result cache tools to support the next phase of MCP-assisted CodeQL development and `seclab-taskflow-agent` integration. ([#169](https://github.com/advanced-security/codeql-development-mcp-server/pull/169))
2222
- **Rust language support** — Added first-class Rust support with `PrintAST`, `PrintCFG`, `CallGraphFrom`, `CallGraphTo`, and `CallGraphFromTo` queries, bringing the total supported languages to 10. ([#195](https://github.com/advanced-security/codeql-development-mcp-server/pull/195))
23-
- **VS Code workspace change reliability** — Fixed MCP server restart behavior when workspace folders change so the extension now restarts the server with a fresh environment instead of leaving it partially stopped. ([#196](https://github.com/advanced-security/codeql-development-mcp-server/pull/196))
23+
- **Bug fixes and design improvements from v2.25.1-next.1 evaluation** — Fixed 5 bugs across `bqrs_interpret`, `bqrs_info`, `annotation_search`, `audit_add_notes`, and `query_results_cache_compare`; added `database_analyze` auto-caching and per-database mutex serialization; auto-enabled annotation tools in VS Code extension. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
2424

2525
### Added
2626

@@ -53,15 +53,22 @@ _Changes on `main` since the latest tagged release that have not yet been includ
5353

5454
#### MCP Server Tools
5555

56-
| Tool | Change |
57-
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
58-
| `codeql_query_run` | Query results are now auto-cached after SARIF interpretation, enabling later lookup and comparison workflows. ([#169](https://github.com/advanced-security/codeql-development-mcp-server/pull/169)) |
59-
| query metadata and database resolution | Added in-memory caching with mtime-based invalidation and deduplicated resolution logic for better performance. ([#169](https://github.com/advanced-security/codeql-development-mcp-server/pull/169)) |
56+
| Tool | Change |
57+
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
58+
| `codeql_query_run` | Query results are now auto-cached after SARIF interpretation, enabling later lookup and comparison workflows. ([#169](https://github.com/advanced-security/codeql-development-mcp-server/pull/169)) |
59+
| query metadata and database resolution | Added in-memory caching with mtime-based invalidation and deduplicated resolution logic for better performance. ([#169](https://github.com/advanced-security/codeql-development-mcp-server/pull/169)) |
60+
| `codeql_bqrs_interpret` | Added optional `database` parameter mapped to `--source-archive` for SARIF source context; validates that `src.zip` or `src` exists. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
61+
| `codeql_bqrs_info` | **Breaking**: renamed `files` (array) parameter to `file` (string) to match the CLI which accepts exactly one file. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
62+
| `codeql_database_analyze` | Results are now auto-cached after SARIF output for `query_results_cache_compare` and `query_results_cache_retrieve`; concurrent calls to the same database are serialized via a per-database mutex. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
63+
| `audit_add_notes` | Added `findingId` as preferred lookup; `owner`/`repo`/`sourceLocation`/`line` are now optional fallback fields. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
64+
| `annotation_search` | Category field is now matched with case-insensitive `COLLATE NOCASE` alongside the existing FTS index. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
65+
| `query_results_cache_compare` | SARIF content fallback for result count is now gated on SARIF output format, avoiding unnecessary JSON parsing of non-SARIF cache entries. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199)) |
6066

6167
#### VS Code Extension
6268

6369
- `McpProvider.requestRestart()` now invalidates the environment cache and bumps a `+rN` revision suffix so VS Code reliably restarts the MCP server after configuration changes. ([#196](https://github.com/advanced-security/codeql-development-mcp-server/pull/196))
6470
- Cached the extension version in the provider constructor to avoid repeated synchronous reads of `package.json`. ([#196](https://github.com/advanced-security/codeql-development-mcp-server/pull/196))
71+
- New `codeql-mcp.enableAnnotationTools` setting (default: `true`) auto-sets `ENABLE_ANNOTATION_TOOLS` and `MONITORING_STORAGE_LOCATION` environment variables; `additionalEnv` overrides for advanced users. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
6572

6673
#### Infrastructure & CI/CD
6774

@@ -70,6 +77,12 @@ _Changes on `main` since the latest tagged release that have not yet been includ
7077
### Fixed
7178

7279
- **Workspace folder changes could leave the MCP server stopped but not restarted** — The VS Code extension now rebuilds the environment and forces a proper restart when workspace folders change. ([#196](https://github.com/advanced-security/codeql-development-mcp-server/pull/196))
80+
- **`codeql_bqrs_interpret` unusable through MCP interface** — Added `database` parameter mapped to `--source-archive` with `src.zip`/`src` fallback and clear error when neither exists. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
81+
- **`query_results_cache_compare` reported `totalResultCount: 0`** — Result count is now computed from SARIF `runs[0].results.length` at cache time; compare tool falls back to parsing cached SARIF content only for SARIF-format entries. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
82+
- **`annotation_search` ignored `category` field** — Extended FTS search condition to also match category with case-insensitive `COLLATE NOCASE`. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
83+
- **`audit_add_notes` ignored `findingId`** — Added `findingId` as preferred direct-lookup alternative to the composite key fields. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
84+
- **`codeql_bqrs_info` `files` array caused CLI error** — Changed parameter from `files` (array) to `file` (string) to match the CLI expectation. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
85+
- **Per-database mutex lock key not normalized** — Database lock key now uses `realpath` to prevent bypassing serialization with relative paths, symlinks, or different casing. ([#199](https://github.com/advanced-security/codeql-development-mcp-server/pull/199))
7386

7487
### Dependencies
7588

client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codeql-development-mcp-server_client",
3-
"version": "2.25.1-next.1",
3+
"version": "2.25.1-next.2",
44
"description": "MCP client for integration testing of the CodeQL development MCP server",
55
"main": "src/ql-mcp-client.js",
66
"type": "module",

extensions/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-codeql-development-mcp-server",
33
"displayName": "CodeQL Development MCP Server",
44
"description": "LLM-assisted development of CodeQL queries, libraries, and tests via #ql-mcp prompts, resources, and tools.",
5-
"version": "2.25.1-next.1",
5+
"version": "2.25.1-next.2",
66
"publisher": "advanced-security",
77
"license": "SEE LICENSE IN LICENSE",
88
"icon": "media/codeql-icon.png",

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codeql-development-mcp-server_repo",
3-
"version": "2.25.1-next.1",
3+
"version": "2.25.1-next.2",
44
"description": "An MCP server supporting LLM requests for CodeQL development tools and resources.",
55
"private": true,
66
"type": "module",

server/dist/codeql-development-mcp-server.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -182798,7 +182798,7 @@ var StreamableHTTPServerTransport = class {
182798182798
var import_express = __toESM(require_express2(), 1);
182799182799
var import_cors = __toESM(require_lib4(), 1);
182800182800
var import_dotenv = __toESM(require_main(), 1);
182801-
import { realpathSync as realpathSync2 } from "fs";
182801+
import { realpathSync as realpathSync3 } from "fs";
182802182802
import { resolve as resolve14 } from "path";
182803182803
import { pathToFileURL as pathToFileURL5 } from "url";
182804182804

@@ -184635,7 +184635,7 @@ function cacheDatabaseAnalyzeResults(params, logger2) {
184635184635

184636184636
// src/lib/cli-tool-registry.ts
184637184637
init_package_paths();
184638-
import { writeFileSync as writeFileSync4, rmSync, existsSync as existsSync6, mkdirSync as mkdirSync8 } from "fs";
184638+
import { writeFileSync as writeFileSync4, rmSync, existsSync as existsSync6, mkdirSync as mkdirSync8, realpathSync } from "fs";
184639184639
import { delimiter as delimiter5, dirname as dirname5, isAbsolute as isAbsolute4, join as join10, resolve as resolve4 } from "path";
184640184640

184641184641
// ../node_modules/js-yaml/dist/js-yaml.mjs
@@ -187490,7 +187490,16 @@ function registerCLITool(server, definition) {
187490187490
const dbPath = resolveDatabasePath(options.database);
187491187491
const srcZipPath = join10(dbPath, "src.zip");
187492187492
const srcDirPath = join10(dbPath, "src");
187493-
options["source-archive"] = existsSync6(srcZipPath) ? srcZipPath : srcDirPath;
187493+
if (existsSync6(srcZipPath)) {
187494+
options["source-archive"] = srcZipPath;
187495+
} else if (existsSync6(srcDirPath)) {
187496+
options["source-archive"] = srcDirPath;
187497+
} else {
187498+
delete options.database;
187499+
throw new Error(
187500+
`CodeQL database at "${dbPath}" does not contain a source archive (expected "src.zip" file or "src" directory).`
187501+
);
187502+
}
187494187503
delete options.database;
187495187504
}
187496187505
break;
@@ -187590,7 +187599,12 @@ function registerCLITool(server, definition) {
187590187599
}
187591187600
let dbLock;
187592187601
if (name === "codeql_database_analyze" && positionalArgs.length > 0) {
187593-
dbLock = acquireDatabaseLock(positionalArgs[0]);
187602+
let lockKey = resolve4(positionalArgs[0]);
187603+
try {
187604+
lockKey = realpathSync(lockKey);
187605+
} catch {
187606+
}
187607+
dbLock = acquireDatabaseLock(lockKey);
187594187608
await dbLock.ready;
187595187609
}
187596187610
try {
@@ -190377,7 +190391,7 @@ var codeqlResolveTestsTool = {
190377190391
};
190378190392

190379190393
// src/tools/codeql/search-ql-code.ts
190380-
import { closeSync as closeSync2, createReadStream as createReadStream3, fstatSync as fstatSync2, lstatSync, openSync as openSync2, readdirSync as readdirSync8, readFileSync as readFileSync12, realpathSync } from "fs";
190394+
import { closeSync as closeSync2, createReadStream as createReadStream3, fstatSync as fstatSync2, lstatSync, openSync as openSync2, readdirSync as readdirSync8, readFileSync as readFileSync12, realpathSync as realpathSync2 } from "fs";
190381190395
import { basename as basename8, extname as extname2, join as join19, resolve as resolve9 } from "path";
190382190396
import { createInterface as createInterface3 } from "readline";
190383190397
init_logger();
@@ -190407,7 +190421,7 @@ function collectFiles(paths, extensions, fileCount) {
190407190421
if (SKIP_DIRS2.has(basename8(p))) return;
190408190422
let realPath;
190409190423
try {
190410-
realPath = realpathSync(p);
190424+
realPath = realpathSync2(p);
190411190425
} catch {
190412190426
return;
190413190427
}
@@ -194004,7 +194018,7 @@ function registerQueryResultsCacheCompareTool(server) {
194004194018
for (const e of dbEntries) {
194005194019
if (e.resultCount != null) {
194006194020
totalResultCount += e.resultCount;
194007-
} else {
194021+
} else if (e.outputFormat.includes("sarif")) {
194008194022
try {
194009194023
const content = store.getCacheContent(e.cacheKey);
194010194024
if (content) {
@@ -194046,7 +194060,7 @@ init_package_paths();
194046194060
init_logger();
194047194061
import_dotenv.default.config({ path: resolve14(packageRootDir, ".env"), quiet: true });
194048194062
var PACKAGE_NAME = "codeql-development-mcp-server";
194049-
var VERSION = "2.25.1-next.1";
194063+
var VERSION = "2.25.1-next.2";
194050194064
async function startServer(mode = "stdio") {
194051194065
logger.info(`Starting CodeQL Development MCP McpServer v${VERSION} in ${mode} mode`);
194052194066
const codeqlBinary = resolveCodeQLBinary();
@@ -194143,7 +194157,7 @@ async function main() {
194143194157
process.exit(1);
194144194158
}
194145194159
}
194146-
var scriptPath = process.argv[1] ? realpathSync2(resolve14(process.argv[1])) : void 0;
194160+
var scriptPath = process.argv[1] ? realpathSync3(resolve14(process.argv[1])) : void 0;
194147194161
if (scriptPath && import.meta.url === pathToFileURL5(scriptPath).href) {
194148194162
main();
194149194163
}

server/dist/codeql-development-mcp-server.js.map

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "codeql-development-mcp-server",
3-
"version": "2.25.1-next.1",
3+
"version": "2.25.1-next.2",
44
"description": "An MCP server supporting LLM requests for CodeQL development tools and resources.",
55
"main": "dist/codeql-development-mcp-server.js",
66
"type": "module",

server/ql/actions/tools/src/codeql-pack.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: advanced-security/ql-mcp-actions-tools-src
2-
version: 2.25.1-next.1
2+
version: 2.25.1-next.2
33
description: 'Queries for codeql-development-mcp-server tools for actions language'
44
library: false
55
dependencies:
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: advanced-security/ql-mcp-actions-tools-test
2-
version: 2.25.1-next.1
2+
version: 2.25.1-next.2
33
dependencies:
44
advanced-security/ql-mcp-actions-tools-src: ${workspace}
55
extractor: actions

0 commit comments

Comments
 (0)