ralphctl 0.7.3 → 0.8.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.
package/README.md CHANGED
@@ -22,8 +22,10 @@ with [GitHub Copilot](https://docs.github.com/en/copilot/github-copilot-in-the-c
22
22
  > _"I'm helping!"_ — Ralph Wiggum
23
23
 
24
24
  > [!NOTE]
25
- > **Active development** new features and polish ship regularly. Setup is quick, so upgrading is low-friction.
26
- > See [CHANGELOG](./CHANGELOG.md).
25
+ > **Active development.** New features and polish ship regularly. The 0.7.x
26
+ > line landed a burst of structural changes — thanks for sticking with us
27
+ > through it. Upgrades are simple: install the latest version, redo your
28
+ > config, proceed. See [Upgrading](#upgrading) and [CHANGELOG](./CHANGELOG.md).
27
29
 
28
30
  ---
29
31
 
@@ -90,8 +92,16 @@ ralphctl export-context --sprint <id> --project <id> --output <path>
90
92
 
91
93
  # Settings
92
94
  ralphctl settings show
93
- ralphctl settings set ai.provider claude-code
94
- ralphctl settings set ai.models.implement <model-id>
95
+ ralphctl settings apply-preset claude-only # or mixed / copilot-only / codex-only
96
+ ralphctl settings set ai.implement.provider claude-code
97
+ ralphctl settings set ai.implement.model <model-id>
98
+ ralphctl settings set ai.implement.effort high
99
+
100
+ # Rebuild a sprint's progress.md from disk
101
+ ralphctl sprint regenerate-progress <sprint-id>
102
+
103
+ # Single-frame text digest of the active sprint
104
+ ralphctl snapshot [--sprint <id>]
95
105
  ```
96
106
 
97
107
  </details>
@@ -138,17 +148,21 @@ For the full architectural picture see [`.claude/docs/ARCHITECTURE.md`](./.claud
138
148
  > [!IMPORTANT]
139
149
  > Not all three AI providers are equally production-ready inside ralphctl.
140
150
 
141
- | Provider | Status | Headless flag | Native context file |
142
- | ----------------------------------------- | --------------------------------------- | ------------------------------------- | --------------------------------- |
143
- | **Claude Code** (`claude-code`) | **Stable — primary verified provider** | `--permission-mode bypassPermissions` | `CLAUDE.md` at repo root |
144
- | **GitHub Copilot CLI** (`github-copilot`) | Preview — not officially verified by us | `--allow-all-tools` | `.github/copilot-instructions.md` |
145
- | **OpenAI Codex** (`openai-codex`) | Preview — not officially verified by us | per-session approval flow | `AGENTS.md` |
151
+ | Provider | Status | Headless flag | Native context file |
152
+ | ----------------------------------------- | --------------------------------------- | ----------------------------------------------------------- | --------------------------------- |
153
+ | **Claude Code** (`claude-code`) | **Stable — primary verified provider** | `--permission-mode bypassPermissions` + per-tool deny list | `CLAUDE.md` at repo root |
154
+ | **GitHub Copilot CLI** (`github-copilot`) | Preview — not officially verified by us | `--autopilot --allow-all` + `--max-autopilot-continues=200` | `.github/copilot-instructions.md` |
155
+ | **OpenAI Codex** (`openai-codex`) | Preview — not officially verified by us | `-s workspace-write` (topology-scoped) | `AGENTS.md` |
146
156
 
147
157
  "Preview" means the integration exists and the TUI lets you select it, but end-to-end harness behaviour against those
148
158
  providers has not been formally verified. Copilot and Codex no-op some features (bundled skill injection, `bodyFile`
149
- forensic artifacts). If you hit a rough edge on a preview provider,
159
+ forensic artifacts). Codex cannot fine-grained-deny edits on existing repo files its sandbox modes are binary, so
160
+ path scope (cwd + `--add-dir`) is the only safety envelope. If you hit a rough edge on a preview provider,
150
161
  please [open an issue](https://github.com/lukas-grigis/ralphctl/issues).
151
162
 
163
+ One-shot configuration for any provider: `ralphctl settings apply-preset <name>` where `<name>` is
164
+ `mixed`, `claude-only`, `copilot-only`, or `codex-only`.
165
+
152
166
  ---
153
167
 
154
168
  ## Features
@@ -172,25 +186,35 @@ please [open an issue](https://github.com/lukas-grigis/ralphctl/issues).
172
186
 
173
187
  ## Configuration
174
188
 
175
- Configure via the TUI `Settings` view or one-shot CLI commands:
189
+ Configure via the TUI `Settings` view or one-shot CLI commands.
190
+
191
+ **Quickest path — apply a preset:**
176
192
 
177
193
  ```bash
178
- ralphctl settings set ai.provider claude-code # Use Claude Code (stable)
179
- ralphctl settings set ai.provider github-copilot # Use GitHub Copilot (preview)
180
- ralphctl settings set ai.provider openai-codex # Use OpenAI Codex (preview)
194
+ ralphctl settings apply-preset mixed # best-fit provider per flow
195
+ ralphctl settings apply-preset claude-only # every flow on Claude Code
196
+ ralphctl settings apply-preset copilot-only # every flow on GitHub Copilot
197
+ ralphctl settings apply-preset codex-only # every flow on OpenAI Codex
181
198
  ```
182
199
 
183
- The selected provider's CLI must be in your `PATH` and authenticated. The TUI prompts you on first launch if no provider
184
- is configured.
200
+ A preset stamps the entire `ai` section in one shot. None is marked default; on a fresh install the welcome
201
+ view silently auto-seeds a preset based on which provider CLIs it detects on `PATH`.
185
202
 
186
- **Per-flow model selection.** Each chain (`refine`, `plan`, `implement`, `ideate`, `readiness`) carries its own model
187
- from the configured provider's catalog:
203
+ **Per-flow settings.** Each chain (`refine`, `plan`, `implement`, `ideate`, `readiness`) carries its own
204
+ `{provider, model, effort?}` row. Edit individual keys with:
188
205
 
189
206
  ```bash
190
- ralphctl settings set ai.models.implement <model-id>
191
- ralphctl settings set ai.models.plan <model-id>
207
+ ralphctl settings set ai.implement.provider claude-code
208
+ ralphctl settings set ai.implement.model <model-id>
209
+ ralphctl settings set ai.implement.effort high
210
+
211
+ ralphctl settings set ai.plan.provider github-copilot
212
+ ralphctl settings set ai.plan.model <model-id>
192
213
  ```
193
214
 
215
+ The selected provider's CLI must be in your `PATH` and authenticated. Every AI-spawning flow probes its
216
+ row's CLI at launch and exits with a clear error if the binary is missing.
217
+
194
218
  **Tune the generator-evaluator loop** (under `harness`):
195
219
 
196
220
  ```bash
@@ -223,57 +247,28 @@ export RALPHCTL_HOME="/path/to/custom/dir"
223
247
 
224
248
  ---
225
249
 
226
- ## Upgrading from 0.6.x to 0.7.0
227
-
228
- > [!IMPORTANT]
229
- > **0.7.0 is a structural rewrite.** Internal architecture, on-disk schema, and several CLI
230
- > commands all changed. **There is no automatic migration from 0.6.x** — sprints, projects,
231
- > and settings written by 0.6.x will not be read by 0.7.0, even though the data directory
232
- > path is the same.
233
- >
234
- > If you launch 0.7.0 with v0.6.x data still in `~/.ralphctl/`, the harness detects the
235
- > legacy layout, **refuses to start**, and prints the exact backup command you need to run.
236
- > No data is touched. The steps below are what the safeguard will tell you.
237
-
238
- ### Before upgrading
250
+ ## Upgrading
239
251
 
240
- 1. **Back up your 0.6.x data**:
252
+ Install the latest version, redo your config, proceed. Only the latest
253
+ release is supported — there's no backporting, and upgrading is the answer
254
+ to most "is this fixed?" questions.
241
255
 
242
- ```bash
243
- mv ~/.ralphctl ~/.ralphctl.0.6-backup
244
- ```
245
-
246
- 2. Install ralphctl (the latest published version is `0.7.x` — pin only if you need a specific patch):
247
-
248
- ```bash
249
- npm install -g ralphctl
250
- ```
251
-
252
- 3. Launch the TUI and re-register your projects:
253
-
254
- ```bash
255
- ralphctl
256
- ```
257
-
258
- 4. (Optional) Re-create sprints by hand from the backup — `~/.ralphctl.0.6-backup/data/sprints/<id>/` still holds the
259
- original ticket bodies, plan output, and progress notes for reference.
256
+ ```bash
257
+ npm install -g ralphctl@latest
258
+ ralphctl settings apply-preset <name> # if your settings need a reset
259
+ ralphctl # TUI prompts you to re-register projects if needed
260
+ ```
260
261
 
261
- ### What changed
262
+ If your `~/.ralphctl/` data from an older release doesn't load cleanly, back
263
+ it up and start fresh:
262
264
 
263
- - **On-disk schema is incompatible.** Each sprint now spans three files — `sprint.json` (planning), `execution.json` (
264
- branch / PR / setup audit), `tasks.json` (the task list) — instead of the single 0.6.x `sprint.json`. Override the
265
- data root with `RALPHCTL_HOME=<absolute-path>` if you need a separate location.
266
- - **`settings.json` schema changed.** Per-flow model selection replaces the single global `model`; each chain picks its
267
- own. 0.6.x settings files are rejected on read — re-run `ralphctl settings` to reconfigure.
268
- - **CLI surface intentionally smaller.** These commands were removed in favour of the TUI: `sprint feedback / edit`,
269
- `ticket approve / edit`, `project repo add / remove`, all `task add / edit / edit-status / remove`, and
270
- `sessions list / attach / detach / kill`. Switch to the interactive TUI or to `ralphctl sprint show <id>` / the
271
- relevant flow command.
272
- - **OpenAI Codex provider added** (preview) alongside Claude Code and GitHub Copilot — pick via `ralphctl settings`.
265
+ ```bash
266
+ mv ~/.ralphctl ~/.ralphctl.bak
267
+ ```
273
268
 
274
- See [CHANGELOG.md](./CHANGELOG.md#070---2026-05-17) for the full list, including non-breaking improvements (
275
- cross-project sprint lock, idle-stdout watchdog, resume-aborted runs, persistent `<sprintDir>/chain.log`, exponential
276
- rate-limit backoff).
269
+ The backup keeps your ticket bodies, plan output, and progress notes around
270
+ for reference. See [MIGRATION.md](./MIGRATION.md) if you're crossing a major
271
+ boundary (e.g. 0.6.x → 0.7.x) and want the longer story.
277
272
 
278
273
  ---
279
274
 
@@ -285,13 +280,15 @@ readiness / create sprint) stay TUI-only by design. The CLI exposes inspection +
285
280
 
286
281
  ### Getting Started
287
282
 
288
- | Command | Description |
289
- | ------------------------------------- | --------------------------------- |
290
- | `ralphctl` | Interactive TUI (primary surface) |
291
- | `ralphctl doctor` | Check environment health |
292
- | `ralphctl settings show` | Print current settings |
293
- | `ralphctl settings set <key> <value>` | Set a single settings key |
294
- | `ralphctl completion <shell>` | Print shell tab-completion script |
283
+ | Command | Description |
284
+ | --------------------------------------- | --------------------------------------------------------------------------------------- |
285
+ | `ralphctl` | Interactive TUI (primary surface) |
286
+ | `ralphctl doctor` | Check environment health |
287
+ | `ralphctl settings show` | Print current settings |
288
+ | `ralphctl settings set <key> <value>` | Set a single settings key |
289
+ | `ralphctl settings apply-preset <name>` | Stamp the entire `ai` section (`mixed` / `claude-only` / `copilot-only` / `codex-only`) |
290
+ | `ralphctl completion <shell>` | Print shell tab-completion script |
291
+ | `ralphctl snapshot [--sprint <id>]` | Single-frame text digest of sprint state |
295
292
 
296
293
  ### Project & Sprint Inspection
297
294
 
@@ -311,11 +308,12 @@ readiness / create sprint) stay TUI-only by design. The CLI exposes inspection +
311
308
 
312
309
  ### Sprint Lifecycle
313
310
 
314
- | Command | Description |
315
- | ------------------------------- | ------------------------------- |
316
- | `ralphctl sprint activate <id>` | Flip a draft sprint to `active` |
317
- | `ralphctl sprint close <id>` | Transition `review` → `done` |
318
- | `ralphctl sprint remove <id>` | Delete a sprint permanently |
311
+ | Command | Description |
312
+ | ------------------------------------------ | ------------------------------------- |
313
+ | `ralphctl sprint activate <id>` | Flip a draft sprint to `active` |
314
+ | `ralphctl sprint close <id>` | Transition `review` → `done` |
315
+ | `ralphctl sprint remove <id>` | Delete a sprint permanently |
316
+ | `ralphctl sprint regenerate-progress <id>` | Rebuild `progress.md` from disk state |
319
317
 
320
318
  ### Export & PR
321
319
 
@@ -333,12 +331,13 @@ Run `ralphctl <command> --help` for flag-level detail.
333
331
 
334
332
  ## Documentation
335
333
 
336
- | Resource | Description |
337
- | ---------------------------------------------- | ------------------------------------------ |
338
- | [Architecture](./.claude/docs/ARCHITECTURE.md) | Data models, file storage, error reference |
339
- | [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
340
- | [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
341
- | [Changelog](./CHANGELOG.md) | Version history |
334
+ | Resource | Description |
335
+ | ---------------------------------------------- | ------------------------------------------------- |
336
+ | [Architecture](./.claude/docs/ARCHITECTURE.md) | Data models, file storage, error reference |
337
+ | [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
338
+ | [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
339
+ | [Migration](./MIGRATION.md) | Per-version upgrade context for big version jumps |
340
+ | [Changelog](./CHANGELOG.md) | Version history |
342
341
 
343
342
  **Blog posts:** [Building ralphctl](https://lukasgrigis.dev/blog/building-ralphctl) (
344
343
  backstory) | [From task CLI to agent harness](https://lukasgrigis.dev/blog/ralphctl-agent-harness/) (evaluator