@charmland/crush 0.66.0 → 0.67.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/README.md +32 -6
  2. package/package.json +25 -25
package/README.md CHANGED
@@ -181,6 +181,7 @@ That said, you can also set environment variables for preferred providers.
181
181
 
182
182
  | Environment Variable | Provider |
183
183
  | --------------------------- | -------------------------------------------------- |
184
+ | `HYPER_API_KEY` | Charm Hyper |
184
185
  | `ANTHROPIC_API_KEY` | Anthropic |
185
186
  | `OPENAI_API_KEY` | OpenAI |
186
187
  | `VERCEL_API_KEY` | Vercel AI Gateway |
@@ -292,10 +293,36 @@ like you would. LSPs can be added manually like so:
292
293
 
293
294
  ### MCPs
294
295
 
295
- Crush also supports Model Context Protocol (MCP) servers through three
296
- transport types: `stdio` for command-line servers, `http` for HTTP endpoints,
297
- and `sse` for Server-Sent Events. Environment variable expansion is supported
298
- using `$(echo $VAR)` syntax.
296
+ Crush also supports Model Context Protocol (MCP) servers through three transport
297
+ types: `stdio` for command-line servers, `http` for HTTP endpoints, and `sse`
298
+ for Server-Sent Events.
299
+
300
+ Shell-style value expansion (`$VAR`, `${VAR:-default}`, `$(command)`, quoting,
301
+ nesting) works in `command`, `args`, `env`, `headers`, and `url`, so
302
+ file-based secrets work out of the box. You can use values like `"$TOKEN"`
303
+ or `"$(cat /path/to/secret/token)"`. Expansion runs through Crush's embedded
304
+ shell, so the same syntax works on every supported system, Windows included.
305
+
306
+ Unset variables expand to the empty string by default, matching bash. For
307
+ required credentials, use `${VAR:?message}` so an unset variable fails loudly
308
+ at load time with `message` instead of silently resolving to empty:
309
+
310
+ ```json
311
+ { "api_key": "${CODEBERG_TOKEN:?set CODEBERG_TOKEN}" }
312
+ ```
313
+
314
+ Headers (both MCP `headers` and provider `extra_headers`) whose value
315
+ resolves to the empty string are dropped from the outgoing request rather
316
+ than sent as `Header:`. That keeps optional env-gated headers like
317
+ `"OpenAI-Organization": "$OPENAI_ORG_ID"` clean when the variable is unset.
318
+
319
+ Provider `extra_body` is a non-expanding JSON passthrough; put env-driven
320
+ values in `extra_headers` or the provider's `api_key` / `base_url`, all of
321
+ which do expand.
322
+
323
+ > **Security note:** `crush.json` is trusted code. Any `$(...)` in it runs at
324
+ > load time with your shell's privileges, before the UI appears. Don't launch
325
+ > Crush in a directory whose `crush.json` you haven't reviewed.
299
326
 
300
327
  ```json
301
328
  {
@@ -521,8 +548,7 @@ it creates. You can customize this behavior with the `attribution` option:
521
548
 
522
549
  - `trailer_style`: Controls the attribution trailer added to commit messages
523
550
  (default: `assisted-by`)
524
- - `assisted-by`: Adds `Assisted-by: [Model Name] via Crush <crush@charm.land>`
525
- (includes the model name)
551
+ - `assisted-by`: Adds `Assisted-by: Crush:[ModelID]` as specified in [the convention](https://docs.kernel.org/process/coding-assistants.html#attribution)
526
552
  - `co-authored-by`: Adds `Co-Authored-By: Crush <crush@charm.land>`
527
553
  - `none`: No attribution trailer
528
554
  - `generated_with`: When true (default), adds `💘 Generated with Crush` line to
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@charmland/crush",
3
3
  "type": "module",
4
- "version": "0.66.0",
4
+ "version": "0.67.0",
5
5
  "description": "A powerful terminal-based AI assistant for developers, providing intelligent coding assistance directly in your terminal.",
6
6
  "scripts": {
7
7
  "postinstall": "node install.js",
@@ -27,82 +27,82 @@
27
27
  },
28
28
  "archives": {
29
29
  "darwin-arm64": {
30
- "name": "crush_0.66.0_Darwin_arm64.tar.gz",
31
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Darwin_arm64.tar.gz",
30
+ "name": "crush_0.67.0_Darwin_arm64.tar.gz",
31
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Darwin_arm64.tar.gz",
32
32
  "bins": [
33
33
  "crush"
34
34
  ],
35
35
  "format": "tar.gz",
36
36
  "checksum": {
37
37
  "algorithm": "sha256",
38
- "digest": "4d5aa32a208b8bf891819ca4f0e2d358b2ced20c486295f038afc7cea6094ea1"
38
+ "digest": "768a0138e037de1114bb4045ab32e7f8150b4731f778ebefa9c077a68956ee1c"
39
39
  },
40
- "wrappedIn": "crush_0.66.0_Darwin_arm64"
40
+ "wrappedIn": "crush_0.67.0_Darwin_arm64"
41
41
  },
42
42
  "darwin-x64": {
43
- "name": "crush_0.66.0_Darwin_x86_64.tar.gz",
44
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Darwin_x86_64.tar.gz",
43
+ "name": "crush_0.67.0_Darwin_x86_64.tar.gz",
44
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Darwin_x86_64.tar.gz",
45
45
  "bins": [
46
46
  "crush"
47
47
  ],
48
48
  "format": "tar.gz",
49
49
  "checksum": {
50
50
  "algorithm": "sha256",
51
- "digest": "3e5dd5759cdc41dbad7b2338ea1e7dd0934e824dd70cade64c00ac25dc4b776b"
51
+ "digest": "da369a4ff1f99949a63387bfac1a14a52753bb8d048917e6449e71b13c4fd4e9"
52
52
  },
53
- "wrappedIn": "crush_0.66.0_Darwin_x86_64"
53
+ "wrappedIn": "crush_0.67.0_Darwin_x86_64"
54
54
  },
55
55
  "linux-arm64": {
56
- "name": "crush_0.66.0_Linux_arm64.tar.gz",
57
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Linux_arm64.tar.gz",
56
+ "name": "crush_0.67.0_Linux_arm64.tar.gz",
57
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Linux_arm64.tar.gz",
58
58
  "bins": [
59
59
  "crush"
60
60
  ],
61
61
  "format": "tar.gz",
62
62
  "checksum": {
63
63
  "algorithm": "sha256",
64
- "digest": "87e5223bb561822ccba836a98bf8132698fce5fde780071e8252fead65ec6d33"
64
+ "digest": "74882a67454e955d839eb234320039b554c96513cf445be14cd6093a6af601f5"
65
65
  },
66
- "wrappedIn": "crush_0.66.0_Linux_arm64"
66
+ "wrappedIn": "crush_0.67.0_Linux_arm64"
67
67
  },
68
68
  "linux-x64": {
69
- "name": "crush_0.66.0_Linux_x86_64.tar.gz",
70
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Linux_x86_64.tar.gz",
69
+ "name": "crush_0.67.0_Linux_x86_64.tar.gz",
70
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Linux_x86_64.tar.gz",
71
71
  "bins": [
72
72
  "crush"
73
73
  ],
74
74
  "format": "tar.gz",
75
75
  "checksum": {
76
76
  "algorithm": "sha256",
77
- "digest": "586eeed320e36c6a570ceedf7497b2a30144ba2d032e99f873fc50edc5135bfa"
77
+ "digest": "f212c36f885f46562da3b591b6606d1c5504ea986c796c56e930336aa3d1ad94"
78
78
  },
79
- "wrappedIn": "crush_0.66.0_Linux_x86_64"
79
+ "wrappedIn": "crush_0.67.0_Linux_x86_64"
80
80
  },
81
81
  "win32-arm64": {
82
- "name": "crush_0.66.0_Windows_arm64.zip",
83
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Windows_arm64.zip",
82
+ "name": "crush_0.67.0_Windows_arm64.zip",
83
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Windows_arm64.zip",
84
84
  "bins": [
85
85
  "crush.exe"
86
86
  ],
87
87
  "format": "zip",
88
88
  "checksum": {
89
89
  "algorithm": "sha256",
90
- "digest": "cb8a81067e0add7d583a96c256a5bc149f1d8f02e1836c453287bcc1ba6ef56a"
90
+ "digest": "49fc253fea71b8a435834ae07a039bfaa87bbaeab881a874d3ecad5644cea7e7"
91
91
  },
92
- "wrappedIn": "crush_0.66.0_Windows_arm64"
92
+ "wrappedIn": "crush_0.67.0_Windows_arm64"
93
93
  },
94
94
  "win32-x64": {
95
- "name": "crush_0.66.0_Windows_x86_64.zip",
96
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.0/crush_0.66.0_Windows_x86_64.zip",
95
+ "name": "crush_0.67.0_Windows_x86_64.zip",
96
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.67.0/crush_0.67.0_Windows_x86_64.zip",
97
97
  "bins": [
98
98
  "crush.exe"
99
99
  ],
100
100
  "format": "zip",
101
101
  "checksum": {
102
102
  "algorithm": "sha256",
103
- "digest": "7f797239fc2d1cce8a0391582dbb26e45860be37908146bb202a0a8cce0de48e"
103
+ "digest": "996549ec8f52c20495d3d740ba5989a6480a30c89b742310a07f80a114cd7b15"
104
104
  },
105
- "wrappedIn": "crush_0.66.0_Windows_x86_64"
105
+ "wrappedIn": "crush_0.67.0_Windows_x86_64"
106
106
  }
107
107
  }
108
108
  }