chutes-build 1.0.4 → 1.1.0

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -6,6 +6,23 @@ project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.1.0] - 2026-08-18
10
+
11
+ ### Added
12
+
13
+ - **Tool calls emitted as plain text are recovered.** An open-weight model served through vLLM or SGLang can emit a well-formed tool call in its own chat-template syntax while the server-side parser returns an empty `tool_calls` array, so the turn ends having done nothing and the user sees raw markup. The runtime now recognises the Hermes/Qwen `<tool_call>`, Kimi K2 and Llama inline-function shapes (plus a strict fenced-JSON form) and turns them back into real calls only when the name resolves to a registered tool and the arguments pass that tool's own parser. `CHUTES_DISABLE_TOOL_TEXT_RECOVERY=1` disables it.
14
+ - **`/usage` reports cache effectiveness.** A `cache_read_ratio` (cached read tokens divided by input tokens, clamped to `[0, 1]`) and per-call `cache_hit_calls` / `cache_miss_calls` counters join the token totals; the TUI usage block now shows the cached percentage and the hit count.
15
+
16
+ ### Changed
17
+
18
+ - **Models without tool calling no longer receive a `tools` array.** The live catalog's `supported_features` now gates tool specs: a model that does not advertise `tools` gets an empty tool list instead of a request its endpoint rejects. The `StructuredOutput` tool is gated the same way and falls back to validating the final answer text directly. The default stays `true` for models absent from the catalog.
19
+
20
+ ### Fixed
21
+
22
+ - **Parallel tool calls from providers that omit the chunk index no longer fuse.** `ToolCallDelta.index` is now optional, and the stream correlates by tool-call `id` when the index is absent; previously a missing index defaulted to `0`, merging every parallel call into one accumulator and concatenating their arguments into invalid JSON.
23
+ - **Non-streaming requests now apply the Chutes reasoning plan.** Compaction, title generation and the advisor sent the bare payload to the configured inference base, dropping the `chat_template_kwargs` thinking switches and never routing `model-router` to the router endpoint, the same asymmetry the streaming path already handled.
24
+ - **Stream deserialization errors name the offending chute.** A failed chunk now carries a short excerpt of the SSE payload alongside the serde error, so "expected value at line 1 column 1" says which backend produced what.
25
+
9
26
  ## [1.0.4] - 2026-08-12
10
27
 
11
28
  Two threads. The manual port from upstream `b13fa526` begins — one area per
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chutes-build",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Privacy-first, open-source coding agent for the Chutes ecosystem",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Michael Gasperini (Mikesoft)",
@@ -37,12 +37,12 @@
37
37
  "check": "npm test && npm run verify:release && npm pack --dry-run"
38
38
  },
39
39
  "optionalDependencies": {
40
- "chutes-build-darwin-arm64": "1.0.4",
41
- "chutes-build-darwin-x64": "1.0.4",
42
- "chutes-build-linux-arm64-gnu": "1.0.4",
43
- "chutes-build-linux-x64-gnu": "1.0.4",
44
- "chutes-build-win32-arm64": "1.0.4",
45
- "chutes-build-win32-x64": "1.0.4"
40
+ "chutes-build-darwin-arm64": "1.1.0",
41
+ "chutes-build-darwin-x64": "1.1.0",
42
+ "chutes-build-linux-arm64-gnu": "1.1.0",
43
+ "chutes-build-linux-x64-gnu": "1.1.0",
44
+ "chutes-build-win32-arm64": "1.1.0",
45
+ "chutes-build-win32-x64": "1.1.0"
46
46
  },
47
47
  "keywords": [
48
48
  "ai",