claude-task-worker 0.131.0 → 0.133.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 +6 -8
- package/dist/{chunk-UJJEOXZR.js → chunk-QN2PCVKX.js} +7 -2
- package/dist/index.js +14 -44
- package/dist/lib.js +1 -1
- package/dist/workers/issue-worker.d.ts +1 -0
- package/package.json +1 -1
- package/dist/commands/pen.d.ts +0 -15
package/README.md
CHANGED
|
@@ -60,8 +60,7 @@ CLI が GitHub ラベルを検知してタスクを起動し、プラグイン
|
|
|
60
60
|
| [Claude Code (`claude`)](https://docs.anthropic.com/en/docs/claude-code) | タスク実行エンジン |
|
|
61
61
|
| [Git](https://git-scm.com/) / [jq](https://jqlang.org/) | worktree 操作 / スキル内での JSON 加工 |
|
|
62
62
|
| [CodeGraph](https://www.npmjs.com/package/@colbymchenry/codegraph) | コード探索用インデックス(任意。未導入ならテキスト検索に落ちる) |
|
|
63
|
-
| [
|
|
64
|
-
| [Playwright](https://playwright.dev/) のブラウザ | Playwright MCP でのブラウザ確認 |
|
|
63
|
+
| [Playwright](https://playwright.dev/) のブラウザ | Playwright MCP でのブラウザ確認、`.pen` のスナップショット描画 |
|
|
65
64
|
| [DESIGN.md CLI](https://github.com/google-labs-code/design.md) | `DESIGN.md` の lint。`update-design-md` 使用時のみ(未導入でも動く) |
|
|
66
65
|
| [herdr](https://herdr.dev) | `--project` / `mode: "herdr"` 使用時のみ(`--cloud` は herdr に依存しない) |
|
|
67
66
|
| [GitHub MCP](https://github.com/github/github-mcp-server) | GitHub アクセスの高速化・クラウド実行時のプロキシ制限回避(任意。Claude 側のコネクタで有効化) |
|
|
@@ -194,7 +193,6 @@ claude-task-worker all --cloud
|
|
|
194
193
|
| 対象リポジトリの GitHub App 連携 | クラウド VM から push / PR 作成を行うため |
|
|
195
194
|
| claude.ai の「プルリクエストを自動的に作成する」「プルリクエストの自動修正」が **OFF** | 下記 |
|
|
196
195
|
| VM 側のセットアップスクリプト | 下記 |
|
|
197
|
-
| `PEN_CLI_KEY` 環境変数 | UIデザイン先行ワークフローを使う場合のみ(下記「Pen CLI のログイン」) |
|
|
198
196
|
|
|
199
197
|
claude.ai の設定にある **「プルリクエストを自動的に作成する」「プルリクエストの自動修正」は必ず OFF にする**。どちらもタスクワーカーの制御と競合する。前者はスキルの `create-pr`(`Closes #<N>`・ベースブランチ・ラベル付与)とは別に PR を作るため PR が重複し、後者はセッションが PR 作成後に終了せずレビューを待って修正を続けるため、`cc-cloud-done` による完了検知が 4 時間のタイムアウトまで効かない。
|
|
200
198
|
|
|
@@ -250,16 +248,16 @@ claude-task-worker init --inherit-config ~/ctw/shared.json # 指定パスへ
|
|
|
250
248
|
|
|
251
249
|
設定・カスタムワーカー・スキルを1つのリポジトリにまとめて配る手順は [`docs/config-package.md`](./docs/config-package.md) を参照。
|
|
252
250
|
|
|
253
|
-
###
|
|
251
|
+
### `.pen` の扱い
|
|
254
252
|
|
|
255
|
-
`.pen
|
|
253
|
+
`.pen`(pen.dev のデザインファイル)は平文JSONなので、スキルは pen.dev CLI を使わずに直接編集する(pen.dev CLI の `interactive` は無料プランでは利用日数に上限があるため)。整合性の検査・ID採番・画像出力はプラグイン同梱の `plugin/scripts/pen.mjs` が担う。
|
|
256
254
|
|
|
257
255
|
```bash
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
node plugin/scripts/pen.mjs validate design.pen # ID重複・参照切れ・未知プロパティなどの検査
|
|
257
|
+
node plugin/scripts/pen.mjs render design.pen --out out/ # Chromium で描画して PNG 出力
|
|
260
258
|
```
|
|
261
259
|
|
|
262
|
-
|
|
260
|
+
画像は pen.dev 本体ではなく HTML/CSS へ変換して描画した近似で、描画しきれない表現(取得できなかったフォント・アイコン、shader など)は警告として出る。フォントは Google Fonts、アイコンは unpkg から取得する。
|
|
263
261
|
|
|
264
262
|
## 設定ファイル
|
|
265
263
|
|
|
@@ -2585,6 +2585,7 @@ function createIssuePollingWorker(config) {
|
|
|
2585
2585
|
baseBranch = `cc-epic-${parentNumber}`;
|
|
2586
2586
|
await ensureEpicBranch(baseBranch, defaultBranch);
|
|
2587
2587
|
}
|
|
2588
|
+
const onBranch = cloud && config.cloudOnBranch ? await config.cloudOnBranch(issue, baseBranch) : void 0;
|
|
2588
2589
|
const execution = buildClaudeExecution({
|
|
2589
2590
|
mode,
|
|
2590
2591
|
prompt: `${command} ${issue.number}`,
|
|
@@ -2593,12 +2594,16 @@ function createIssuePollingWorker(config) {
|
|
|
2593
2594
|
// config.json の advisor が false なら advisorModel の指定に関わらず渡さない。
|
|
2594
2595
|
advisorModel: isAdvisorEnabled() ? advisorModel : "",
|
|
2595
2596
|
permissionMode: getPermissionMode(),
|
|
2596
|
-
...cloud ? {
|
|
2597
|
+
...cloud ? {
|
|
2598
|
+
cloud: true,
|
|
2599
|
+
...onBranch ? { onBranch } : { baseRef: baseBranch },
|
|
2600
|
+
remoteEnvId: getRemoteEnvId() ?? ""
|
|
2601
|
+
} : {}
|
|
2597
2602
|
});
|
|
2598
2603
|
let cwd;
|
|
2599
2604
|
if (cloud) {
|
|
2600
2605
|
console.log(
|
|
2601
|
-
`[${config.name}] #${issue.number}: cloud execution, running without worktree on ${baseBranch}`
|
|
2606
|
+
`[${config.name}] #${issue.number}: cloud execution, running without worktree on ${onBranch ?? baseBranch}`
|
|
2602
2607
|
);
|
|
2603
2608
|
} else {
|
|
2604
2609
|
await createWorktreeFromBranch(worktreeId, baseBranch);
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
defineWorker,
|
|
27
27
|
deleteRemoteBranch,
|
|
28
28
|
disabledWorkerMessage,
|
|
29
|
+
ensureEpicBranch,
|
|
29
30
|
ensureRenderInterval,
|
|
30
31
|
findOpenPrNumberByHeadRef,
|
|
31
32
|
findPrNumberByHeadRef,
|
|
@@ -60,7 +61,7 @@ import {
|
|
|
60
61
|
shutdown,
|
|
61
62
|
waitForAllProcesses,
|
|
62
63
|
writeLastRun
|
|
63
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-QN2PCVKX.js";
|
|
64
65
|
import {
|
|
65
66
|
UserConfigError,
|
|
66
67
|
assertCloudCompatibleCommand,
|
|
@@ -472,6 +473,13 @@ var createUiDesignWorker = defineWorker({
|
|
|
472
473
|
command: "/claude-task-worker:create-ui-design",
|
|
473
474
|
triggerLabels: ["cc-create-ui-design"],
|
|
474
475
|
excludeLabels: ["cc-ui-design-pr-created", "cc-ui-design-ready", "cc-exec-issue", "cc-pr-created"],
|
|
476
|
+
// セッションの作業ブランチをスキルの固定ブランチに揃え、デザインPRの作り直しを不要にする。
|
|
477
|
+
// 既にある場合(デザインのやり直し)は作り直さず、スキルのフェーズ4と同じく既存先端から始める。
|
|
478
|
+
cloudOnBranch: async (issue, baseBranch) => {
|
|
479
|
+
const branch = designBranchName(issue.number);
|
|
480
|
+
await ensureEpicBranch(branch, baseBranch);
|
|
481
|
+
return branch;
|
|
482
|
+
},
|
|
475
483
|
onCompleted: async (issueNumber, _worktreeId, _output, ctx) => {
|
|
476
484
|
if (await hasLabel("issue", issueNumber, "cc-need-human-check")) {
|
|
477
485
|
console.log(`[create-ui-design] #${issueNumber}: cc-need-human-check present, skip cc-ui-design-pr-created`);
|
|
@@ -1082,44 +1090,8 @@ async function installDesignMdCli(logPrefix) {
|
|
|
1082
1090
|
}
|
|
1083
1091
|
}
|
|
1084
1092
|
|
|
1085
|
-
// src/commands/pen.ts
|
|
1086
|
-
async function loadRunCommand3() {
|
|
1087
|
-
return await import("./run-command-O2TMRPZK.js");
|
|
1088
|
-
}
|
|
1089
|
-
var PEN_PACKAGE = "@pen.dev/cli";
|
|
1090
|
-
var LEGACY_PEN_PACKAGE = "@pencil.dev/cli";
|
|
1091
|
-
async function installPenCli(logPrefix) {
|
|
1092
|
-
console.log(`[${logPrefix}] Removing legacy Pen CLI (npm uninstall -g ${LEGACY_PEN_PACKAGE})...`);
|
|
1093
|
-
const { runCommand: runCommand2, npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand3();
|
|
1094
|
-
try {
|
|
1095
|
-
await runCommand2("npm", ["uninstall", "-g", LEGACY_PEN_PACKAGE]);
|
|
1096
|
-
} catch (err) {
|
|
1097
|
-
console.error(`[${logPrefix}] Skipped removing legacy Pen CLI: ${err.message}`);
|
|
1098
|
-
}
|
|
1099
|
-
console.log(`[${logPrefix}] Installing Pen CLI (npm install -g ${PEN_PACKAGE}@latest)...`);
|
|
1100
|
-
try {
|
|
1101
|
-
await npmInstallGlobalLatest2(PEN_PACKAGE);
|
|
1102
|
-
console.log(`[${logPrefix}] Pen CLI installed.`);
|
|
1103
|
-
} catch (err) {
|
|
1104
|
-
console.error(`[${logPrefix}] Failed to install Pen CLI: ${err.message}`);
|
|
1105
|
-
return false;
|
|
1106
|
-
}
|
|
1107
|
-
await warnIfPenLoggedOut(logPrefix);
|
|
1108
|
-
return true;
|
|
1109
|
-
}
|
|
1110
|
-
async function warnIfPenLoggedOut(logPrefix) {
|
|
1111
|
-
const { runCommand: runCommand2 } = await loadRunCommand3();
|
|
1112
|
-
try {
|
|
1113
|
-
await runCommand2("pencil", ["status"]);
|
|
1114
|
-
} catch {
|
|
1115
|
-
console.log(
|
|
1116
|
-
`[${logPrefix}] Pen CLI is not authenticated. Run \`pencil login\` (or set PEN_CLI_KEY) before using .pen designs.`
|
|
1117
|
-
);
|
|
1118
|
-
}
|
|
1119
|
-
}
|
|
1120
|
-
|
|
1121
1093
|
// src/commands/playwright.ts
|
|
1122
|
-
async function
|
|
1094
|
+
async function loadRunCommand3() {
|
|
1123
1095
|
return await import("./run-command-O2TMRPZK.js");
|
|
1124
1096
|
}
|
|
1125
1097
|
var PLAYWRIGHT_CORE_PACKAGE = "playwright-core";
|
|
@@ -1130,7 +1102,7 @@ function buildInstallDepsCommand(uid) {
|
|
|
1130
1102
|
return uid === 0 ? { command: "npx", args: npxArgs } : { command: "sudo", args: ["npx", ...npxArgs] };
|
|
1131
1103
|
}
|
|
1132
1104
|
async function installPlaywrightBrowsers(logPrefix) {
|
|
1133
|
-
const { runCommand: runCommand2 } = await
|
|
1105
|
+
const { runCommand: runCommand2 } = await loadRunCommand3();
|
|
1134
1106
|
console.log(`[${logPrefix}] Installing Playwright browsers (npx ${INSTALL_BROWSER_ARGS.join(" ")})...`);
|
|
1135
1107
|
try {
|
|
1136
1108
|
await runCommand2("npx", INSTALL_BROWSER_ARGS);
|
|
@@ -1159,7 +1131,7 @@ async function installPlaywrightBrowsers(logPrefix) {
|
|
|
1159
1131
|
var PLUGIN_NAME = "claude-task-worker";
|
|
1160
1132
|
var MARKETPLACE_NAME = "claude-task-worker";
|
|
1161
1133
|
var MARKETPLACE_SOURCE = "getty104/claude-task-worker";
|
|
1162
|
-
var GLOBAL_NPM_PACKAGES = [PLUGIN_NAME, CODEGRAPH_PACKAGE, DESIGN_MD_PACKAGE
|
|
1134
|
+
var GLOBAL_NPM_PACKAGES = [PLUGIN_NAME, CODEGRAPH_PACKAGE, DESIGN_MD_PACKAGE];
|
|
1163
1135
|
async function printGlobalPackageVersions(logPrefix) {
|
|
1164
1136
|
console.log(`[${logPrefix}] Installed versions:`);
|
|
1165
1137
|
try {
|
|
@@ -1208,10 +1180,9 @@ async function install() {
|
|
|
1208
1180
|
const cliOk = await installCli();
|
|
1209
1181
|
const codegraphOk = await installCodegraphCli("install");
|
|
1210
1182
|
const designMdOk = await installDesignMdCli("install");
|
|
1211
|
-
const penOk = await installPenCli("install");
|
|
1212
1183
|
const playwrightOk = await installPlaywrightBrowsers("install");
|
|
1213
1184
|
await printGlobalPackageVersions("install");
|
|
1214
|
-
if (!pluginOk || !cliOk || !codegraphOk || !designMdOk || !
|
|
1185
|
+
if (!pluginOk || !cliOk || !codegraphOk || !designMdOk || !playwrightOk) {
|
|
1215
1186
|
process.exitCode = 1;
|
|
1216
1187
|
}
|
|
1217
1188
|
console.log("[install] Done.");
|
|
@@ -1349,10 +1320,9 @@ async function update() {
|
|
|
1349
1320
|
const cliOk = await updateCli();
|
|
1350
1321
|
const codegraphOk = await upgradeCodegraphCli("update");
|
|
1351
1322
|
const designMdOk = await installDesignMdCli("update");
|
|
1352
|
-
const penOk = await installPenCli("update");
|
|
1353
1323
|
const playwrightOk = await installPlaywrightBrowsers("update");
|
|
1354
1324
|
await printGlobalPackageVersions("update");
|
|
1355
|
-
if (!marketplaceOk || !pluginOk || !cliOk || !codegraphOk || !designMdOk || !
|
|
1325
|
+
if (!marketplaceOk || !pluginOk || !cliOk || !codegraphOk || !designMdOk || !playwrightOk) {
|
|
1356
1326
|
process.exitCode = 1;
|
|
1357
1327
|
}
|
|
1358
1328
|
console.log("[update] Done.");
|
package/dist/lib.js
CHANGED
|
@@ -14,5 +14,6 @@ export interface IssueWorkerConfig {
|
|
|
14
14
|
baseBranch: string;
|
|
15
15
|
startedAt: number;
|
|
16
16
|
}) => Promise<boolean | void>;
|
|
17
|
+
cloudOnBranch?: (issue: Issue, baseBranch: string) => Promise<string>;
|
|
17
18
|
}
|
|
18
19
|
export declare function createIssuePollingWorker(config: IssueWorkerConfig): WorkerDefinition;
|
package/package.json
CHANGED
package/dist/commands/pen.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare const PEN_PACKAGE = "@pen.dev/cli";
|
|
2
|
-
export declare const LEGACY_PEN_PACKAGE = "@pencil.dev/cli";
|
|
3
|
-
/**
|
|
4
|
-
* Pen CLI(`@pen.dev/cli`)をグローバルインストール/更新する。
|
|
5
|
-
*
|
|
6
|
-
* DESIGN.md CLI と同じく self-upgrade 機構を持たないため、install も update も
|
|
7
|
-
* `npm install -g <pkg>@latest` の同じ手段になる(冪等なので install/update で分岐しない)。
|
|
8
|
-
*
|
|
9
|
-
* 新パッケージの前に旧 `@pencil.dev/cli` を必ずアンインストールする。両者は同じ bin 名
|
|
10
|
-
* `pencil` を提供するため同居させると解決先が不定になり、旧 0.2.x を掴んだ環境では
|
|
11
|
-
* ツール構成が違う(`batch_design` 等の廃止済みツール)ため `edit-pencil-design` /
|
|
12
|
-
* `inspect-pencil-node` / `resolve-pencil-conflict` の各スキルが動かない。削除 → 導入の順に
|
|
13
|
-
* することで `pencil` が確実に新パッケージへリンクされる。
|
|
14
|
-
*/
|
|
15
|
-
export declare function installPenCli(logPrefix: string): Promise<boolean>;
|