@neriros/ralphy 2.22.0 → 2.23.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 +27 -21
  2. package/dist/cli/index.js +1124 -853
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -66,7 +66,7 @@ ralph task --name fix-auth --prompt "Fix the JWT validation bug" --claude opus -
66
66
  ralph task --name fix-auth
67
67
 
68
68
  # Inspect
69
- ralph list # all tasks (table)
69
+ ralph list # local tasks + Linear tickets per indicator bucket (with linked PR URLs)
70
70
  ralph status --name fix-auth # one task (details)
71
71
  ```
72
72
 
@@ -142,19 +142,19 @@ The cycle repeats every poll. For code-review-iteration in particular, `setDone`
142
142
 
143
143
  Linear is the source of truth for which issues Ralph has touched. The `linear.indicators` map declares how Ralph queries and mutates Linear at each lifecycle event. All keys are optional; an unset key means "Ralph doesn't perform that action".
144
144
 
145
- | Key | Type | Purpose |
146
- | ----------------- | ------------------------------- | ------------------------------------------------------------------------------- |
147
- | `getTodo` | `{filter: Marker[]}` | Issues to pick up (fresh) |
148
- | `getInProgress` | `{filter: Marker[]}` | Issues to resume after restart |
149
- | `getConflicted` | `{filter: Marker[]}` | Issues whose PR is conflicted (re-fix run) |
150
- | `getReview` | `{filter: Marker[]}` | Done issues flagged for review follow-up |
151
- | `getAutoMerge` | `{filter: Marker[]}` | Issues whose PR should be auto-merged once required checks pass |
152
- | `setInProgress` | `Marker` or `{apply: Marker[]}` | Applied when a worker spawns (any non-resume mode) |
153
- | `setDone` | `Marker` or `{apply: Marker[]}` | Applied on clean exit |
154
- | `setError` | `Marker` or `{apply: Marker[]}` | Applied on non-zero exit (quarantine signal — issue is _not_ auto-resumed) |
155
- | `setConflicted` | `Marker` or `{apply: Marker[]}` | Applied when a done-PR is detected as conflicted |
156
- | `clearConflicted` | `Marker` or `{apply: Marker[]}` | Label(s) removed when a conflict-fix succeeds (status removal is not supported) |
157
- | `clearReview` | `Marker` or `{apply: Marker[]}` | Label(s) removed when a review pickup happens (status removal is not supported) |
145
+ | Key | Type | Purpose |
146
+ | ----------------- | ---------------------- | ------------------------------------------------------------------------------- |
147
+ | `getTodo` | `{filter: Marker[]}` | Issues to pick up (fresh) |
148
+ | `getInProgress` | `{filter: Marker[]}` | Issues to resume after restart |
149
+ | `getConflicted` | `{filter: Marker[]}` | Issues whose PR is conflicted (re-fix run) |
150
+ | `getReview` | `{filter: Marker[]}` | Done issues flagged for review follow-up |
151
+ | `getAutoMerge` | `{filter: Marker[]}` | Issues whose PR should be auto-merged once required checks pass |
152
+ | `setInProgress` | `Marker` or `Marker[]` | Applied when a worker spawns (any non-resume mode) |
153
+ | `setDone` | `Marker` or `Marker[]` | Applied on clean exit |
154
+ | `setError` | `Marker` or `Marker[]` | Applied on non-zero exit (quarantine signal — issue is _not_ auto-resumed) |
155
+ | `setConflicted` | `Marker` or `Marker[]` | Applied when a done-PR is detected as conflicted |
156
+ | `clearConflicted` | `Marker` or `Marker[]` | Label(s) removed when a conflict-fix succeeds (status removal is not supported) |
157
+ | `clearReview` | `Marker` or `Marker[]` | Label(s) removed when a review pickup happens (status removal is not supported) |
158
158
 
159
159
  A `Marker` is one of three types:
160
160
 
@@ -164,7 +164,7 @@ A `Marker` is one of three types:
164
164
  | `"status"` | `"In Progress"` | Updates the Linear workflow status of the issue |
165
165
  | `"attachment"` | `"In Progress"` | Upserts a single **Ralphy** attachment on the issue; `value` becomes the subtitle. The same entry is reused across every lifecycle transition — Ralph creates it on first apply and edits it on subsequent ones, so the issue stays tidy. |
166
166
 
167
- Combine with `apply` when one event sets multiple — e.g. `setDone` flipping a status _and_ adding a label _and_ updating the attachment subtitle.
167
+ Use an array when one event sets multiple — e.g. `setDone` flipping a status _and_ adding a label _and_ updating the attachment subtitle.
168
168
 
169
169
  Example `ralphy.config.json`:
170
170
 
@@ -200,12 +200,10 @@ Example `ralphy.config.json`:
200
200
  "filter": [{ "type": "label", "value": "ralph:auto-merge" }],
201
201
  },
202
202
  "setInProgress": { "type": "status", "value": "In Progress" },
203
- "setDone": {
204
- "apply": [
205
- { "type": "status", "value": "In Review" },
206
- { "type": "label", "value": "ralphy-done" },
207
- ],
208
- },
203
+ "setDone": [
204
+ { "type": "status", "value": "In Review" },
205
+ { "type": "label", "value": "ralphy-done" },
206
+ ],
209
207
  "setError": { "type": "label", "value": "ralph:error" },
210
208
  "setConflicted": { "type": "label", "value": "ralph:conflicted" },
211
209
  "clearConflicted": { "type": "label", "value": "ralph:conflicted" },
@@ -318,6 +316,14 @@ Failed workers are not marked processed, so they retry on the next poll. SIGINT
318
316
  | `--code-review` | Watch open tracked PRs for unresolved review comments and prepend a code-review task |
319
317
  | `--json-output` | Emit JSONL to stdout instead of rendering the Ink dashboard (CI / scripting) |
320
318
 
319
+ **List-mode flags**
320
+
321
+ | Option | Behavior |
322
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
323
+ | `--debug --name <id>` | Diagnose why a Linear ticket (e.g. `ENG-42`) is not being picked up — checks team, assignee, include / exclude markers, and blocked-by relations against every configured `get*` indicator. |
324
+
325
+ `ralph list` reads `ralphy.config.json` and, when `LINEAR_API_KEY` is set, fetches every issue matching each configured `getTodo` / `getInProgress` / `getConflicted` / `getReview` / `getAutoMerge` indicator using the same include / exclude rules as `ralph agent`. For each ticket it also resolves the linked GitHub PR URL from Linear attachments.
326
+
321
327
  **`--max-tickets`.** Caps how many issues ralph picks up in a single agent run. Once the limit is hit the coordinator stops enqueuing new work; in-flight workers continue to completion, and the dashboard header shows `│ tickets ≤N`. The limit resets each restart.
322
328
 
323
329
  ## Change layout (OpenSpec)