@autoclawd/autoclawd 1.1.24 → 1.1.26

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
@@ -37,7 +37,7 @@ autoclawd init
37
37
  autoclawd watch
38
38
 
39
39
  # Or run a single ticket
40
- autoclawd run RAH-123
40
+ autoclawd run TEAM-123
41
41
  ```
42
42
 
43
43
  ## Commands
@@ -72,6 +72,7 @@ linear:
72
72
  statuses: [Todo] # which statuses trigger execution
73
73
  assignToMe: false # only process tickets assigned to you
74
74
  inProgressStatus: In Progress
75
+ inReviewStatus: In Review
75
76
  doneStatus: Done
76
77
 
77
78
  github:
@@ -100,6 +101,10 @@ safety:
100
101
  branchPrefix: "autoclawd/" # all branches must start with this
101
102
  # maxFileChanges: 100 # fail if too many files changed
102
103
 
104
+ integration:
105
+ crossBranchValidate: true # trial-merge with sibling PRs (default: true)
106
+ maxCrossBranchIterations: 3 # fix attempts per sibling conflict (default: 3)
107
+
103
108
  # validate: # global validation commands
104
109
  # - npm test
105
110
  # - npm run lint
@@ -145,7 +150,7 @@ If the repo doesn't exist, autoclawd creates it automatically and pushes an init
145
150
  For dependent tasks where ticket B needs code from ticket A:
146
151
 
147
152
  1. **Ticket A** is processed normally (branches from main)
148
- 2. After A completes, autoclawd adds a `base:autoclawd/RAH-100-...` label to it
153
+ 2. After A completes, autoclawd adds a `base:autoclawd/TEAM-100-...` label to it
149
154
  3. **Ticket B** gets that label → it branches from A's PR branch instead of main
150
155
  4. When A's PR merges, autoclawd auto-rebases B onto main and retargets the PR
151
156
 
@@ -157,7 +162,7 @@ autoclawd rebase owner/repo
157
162
  ### Setting up stacked diffs from the Claude app
158
163
 
159
164
  When using the Claude app with a Linear connector to create tickets, tell Claude:
160
- - "Task B depends on task A" → Claude adds the `base:autoclawd/RAH-{A}-...` label to B
165
+ - "Task B depends on task A" → Claude adds the `base:autoclawd/TEAM-{A}-...` label to B
161
166
 
162
167
  ## Validation hooks
163
168
 
@@ -174,6 +179,7 @@ validate:
174
179
  - PRs start as **draft** while validation runs
175
180
  - If all pass → PR marked **ready** (+ auto-merge if enabled)
176
181
  - If still failing after max iterations → PR stays draft with failure details in the body
182
+ - **Cross-branch validation**: after own validation passes, autoclawd trial-merges with sibling PRs on the same base branch and runs validation on the merged state — catching type conflicts and merge issues before review
177
183
 
178
184
  ## CI fix mode
179
185
 
package/dist/index.js CHANGED
@@ -2080,7 +2080,7 @@ async function executeTicket(opts) {
2080
2080
  `| Model | ${agent.model} |`,
2081
2081
  "",
2082
2082
  "---",
2083
- "*Generated by [autoclawd](https://github.com/rahul-fnu/autoclawd)*"
2083
+ "*Generated by [autoclawd](https://github.com/autoclawd/autoclawd)*"
2084
2084
  );
2085
2085
  return prBody.join("\n");
2086
2086
  };
@@ -3196,7 +3196,7 @@ program.command("stop").description("Stop the background watcher").action(() =>
3196
3196
  process.exit(1);
3197
3197
  }
3198
3198
  });
3199
- program.command("run <ticket>").description("Run a single ticket (e.g. autoclawd run RAH-123)").option("-c, --config <path>", "Config file path").option("-v, --verbose", "Verbose logging").option("--dry-run", "Show what would happen without executing").option("--force", "Bypass completed-ticket check and re-run").action(async (ticketId, opts) => {
3199
+ program.command("run <ticket>").description("Run a single ticket (e.g. autoclawd run TEAM-123)").option("-c, --config <path>", "Config file path").option("-v, --verbose", "Verbose logging").option("--dry-run", "Show what would happen without executing").option("--force", "Bypass completed-ticket check and re-run").action(async (ticketId, opts) => {
3200
3200
  if (opts.verbose) setLogLevel("debug");
3201
3201
  enableFileLogging();
3202
3202
  const config = loadConfig(opts.config);
@@ -3268,12 +3268,12 @@ Expected: https://github.com/owner/repo/pull/123`);
3268
3268
  throw new Error(result.error ?? "Fix failed");
3269
3269
  }
3270
3270
  });
3271
- program.command("retry [ticket]").description("Retry a failed ticket (e.g. autoclawd retry RAH-123)").option("-c, --config <path>", "Config file path").option("-v, --verbose", "Verbose logging").option("--last-failed", "Retry the most recent failed run").option("--all-failed", "Retry all failed runs (sequentially)").action(async (ticketArg, opts) => {
3271
+ program.command("retry [ticket]").description("Retry a failed ticket (e.g. autoclawd retry TEAM-123)").option("-c, --config <path>", "Config file path").option("-v, --verbose", "Verbose logging").option("--last-failed", "Retry the most recent failed run").option("--all-failed", "Retry all failed runs (sequentially)").action(async (ticketArg, opts) => {
3272
3272
  if (opts.verbose) setLogLevel("debug");
3273
3273
  enableFileLogging();
3274
3274
  if (!ticketArg && !opts.lastFailed && !opts.allFailed) {
3275
3275
  throw new Error(
3276
- "Provide a ticket ID, --last-failed, or --all-failed.\nUsage: autoclawd retry RAH-123 | --last-failed | --all-failed"
3276
+ "Provide a ticket ID, --last-failed, or --all-failed.\nUsage: autoclawd retry TEAM-123 | --last-failed | --all-failed"
3277
3277
  );
3278
3278
  }
3279
3279
  const config = loadConfig(opts.config);