Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Recent highlights:
npm install -g @opencoven/coven-code
```

Then open a new terminal and run `coven-code`. The `coven` and `coven-cave` aliases are also installed.
Then open a new terminal and run `coven-code`. The `coven-cave` alias is also installed. (The bare `coven` command belongs to the [Coven daemon CLI](https://github.com/OpenCoven/coven) — `@opencoven/cli` — which execs into `coven-code` for the TUI.)

### Upgrade

Expand Down
7 changes: 4 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ Cast `/incant caveman` or `/incant rocky` to compress model responses by 40–85
npm install -g @opencoven/coven-code
```

The package installs the `coven-code` CLI (with `coven` and `coven-cave`
aliases). Run `coven-code` with no arguments for the interactive UI. See
The package installs the `coven-code` CLI (with a `coven-cave` alias). Run
`coven-code` with no arguments for the interactive UI. The bare `coven`
command belongs to the Coven daemon CLI (`@opencoven/cli`). See
[Installation](installation)
for npm, bun, standalone binary, and source install options.

Expand All @@ -90,7 +91,7 @@ export ANTHROPIC_API_KEY=sk-ant-...
**3. Run interactively**

```bash
coven
coven-code
```

Or launch a direct harness session:
Expand Down
11 changes: 6 additions & 5 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ Releases — no compilation needed. After installation, run:
coven-code
```

The installed command is `coven-code`; `coven` and `coven-cave` are installed
as aliases for the same CLI.
The installed command is `coven-code`; `coven-cave` is installed as an alias
for the same CLI. The bare `coven` command is owned by the Coven daemon CLI
(`@opencoven/cli`) and is not installed by this package.

You can also run Coven Code without a permanent install:

Expand Down Expand Up @@ -297,15 +298,15 @@ cross build --release --locked --package claurst --target aarch64-unknown-linux-
## Shell Completions

Coven does not currently ship a dedicated `completions` subcommand. All
flags can be discovered via `coven --help`. If you want basic tab completion
flags can be discovered via `coven-code --help`. If you want basic tab completion
in bash or zsh you can use the generic completion helper built into your shell:

```bash
# bash — add to ~/.bashrc
complete -C coven coven
complete -C coven-code coven-code

# zsh — add to ~/.zshrc (requires compinit)
compdef _gnu_generic coven
compdef _gnu_generic coven-code
```

Richer completion scripts may be added in a future release.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/getting-started.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export function render() {
<h3>npm</h3>
<pre><code data-lang="bash">npm install -g @opencoven/coven-code</code></pre>

<p>This installs the <code>coven-code</code> CLI (with <code>coven</code> and <code>coven-cave</code> aliases). Run <code>coven-code</code> with no arguments for the interactive UI.</p>
<p>This installs the <code>coven-code</code> CLI (with a <code>coven-cave</code> alias). Run <code>coven-code</code> with no arguments for the interactive UI. The bare <code>coven</code> command belongs to the Coven daemon CLI (<code>@opencoven/cli</code>).</p>

<h3>From Source</h3>
<pre><code data-lang="bash">git clone https://github.com/OpenCoven/coven-code
Expand Down
8 changes: 4 additions & 4 deletions docs/src/content/installation.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export function render() {
# or
bun install -g @opencoven/coven-code</code></pre>

<p>The installed command is <code>coven-code</code>; <code>coven</code> and <code>coven-cave</code> are installed as aliases for the same CLI. Run <code>coven-code</code> with no arguments for the interactive UI. The postinstall script downloads the correct pre-built binary from GitHub Releases — no compilation needed.</p>
<p>The installed command is <code>coven-code</code>; <code>coven-cave</code> is installed as an alias for the same CLI. The bare <code>coven</code> command is owned by the Coven daemon CLI (<code>@opencoven/cli</code>) and is not installed by this package. Run <code>coven-code</code> with no arguments for the interactive UI. The postinstall script downloads the correct pre-built binary from GitHub Releases — no compilation needed.</p>

<pre><code data-lang="bash">npx @opencoven/coven-code
bunx @opencoven/coven-code</code></pre>
Expand Down Expand Up @@ -115,13 +115,13 @@ sudo pacman -S base-devel pkgconf openssl</code></pre>

<h2>Shell Completions</h2>

<p>Coven does not currently ship a dedicated completions subcommand. All flags can be discovered via <code>coven --help</code>. If you want basic tab completion in bash or zsh, use the generic completion helper built into your shell:</p>
<p>Coven does not currently ship a dedicated completions subcommand. All flags can be discovered via <code>coven-code --help</code>. If you want basic tab completion in bash or zsh, use the generic completion helper built into your shell:</p>

<pre><code data-lang="bash"># bash — add to ~/.bashrc
complete -C coven coven
complete -C coven-code coven-code

# zsh — add to ~/.zshrc (requires compinit)
compdef _gnu_generic coven</code></pre>
compdef _gnu_generic coven-code</code></pre>

<h2>Uninstalling</h2>

Expand Down
8 changes: 4 additions & 4 deletions install.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -168,23 +168,23 @@ function Install-FromBinary {

function Install-Binary($source) {
$target = Join-Path $InstallDir 'coven-code.exe'
$shortTarget = Join-Path $InstallDir 'coven.exe'
$aliasTarget = Join-Path $InstallDir 'coven-cave.exe'
# `coven.exe` belongs to the Coven daemon CLI (@opencoven/cli); older
# installers shipped it as an alias, so clean it up on upgrade.
$staleShort = Join-Path $InstallDir 'coven.exe'

# The currently running coven-code.exe (if any) holds an exclusive file lock on
# Windows. Try to swap by renaming the old one first.
foreach ($path in @($target, $shortTarget, $aliasTarget)) {
foreach ($path in @($target, $aliasTarget, $staleShort)) {
if (-not (Test-Path $path)) { continue }
$stale = "$path.old"
if (Test-Path $stale) { Remove-Item -Force $stale -ErrorAction SilentlyContinue }
try { Move-Item -Force $path $stale } catch { }
}

Copy-Item -Force $source $target
Copy-Item -Force $source $shortTarget
Copy-Item -Force $source $aliasTarget
Write-Success "Installed: $target"
Write-Success "Installed short command: $shortTarget"
Write-Success "Installed alias: $aliasTarget"
}

Expand Down
15 changes: 8 additions & 7 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ set -euo pipefail

APP=coven-code
ALIAS=coven-cave
SHORT=coven
REPO=OpenCoven/coven-code

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
Expand Down Expand Up @@ -116,8 +115,11 @@ fi

ln -sf "${APP}" "${INSTALL_DIR}/${ALIAS}" || cp "${INSTALL_DIR}/${APP}" "${INSTALL_DIR}/${ALIAS}"
chmod +x "${INSTALL_DIR}/${ALIAS}"
ln -sf "${APP}" "${INSTALL_DIR}/${SHORT}" || cp "${INSTALL_DIR}/${APP}" "${INSTALL_DIR}/${SHORT}"
chmod +x "${INSTALL_DIR}/${SHORT}"
# Remove any `coven` symlink left by older installers — that name belongs to
# the Coven daemon CLI (@opencoven/cli).
if [[ -L "${INSTALL_DIR}/coven" ]]; then
rm -f "${INSTALL_DIR}/coven"
fi
Comment on lines +118 to +122

# PATH setup
shell_rc=""
Expand All @@ -135,11 +137,10 @@ if [[ -n "$shell_rc" ]] && ! grep -qF "$INSTALL_DIR" "$shell_rc" 2>/dev/null; th
fi

print_message success "${APP} v${specific_version} installed to ${INSTALL_DIR}/${APP}"
print_message success "${SHORT} + ${ALIAS} aliases installed to ${INSTALL_DIR}"
print_message success "${ALIAS} alias installed to ${INSTALL_DIR}"
echo ""
echo -e " ${GREEN}${SHORT}${NC} ${MUTED}# Interactive TUI (short command)${NC}"
echo -e " ${GREEN}${APP}${NC} ${MUTED}# Same thing, full name${NC}"
echo -e " ${GREEN}${APP}${NC} ${MUTED}# Interactive TUI${NC}"
echo -e " ${GREEN}${ALIAS}${NC} ${MUTED}# Alias for ${APP}${NC}"
echo -e " ${GREEN}${SHORT} -p \"...\"${NC} ${MUTED}# Headless one-shot${NC}"
echo -e " ${GREEN}${APP} -p \"...\"${NC} ${MUTED}# Headless one-shot${NC}"
echo ""
echo -e " ${MUTED}Restart your shell or run: source ${shell_rc:-~/.bashrc}${NC}"
1 change: 0 additions & 1 deletion npm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
"author": "OpenCoven (based on Claurst by Kuber Mehta)",
"bin": {
"coven-code": "bin/coven-code",
"coven": "bin/coven-code",
"coven-cave": "bin/coven-code"
},
"scripts": {
Expand Down
1 change: 0 additions & 1 deletion scripts/prepare-npm-package.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ function readJson(file) {
assert.equal(pkg.version, '1.2.3');
assert.deepEqual(pkg.bin, {
'coven-code': 'bin/coven-code',
coven: 'bin/coven-code',
'coven-cave': 'bin/coven-code',
});
assert.match(readme, /^# coven-code$/m);
Expand Down