zames_pro 2.82.122 → 2.82.124
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 +12 -0
- package/dist/mcp.js +15 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.82.124] - 2026-10-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **mcp:** a schema property named __proto__ becomes a real parameter
|
|
15
|
+
|
|
16
|
+
## [2.82.123] - 2026-10-24
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **mcp:** a duplicate tool rename does not steal a later tool name
|
|
21
|
+
|
|
10
22
|
## [2.82.122] - 2026-10-24
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/dist/mcp.js
CHANGED
|
@@ -158,7 +158,11 @@ export async function loadConfigFiles(files) {
|
|
|
158
158
|
// We also keep the full schema in the tool description, so the model sees
|
|
159
159
|
// descriptions/enums/required fields that the flat map cannot convey.
|
|
160
160
|
export function jsonSchemaToParams(schema) {
|
|
161
|
-
|
|
161
|
+
// Property NAMES come from the server and are arbitrary text: assigning to a
|
|
162
|
+
// plain object, a name like `__proto__` mutates the object's PROTOTYPE and
|
|
163
|
+
// the parameter silently disappears from the prompt (the same class as the
|
|
164
|
+
// tool-count maps in /cost). Null-prototype map: every key is an own key.
|
|
165
|
+
const out = Object.create(null);
|
|
162
166
|
if (!schema || typeof schema !== 'object')
|
|
163
167
|
return out;
|
|
164
168
|
const s = schema;
|
|
@@ -337,6 +341,11 @@ export function qualifyToolName(server, tool) {
|
|
|
337
341
|
// qualifier is not injective (see the call site), hence this guard. Pure;
|
|
338
342
|
// exported for tests.
|
|
339
343
|
export function dedupeToolNames(tools) {
|
|
344
|
+
// The rename must avoid EVERY name in the list, not only the ones already
|
|
345
|
+
// visited: a later tool that already owns `<name>_2` (a server's own `x_2`
|
|
346
|
+
// tool) was renamed itself, and the model's call to `x_2` then reached the
|
|
347
|
+
// RENAMED DUPLICATE — the wrong tool.
|
|
348
|
+
const all = new Set(tools.map((t) => t.name));
|
|
340
349
|
const seen = new Set();
|
|
341
350
|
for (const t of tools) {
|
|
342
351
|
if (!seen.has(t.name)) {
|
|
@@ -345,12 +354,16 @@ export function dedupeToolNames(tools) {
|
|
|
345
354
|
}
|
|
346
355
|
let n = 2;
|
|
347
356
|
let candidate = `${t.name}_${n}`;
|
|
348
|
-
while (seen.has(candidate)) {
|
|
357
|
+
while (seen.has(candidate) || all.has(candidate)) {
|
|
349
358
|
n++;
|
|
350
359
|
candidate = `${t.name}_${n}`;
|
|
351
360
|
}
|
|
361
|
+
// The duplicate leaves the pool of ORIGINAL names: its old name belongs to
|
|
362
|
+
// the first tool of that name.
|
|
363
|
+
all.delete(t.name);
|
|
352
364
|
t.name = candidate;
|
|
353
365
|
seen.add(candidate);
|
|
366
|
+
all.add(candidate);
|
|
354
367
|
}
|
|
355
368
|
}
|
|
356
369
|
// Connect to ONE server and return a ready connection (or an error).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.82.
|
|
3
|
+
"version": "2.82.124",
|
|
4
4
|
"description": "Terminal coding agent that drives a real browser to chat with DeepSeek, Qwen and other web LLMs — no API key required. Reads and edits files, runs commands, commits to git, like Claude Code / Codex CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|