patchrelay 0.35.16 → 0.36.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.
package/README.md CHANGED
@@ -271,6 +271,7 @@ These files define how the agent should work in that repo.
271
271
  ```bash
272
272
  patchrelay doctor
273
273
  patchrelay service status
274
+ patchrelay dashboard
274
275
  ```
275
276
 
276
277
  ### 8. Check linked workspaces and repos
@@ -298,6 +299,7 @@ Important:
298
299
 
299
300
  Useful commands:
300
301
 
302
+ - `patchrelay dashboard`
301
303
  - `patchrelay issue list --active`
302
304
  - `patchrelay issue show APP-123`
303
305
  - `patchrelay issue watch APP-123`
@@ -309,7 +311,14 @@ Useful commands:
309
311
  PatchRelay's operator surface is being reduced to its own runtime responsibilities: issue status,
310
312
  active work, waiting reason, worktree handoff, and retry controls.
311
313
 
312
- `patchrelay issue open` is the handoff bridge: it opens Codex in the issue worktree and resumes the existing thread when PatchRelay has one.
314
+ `patchrelay issue open` is the handoff bridge: it opens a normal Codex CLI session in the issue worktree and resumes the existing thread when PatchRelay has one.
315
+
316
+ If automation looks stuck, this is the usual operator path:
317
+
318
+ 1. `patchrelay dashboard` to see active issues and waiting reasons across the service.
319
+ 2. `patchrelay issue show APP-123` or `patchrelay issue watch APP-123` to inspect one issue in more detail.
320
+ 3. `patchrelay issue open APP-123` to take over inside the exact worktree and continue from the same issue context.
321
+ 4. `patchrelay service logs --lines 100` if the problem looks like webhook intake, Codex startup, or service runtime failure.
313
322
 
314
323
  Today that takeover path is intentionally YOLO mode: it launches Codex with `--dangerously-bypass-approvals-and-sandbox`.
315
324
 
@@ -337,7 +346,7 @@ The steward now has its own bootstrap flow:
337
346
  merge-steward init https://queue.example.com
338
347
  merge-steward attach app owner/repo --base-branch main --required-check test,lint
339
348
  merge-steward doctor --repo app
340
- merge-steward service status app
349
+ merge-steward service status
341
350
  merge-steward queue status --repo app
342
351
  ```
343
352
 
@@ -27,6 +27,14 @@ function reviewFixPlan() {
27
27
  { content: "Merge", status: "pending" },
28
28
  ];
29
29
  }
30
+ function branchUpkeepPlan() {
31
+ return [
32
+ { content: "Prepare workspace", status: "completed" },
33
+ { content: "Repairing branch upkeep", status: "pending" },
34
+ { content: "Awaiting re-verification", status: "pending" },
35
+ { content: "Merge", status: "pending" },
36
+ ];
37
+ }
30
38
  function ciRepairPlan(attempt) {
31
39
  return [
32
40
  { content: "Prepare workspace", status: "completed" },
@@ -75,7 +83,9 @@ function resolvePlanRunType(params) {
75
83
  }
76
84
  switch (params.factoryState) {
77
85
  case "changes_requested":
78
- return "review_fix";
86
+ return params.pendingRunType === "branch_upkeep" || params.activeRunType === "branch_upkeep"
87
+ ? "branch_upkeep"
88
+ : "review_fix";
79
89
  case "repairing_ci":
80
90
  return "ci_repair";
81
91
  case "repairing_queue":
@@ -125,6 +135,8 @@ function planForRunType(runType, params) {
125
135
  switch (runType) {
126
136
  case "review_fix":
127
137
  return reviewFixPlan();
138
+ case "branch_upkeep":
139
+ return branchUpkeepPlan();
128
140
  case "ci_repair":
129
141
  return ciRepairPlan(params.ciRepairAttempts ?? 1);
130
142
  case "queue_repair":
@@ -146,7 +158,7 @@ export function buildAgentSessionPlanForIssue(issue, options) {
146
158
  export function buildRunningSessionPlan(runType) {
147
159
  return buildAgentSessionPlan({
148
160
  factoryState: runType === "ci_repair" ? "repairing_ci"
149
- : runType === "review_fix" ? "changes_requested"
161
+ : runType === "review_fix" || runType === "branch_upkeep" ? "changes_requested"
150
162
  : runType === "queue_repair" ? "repairing_queue"
151
163
  : "implementing",
152
164
  activeRunType: runType,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "service": "patchrelay",
3
- "version": "0.35.16",
4
- "commit": "1915fecc2b8c",
5
- "builtAt": "2026-04-08T09:31:00.146Z"
3
+ "version": "0.36.0",
4
+ "commit": "75e78336dd48",
5
+ "builtAt": "2026-04-08T22:47:52.865Z"
6
6
  }
package/dist/cli/args.js CHANGED
@@ -3,6 +3,7 @@ export const KNOWN_COMMANDS = new Set([
3
3
  "version",
4
4
  "serve",
5
5
  "issue",
6
+ "cluster",
6
7
  "doctor",
7
8
  "init",
8
9
  "attach",