zames_pro 2.82.37 → 2.82.40
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 +18 -0
- package/dist/config-command.js +9 -2
- package/dist/config-commands.js +4 -1
- package/dist/transcript.js +15 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.82.40] - 2026-10-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **transcript:** cap a single logged payload
|
|
15
|
+
|
|
16
|
+
## [2.82.39] - 2026-10-22
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **config:** do not mask a whitespace-only password
|
|
21
|
+
|
|
22
|
+
## [2.82.38] - 2026-10-22
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **config:** dispatch /config subcommands after the command name
|
|
27
|
+
|
|
10
28
|
## [2.82.37] - 2026-10-22
|
|
11
29
|
|
|
12
30
|
### Fixed
|
package/dist/config-command.js
CHANGED
|
@@ -17,10 +17,17 @@ import { configGetValue, configValueHint } from './config-commands.js';
|
|
|
17
17
|
export async function handleConfigCommand(input, deps) {
|
|
18
18
|
const { t, print, printErr, getValue, setValue, resetField, showList, openMenu, currentLocale, normalizeLocale, localeDisplayName, homeConfigPath, projectConfigPath, } = deps;
|
|
19
19
|
const schema = deps.schema;
|
|
20
|
-
|
|
20
|
+
// Accept BOTH spellings: the main loop passes the whole typed line
|
|
21
|
+
// (`/config get ui.locale`), while tests and other callers pass the text
|
|
22
|
+
// after the command (`get ui.locale`). Reading parts[1] blindly made the
|
|
23
|
+
// second form treat `get` as the subcommand.
|
|
24
|
+
const all = input.trim().split(/\s+/).filter(Boolean);
|
|
25
|
+
const parts = /^\/config(\s|$)/i.test(input.trim())
|
|
26
|
+
? all
|
|
27
|
+
: ['/config', ...all];
|
|
21
28
|
const sub = (parts[1] || '').toLowerCase();
|
|
22
29
|
// With no subcommand - the menu (or a text list in non-TTY).
|
|
23
|
-
if (!sub || sub === 'menu'
|
|
30
|
+
if (!sub || sub === 'menu') {
|
|
24
31
|
await openMenu();
|
|
25
32
|
return;
|
|
26
33
|
}
|
package/dist/config-commands.js
CHANGED
|
@@ -26,8 +26,11 @@ export function configListValue(field, value, t) {
|
|
|
26
26
|
export function configGetValue(path, value, t) {
|
|
27
27
|
if (value === undefined)
|
|
28
28
|
return t('cfg.menu.default');
|
|
29
|
-
|
|
29
|
+
// Mask a real secret, but NOT a whitespace-only one: it cannot log in, and
|
|
30
|
+
// hiding it makes `/config get` look like a password is configured.
|
|
31
|
+
if (/password/i.test(path) && String(value).trim().length > 0) {
|
|
30
32
|
return '********';
|
|
33
|
+
}
|
|
31
34
|
return JSON.stringify(value);
|
|
32
35
|
}
|
|
33
36
|
/**
|
package/dist/transcript.js
CHANGED
|
@@ -34,6 +34,8 @@ export function rotateTranscripts(dir, keep = MAX_TRANSCRIPT_FILES) {
|
|
|
34
34
|
function transcriptErrorLine(e) {
|
|
35
35
|
return `transcript: failed to create file: ${e.message}`;
|
|
36
36
|
}
|
|
37
|
+
/** Hard cap on one transcript line (a single `log` payload). */
|
|
38
|
+
export const TRANSCRIPT_LINE_CAP = 100_000;
|
|
37
39
|
export class Transcript {
|
|
38
40
|
enabled;
|
|
39
41
|
file;
|
|
@@ -84,7 +86,19 @@ export class Transcript {
|
|
|
84
86
|
type,
|
|
85
87
|
...data,
|
|
86
88
|
};
|
|
87
|
-
|
|
89
|
+
let line = JSON.stringify(entry) + String.fromCharCode(10);
|
|
90
|
+
// One `log` call may carry a tool result, a page dump or a fetched
|
|
91
|
+
// document; an uncapped line makes the transcript grow by megabytes per
|
|
92
|
+
// event, and /cost + /export then load it all into memory. Keep the
|
|
93
|
+
// transcript a LOG: cap each line with a marker (never splitting a
|
|
94
|
+
// surrogate pair).
|
|
95
|
+
if (line.length > TRANSCRIPT_LINE_CAP) {
|
|
96
|
+
let cut = TRANSCRIPT_LINE_CAP - 2;
|
|
97
|
+
const last = line.charCodeAt(cut - 1);
|
|
98
|
+
if (last >= 0xd800 && last <= 0xdbff)
|
|
99
|
+
cut--;
|
|
100
|
+
line = line.slice(0, cut) + '…' + String.fromCharCode(10);
|
|
101
|
+
}
|
|
88
102
|
// The mirror runs even when the file is disabled (jsonl mode).
|
|
89
103
|
if (this.onLine) {
|
|
90
104
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.82.
|
|
3
|
+
"version": "2.82.40",
|
|
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": {
|