@daghis/teamcity-mcp 2.12.6 → 2.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/index.js +24 -7
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.12.7](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.12.6...teamcity-mcp-v2.12.7) (2026-10-03)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **build-log:** protect errors and bound stream snapshots ([#538](https://github.com/Daghis/teamcity-mcp/issues/538)) ([36a300c](https://github.com/Daghis/teamcity-mcp/commit/36a300c932fadeea6136effde9c93d82ad716780))
|
|
9
|
+
|
|
3
10
|
## [2.12.6](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.12.5...teamcity-mcp-v2.12.6) (2026-10-03)
|
|
4
11
|
|
|
5
12
|
|
package/dist/index.js
CHANGED
|
@@ -128,9 +128,10 @@ function isRetryableError(error3) {
|
|
|
128
128
|
}
|
|
129
129
|
return false;
|
|
130
130
|
}
|
|
131
|
-
var TeamCityAPIError, TeamCityAuthorizationError, TeamCityNotFoundError, TeamCityRateLimitError, TeamCityServerError, TeamCityNetworkError, TeamCityRequestError, TeamCityTimeoutError, BuildNotFoundError, BuildAccessDeniedError;
|
|
131
|
+
var import_node_util2, TeamCityAPIError, TeamCityAuthorizationError, TeamCityNotFoundError, TeamCityRateLimitError, TeamCityServerError, TeamCityNetworkError, TeamCityRequestError, TeamCityTimeoutError, BuildNotFoundError, BuildAccessDeniedError;
|
|
132
132
|
var init_errors = __esm({
|
|
133
133
|
"src/teamcity/errors.ts"() {
|
|
134
|
+
import_node_util2 = require("node:util");
|
|
134
135
|
init_stream();
|
|
135
136
|
TeamCityAPIError = class _TeamCityAPIError extends Error {
|
|
136
137
|
code;
|
|
@@ -181,6 +182,9 @@ var init_errors = __esm({
|
|
|
181
182
|
stack: this.stack
|
|
182
183
|
};
|
|
183
184
|
}
|
|
185
|
+
[import_node_util2.inspect.custom]() {
|
|
186
|
+
return this.toJSON();
|
|
187
|
+
}
|
|
184
188
|
};
|
|
185
189
|
TeamCityAuthorizationError = class extends TeamCityAPIError {
|
|
186
190
|
constructor(message = "Authorization failed", requestId, originalError) {
|
|
@@ -1306,7 +1310,7 @@ function debug2(message, meta) {
|
|
|
1306
1310
|
// package.json
|
|
1307
1311
|
var package_default = {
|
|
1308
1312
|
name: "@daghis/teamcity-mcp",
|
|
1309
|
-
version: "2.12.
|
|
1313
|
+
version: "2.12.7",
|
|
1310
1314
|
description: "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
|
|
1311
1315
|
mcpName: "io.github.Daghis/teamcity",
|
|
1312
1316
|
main: "dist/index.js",
|
|
@@ -4926,6 +4930,7 @@ axiosRetry.isRetryableError = isRetryableError2;
|
|
|
4926
4930
|
var esm_default = axiosRetry;
|
|
4927
4931
|
|
|
4928
4932
|
// src/teamcity/auth.ts
|
|
4933
|
+
var import_node_string_decoder = require("node:string_decoder");
|
|
4929
4934
|
var import_crypto = require("crypto");
|
|
4930
4935
|
init_errors();
|
|
4931
4936
|
init_stream();
|
|
@@ -4977,15 +4982,23 @@ var STREAM_BODY_TIMEOUT_MS = 5e3;
|
|
|
4977
4982
|
var streamToString = async (stream, maxBytes = 64 * 1024) => {
|
|
4978
4983
|
const chunks = [];
|
|
4979
4984
|
let total = 0;
|
|
4985
|
+
let truncated = false;
|
|
4980
4986
|
for await (const chunk of stream) {
|
|
4981
4987
|
const buf = toBuffer(chunk);
|
|
4982
|
-
|
|
4983
|
-
|
|
4988
|
+
const retained = buf.subarray(0, maxBytes - total);
|
|
4989
|
+
chunks.push(retained);
|
|
4990
|
+
total += retained.length;
|
|
4984
4991
|
if (total >= maxBytes) {
|
|
4992
|
+
truncated = true;
|
|
4985
4993
|
break;
|
|
4986
4994
|
}
|
|
4987
4995
|
}
|
|
4988
|
-
|
|
4996
|
+
const decoder = new import_node_string_decoder.StringDecoder("utf8");
|
|
4997
|
+
const text = decoder.write(Buffer.concat(chunks, total)) + (truncated ? "" : decoder.end());
|
|
4998
|
+
if (Buffer.byteLength(text) <= maxBytes) {
|
|
4999
|
+
return text;
|
|
5000
|
+
}
|
|
5001
|
+
return new import_node_string_decoder.StringDecoder("utf8").write(Buffer.from(text).subarray(0, maxBytes));
|
|
4989
5002
|
};
|
|
4990
5003
|
var snapshotStreamBody = async (stream, timeoutMs) => {
|
|
4991
5004
|
let timer;
|
|
@@ -38923,8 +38936,12 @@ var TeamCityAPI = class _TeamCityAPI {
|
|
|
38923
38936
|
responseType,
|
|
38924
38937
|
transformResponse
|
|
38925
38938
|
});
|
|
38926
|
-
} catch {
|
|
38927
|
-
|
|
38939
|
+
} catch (fallbackError) {
|
|
38940
|
+
const fallbackStatus = fallbackError instanceof TeamCityAPIError ? fallbackError.statusCode : void 0;
|
|
38941
|
+
if (fallbackStatus === 404 || fallbackStatus === 405) {
|
|
38942
|
+
throw primaryError;
|
|
38943
|
+
}
|
|
38944
|
+
throw fallbackError;
|
|
38928
38945
|
}
|
|
38929
38946
|
}
|
|
38930
38947
|
}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
9
|
"websiteUrl": "https://github.com/Daghis/teamcity-mcp",
|
|
10
|
-
"version": "2.12.
|
|
10
|
+
"version": "2.12.7",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
15
15
|
"identifier": "@daghis/teamcity-mcp",
|
|
16
|
-
"version": "2.12.
|
|
16
|
+
"version": "2.12.7",
|
|
17
17
|
"runtimeHint": "npx",
|
|
18
18
|
"runtimeArguments": [
|
|
19
19
|
{
|