zames_pro 2.82.87 → 2.82.89

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,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.89] - 2026-10-24
11
+
12
+ ### Fixed
13
+
14
+ - **self-review:** collapse whitespace in the focus text
15
+
16
+ ## [2.82.88] - 2026-10-24
17
+
18
+ ### Fixed
19
+
20
+ - **cost:** a non-finite elapsed no longer makes the duration Infinity
21
+
10
22
  ## [2.82.87] - 2026-10-24
11
23
 
12
24
  ### Fixed
package/dist/commands.js CHANGED
@@ -130,7 +130,11 @@ export function summarizeTranscript(entries) {
130
130
  stats.toolTime[tool] = (stats.toolTime[tool] || 0) + ms;
131
131
  }
132
132
  }
133
- if (typeof e.elapsed === 'number' && e.elapsed > stats.durationMs) {
133
+ // A FINITE, non-negative elapsed only: `Infinity > 0` is true, so one
134
+ // entry with a broken timestamp made /cost report `duration: Infinity`.
135
+ if (typeof e.elapsed === 'number' &&
136
+ Number.isFinite(e.elapsed) &&
137
+ e.elapsed > stats.durationMs) {
134
138
  stats.durationMs = e.elapsed;
135
139
  }
136
140
  if (!stats.startedAt && typeof e.ts === 'string')
@@ -297,10 +297,23 @@ async function diffFiles(origDir, newDir) {
297
297
  }
298
298
  return changed;
299
299
  }
300
- function buildReviewPrompt({ focus, snapDir, }) {
301
- const focusLine = focus
302
- ? `\nThe user asked you to focus especially on: ${focus}\n`
300
+ /**
301
+ * The focus line of the self-review prompt. PURE. A NEWLINE in the focus used
302
+ * to start new lines of the prompt, so the operator's text could inject a
303
+ * whole extra instruction; collapse all whitespace into one sentence.
304
+ */
305
+ export function selfReviewFocusLine(focus) {
306
+ const f = String(focus ?? '')
307
+ .trim()
308
+ .replace(/\s+/g, ' ');
309
+ return f
310
+ ? `
311
+ The user asked you to focus especially on: ${f}
312
+ `
303
313
  : '';
314
+ }
315
+ function buildReviewPrompt({ focus, snapDir, }) {
316
+ const focusLine = selfReviewFocusLine(focus);
304
317
  return `You are a senior JavaScript/Node.js engineer. You are reviewing your own source code — a Playwright-based coding agent that talks to the DeepSeek web chat as an LLM backend.
305
318
 
306
319
  All source files are in your working directory: ${snapDir}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.82.87",
3
+ "version": "2.82.89",
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": {