claude-task-worker 0.97.0 → 0.99.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/README.md +3 -1
- package/dist/index.js +17 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -247,7 +247,9 @@ claude-task-worker exec-issue --project app-a --epic 100 --label priority-high
|
|
|
247
247
|
|
|
248
248
|
### `--cloud`
|
|
249
249
|
|
|
250
|
-
指定したワーカーのタスクを Claude Code on the web(クラウド VM
|
|
250
|
+
指定したワーカーのタスクを Claude Code on the web(クラウド VM)で実行する。プロセス単位のフラグで既定は無効。クラウドで実行されるのは `exec-issue` / `fix-review-point` の2つだけで(`CLOUD_ALLOWED_WORKERS`)、それ以外のワーカーは `--cloud` を付けてもローカル実行のまま残る。どのワーカーがクラウドで走るかは起動時に1行ログで示される。
|
|
251
|
+
|
|
252
|
+
許可リスト方式にしているのは、クラウド実行が「成果ゼロでも完了扱いになり、トリガーラベルの再付与で再起動され続ける」失敗の仕方をするため。`triage-pr` などは GraphQL ゲートで判断材料を取得できず空振りするが、完了扱いになるとポーリング間隔ごとにクラウドセッションを焼き続ける。
|
|
251
253
|
|
|
252
254
|
```bash
|
|
253
255
|
claude-task-worker exec-issue --cloud
|
package/dist/index.js
CHANGED
|
@@ -1853,14 +1853,9 @@ var SCHEDULED_WORKER_NAMES = [
|
|
|
1853
1853
|
"update-design-md"
|
|
1854
1854
|
];
|
|
1855
1855
|
var CLOUD_DONE_LABEL = "cc-cloud-done";
|
|
1856
|
-
var
|
|
1857
|
-
"resolve-conflict",
|
|
1858
|
-
"create-ui-design",
|
|
1859
|
-
"apply-ui-design",
|
|
1860
|
-
...SCHEDULED_WORKER_NAMES
|
|
1861
|
-
];
|
|
1856
|
+
var CLOUD_ALLOWED_WORKERS = ["exec-issue", "fix-review-point"];
|
|
1862
1857
|
function isCloudWorker(name) {
|
|
1863
|
-
return hasCloudFlag() &&
|
|
1858
|
+
return hasCloudFlag() && CLOUD_ALLOWED_WORKERS.includes(name);
|
|
1864
1859
|
}
|
|
1865
1860
|
function checkCloudAuth(input) {
|
|
1866
1861
|
if (input.status.kind === "unknown") return [];
|
|
@@ -2489,14 +2484,24 @@ function buildCloudCreateArgs(commonArgs, prompt) {
|
|
|
2489
2484
|
function appendCloudDoneInstruction(prompt, target) {
|
|
2490
2485
|
const targetLabel = target.type === "issue" ? `Issue #${target.number}` : `PR #${target.number}`;
|
|
2491
2486
|
const checkoutInstruction = buildCloudCheckoutInstruction(target);
|
|
2487
|
+
const worktreeInstruction = buildCloudWorktreeInstruction(prompt);
|
|
2492
2488
|
const reportInstruction = `\`${CLOUD_DONE_LABEL}\` \u30E9\u30D9\u30EB\u3092\u4ED8\u3051\u308B\u76F4\u524D\u306B\u3001${targetLabel} \u3078 \`${CLOUD_REPORT_HEADING}\` \u3092\u898B\u51FA\u3057\u3068\u3059\u308B\u30B3\u30E1\u30F3\u30C8\u30921\u4EF6\u6295\u7A3F\u3057\u3001\u672C\u6587\u306B\u6700\u7D42\u5831\u544A\uFF08\u5B8C\u4E86\u30FB\u4E2D\u65AD\u306B\u304B\u304B\u308F\u3089\u305A\uFF09\u3092\u66F8\u304F\u3053\u3068\u3002GitHub MCP\uFF08\`add_issue_comment\`\uFF09\u3092\u512A\u5148\u3057\u3001\u5931\u6557\u3057\u305F\u5834\u5408\u306E\u307F \`gh ${target.type} comment ${target.number} --body-file -\` \u3078\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3059\u308B\u3053\u3068\uFF08\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u306F1\u56DE\u307E\u3067\uFF09\u3002\u30EF\u30FC\u30AB\u30FC\u306F\u3053\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u6700\u7D42\u30EC\u30DD\u30FC\u30C8\u3068\u3057\u3066\u56DE\u53CE\u3057 Slack \u901A\u77E5\u306B\u8F09\u305B\u308B\u3002`;
|
|
2493
2489
|
const labelInstruction = `\u4E0A\u8A18\u30B3\u30E1\u30F3\u30C8\u306E\u6295\u7A3F\u5F8C\u3001\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u6700\u5F8C\u306E\u64CD\u4F5C\u3068\u3057\u3066 ${targetLabel} \u306B \`${CLOUD_DONE_LABEL}\` \u30E9\u30D9\u30EB\u3092\u4ED8\u4E0E\u3059\u308B\u3053\u3068\u3002GitHub MCP\uFF08\`issue_write\` / method: \`update\`\uFF09\u3092\u512A\u5148\u3057\u3001\u5931\u6557\u3057\u305F\u5834\u5408\u306E\u307F \`gh ${target.type} edit ${target.number} --add-label ${CLOUD_DONE_LABEL}\` \u3078\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3059\u308B\u3053\u3068\uFF08\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u306F1\u56DE\u307E\u3067\uFF09\u3002\u30EF\u30FC\u30AB\u30FC\u306F\u3053\u306E\u30E9\u30D9\u30EB\u3067\u30BF\u30B9\u30AF\u306E\u7D42\u4E86\u3092\u691C\u77E5\u3057\u3066\u304A\u308A\u3001\u4ED8\u4E0E\u3055\u308C\u306A\u3044\u3068\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u307E\u3067\u5B8C\u4E86\u6271\u3044\u306B\u306A\u3089\u306A\u3044\u3002`;
|
|
2494
|
-
return [prompt, checkoutInstruction, reportInstruction, labelInstruction].filter((part) => part !== "").join("\n\n");
|
|
2490
|
+
return [prompt, checkoutInstruction, worktreeInstruction, reportInstruction, labelInstruction].filter((part) => part !== "").join("\n\n");
|
|
2491
|
+
}
|
|
2492
|
+
var CLOUD_WORKTREE_EXEMPT_SKILLS = ["exec-issue", "fix-review-point"];
|
|
2493
|
+
function buildCloudWorktreeInstruction(prompt) {
|
|
2494
|
+
const skill = prompt.trim().split(/\s+/)[0] ?? "";
|
|
2495
|
+
if (!CLOUD_WORKTREE_EXEMPT_SKILLS.some((name) => skill.endsWith(`:${name}`))) return "";
|
|
2496
|
+
return "\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u30AF\u30E9\u30A6\u30C9\u5B9F\u884C\u306E\u305F\u3081 worktree \u3092\u6301\u305F\u305A\u3001cwd \u306F\u30EA\u30DD\u30B8\u30C8\u30EA\u30EB\u30FC\u30C8\u3067\u3042\u308B\uFF08\u30EF\u30FC\u30AB\u30FC\u306F\u30AF\u30E9\u30A6\u30C9\u5B9F\u884C\u6642\u306B worktree \u3092\u4F5C\u3089\u306A\u3044\uFF09\u3002\u30B9\u30AD\u30EB\u672C\u6587\u306E\u30D5\u30A7\u30FC\u30BA0\u306B\u3042\u308B\u300C`pwd` \u304C `.claude/worktrees/` \u914D\u4E0B\u3067\u306A\u3051\u308C\u3070\u4E2D\u65AD\u3059\u308B\u300D\u78BA\u8A8D\u306F\u3001\u3053\u306E\u6307\u793A\u304C\u3042\u308B\u5834\u5408\u306B\u9650\u308A\u9069\u7528\u3057\u306A\u3044\u3053\u3068\u3002\u305F\u3060\u3057\u30AC\u30FC\u30C9\u306E\u76EE\u7684\u3067\u3042\u308B\u300C\u30C7\u30D5\u30A9\u30EB\u30C8\u30D6\u30E9\u30F3\u30C1\u3067\u4F5C\u696D\u3057\u306A\u3044\u300D\u306F\u7DAD\u6301\u3059\u308B\u3053\u3068 \u2014 \u540C\u3058\u30D5\u30A7\u30FC\u30BA0\u306E\u300C\u30C7\u30D5\u30A9\u30EB\u30C8\u30D6\u30E9\u30F3\u30C1\u540D\u3092\u53D6\u5F97\u3057\u3001\u73FE\u5728\u30D6\u30E9\u30F3\u30C1\u3068\u4E00\u81F4\u3059\u308B\u5834\u5408\u306F\u4E2D\u65AD\u3059\u308B\uFF08\u53D6\u5F97\u5931\u6557\u3082\u4E2D\u65AD\uFF09\u300D\u306F\u5FC5\u305A\u5B9F\u884C\u3057\u3001\u4E00\u81F4\u3057\u305F\u5834\u5408\u306F\u5F93\u6765\u3069\u304A\u308A\u4E2D\u65AD\u3059\u308B\u3053\u3068\u3002";
|
|
2495
2497
|
}
|
|
2496
2498
|
function buildCloudCheckoutInstruction(target) {
|
|
2497
2499
|
if (target.type !== "pr") return "";
|
|
2498
2500
|
return `\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306F PR #${target.number} \u306E head \u30D6\u30E9\u30F3\u30C1\u4E0A\u3067\u958B\u59CB\u3057\u3066\u3044\u308B\uFF08\u30EF\u30FC\u30AB\u30FC\u304C \`--on-branch\` \u3067\u6307\u5B9A\u6E08\u307F\uFF09\u3002\u30B9\u30AD\u30EB\u672C\u6587\u304C\u6307\u793A\u3059\u308B \`gh pr checkout\` \u306F\u5B9F\u884C\u3057\u306A\u3044\u3053\u3068\uFF08\u30AF\u30E9\u30A6\u30C9\u3067\u306F GraphQL \u30B2\u30FC\u30C8\u306B\u3088\u308A 403 \u3067\u5931\u6557\u3057\u3001\u304B\u3064\u65E2\u306B\u30D6\u30E9\u30F3\u30C1\u4E0A\u306B\u3044\u308B\u306E\u3067\u4E0D\u8981\uFF09\u3002\u30D6\u30E9\u30F3\u30C1\u306E\u78BA\u8A8D\u304C\u8981\u308B\u5834\u5408\u306F \`git rev-parse --abbrev-ref HEAD\` \u3092\u4F7F\u3046\u3053\u3068\u3002`;
|
|
2499
2501
|
}
|
|
2502
|
+
function buildCloudGitHubAccessInstruction() {
|
|
2503
|
+
return "\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306F\u30AF\u30E9\u30A6\u30C9\u5B9F\u884C\u306E\u305F\u3081\u3001GitHub \u306E\u53C2\u7167/\u66F4\u65B0\u306F **GitHub MCP \u3092\u7B2C\u4E00\u624B\u6BB5**\u306B\u3059\u308B\u3053\u3068\uFF08\u30B9\u30AD\u30EB\u672C\u6587\u3068 `references/github-access.md` \u306E\u65E2\u5B9A\u3067\u3042\u308B `gh` \u512A\u5148\u3092\u3001\u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306B\u9650\u308A\u9006\u8EE2\u3055\u305B\u308B\uFF09\u3002\u30AF\u30E9\u30A6\u30C9\u306E GitHub \u30D7\u30ED\u30AD\u30B7\u306F `gh issue view --json` / `gh pr view --json` \u306A\u3069\u306E GraphQL \u7D4C\u7531\u306E\u64CD\u4F5C\u3092\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u554F\u308F\u305A 403 \u306B\u3059\u308B\u305F\u3081\u3001`gh` \u3092\u7B2C\u4E00\u624B\u6BB5\u306B\u3059\u308B\u3068 Issue/PR \u672C\u6587\u3092\u53D6\u5F97\u3067\u304D\u306A\u3044\u3002MCP \u306B\u8A72\u5F53\u30C4\u30FC\u30EB\u304C\u7121\u3044\u64CD\u4F5C\u306F `gh api repos/...`\uFF08REST\uFF09\u307E\u305F\u306F `plugin/scripts/gh-compat.sh` \u3092\u4F7F\u3046\u3053\u3068\uFF08REST \u306F\u30AF\u30E9\u30A6\u30C9\u3067\u3082\u6210\u529F\u3059\u308B\uFF09\u3002\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u306F1\u64CD\u4F5C\u306B\u3064\u304D1\u56DE\u307E\u3067\u3002";
|
|
2504
|
+
}
|
|
2500
2505
|
function buildCloudToolRestriction() {
|
|
2501
2506
|
return `\u30AF\u30E9\u30A6\u30C9\u5B9F\u884C\u3067\u306F \`--disallowedTools\` \u30D5\u30E9\u30B0\u306B\u3088\u308B\u30C4\u30FC\u30EB\u5236\u9650\u304C\u53CD\u6620\u3055\u308C\u306A\u3044\u305F\u3081\u3001\u4EE5\u4E0B\u306E\u30C4\u30FC\u30EB\u3092\u4F7F\u308F\u306A\u3044\u3053\u3068: ${DISALLOWED_TOOLS.join(", ")}`;
|
|
2502
2507
|
}
|
|
@@ -2505,7 +2510,9 @@ function buildCloudPrompt(prompt, model, target) {
|
|
|
2505
2510
|
|
|
2506
2511
|
${systemPromptFor(model)}
|
|
2507
2512
|
|
|
2508
|
-
${buildCloudToolRestriction()}
|
|
2513
|
+
${buildCloudToolRestriction()}
|
|
2514
|
+
|
|
2515
|
+
${buildCloudGitHubAccessInstruction()}`;
|
|
2509
2516
|
const withPrinciples = `${prompt}
|
|
2510
2517
|
|
|
2511
2518
|
${principles}`;
|
|
@@ -5359,7 +5366,7 @@ async function assertCloudAvailable() {
|
|
|
5359
5366
|
}
|
|
5360
5367
|
if (cloud) {
|
|
5361
5368
|
console.log(
|
|
5362
|
-
`[worker] cloud execution enabled (--cloud); these workers
|
|
5369
|
+
`[worker] cloud execution enabled (--cloud); only these workers run in the cloud: ${CLOUD_ALLOWED_WORKERS.join(", ")} (all others stay local)`
|
|
5363
5370
|
);
|
|
5364
5371
|
}
|
|
5365
5372
|
}
|