claude-task-worker 0.21.0 → 0.22.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/dist/index.js +30 -21
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -595,12 +595,12 @@ async function getIssueState(issueNumber) {
|
|
|
595
595
|
const parsed = JSON.parse(output);
|
|
596
596
|
return parsed.state;
|
|
597
597
|
}
|
|
598
|
-
async function findPrNumberClosingIssue(issueNumber) {
|
|
598
|
+
async function findPrNumberClosingIssue(issueNumber, expectedHeadRefName) {
|
|
599
599
|
const { owner, name } = await getRepoInfo();
|
|
600
600
|
const query = `query($owner: String!, $name: String!, $number: Int!) {
|
|
601
601
|
repository(owner: $owner, name: $name) {
|
|
602
602
|
issue(number: $number) {
|
|
603
|
-
closedByPullRequestsReferences(first: 10, includeClosedPrs: true) { nodes { number state } }
|
|
603
|
+
closedByPullRequestsReferences(first: 10, includeClosedPrs: true) { nodes { number state headRefName } }
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
606
|
}`;
|
|
@@ -618,7 +618,9 @@ async function findPrNumberClosingIssue(issueNumber) {
|
|
|
618
618
|
]);
|
|
619
619
|
const parsed = JSON.parse(output);
|
|
620
620
|
const nodes = parsed?.data?.repository?.issue?.closedByPullRequestsReferences?.nodes ?? [];
|
|
621
|
-
const validPr = nodes.find(
|
|
621
|
+
const validPr = nodes.find(
|
|
622
|
+
(node) => (node.state === "MERGED" || node.state === "OPEN") && node.headRefName === expectedHeadRefName
|
|
623
|
+
);
|
|
622
624
|
return validPr ? validPr.number : null;
|
|
623
625
|
}
|
|
624
626
|
async function getIssueSubIssuesSummary(issueNumber) {
|
|
@@ -745,14 +747,10 @@ async function createLabel(name, color, force) {
|
|
|
745
747
|
|
|
746
748
|
// src/claude-args.ts
|
|
747
749
|
var DISALLOWED_TOOLS = [
|
|
748
|
-
// 遅延 / yield: 後続ウェイクアップ前提。print
|
|
750
|
+
// 遅延 / yield: 後続ウェイクアップ前提。print モードではウェイクアップが発火せず、
|
|
749
751
|
// 呼ぶと処理未完のままプロセスが終了する。
|
|
750
752
|
"Monitor",
|
|
751
753
|
"ScheduleWakeup",
|
|
752
|
-
// SendMessage は過去に起動したサブエージェントをバックグラウンドでしか再開できず、
|
|
753
|
-
// 「完了通知を待ちます」でターンを終える誘因になる。未完のサブエージェントへの追加指示は
|
|
754
|
-
// フォアグラウンドの新規 Agent 起動で代替させる。
|
|
755
|
-
"SendMessage",
|
|
756
754
|
// 対話 / 承認: 自律実行セッションには回答・承認するユーザーが存在しない。
|
|
757
755
|
"AskUserQuestion",
|
|
758
756
|
"EnterPlanMode",
|
|
@@ -768,15 +766,17 @@ var DISALLOWED_TOOLS = [
|
|
|
768
766
|
"EnterWorktree"
|
|
769
767
|
];
|
|
770
768
|
var DISALLOWED_TOOLS_ARG = DISALLOWED_TOOLS.join(",");
|
|
771
|
-
var
|
|
769
|
+
var CLAUDE_SPAWN_ENV = {
|
|
770
|
+
CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "1",
|
|
771
|
+
CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS: "0"
|
|
772
|
+
};
|
|
773
|
+
var SYSTEM_PROMPT = `\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306F \`claude-task-worker\` \u306E\u30EF\u30FC\u30AB\u30FC\u304B\u3089 \`claude -p\`\uFF08\u975E\u5BFE\u8A71 print \u30E2\u30FC\u30C9\uFF09\u3067\u81EA\u52D5\u8D77\u52D5\u3055\u308C\u3066\u3044\u308B\u3002\u30E6\u30FC\u30B6\u30FC\u3078\u306E\u78BA\u8A8D\u30FB\u8CEA\u554F\u306F\u884C\u308F\u305A\uFF08\u56DE\u7B54\u3059\u308B\u30E6\u30FC\u30B6\u30FC\u306F\u5B58\u5728\u3057\u306A\u3044\uFF09\u3001\u8D77\u52D5\u3055\u308C\u305F\u30B9\u30AD\u30EB\u306E\u30EB\u30FC\u30EB\u306B\u5F93\u3063\u3066\u81EA\u5F8B\u7684\u306B\u5224\u65AD\u3057\u3001\u5168\u30B9\u30C6\u30C3\u30D7\u3092\u5B8C\u9042\u3057\u3066\u304B\u3089\uFF08\u307E\u305F\u306F\u4E2D\u65AD\u6761\u4EF6\u306B\u8A72\u5F53\u3057\u305F\u5834\u5408\u306F\u7406\u7531\u3092\u51FA\u529B\u3057\u3066\uFF09\u7D42\u4E86\u3059\u308B\u3053\u3068\u3002\u66D6\u6627\u306A\u5834\u5408\u306F\u300C\u3088\u308A\u5B89\u5168\u306A\u5074\uFF08\u7834\u58CA\u7684\u3067\u306A\u3044\u5074\uFF09\u300D\u3092\u9078\u629E\u3057\u3001\u305D\u306E\u5224\u65AD\u3068\u6839\u62E0\u3092\u6700\u7D42\u5831\u544A\u306B\u660E\u8A18\u3059\u308B\u3002`;
|
|
774
|
+
var SUBAGENT_SYSTEM_PROMPT = `\u3042\u306A\u305F\u306F claude-task-worker \u306E\u30EF\u30FC\u30AB\u30FC\u304C \`claude -p\`\uFF08\u975E\u5BFE\u8A71 print \u30E2\u30FC\u30C9\uFF09\u3067\u81EA\u52D5\u8D77\u52D5\u3057\u305F\u30BB\u30C3\u30B7\u30E7\u30F3\u5185\u306E\u30B5\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3067\u3059\u3002\u4EE5\u4E0B\u306E\u81EA\u5F8B\u5B9F\u884C\u539F\u5247\u3092\u5FC5\u305A\u9075\u5B88\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
772
775
|
|
|
773
|
-
-
|
|
774
|
-
-
|
|
775
|
-
-
|
|
776
|
-
-
|
|
777
|
-
- E2E \u30C6\u30B9\u30C8\u306E\u3088\u3046\u306B\u6642\u9593\u306E\u304B\u304B\u308B\u51E6\u7406\u3082\u3001\u540C\u671F\u5B9F\u884C\u3067\u5B8C\u4E86\u3092\u5F85\u3064\u306E\u304C\u6B63\u3057\u3044\u6319\u52D5\u3067\u3042\u308A\u3001\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u5316\u3057\u3066\u5F85\u305F\u305A\u306B\u9032\u3093\u3067\u306F\u306A\u3089\u306A\u3044
|
|
778
|
-
- \u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u30BF\u30B9\u30AF\u304C\u6B8B\u3063\u305F\u72B6\u614B\u3067\u5B8C\u4E86\u5831\u544A\u3057\u3066\u30BF\u30FC\u30F3\u3092\u7D42\u3048\u306A\u3044\u3002\u672A\u5B8C\u306E\u51E6\u7406\u306F\u30D5\u30A9\u30A2\u30B0\u30E9\u30A6\u30F3\u30C9\u3067\u5B8C\u4E86\u307E\u3067\u5B9F\u884C\u3057\u5207\u3063\u3066\u304B\u3089\u5831\u544A\u3059\u308B
|
|
779
|
-
- \u30E6\u30FC\u30B6\u30FC\u3078\u306E\u78BA\u8A8D\u30FB\u8CEA\u554F\u306F\u884C\u308F\u306A\u3044\uFF08\u56DE\u7B54\u3059\u308B\u30E6\u30FC\u30B6\u30FC\u306F\u5B58\u5728\u3057\u306A\u3044\uFF09\u3002\u66D6\u6627\u306A\u5834\u5408\u306F\u7834\u58CA\u7684\u3067\u306A\u3044\u5074\u3092\u9078\u3073\u3001\u305D\u306E\u5224\u65AD\u3068\u6839\u62E0\u3092\u6700\u7D42\u5831\u544A\u306B\u660E\u8A18\u3059\u308B`;
|
|
776
|
+
- \u30E6\u30FC\u30B6\u30FC\u3078\u306E\u78BA\u8A8D\u30FB\u8CEA\u554F\u306F\u884C\u308F\u306A\u3044\uFF08\u56DE\u7B54\u3059\u308B\u30E6\u30FC\u30B6\u30FC\u306F\u5B58\u5728\u3057\u306A\u3044\uFF09\u3002\u5224\u65AD\u306F\u3059\u3079\u3066\u59D4\u8B72\u3055\u308C\u305F\u6307\u793A\uFF08\u30D7\u30ED\u30F3\u30D7\u30C8\u3067\u660E\u793A\u7684\u306B\u6E21\u3055\u308C\u305F\u5185\u5BB9\uFF09\u306B\u5F93\u3063\u3066\u81EA\u52D5\u3067\u6C7A\u5B9A\u3059\u308B
|
|
777
|
+
- \u66D6\u6627\u306A\u5834\u5408\u306F\u300C\u3088\u308A\u5B89\u5168\u306A\u5074\uFF08\u7834\u58CA\u7684\u3067\u306A\u3044\u5074\uFF09\u300D\u3092\u9078\u629E\u3057\u3001\u305D\u306E\u5224\u65AD\u3068\u6839\u62E0\u3092\u6700\u7D42\u5831\u544A\u306B\u660E\u8A18\u3059\u308B
|
|
778
|
+
- \u59D4\u8B72\u3055\u308C\u305F\u30BF\u30B9\u30AF\u306F\u6700\u5F8C\u307E\u3067\u5B8C\u9042\u3057\u3066\u304B\u3089\u6700\u7D42\u5831\u544A\u3059\u308B\u3002\u6307\u793A\u306B\u5B9A\u7FA9\u3055\u308C\u305F\u4E2D\u65AD\u6761\u4EF6\u306B\u8A72\u5F53\u3057\u305F\u5834\u5408\u306E\u307F\u3001\u7406\u7531\u3092\u51FA\u529B\u3057\u3066\u7D42\u4E86\u3059\u308B
|
|
779
|
+
- \u5B50\u30B5\u30D6\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u306B\u4F5C\u696D\u3092\u59D4\u8B72\u3057\u305F\u5834\u5408\u3001\u305D\u306E\u5B8C\u4E86\u5831\u544A\u3092\u9D5C\u5451\u307F\u306B\u3057\u306A\u3044\u3002\`git diff\` \u7B49\u3067\u5B9F\u969B\u306E\u6210\u679C\u7269\u3092\u691C\u8A3C\u3057\u3066\u304B\u3089\u5B8C\u4E86\u6271\u3044\u306B\u3059\u308B`;
|
|
780
780
|
|
|
781
781
|
// src/config.ts
|
|
782
782
|
import { readFileSync } from "node:fs";
|
|
@@ -1162,7 +1162,7 @@ function ensureRenderInterval() {
|
|
|
1162
1162
|
renderInterval = setInterval(renderTable, 1e3);
|
|
1163
1163
|
renderInterval.unref();
|
|
1164
1164
|
}
|
|
1165
|
-
function run(command, args, id, title, workerName, path, onComplete, cwd) {
|
|
1165
|
+
function run(command, args, id, title, workerName, path, onComplete, cwd, env) {
|
|
1166
1166
|
tasks.set(id, {
|
|
1167
1167
|
id,
|
|
1168
1168
|
title,
|
|
@@ -1176,7 +1176,8 @@ function run(command, args, id, title, workerName, path, onComplete, cwd) {
|
|
|
1176
1176
|
const child = spawn(command, args, {
|
|
1177
1177
|
stdio: ["ignore", "pipe", "pipe"],
|
|
1178
1178
|
detached: true,
|
|
1179
|
-
...cwd ? { cwd } : {}
|
|
1179
|
+
...cwd ? { cwd } : {},
|
|
1180
|
+
...env ? { env: { ...process.env, ...env } } : {}
|
|
1180
1181
|
});
|
|
1181
1182
|
childProcesses.set(id, child);
|
|
1182
1183
|
const outputChunks = [];
|
|
@@ -1870,8 +1871,11 @@ function createIssuePollingWorker(config) {
|
|
|
1870
1871
|
"-p",
|
|
1871
1872
|
`${command} ${issue.number}`,
|
|
1872
1873
|
"--dangerously-skip-permissions",
|
|
1874
|
+
"--chrome",
|
|
1873
1875
|
"--disallowedTools",
|
|
1874
1876
|
DISALLOWED_TOOLS_ARG,
|
|
1877
|
+
"--append-system-prompt",
|
|
1878
|
+
SYSTEM_PROMPT,
|
|
1875
1879
|
"--append-subagent-system-prompt",
|
|
1876
1880
|
SUBAGENT_SYSTEM_PROMPT,
|
|
1877
1881
|
"--model",
|
|
@@ -1933,7 +1937,8 @@ function createIssuePollingWorker(config) {
|
|
|
1933
1937
|
);
|
|
1934
1938
|
}
|
|
1935
1939
|
},
|
|
1936
|
-
cwd
|
|
1940
|
+
cwd,
|
|
1941
|
+
{ ...CLAUDE_SPAWN_ENV }
|
|
1937
1942
|
);
|
|
1938
1943
|
} catch (err) {
|
|
1939
1944
|
console.error(`[${config.name}] setup error for #${issue.number}: ${err}`);
|
|
@@ -1983,7 +1988,7 @@ var execIssueWorker = (opts = {}) => createIssuePollingWorker({
|
|
|
1983
1988
|
console.log(`[exec-issue] #${issueNumber}: issue closed by skill (no-change path), skip cc-pr-created`);
|
|
1984
1989
|
return;
|
|
1985
1990
|
}
|
|
1986
|
-
const prNumber = await findPrNumberByHeadRef(worktreeId, "all") ?? await findPrNumberClosingIssue(issueNumber);
|
|
1991
|
+
const prNumber = await findPrNumberByHeadRef(worktreeId, "all") ?? await findPrNumberClosingIssue(issueNumber, worktreeId);
|
|
1987
1992
|
if (prNumber !== null) {
|
|
1988
1993
|
await addLabel("issue", issueNumber, "cc-pr-created");
|
|
1989
1994
|
return;
|
|
@@ -2048,8 +2053,11 @@ function createPrPollingWorker(config) {
|
|
|
2048
2053
|
"-p",
|
|
2049
2054
|
`${command} ${pr.number}`,
|
|
2050
2055
|
"--dangerously-skip-permissions",
|
|
2056
|
+
"--chrome",
|
|
2051
2057
|
"--disallowedTools",
|
|
2052
2058
|
DISALLOWED_TOOLS_ARG,
|
|
2059
|
+
"--append-system-prompt",
|
|
2060
|
+
SYSTEM_PROMPT,
|
|
2053
2061
|
"--append-subagent-system-prompt",
|
|
2054
2062
|
SUBAGENT_SYSTEM_PROMPT,
|
|
2055
2063
|
"--model",
|
|
@@ -2098,7 +2106,8 @@ function createPrPollingWorker(config) {
|
|
|
2098
2106
|
);
|
|
2099
2107
|
}
|
|
2100
2108
|
},
|
|
2101
|
-
cwd
|
|
2109
|
+
cwd,
|
|
2110
|
+
{ ...CLAUDE_SPAWN_ENV }
|
|
2102
2111
|
);
|
|
2103
2112
|
} catch (err) {
|
|
2104
2113
|
console.error(`[${config.name}] setup error for PR #${pr.number}: ${err}`);
|