zames_pro 2.81.16 → 2.81.17

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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.81.17] - 2026-10-21
11
+
12
+ ### Fixed
13
+
14
+ - **tools:** Read past EOF explains the empty window
15
+
10
16
  ## [2.81.16] - 2026-10-21
11
17
 
12
18
  ### Fixed
package/dist/tools.js CHANGED
@@ -127,6 +127,14 @@ export function createTools(workdir, { undo, todos, readOnly = false, subagents
127
127
  const start = off - 1;
128
128
  const lim = Math.floor(Number(limit));
129
129
  const end = Number.isFinite(lim) && lim > 0 ? start + lim : lines.length;
130
+ // An offset PAST the end returned an empty string, which the model
131
+ // reads as "the file is empty" instead of "your window does not
132
+ // exist" - it then re-read from the start or gave up. Say so, with
133
+ // the real line count.
134
+ if (start >= lines.length) {
135
+ return (`(offset ${off} is past the end of ${p}: the file has ` +
136
+ `${lines.length} line${lines.length === 1 ? '' : 's'})`);
137
+ }
130
138
  const slice = lines.slice(start, end);
131
139
  const clip = (l) => l.length > 2000 ? clipLine(l, 2000) + ' …[line truncated]' : l;
132
140
  if (!numbered)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zames_pro",
3
- "version": "2.81.16",
3
+ "version": "2.81.17",
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": {