claude-task-worker 0.69.0 → 0.70.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 (2) hide show
  1. package/dist/index.js +26 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1364,6 +1364,11 @@ async function findPrStateByHeadRef(headRefName) {
1364
1364
  if (prs.length === 0) return null;
1365
1365
  return { number: prs[0].number, state: prs[0].state, mergedAt: prs[0].mergedAt ?? null };
1366
1366
  }
1367
+ async function getPrMergeable(prNumber) {
1368
+ const output = await execGh(["pr", "view", String(prNumber), "--json", "mergeable"]);
1369
+ const parsed = JSON.parse(output);
1370
+ return typeof parsed?.mergeable === "string" ? parsed.mergeable : "UNKNOWN";
1371
+ }
1367
1372
  async function getIssueBody(issueNumber) {
1368
1373
  const output = await execGh(["issue", "view", String(issueNumber), "--json", "body"]);
1369
1374
  const parsed = JSON.parse(output);
@@ -3323,7 +3328,7 @@ function createPrPollingWorker(config) {
3323
3328
  lastCompletionAt = Date.now();
3324
3329
  try {
3325
3330
  if (status === "completed") {
3326
- await config.onCompleted?.(pr);
3331
+ await config.onCompleted?.(pr, output);
3327
3332
  await notifyTaskCompleted(config.name, name, pr.number, pr.title, prUrl, output);
3328
3333
  } else {
3329
3334
  await notifyTaskFailed(config.name, name, pr.number, pr.title, prUrl, output);
@@ -3468,14 +3473,32 @@ var triagePrWorker = createPrPollingWorker({
3468
3473
  name: "triage-pr",
3469
3474
  command: "/claude-task-worker:triage-pr",
3470
3475
  triggerLabel: "cc-triage-scope",
3471
- excludeLabels: ["cc-fix-onetime", "cc-resolve-conflict", "cc-release-ready"]
3476
+ excludeLabels: ["cc-fix-onetime", "cc-resolve-conflict", "cc-release-ready", "cc-need-human-check"]
3472
3477
  });
3473
3478
 
3474
3479
  // src/workers/resolve-conflict.ts
3480
+ var LABEL_NEED_HUMAN_CHECK = "cc-need-human-check";
3481
+ function shouldFlagUnresolvedConflict(output, mergeable) {
3482
+ return /aborted/i.test(output) && mergeable === "CONFLICTING";
3483
+ }
3475
3484
  var resolveConflictWorker = createPrPollingWorker({
3476
3485
  name: "resolve-conflict",
3477
3486
  command: "/claude-task-worker:resolve-pr-conflict",
3478
- triggerLabel: "cc-resolve-conflict"
3487
+ triggerLabel: "cc-resolve-conflict",
3488
+ onCompleted: async (pr, output) => {
3489
+ const mergeable = await getPrMergeable(pr.number);
3490
+ if (!shouldFlagUnresolvedConflict(output, mergeable)) return;
3491
+ await addLabel("pr", pr.number, LABEL_NEED_HUMAN_CHECK);
3492
+ await commentOnPR(
3493
+ pr.number,
3494
+ [
3495
+ "\u30B3\u30F3\u30D5\u30EA\u30AF\u30C8\u3092\u81EA\u52D5\u89E3\u6D88\u3067\u304D\u306A\u304B\u3063\u305F\u305F\u3081\u3001`cc-need-human-check` \u30E9\u30D9\u30EB\u3092\u4ED8\u4E0E\u3057\u307E\u3057\u305F\u3002",
3496
+ "",
3497
+ "- \u624B\u52D5\u3067\u30B3\u30F3\u30D5\u30EA\u30AF\u30C8\u3092\u89E3\u6D88\u3057\u305F\u5834\u5408: `cc-need-human-check` \u30E9\u30D9\u30EB\u3092\u5916\u3057\u3066\u304F\u3060\u3055\u3044\uFF08`triage-pr` \u304C\u518D\u958B\u3057\u307E\u3059\uFF09",
3498
+ "- \u81EA\u52D5\u89E3\u6D88\u3092\u3084\u308A\u76F4\u3059\u5834\u5408: `cc-need-human-check` \u30E9\u30D9\u30EB\u3092\u5916\u3057\u3001`cc-resolve-conflict` \u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u76F4\u3057\u3066\u304F\u3060\u3055\u3044"
3499
+ ].join("\n")
3500
+ );
3501
+ }
3479
3502
  });
3480
3503
 
3481
3504
  // src/workers/check-dependabot.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-task-worker",
3
- "version": "0.69.0",
3
+ "version": "0.70.0",
4
4
  "description": "CLI tool that polls GitHub Issues/PRs and delegates work to Claude CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",