@neriros/ralphy 3.0.1 โ†’ 3.2.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 (3) hide show
  1. package/README.md +35 -1
  2. package/dist/shell/index.js +2064 -480
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -187,6 +187,7 @@ Example `ralphy.config.json`:
187
187
  "mentionHandle": "@ralphy",
188
188
  "codeReviewTrigger": true,
189
189
  "codeReviewStaleHours": 24,
190
+ "syncTasksToDescription": false,
190
191
  "indicators": {
191
192
  "getTodo": { "filter": [{ "type": "status", "value": "Todo" }] },
192
193
  "getInProgress": {
@@ -219,7 +220,7 @@ When a Linear issue is in a done state and a reviewer adds the `getReview` marke
219
220
 
220
221
  #### `@ralphy` mention trigger
221
222
 
222
- Set `linear.mentionTrigger: true` to scan done-issue comments on Linear _and_ on the linked GitHub PR for a configurable handle (`linear.mentionHandle`, default `@ralphy`). Each unprocessed mention queues the issue as a review run, with the mention text used **verbatim** as the prepended task. Idempotency: a mention is processed when its `createdAt` is older than Ralph's latest `๐Ÿ” picked up` Linear comment, so the same comment never re-fires. Requires `gh` for the GitHub side.
223
+ Set `linear.mentionTrigger: true` to scan Linear issue comments on every non-cancelled issue (Todo, In Progress, Backlog, Triage, Done) _and_ on the linked GitHub PR for a configurable handle (`linear.mentionHandle`, default `@ralphy`). Each unprocessed mention queues the issue as a review run, with the mention text used **verbatim** as the prepended task. Idempotency: a mention is processed when its `createdAt` is older than Ralph's latest `๐Ÿ” picked up` Linear comment, so the same comment never re-fires. Requires `gh` for the GitHub side.
223
224
 
224
225
  #### Code-review iteration
225
226
 
@@ -230,6 +231,10 @@ Set `linear.codeReviewTrigger: true` (or pass `--code-review`) to watch open, un
230
231
 
231
232
  The loop exits; the next poll re-checks the PR. The cycle continues until the PR is **approved** or **merged**. If the reviewer is silent for more than `linear.codeReviewStaleHours` (default `24`, `0` disables) while Ralph is the last actor, one `@`-mention ping comment is posted on the GitHub PR.
232
233
 
234
+ #### Sync tasks into Linear description
235
+
236
+ Set `linear.syncTasksToDescription: true` to mirror the active change's `tasks.md` into the linked Linear issue description. Ralph writes a checklist between sentinel HTML comments (`<!-- ralphy:tasks:start -->` / `<!-- ralphy:tasks:end -->`); any content outside the markers is preserved verbatim. The block is refreshed when the worker launches, on the same cadence as `updateEveryIterations`, and on done-transition. Sync failures are logged but never abort the loop.
237
+
233
238
  #### Conflict re-fix
234
239
 
235
240
  Done issues whose PR `gh pr view --json mergeable` reports as `CONFLICTING` get `setConflicted` applied and a conflict-fix task prepended. The scanner is resilient to:
@@ -250,6 +255,35 @@ Done issues whose PR `gh pr view --json mergeable` reports as `CONFLICTING` get
250
255
  | `ignoreCiChecks` | Array of check names to ignore when computing pass/fail. |
251
256
  | `codeReviewTrigger` / `--code-review` | See [Code-review iteration](#code-review-iteration). |
252
257
 
258
+ ### Pre-existing error check
259
+
260
+ Opt-in gate that protects the agent from chasing failures it cannot fix. When
261
+ enabled (config `preExistingErrorCheck.enabled: true` or `--pre-existing-error-check`),
262
+ on every poll tick Ralph runs the configured commands against the base branch
263
+ HEAD. If any command fails:
264
+
265
+ 1. A Linear issue is created with the failing command, exit code, and truncated
266
+ output (fingerprint embedded in the body so re-runs with the same failure
267
+ don't open duplicates).
268
+ 2. The coordinator pauses โ€” new fresh/resume/conflict-fix/review pickups are
269
+ blocked until the trunk is green again. **In-flight workers are not killed.**
270
+ 3. The dashboard shows a red `โ›” BASELINE BROKEN <LIN-ID> ยท <duration>` banner.
271
+
272
+ When the baseline goes green (the human merged the fix), the next poll lifts
273
+ the pause automatically.
274
+
275
+ ```jsonc
276
+ {
277
+ "preExistingErrorCheck": {
278
+ "enabled": false,
279
+ "commands": ["bun run lint", "bun run test"], // falls back to commands.lint + commands.test when empty
280
+ "baseBranch": "main",
281
+ "label": "ralph:pre-existing-error",
282
+ "outputCharLimit": 4000,
283
+ },
284
+ }
285
+ ```
286
+
253
287
  ### Worktrees, setup, teardown
254
288
 
255
289
  With `useWorktree: true` (or `--worktree`) each task runs in an isolated worktree at `~/.ralph/<project>/worktrees/<change-name>` checked out onto a fresh `ralph/<change-name>` branch. Concurrent workers can't stomp on each other, and the worker's cwd _is_ the worktree.