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
7 changes: 7 additions & 0 deletions docs/superpowers/plans/2026-07-12-coven-cli-unification.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Coven CLI Unification Implementation Plan

> **Status: COMPLETE (sealed 2026-07-14).** Every phase landed — engine side
> via coven-code #150–#155, #158, #160, #162; coven side via #346, #353,
> #354, #355. Phase 6 decided **NO-GO** (keep the process boundary; ADR:
> [`2026-07-14-phase6-source-merge-decision.md`](2026-07-14-phase6-source-merge-decision.md)).
> This plan is a historical record; the living summary is
> [`docs/unification.md`](../../unification.md).

> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** Make `coven` the one CLI users install and type for everything — interactive agent work, headless runs, session management, auth, models — with coven-code absorbed as a managed, invisible engine.
Expand Down
4 changes: 4 additions & 0 deletions docs/superpowers/plans/2026-07-12-phase3-engine-harness.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Phase 3 — Engine as a First-Class Daemon-Ledgered Harness

> **Status: COMPLETE (sealed 2026-07-14).** Track A landed via coven #354;
> Track B via coven #355 (daemon endpoints) + coven-code #152 (opt-in TUI
> notifier). Historical record; see [`docs/unification.md`](../../unification.md).

> **For agentic workers:** REQUIRED SUB-SKILL: superpowers:subagent-driven-development. Steps use `- [ ]`. This is the Phase 3 sub-plan of `2026-07-12-coven-cli-unification.md`.

**Goal:** `coven run coven-code "task"` produces a normal ledgered session (detach/attach/kill/archive/search); the bare-prompt cast defaults to the engine; and interactive engine TUI sessions register themselves in the daemon ledger so `coven sessions` sees them.
Expand Down
5 changes: 5 additions & 0 deletions docs/superpowers/plans/2026-07-12-phase4-state-unification.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Phase 4 — State, Config & Auth Unification under `~/.coven`

> **Status: COMPLETE (sealed 2026-07-14).** Track C landed via coven-code
> #153 (engine home `~/.coven/code/`, in-place migration, compatibility
> symlink, config layering). Historical record; see
> [`docs/unification.md`](../../unification.md).

> **For agentic workers:** REQUIRED SUB-SKILL: superpowers:subagent-driven-development. Steps use `- [ ]`. Phase 4 sub-plan of `2026-07-12-coven-cli-unification.md`.

**Goal:** one state root (`~/.coven`), layered config, no user-visible `~/.coven-code` on fresh installs, one auth story surfaced by one doctor, and search that spans engine TUI sessions.
Expand Down
15 changes: 11 additions & 4 deletions docs/superpowers/plans/2026-07-14-phase5-brand-sweep.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Phase 5 — Brand / UX Naming Sweep

> **Status: COMPLETE (sealed 2026-07-14).** Landed via coven-code #154
> (user-facing sweep + direct-invocation notice), #158 (LLM-facing tool
> descriptions), #160 (ACP display name). Task 5.6 npm deprecation was
> executed with user approval — the registry now serves the deprecation
> notice — and #162 made engine npm-publish opt-in per release. Historical
> record; see [`docs/unification.md`](../../unification.md).

> Phase 5 sub-plan of the coven CLI unification. Curated, recon-grounded. Only USER-FACING surfaces change; the binary name (`coven-code`/`coven-cave`), `claurst-*` crates, `COVEN_CODE_*` env vars, `.coven-code` internal paths, and repo URLs STAY (per COVEN.md).

**Goal:** users see the unified "Coven" brand; nobody is told to install/use "coven-code" separately; `coven --version` surfaces the whole stack.
Expand Down Expand Up @@ -31,11 +38,11 @@ DO NOT change: binary/crate/env/path/theme-const/test/comment/repo-URL reference
### 5.1 — direct-invocation notice [coven-code]
In `crates/cli/src/main.rs` after `Cli::parse()` (~line 503) and after the `is_headless` determination (~643): if the run is INTERACTIVE (not headless/print/prompt), stdout/stderr is a TTY (`crossterm::terminal::is_terminal`), AND `COVEN_PARENT` is unset → `eprintln!` the dim notice once (before `run_interactive`). Silent when `COVEN_PARENT` is set (driven by coven) or non-interactive. The `coven-cave` alias re-execs `coven-code`, so it inherits this. Test the pure decision (`should_show_engine_notice(is_interactive, is_tty, coven_parent_set) -> bool`).

## Task 5.3 — `coven --version` surfaces engine + pin [coven] — IN PROGRESS
Custom `--version` intercept → `coven <desc> (engine coven-code <installed|not installed>, pinned <pinned>)`. (dispatched)
## Task 5.3 — `coven --version` surfaces engine + pin [coven] — DONE
Custom `--version` intercept landed on coven main (`version_line()` in `crates/coven-cli/src/main.rs`): `coven <desc> (engine coven-code <installed|not installed>, pinned <pinned>)`.

## Task 5.6 — npm deprecation [HELDoutward-facing, needs explicit user go-ahead]
`npm deprecate @opencoven/coven-code "Install @opencoven/cli — coven-code is now the Coven engine"`. Engine binaries keep shipping via GitHub Releases. DO NOT run autonomously; surface for confirmation.
## Task 5.6 — npm deprecation [DONEexecuted with user approval]
`npm deprecate @opencoven/coven-code "Install @opencoven/cli — coven-code is now the Coven engine"` has been run; the registry serves the notice. Engine binaries keep shipping via GitHub Releases (npm publish is opt-in per release since #162).

## Exit check
A new user reaches install → first session without seeing the string "coven-code" in any prose surface; running `coven-code` directly prints the "use coven" hint; `coven --version` shows coven + engine + pin.
22 changes: 13 additions & 9 deletions docs/unification.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# The Coven merge — unified CLI guide

**Status:** in progress · **Last verified:** 2026-07-13 · **Contract:** v1
**Status:** complete — all phases landed, Phase 6 decided (keep the process
boundary) · **Last verified:** 2026-07-14 · **Contract:** v1

This guide explains the merge of `coven-code` into the unified `coven` CLI
("the Coven CLI unification"), what users need to do to move over seamlessly,
Expand Down Expand Up @@ -85,7 +86,7 @@ one, without waiting for a coven release.

---

## 2. Where the merge stands (verified 2026-07-12)
## 2. Where the merge stands (verified 2026-07-14 — sealed)

| Phase | Deliverable | Status |
|---|---|---|
Expand All @@ -95,8 +96,8 @@ one, without waiting for a coven release.
| 3A | Engine as first-class harness; bare prompts prefer the engine | **Landed** — coven [#354](https://github.com/OpenCoven/coven/pull/354) merged, zero engine-side changes |
| 3B | Externally-owned sessions in the daemon ledger | **Landed** — coven [#355](https://github.com/OpenCoven/coven/pull/355) (daemon endpoints) + coven-code [#152](https://github.com/OpenCoven/coven-code/pull/152) (TUI notifier, opt-in `daemonLedger` setting) merged |
| 4 | State/config/auth unification under `~/.coven` | **Landed** — coven-code [#153](https://github.com/OpenCoven/coven-code/pull/153) merged (engine home `~/.coven/code/` with in-place migration + shared settings layer) |
| 5 | Brand/UX sweep, npm deprecation of the engine package | **In progress** — coven-code [#154](https://github.com/OpenCoven/coven-code/pull/154) merged (user-facing rebrand + direct-invocation notice); npm deprecation pending |
| 6 | Decision gate: full source merge | Standing recommendation: **don't** — keep the process boundary |
| 5 | Brand/UX sweep, npm deprecation of the engine package | **Landed** — coven-code [#154](https://github.com/OpenCoven/coven-code/pull/154) (user-facing rebrand + direct-invocation notice), [#158](https://github.com/OpenCoven/coven-code/pull/158) (LLM-facing tool descriptions), [#160](https://github.com/OpenCoven/coven-code/pull/160) (ACP display name); `@opencoven/coven-code` deprecated on npm (notice points at `@opencoven/cli`); engine npm-publish made opt-in per release, GitHub Releases stay the artifact source ([#162](https://github.com/OpenCoven/coven-code/pull/162)) |
| 6 | Decision gate: full source merge | **DecidedNO-GO**, keep the process boundary ([#155](https://github.com/OpenCoven/coven-code/pull/155), ADR: [`2026-07-14-phase6-source-merge-decision.md`](superpowers/plans/2026-07-14-phase6-source-merge-decision.md)) |

The coven-side phases landed in order (#346, #353, #354, #355; the original
stacked PRs #347–#349 were superseded by these re-landed equivalents after
Expand Down Expand Up @@ -162,11 +163,14 @@ Notes:
- Direct `coven-code …` invocation remains fully supported. Since the
Phase 5 sweep (#154) it prints one dim notice line when run interactively
outside coven (`COVEN_PARENT` unset); scripted/delegated runs stay silent.
- The `@opencoven/coven-code` npm package keeps working through Phase 5, and
only then gets an `npm deprecate` notice. GitHub release archives remain
the artifact source permanently (they are what `coven engine install`
downloads). Note the bare `coven-code` npm name is an unrelated, already
deprecated package — only the scoped name is real.
- The `@opencoven/coven-code` npm package is **deprecated** (the notice
points at `@opencoven/cli`). Installed copies keep working, but new engine
versions are no longer published to npm by default — publishing is an
opt-in switch per release since [#162](https://github.com/OpenCoven/coven-code/pull/162).
GitHub release archives remain the artifact source permanently (they are
what `coven engine install` downloads). Note the bare `coven-code` npm
name is an unrelated, already deprecated package — only the scoped name
is real.
- Version drift: if your PATH engine is older than coven's pin you get a
one-line warning; below `MIN_ENGINE_VERSION` (0.6.1) coven refuses with an
actionable message. `coven engine install` fixes both.
Expand Down