You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.3.54: fix read_file line ranges, tool-name aliases, always force a final reply
- read_file now honors line_start/line_end (and offset/limit) instead of always
returning the file head, so the model can navigate large files instead of
re-reading the same chunk until it runs out of rounds. Params are advertised
in both the builtin and coding tool defs.
- Map hallucinated tool names (search→grep_search, print_tree/tree→list_directory,
find/glob→glob_search, cat→read_file) onto the real tools so the call works.
- Fixed the coding prompt to name the real tools (glob_search/grep_search).
- The cloud tool loop now always does a final tool-less completion after running
out of rounds, even if some interim text leaked, so the turn never ends empty.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: vortelio-pip/pyproject.toml
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
5
5
[project]
6
6
name = "vortelio"
7
-
version = "0.3.53"
7
+
version = "0.3.54"
8
8
description = "Local-first AI platform. Run LLMs, generate images & video, transcribe audio, create 3D — on your own machine. OpenAI & Ollama API compatible. Apache 2.0."
Description: "Reads the contents of a file from the local filesystem.",
154
-
Parameters: json.RawMessage(`{"type":"object","properties":{"path":{"type":"string","description":"Absolute or relative path to the file"}},"required":["path"]}`),
177
+
Description: "Reads a text file. Optionally read only a line range with line_start/line_end (1-based, inclusive) to navigate large files.",
178
+
Parameters: json.RawMessage(`{"type":"object","properties":{"path":{"type":"string","description":"Absolute or relative path to the file"},"line_start":{"type":"integer","description":"First line to return (1-based, inclusive). Optional."},"line_end":{"type":"integer","description":"Last line to return (1-based, inclusive). Optional."}},"required":["path"]}`),
toolDef("read_file", "Read a UTF-8 text file from the workspace.",
587
-
`{"type":"object","properties":{"path":{"type":"string","description":"File path, relative to the workspace root or absolute."}},"required":["path"]}`),
586
+
toolDef("read_file", "Read a UTF-8 text file from the workspace. Use line_start/line_end (1-based, inclusive) to read only part of a large file.",
587
+
`{"type":"object","properties":{"path":{"type":"string","description":"File path, relative to the workspace root or absolute."},"line_start":{"type":"integer","description":"First line (1-based, inclusive). Optional."},"line_end":{"type":"integer","description":"Last line (1-based, inclusive). Optional."}},"required":["path"]}`),
588
588
toolDef("list_directory", "List files and folders at a path in the workspace.",
589
589
`{"type":"object","properties":{"path":{"type":"string","description":"Directory path. Defaults to workspace root."}},"required":[]}`),
590
590
toolDef("glob_search", "Find files matching a glob pattern (e.g. **/*.go).",
0 commit comments