zames_pro 2.81.9 → 2.81.11
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/commands.js +19 -1
- package/dist/qwen-chats.js +7 -0
- 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.81.11] - 2026-10-21
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **commands:** unescapeJsonString never leaves a lone surrogate
|
|
15
|
+
|
|
16
|
+
## [2.81.10] - 2026-10-21
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **qwen:** the restored dialogue drops a SYSTEM turn
|
|
21
|
+
|
|
10
22
|
## [2.81.9] - 2026-10-21
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/dist/commands.js
CHANGED
|
@@ -417,8 +417,26 @@ export function parseAssistantToolCall(text) {
|
|
|
417
417
|
}
|
|
418
418
|
/** Decode the JSON escape sequences that appear inside a captured string. */
|
|
419
419
|
export function unescapeJsonString(s) {
|
|
420
|
+
// A `\uD800`-style escape that is NOT followed by a low surrogate (a
|
|
421
|
+
// truncated or hand-written payload) would become a LONE surrogate - a
|
|
422
|
+
// broken code point the restored dialogue prints as `?`. Decode a valid PAIR
|
|
423
|
+
// as one code point and drop an unpaired half.
|
|
424
|
+
let pendingHigh = '';
|
|
420
425
|
return String(s || '')
|
|
421
|
-
.replace(/\\u([0-9a-fA-F]{4})/g, (_x, h) =>
|
|
426
|
+
.replace(/\\u([0-9a-fA-F]{4})/g, (_x, h) => {
|
|
427
|
+
const cp = parseInt(h, 16);
|
|
428
|
+
if (cp >= 0xd800 && cp <= 0xdbff) {
|
|
429
|
+
pendingHigh = String.fromCharCode(cp);
|
|
430
|
+
return '';
|
|
431
|
+
}
|
|
432
|
+
if (cp >= 0xdc00 && cp <= 0xdfff) {
|
|
433
|
+
const high = pendingHigh;
|
|
434
|
+
pendingHigh = '';
|
|
435
|
+
return high ? high + String.fromCharCode(cp) : '';
|
|
436
|
+
}
|
|
437
|
+
pendingHigh = '';
|
|
438
|
+
return String.fromCharCode(cp);
|
|
439
|
+
})
|
|
422
440
|
.replace(/\\n/g, NL)
|
|
423
441
|
.replace(/\\r/g, String.fromCharCode(13))
|
|
424
442
|
.replace(/\\t/g, String.fromCharCode(9))
|
package/dist/qwen-chats.js
CHANGED
|
@@ -195,6 +195,13 @@ export function parseQwenHistory(json) {
|
|
|
195
195
|
m.is_user === true ||
|
|
196
196
|
fromStr === 'user' ||
|
|
197
197
|
fromStr === 'human';
|
|
198
|
+
// A SYSTEM/TOOL turn is neither the operator nor the model's answer: on
|
|
199
|
+
// Qwen the system prompt is a message of its own, and mapping it to
|
|
200
|
+
// ASSISTANT printed it as a model reply in the restored dialogue. DeepSeek's
|
|
201
|
+
// parser drops those roles too.
|
|
202
|
+
if (/^(system|tool)$/.test(roleStr) || /^(system|tool)$/.test(fromStr)) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
198
205
|
const role = isUser ? 'user' : 'assistant';
|
|
199
206
|
let text = '';
|
|
200
207
|
if (typeof m.content === 'string')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.81.
|
|
3
|
+
"version": "2.81.11",
|
|
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": {
|