@charmland/crush 0.66.1 → 0.68.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 +33 -6
  2. package/package.json +25 -25
package/README.md CHANGED
@@ -293,10 +293,36 @@ like you would. LSPs can be added manually like so:
293
293
 
294
294
  ### MCPs
295
295
 
296
- Crush also supports Model Context Protocol (MCP) servers through three
297
- transport types: `stdio` for command-line servers, `http` for HTTP endpoints,
298
- and `sse` for Server-Sent Events. Environment variable expansion is supported
299
- 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.
300
326
 
301
327
  ```json
302
328
  {
@@ -419,6 +445,8 @@ The global paths we looks for skills are:
419
445
  * `$CRUSH_SKILLS_DIR`
420
446
  * `$XDG_CONFIG_HOME/agents/skills` or `~/.config/agents/skills/`
421
447
  * `$XDG_CONFIG_HOME/crush/skills` or `~/.config/crush/skills/`
448
+ * `~/.agents/skills/`
449
+ * `~/.claude/skills/`
422
450
  * On Windows, we _also_ look at
423
451
  * `%LOCALAPPDATA%\agents\skills\` or `%USERPROFILE%\AppData\Local\agents\skills\`
424
452
  * `%LOCALAPPDATA%\crush\skills\` or `%USERPROFILE%\AppData\Local\crush\skills\`
@@ -522,8 +550,7 @@ it creates. You can customize this behavior with the `attribution` option:
522
550
 
523
551
  - `trailer_style`: Controls the attribution trailer added to commit messages
524
552
  (default: `assisted-by`)
525
- - `assisted-by`: Adds `Assisted-by: [Model Name] via Crush <crush@charm.land>`
526
- (includes the model name)
553
+ - `assisted-by`: Adds `Assisted-by: Crush:[ModelID]` as specified in [the convention](https://docs.kernel.org/process/coding-assistants.html#attribution)
527
554
  - `co-authored-by`: Adds `Co-Authored-By: Crush <crush@charm.land>`
528
555
  - `none`: No attribution trailer
529
556
  - `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.1",
4
+ "version": "0.68.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.1_Darwin_arm64.tar.gz",
31
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Darwin_arm64.tar.gz",
30
+ "name": "crush_0.68.0_Darwin_arm64.tar.gz",
31
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "de5c151eb1148ddb658192e05a1960eade12e560cb6050d7d93b798e059c3f3d"
38
+ "digest": "6faf033a60f7ab6a127ba58b4e7a050349c34b829fa77c762d767cfff4f68890"
39
39
  },
40
- "wrappedIn": "crush_0.66.1_Darwin_arm64"
40
+ "wrappedIn": "crush_0.68.0_Darwin_arm64"
41
41
  },
42
42
  "darwin-x64": {
43
- "name": "crush_0.66.1_Darwin_x86_64.tar.gz",
44
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Darwin_x86_64.tar.gz",
43
+ "name": "crush_0.68.0_Darwin_x86_64.tar.gz",
44
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "b9c72653a6716ab4458f03260dac6527669c764c294927abb07203e11315ee1a"
51
+ "digest": "1816e08d6a7da1fa73575d5250ea8905c7386a841eab2645273b56a8bf21972f"
52
52
  },
53
- "wrappedIn": "crush_0.66.1_Darwin_x86_64"
53
+ "wrappedIn": "crush_0.68.0_Darwin_x86_64"
54
54
  },
55
55
  "linux-arm64": {
56
- "name": "crush_0.66.1_Linux_arm64.tar.gz",
57
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Linux_arm64.tar.gz",
56
+ "name": "crush_0.68.0_Linux_arm64.tar.gz",
57
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "9c61a9158659b99195be356dc9263c97b298b5ea617f79336ffa78b59b2110ff"
64
+ "digest": "97c537ac167cf37bda7bdcec42cba74f3417e8aaca563890b34f74c678d61760"
65
65
  },
66
- "wrappedIn": "crush_0.66.1_Linux_arm64"
66
+ "wrappedIn": "crush_0.68.0_Linux_arm64"
67
67
  },
68
68
  "linux-x64": {
69
- "name": "crush_0.66.1_Linux_x86_64.tar.gz",
70
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Linux_x86_64.tar.gz",
69
+ "name": "crush_0.68.0_Linux_x86_64.tar.gz",
70
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "e04c0e9ff8eb3ae9ad0eb0afd13f58e37d70602235d678363a10617b8a5bc206"
77
+ "digest": "9a0260aef836ea7c17bb99c2afc505ccccf817db345d5ab8873274a9e15d3086"
78
78
  },
79
- "wrappedIn": "crush_0.66.1_Linux_x86_64"
79
+ "wrappedIn": "crush_0.68.0_Linux_x86_64"
80
80
  },
81
81
  "win32-arm64": {
82
- "name": "crush_0.66.1_Windows_arm64.zip",
83
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Windows_arm64.zip",
82
+ "name": "crush_0.68.0_Windows_arm64.zip",
83
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "9950a9e3300635891132a06f91276cae5fb4c2d1bc890823992000a127f32239"
90
+ "digest": "2cf23a3d316fdb9656192b20a258aa5db8ad6d1db1c2e8294e7c778461896790"
91
91
  },
92
- "wrappedIn": "crush_0.66.1_Windows_arm64"
92
+ "wrappedIn": "crush_0.68.0_Windows_arm64"
93
93
  },
94
94
  "win32-x64": {
95
- "name": "crush_0.66.1_Windows_x86_64.zip",
96
- "url": "https://github.com/charmbracelet/crush/releases/download/v0.66.1/crush_0.66.1_Windows_x86_64.zip",
95
+ "name": "crush_0.68.0_Windows_x86_64.zip",
96
+ "url": "https://github.com/charmbracelet/crush/releases/download/v0.68.0/crush_0.68.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": "2006a5a637e4a8ea4a3bd464a24c65e7c2ceb47df16795f96e0a848cc9fd23c3"
103
+ "digest": "fb54731ec69e9e35f89cd462416a965be81353185e2f7f00df7347449cf61a75"
104
104
  },
105
- "wrappedIn": "crush_0.66.1_Windows_x86_64"
105
+ "wrappedIn": "crush_0.68.0_Windows_x86_64"
106
106
  }
107
107
  }
108
108
  }