chutes-build 1.4.0 → 1.5.1

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 (3) hide show
  1. package/CHANGELOG.md +128 -1
  2. package/README.md +57 -10
  3. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -4,7 +4,134 @@ All notable changes to Chutes Build will be documented in this file. The format
4
4
  is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this
5
5
  project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [Unreleased]
7
+ ## [1.5.1] - 2026-10-15
8
+
9
+ ### Fixed
10
+
11
+ - **Authentication is API-key-only: no login screen, ever.** Starting without
12
+ a key showed a `Login with Chutes Build` option that could only fail with
13
+ `No OAuth2 configuration available. Run 'chutes-build login'`. The Chutes
14
+ distribution now withholds account login end to end: no login method is
15
+ advertised, no session (inline env or `auth.json`) is served or honored,
16
+ the blocked screen names the one credential (`CHUTES_API_KEY`) instead of
17
+ a dead login option, and `chutes-build login` / `logout` explain the
18
+ setup instead of starting an OAuth flow. All headless, ACP, and sampling
19
+ auth errors point at the API key too.
20
+ - **Terminal tab no longer says `grok`.** The TUI title string is now
21
+ `chutes-build` (or `<title> - chutes-build`), still within the 80-column
22
+ guarantee.
23
+
24
+ ### Tests
25
+
26
+ - New pins: API-key-only method advertising (with and without a key, across
27
+ all `preferred_method` pins), ignored legacy session env, ignored session
28
+ in the `models` banner precedence, and the blocked-screen API-key setup
29
+ text with no login option.
30
+ - Known limitation: the `xai-grok-login` session-store machinery tests
31
+ (~106: manager refresh/recovery, OIDC refresher, device code) fail in
32
+ this build because the login store they exercise is intentionally absent
33
+ — reads find nothing and writes are refused by the pre-existing
34
+ distribution gate. They are not run by CI; the injected-distribution
35
+ storage tests pin both sides (STOCK reads/writes, withheld finds
36
+ nothing and refuses writes).
37
+
38
+ ## [1.5.0] - 2026-10-15
39
+
40
+ ### Changed
41
+
42
+ - **The runtime is re-based onto upstream `1.0.45` (`2bdd1d6a`).** The 1.0.12 tree
43
+ is replaced by the upstream 1.0.45 tree with the Chutes layer re-applied on
44
+ top (OAuth to the Chutes IdP, Chutes endpoints, prompt identity, tool
45
+ namespace, themes, wordmark). New upstream features carried: strict-harness
46
+ agent profiles, the `send_feedback` adjudication tool, hashline file tools,
47
+ concise tool variants, skill/plugin registries with trust stores, and the
48
+ memory-v2 filesystem knowledge base.
49
+ - **The Chutes ecosystem is now native to the agent.** New agent-callable tools:
50
+ document extraction from PDF/images (DocuExtract), speech transcription
51
+ (AudioDojo STT), and text embeddings (Qwen3-Embedding-8B), joining image,
52
+ video, music, image-edit, OCR, usage, browser, and Context7 tools. Text-only
53
+ models automatically delegate image reads to a multimodal model, and every
54
+ capability fails over to an equivalent chute when its primary is unavailable
55
+ — with an honest error note when no fallback exists at all.
56
+ - **Token efficiency re-baselined.** The fixed system prompt is pinned at 2,161
57
+ estimated tokens (ceiling 2,175) after compressing the Chutes sources block,
58
+ and the per-turn tool catalog is pinned at 12,784 tokens across 30 tools
59
+ (ceiling 12,820) by a re-ported census test. See
60
+ `docs/token-efficiency-plan.md`.
61
+ - **Reasoning registry refreshed against the live catalog.** Qwen3.8 joins the
62
+ verified `enable_thinking` toggle family; Kimi-K3, DeepSeek-V4-Flash, and
63
+ Nemotron-3-Nano stay fail-closed (`Unknown`, no reasoning keys sent) until a
64
+ chat-template switch is verified for them.
65
+ - **User guide rewritten for Chutes.** Every model example uses the live
66
+ catalog (`model-router` default, `cpk_...` keys), auth/update/telemetry
67
+ pages describe Chutes-only behavior, and the ecosystem page gains a
68
+ capability-defaults table verified against Chutes Docs and the code's
69
+ pinned slugs.
70
+
71
+ ### Fixed
72
+
73
+ - **Chutes-native tools now resolve in every agent build.** The tool-pack
74
+ registration ran after the registry snapshot was taken, so curated toolsets
75
+ listing `ChutesBuild:*` ids failed at finalize time; registration now happens
76
+ before the builder snapshots the packs.
77
+ - **Pre-rebrand preset names keep resolving.** `grok-build`, `grok-computer`,
78
+ and their concise/plan variants work as aliases of the `chutes-*` canonical
79
+ presets, so existing configs and upstream tests continue to work.
80
+ - **`--version` reports the fork name.** The version line read `grok x.y.z`;
81
+ it now reads `chutes-build x.y.z`.
82
+ - **`update` targets this repo's releases.** The GitHub-release updater
83
+ queried `xai-org-shared/chutes-build` for `grok-<version>-<platform>`
84
+ assets; it now queries `TheStreamCode/chutes-build` for the
85
+ `chutes-build-<target>[.exe]` assets the release workflow publishes,
86
+ installs to `bin/chutes-build[.exe]`, and maintains a
87
+ `chutes-build-latest` link. Managed-install detection, on-disk version
88
+ parsing, and stale-download cleanup follow the same names.
89
+ - **System config moved to `/etc/chutes-build`.** The Unix system layer no
90
+ longer reads Grok's `/etc/grok` managed files.
91
+ - **OAuth strings match the live issuer.** Help and docs named
92
+ `auth.chutes.ai`; both hosts serve discovery but the canonical issuer —
93
+ and the token `iss` — is `https://api.chutes.ai`, which the code
94
+ already used.
95
+
96
+ ### Removed
97
+
98
+ - **The unused static model scorer is gone.** `routing::TaskClass`,
99
+ `ModelCapabilities`, `ModelCandidate`, and `select_capable_model` had no
100
+ callers; equivalent-model selection lives in
101
+ `catalog::find_equivalent_chat_model`, which ranks the live catalog.
102
+
103
+ ### Privacy
104
+
105
+ - **Stock builds talk to Chutes and only Chutes.** Inference (API-key and
106
+ session), the model catalog, and every default endpoint resolve to Chutes
107
+ hosts; xAI hosts can no longer appear in a default resolution (pinned by
108
+ `stock_endpoints_resolve_to_chutes_only`). A probe of the rebased tree had
109
+ shown `https://api.x.ai/v1` as the resolved default — fixed.
110
+ - **The Chutes distribution withholds telemetry, error reporting, remote
111
+ control, and voice dictation.** `Distribution::current()` is now `CHUTES`,
112
+ which forces telemetry mode to `Disabled`, disables trace upload, gates the
113
+ feedback surface and session-signal sync behind the `Telemetry` capability,
114
+ and refuses relay connections (plus discard-port relay/gateway defaults).
115
+ - **No automatic update checks.** `should_check_for_updates` honors
116
+ `AUTOMATIC_SELF_UPDATE=false`; the `update` subcommand still checks on
117
+ explicit request.
118
+ - **The wire no longer identifies as Grok.** Request headers are renamed to
119
+ `x-chutes-build-*` (version, identifier, conversation/request/session/agent
120
+ ids, user agent); the legacy `X-XAI-Token-Auth` headers attach only for
121
+ genuine xAI hosts (BYOK compat).
122
+ - **Managed-config sync needs an explicit operator endpoint.** Stock builds
123
+ sync nothing instead of polling a default URL.
124
+ - **Dead Grok surfaces removed.** The unused grok-web skills client (and its
125
+ unreachable slash-command hook), the vestigial `curl|bash` installers that
126
+ fetched Grok Build binaries from xAI's bucket, and the unused xAI npm
127
+ packaging template are gone. The retention toggle is local-only (Chutes
128
+ serves no retention API), and `chutes-build models` works again
129
+ (`x.ai/models/list` → `chutes.ai/models/list`).
130
+ - **Rebase regressions restored.** The rebase had lost the fork's
131
+ `chutes-build` package/binary identity (breaking `cargo build -p
132
+ chutes-build` and the release workflow), the Chutes endpoint defaults, and
133
+ the external-OTEL compile-time deadening — all restored from `main` and
134
+ pinned by tests.
8
135
 
9
136
  ## [1.4.0] - 2026-09-03
10
137
 
package/README.md CHANGED
@@ -17,6 +17,7 @@ embedded in editors via the Agent Client Protocol (ACP).
17
17
  [Documentation](#documentation) ·
18
18
  [Repository layout](#repository-layout) ·
19
19
  [Development](#development) ·
20
+ [Troubleshooting](#troubleshooting) ·
20
21
  [Contributing](#contributing) ·
21
22
  [License](#license)
22
23
 
@@ -26,10 +27,11 @@ embedded in editors via the Agent Client Protocol (ACP).
26
27
 
27
28
  ## What this is, and what it is built on
28
29
 
29
- Chutes Build is a fork of [`xai-org/grok-build`](https://github.com/xai-org/grok-build)
30
- — SpaceXAI's Grok Build — re-based onto upstream 1.0.0 and adapted to run on
31
- Chutes. Upstream wrote most of the code in this tree and it is used here under
32
- Apache-2.0; the project is not affiliated with or endorsed by SpaceXAI.
30
+ Chutes Build started from [`xai-org/grok-build`](https://github.com/xai-org/grok-build)
31
+ (re-based onto upstream 1.0.45) and is developed independently, for the Chutes
32
+ ecosystem only: it talks to Chutes services and nothing else. Upstream code in
33
+ this tree is used under Apache-2.0 (see [`NOTICE`](NOTICE)); the project is not
34
+ affiliated with or endorsed by xAI.
33
35
 
34
36
  What the fork changes:
35
37
 
@@ -41,9 +43,12 @@ What the fork changes:
41
43
  sharing, remote workspace exposure and self-update are off at compile time and
42
44
  their endpoints are deadened, not merely unused. See
43
45
  [`PRIVACY.md`](PRIVACY.md).
44
- - **A few exclusive features**: Chutes media generation and editing, OCR, voice
45
- input through a Chutes STT endpoint, Context7 documentation lookup, and an
46
- isolated browser tool.
46
+ - **A few exclusive features**: native Chutes ecosystem tools the agent calls
47
+ by itself — image generation and editing, video and music generation,
48
+ speech-to-text and text-to-speech, PDF/document extraction, OCR, text
49
+ embeddings, and Context7 documentation lookup — plus an isolated browser
50
+ tool, automatic vision delegation for text-only models, and automatic
51
+ equivalent-model fallback when a chute is unavailable.
47
52
 
48
53
  Everything else is meant to track upstream closely, so their fixes arrive by
49
54
  merge rather than by hand. [`docs/upstream-sync.md`](docs/upstream-sync.md)
@@ -93,14 +98,14 @@ Requirements:
93
98
  - **protoc** — proto codegen resolves [`bin/protoc`](bin/protoc) via DotSlash,
94
99
  or falls back to a `protoc` on `PATH` / `$PROTOC`.
95
100
  - Windows, macOS and Linux all build. Windows is where this tree is developed and
96
- gated, and it needs the vendored `protoc` fallback carried here — upstream 1.0.0
101
+ gated, and it needs the vendored `protoc` fallback carried here — upstream
97
102
  does not build on Windows at all, because `bin/protoc` is a DotSlash wrapper the
98
103
  platform cannot execute from a build script.
99
104
 
100
105
  ```sh
101
106
  cargo run -p chutes-build # build + launch the TUI
102
107
  cargo build -p chutes-build --release # release binary: target/release/chutes-build
103
- cargo check -p chutes-build # fast validation
108
+ cargo check --workspace # fast validation
104
109
  ```
105
110
 
106
111
  The binary artifact is named `xai-grok-pager`; official installs ship it as
@@ -144,9 +149,51 @@ MCP servers, skills, plugins, hooks, headless mode, sandboxing, and more.
144
149
  cargo check -p <crate> # always target specific crates; full-workspace builds are slow
145
150
  cargo test -p xai-grok-config # per-crate tests
146
151
  cargo clippy -p <crate> # lint config: clippy.toml at the repo root
147
- cargo fmt --all # rustfmt.toml at the repo root
148
152
  ```
149
153
 
154
+ ## Troubleshooting
155
+
156
+ ### Missing `CHUTES_API_KEY`
157
+
158
+ On first launch `chutes-build` asks for a Chutes API key (created at
159
+ [chutes.ai/app/api](https://chutes.ai/app/api)); it is also readable from the
160
+ `CHUTES_API_KEY` environment variable. If requests fail with authentication
161
+ errors, check that the variable is exported in the launching shell — Chutes
162
+ Build reads the process environment and does not load `.env` files
163
+ automatically (see [`docs/configuration.md`](docs/configuration.md)).
164
+ Never commit a real key; use your shell, CI platform, or secret manager to
165
+ provide it, and run `chutes-build inspect --json` to verify the effective
166
+ non-secret configuration.
167
+
168
+ ### Model-pool routing errors
169
+
170
+ The default model route is Chutes' native routing: the saved `default` pool
171
+ (managed at chutes.ai/app → Model Routing), or an inline pool via
172
+ `CHUTES_ROUTING_POOL` (comma-separated catalogue ids sent as one `model`
173
+ value, e.g. `modelA,modelB,modelC`). If the `default` alias cannot resolve
174
+ and no dashboard pool is saved, the built-in fallback chain steps down to a
175
+ live inline pool from the current catalogue; a saved dashboard pool, once
176
+ configured, takes priority. Common fixes: save a pool on the dashboard, set
177
+ `CHUTES_ROUTING_POOL` explicitly, check `CHUTES_FALLBACK_MODELS` ordering (or
178
+ `CHUTES_STRICT_MODEL=1`, which disables automatic fallback), and pick a
179
+ strategy with `CHUTES_ROUTING_STRATEGY` (`sequential` default, `latency`, or
180
+ `throughput`). Full reference: [`docs/configuration.md`](docs/configuration.md)
181
+ ("Native model routing").
182
+
183
+ ### Windows console shows wrong glyphs
184
+
185
+ The TUI degrades decorative glyphs on the legacy Windows console (ConHost
186
+ `cmd.exe` / `powershell.exe`, Consolas/Lucida Console raster font, no font
187
+ fallback): arrows, checkmarks, diamonds, and spinners fall back to ASCII or
188
+ CP437-safe stand-ins (see
189
+ [`crates/codegen/xai-grok-pager-render/src/glyphs.rs`](crates/codegen/xai-grok-pager-render/src/glyphs.rs)).
190
+ This is expected on legacy ConHost — for the full rendering use Windows
191
+ Terminal, VS Code's terminal, or another modern emulator. Note that CI forces
192
+ the modern-glyph path with `CHUTES_BUILD_FORCE_LEGACY_CONSOLE=0` (see
193
+ [`.github/workflows/ci.yml`](.github/workflows/ci.yml)), so screenshots and
194
+ test rendering may look richer than a legacy local console.
195
+
196
+
150
197
  ## Contributing
151
198
 
152
199
  > [!NOTE]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chutes-build",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
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.4.0",
41
- "chutes-build-darwin-x64": "1.4.0",
42
- "chutes-build-linux-arm64-gnu": "1.4.0",
43
- "chutes-build-linux-x64-gnu": "1.4.0",
44
- "chutes-build-win32-arm64": "1.4.0",
45
- "chutes-build-win32-x64": "1.4.0"
40
+ "chutes-build-darwin-arm64": "1.5.1",
41
+ "chutes-build-darwin-x64": "1.5.1",
42
+ "chutes-build-linux-arm64-gnu": "1.5.1",
43
+ "chutes-build-linux-x64-gnu": "1.5.1",
44
+ "chutes-build-win32-arm64": "1.5.1",
45
+ "chutes-build-win32-x64": "1.5.1"
46
46
  },
47
47
  "keywords": [
48
48
  "ai",