@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 +9 -3
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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
|
|
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/
|
|
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/
|
|
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/
|
|
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
|
|
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
|
|
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
|
|
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);
|