zames_pro 2.82.27 → 2.82.30

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.30] - 2026-10-22
11
+
12
+ ### Fixed
13
+
14
+ - **statusline:** kill the whole process group on timeout
15
+
16
+ ## [2.82.29] - 2026-10-22
17
+
18
+ ### Fixed
19
+
20
+ - **subagent:** log the sub-task description with the run
21
+
22
+ ## [2.82.28] - 2026-10-22
23
+
24
+ ### Fixed
25
+
26
+ - **scheduler:** render a zero interval as 0s, not 0h
27
+
10
28
  ## [2.82.27] - 2026-10-22
11
29
 
12
30
  ### Fixed
package/dist/scheduler.js CHANGED
@@ -33,6 +33,10 @@ export const MAX_TIMER_MS = 2_147_483_647;
33
33
  export function formatInterval(ms) {
34
34
  if (!Number.isFinite(ms))
35
35
  return '-';
36
+ // Zero must stay in SECONDS: `0 % 3_600_000 === 0`, so the hour branch used
37
+ // to render a job that is due NOW as `next ~0h`.
38
+ if (ms === 0)
39
+ return '0s';
36
40
  if (ms % 3_600_000 === 0)
37
41
  return ms / 3_600_000 + 'h';
38
42
  if (ms % 60_000 === 0)
@@ -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.27",
3
+ "version": "2.82.30",
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": {