zames_pro 2.82.28 → 2.82.31

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 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.31] - 2026-10-22
11
+
12
+ ### Fixed
13
+
14
+ - **mcp:** keep a string content block whole
15
+
16
+ ## [2.82.30] - 2026-10-22
17
+
18
+ ### Fixed
19
+
20
+ - **statusline:** kill the whole process group on timeout
21
+
22
+ ## [2.82.29] - 2026-10-22
23
+
24
+ ### Fixed
25
+
26
+ - **subagent:** log the sub-task description with the run
27
+
10
28
  ## [2.82.28] - 2026-10-22
11
29
 
12
30
  ### Fixed
package/dist/mcp.js CHANGED
@@ -223,8 +223,16 @@ export function renderMcpResult(result, limit = MCP_RESULT_LIMIT) {
223
223
  if (r.toolResult !== undefined && !r.content) {
224
224
  return truncateMcpResult(formatResultString(r.toolResult, r.isError), limit);
225
225
  }
226
+ // `content` is an ARRAY per the SDK, but a hand-rolled/buggy server may put
227
+ // a STRING there. Iterating that string yielded one part per CHARACTER and
228
+ // the result became `n\n\no\n\nt...` instead of the text.
229
+ const blocks = Array.isArray(r.content)
230
+ ? r.content
231
+ : typeof r.content === 'string'
232
+ ? [{ type: 'text', text: r.content }]
233
+ : [];
226
234
  const parts = [];
227
- for (const block of r.content || []) {
235
+ for (const block of blocks) {
228
236
  if (!block || typeof block !== 'object') {
229
237
  parts.push(String(block ?? ''));
230
238
  continue;
@@ -34,6 +34,12 @@ export function runStatusLineCommand(workdir, command, info, timeoutMs = 4000) {
34
34
  : '/bin/sh',
35
35
  windowsHide: true,
36
36
  env: { ...process.env },
37
+ // Own process group so the timeout can kill the WHOLE tree. A command
38
+ // that backgrounds a child (a watcher, `npm run dev &`) leaves the
39
+ // grandchild holding our stdout pipe: killing only the shell kept
40
+ // 'close' from firing, so the promise stayed pending and the badge
41
+ // stopped updating on every tick.
42
+ detached: process.platform !== 'win32',
37
43
  });
38
44
  }
39
45
  catch {
@@ -58,7 +64,12 @@ export function runStatusLineCommand(workdir, command, info, timeoutMs = 4000) {
58
64
  // once a short line is buffered (the rest of that line does not matter).
59
65
  const timer = setTimeout(() => {
60
66
  try {
61
- child.kill();
67
+ if (process.platform !== 'win32' && child.pid) {
68
+ process.kill(-child.pid, 'SIGKILL');
69
+ }
70
+ else {
71
+ child.kill();
72
+ }
62
73
  }
63
74
  catch { }
64
75
  finish();
package/dist/subagent.js CHANGED
@@ -101,6 +101,17 @@ export function createSubagentRunner(opts) {
101
101
  // parent chat id) returned BEFORE anything ran, and charging those
102
102
  // attempts burned the whole budget on runs that never started.
103
103
  used++;
104
+ // The model is told to fill `description` (a short label for the log/UI).
105
+ // Without logging it every subagent turn in the transcript was anonymous,
106
+ // so a long run could not be attributed to a sub-task.
107
+ try {
108
+ transcript?.log('subagent_start', {
109
+ type: req.type,
110
+ description: req.description || '',
111
+ promptChars: String(req.prompt || '').length,
112
+ });
113
+ }
114
+ catch { }
104
115
  const subTools = buildTools(req.type === 'explore');
105
116
  const taskText = subagentPersona(req.type) + '\n\n--- SUB-TASK ---\n' + req.prompt;
106
117
  // Save the parent's send hooks: the nested loop OVERWRITES them on
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.82.28",
3
+ "version": "2.82.31",
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": {