claude-task-worker 0.20.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 +35 -14
- 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,15 +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
|
-
// PR未作成のまま完了扱いになる事故の実例あり)。未完のサブエージェントへの追加指示は
|
|
755
|
-
// フォアグラウンドの新規 Agent 起動で代替させる。
|
|
756
|
-
"SendMessage",
|
|
757
754
|
// 対話 / 承認: 自律実行セッションには回答・承認するユーザーが存在しない。
|
|
758
755
|
"AskUserQuestion",
|
|
759
756
|
"EnterPlanMode",
|
|
@@ -769,6 +766,17 @@ var DISALLOWED_TOOLS = [
|
|
|
769
766
|
"EnterWorktree"
|
|
770
767
|
];
|
|
771
768
|
var DISALLOWED_TOOLS_ARG = DISALLOWED_TOOLS.join(",");
|
|
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
|
|
775
|
+
|
|
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`;
|
|
772
780
|
|
|
773
781
|
// src/config.ts
|
|
774
782
|
import { readFileSync } from "node:fs";
|
|
@@ -1154,7 +1162,7 @@ function ensureRenderInterval() {
|
|
|
1154
1162
|
renderInterval = setInterval(renderTable, 1e3);
|
|
1155
1163
|
renderInterval.unref();
|
|
1156
1164
|
}
|
|
1157
|
-
function run(command, args, id, title, workerName, path, onComplete, cwd) {
|
|
1165
|
+
function run(command, args, id, title, workerName, path, onComplete, cwd, env) {
|
|
1158
1166
|
tasks.set(id, {
|
|
1159
1167
|
id,
|
|
1160
1168
|
title,
|
|
@@ -1168,7 +1176,8 @@ function run(command, args, id, title, workerName, path, onComplete, cwd) {
|
|
|
1168
1176
|
const child = spawn(command, args, {
|
|
1169
1177
|
stdio: ["ignore", "pipe", "pipe"],
|
|
1170
1178
|
detached: true,
|
|
1171
|
-
...cwd ? { cwd } : {}
|
|
1179
|
+
...cwd ? { cwd } : {},
|
|
1180
|
+
...env ? { env: { ...process.env, ...env } } : {}
|
|
1172
1181
|
});
|
|
1173
1182
|
childProcesses.set(id, child);
|
|
1174
1183
|
const outputChunks = [];
|
|
@@ -1862,8 +1871,13 @@ function createIssuePollingWorker(config) {
|
|
|
1862
1871
|
"-p",
|
|
1863
1872
|
`${command} ${issue.number}`,
|
|
1864
1873
|
"--dangerously-skip-permissions",
|
|
1874
|
+
"--chrome",
|
|
1865
1875
|
"--disallowedTools",
|
|
1866
1876
|
DISALLOWED_TOOLS_ARG,
|
|
1877
|
+
"--append-system-prompt",
|
|
1878
|
+
SYSTEM_PROMPT,
|
|
1879
|
+
"--append-subagent-system-prompt",
|
|
1880
|
+
SUBAGENT_SYSTEM_PROMPT,
|
|
1867
1881
|
"--model",
|
|
1868
1882
|
model,
|
|
1869
1883
|
"--effort",
|
|
@@ -1923,7 +1937,8 @@ function createIssuePollingWorker(config) {
|
|
|
1923
1937
|
);
|
|
1924
1938
|
}
|
|
1925
1939
|
},
|
|
1926
|
-
cwd
|
|
1940
|
+
cwd,
|
|
1941
|
+
{ ...CLAUDE_SPAWN_ENV }
|
|
1927
1942
|
);
|
|
1928
1943
|
} catch (err) {
|
|
1929
1944
|
console.error(`[${config.name}] setup error for #${issue.number}: ${err}`);
|
|
@@ -1973,7 +1988,7 @@ var execIssueWorker = (opts = {}) => createIssuePollingWorker({
|
|
|
1973
1988
|
console.log(`[exec-issue] #${issueNumber}: issue closed by skill (no-change path), skip cc-pr-created`);
|
|
1974
1989
|
return;
|
|
1975
1990
|
}
|
|
1976
|
-
const prNumber = await findPrNumberByHeadRef(worktreeId, "all") ?? await findPrNumberClosingIssue(issueNumber);
|
|
1991
|
+
const prNumber = await findPrNumberByHeadRef(worktreeId, "all") ?? await findPrNumberClosingIssue(issueNumber, worktreeId);
|
|
1977
1992
|
if (prNumber !== null) {
|
|
1978
1993
|
await addLabel("issue", issueNumber, "cc-pr-created");
|
|
1979
1994
|
return;
|
|
@@ -2038,8 +2053,13 @@ function createPrPollingWorker(config) {
|
|
|
2038
2053
|
"-p",
|
|
2039
2054
|
`${command} ${pr.number}`,
|
|
2040
2055
|
"--dangerously-skip-permissions",
|
|
2056
|
+
"--chrome",
|
|
2041
2057
|
"--disallowedTools",
|
|
2042
2058
|
DISALLOWED_TOOLS_ARG,
|
|
2059
|
+
"--append-system-prompt",
|
|
2060
|
+
SYSTEM_PROMPT,
|
|
2061
|
+
"--append-subagent-system-prompt",
|
|
2062
|
+
SUBAGENT_SYSTEM_PROMPT,
|
|
2043
2063
|
"--model",
|
|
2044
2064
|
model,
|
|
2045
2065
|
"--effort",
|
|
@@ -2086,7 +2106,8 @@ function createPrPollingWorker(config) {
|
|
|
2086
2106
|
);
|
|
2087
2107
|
}
|
|
2088
2108
|
},
|
|
2089
|
-
cwd
|
|
2109
|
+
cwd,
|
|
2110
|
+
{ ...CLAUDE_SPAWN_ENV }
|
|
2090
2111
|
);
|
|
2091
2112
|
} catch (err) {
|
|
2092
2113
|
console.error(`[${config.name}] setup error for PR #${pr.number}: ${err}`);
|