claude-task-worker 0.90.0 → 0.91.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 +2 -16
- package/dist/index.js +14 -40
- package/package.json +2 -2
- package/dist/pen-baseuri-fix.mjs +0 -31
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ CLI が GitHub ラベルを検知してタスクを起動し、プラグイン
|
|
|
66
66
|
| [Git](https://git-scm.com/) | worktree の作成・ブランチ操作 |
|
|
67
67
|
| [jq](https://jqlang.org/) | プラグインスキル内での JSON 加工 |
|
|
68
68
|
| [CodeGraph](https://www.npmjs.com/package/@colbymchenry/codegraph) | コード探索用インデックス。任意(未導入でも探索がテキスト検索に落ちるだけ) |
|
|
69
|
-
| [Pen CLI](https://docs.pencil.dev/for-developers/pen-cli) | `.pen` デザインファイルの編集・参照。UIデザイン先行ワークフロー使用時のみ(要ログイン。呼び出しは `
|
|
69
|
+
| [Pen CLI](https://docs.pencil.dev/for-developers/pen-cli) | `.pen` デザインファイルの編集・参照。UIデザイン先行ワークフロー使用時のみ(要ログイン。呼び出しは `pencil` 経由) |
|
|
70
70
|
| [herdr](https://herdr.dev) | `--project` / `mode: "herdr"` 使用時のみ |
|
|
71
71
|
|
|
72
72
|
CLI 本体に npm の実行時依存はない(esbuild で `dist/index.js` に単一バンドルされ、Node.js 標準モジュールのみで動作する)。
|
|
@@ -91,7 +91,7 @@ herdr が必要な場合は `curl -fsSL https://herdr.dev/install.sh | sh` ま
|
|
|
91
91
|
|
|
92
92
|
### Pen CLI のログイン
|
|
93
93
|
|
|
94
|
-
`.pen` を扱うスキル(`edit-pencil-design` / `inspect-pencil-node` / `resolve-pencil-conflict`)は Pen CLI の認証を必要とする。未ログインだと `.pen` の読み書きが失敗するため、UI
|
|
94
|
+
`.pen` を扱うスキル(`edit-pencil-design` / `inspect-pencil-node` / `resolve-pencil-conflict`)は Pen CLI の認証を必要とする。未ログインだと `.pen` の読み書きが失敗するため、UIデザイン先行ワークフローを使うなら**インストール後に一度ログインしておく**。
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
pencil login # メールアドレス + パスワード、またはメールアドレス + OTP コード
|
|
@@ -168,22 +168,8 @@ claude-task-worker <command> [--epic <issue-number>]... [--label <label>]... [--
|
|
|
168
168
|
| `init` | ラベル・テンプレート・設定ファイルの作成と CodeGraph セットアップ |
|
|
169
169
|
| `install` / `update` | 上記「セットアップ」を参照 |
|
|
170
170
|
| `usage` | Claude API 使用状況(5時間/7日間の利用率とリセット時刻)を表示し、Slack にも通知 |
|
|
171
|
-
| `pencil <args...>` | Pencil CLI をアセット URI 修正パッチ付きで実行するラッパー(下記参照) |
|
|
172
171
|
| `version` | CLI のバージョンを表示(`--version` / `-v` も可) |
|
|
173
172
|
|
|
174
|
-
### `pencil <args...>`
|
|
175
|
-
|
|
176
|
-
`@pen.dev/cli`(`pencil`)にはアセットのベース URI を絶対 URI として解決できないバグがあり、`.pen` を開くと `Base URI must be absolute!` で失敗する。本コマンドはその修正を Node の loader hook(`dist/pen-baseuri-fix.mjs`)として `NODE_OPTIONS` 経由で注入したうえで `pencil` を実行するラッパー。
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
claude-task-worker pencil version
|
|
180
|
-
claude-task-worker pencil interactive -i designs/login.pen -o designs/login.pen <<'EOF'
|
|
181
|
-
...
|
|
182
|
-
EOF
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
引数・stdin・stdout・stderr・終了コードはすべて素通しするため、使い方は `pencil` と同じ。`.pen` を扱うスキル・エージェント(`edit-pencil-design` / `inspect-pencil-node` / `resolve-pencil-conflict` / `pencil-design-updater` など)はすべてこのラッパー経由で `pencil` を呼ぶ。
|
|
186
|
-
|
|
187
173
|
### `--epic <issue-number>`
|
|
188
174
|
|
|
189
175
|
指定したエピック Issue のサブ Issue のみを処理対象に絞る。`all` / `yolo` と Issue 系ワーカーで有効。複数指定するといずれかのエピックを親に持つサブ Issue が対象になる(OR)。
|
package/dist/index.js
CHANGED
|
@@ -820,9 +820,13 @@ var init_herdr_runner = __esm({
|
|
|
820
820
|
// src/commands/run-command.ts
|
|
821
821
|
var run_command_exports = {};
|
|
822
822
|
__export(run_command_exports, {
|
|
823
|
+
npmInstallGlobalLatest: () => npmInstallGlobalLatest,
|
|
823
824
|
runCommand: () => runCommand
|
|
824
825
|
});
|
|
825
826
|
import { spawn as spawn2 } from "node:child_process";
|
|
827
|
+
function npmInstallGlobalLatest(pkg) {
|
|
828
|
+
return runCommand("npm", ["install", "-g", `${pkg}@latest`, "--prefer-online"]);
|
|
829
|
+
}
|
|
826
830
|
function runCommand(command, args) {
|
|
827
831
|
return new Promise((resolve3, reject) => {
|
|
828
832
|
const child = spawn2(command, args, {
|
|
@@ -1923,7 +1927,6 @@ function buildClaudeArgs({
|
|
|
1923
1927
|
...mode === "herdr" ? [] : ["-p", prompt],
|
|
1924
1928
|
"--permission-mode",
|
|
1925
1929
|
permission,
|
|
1926
|
-
"--chrome",
|
|
1927
1930
|
"--disallowedTools",
|
|
1928
1931
|
DISALLOWED_TOOLS_ARG,
|
|
1929
1932
|
"--append-system-prompt-file",
|
|
@@ -4171,8 +4174,8 @@ ${entry}
|
|
|
4171
4174
|
async function installCodegraphCli(logPrefix) {
|
|
4172
4175
|
console.log(`[${logPrefix}] Installing CodeGraph CLI (npm install -g ${CODEGRAPH_PACKAGE}@latest)...`);
|
|
4173
4176
|
try {
|
|
4174
|
-
const {
|
|
4175
|
-
await
|
|
4177
|
+
const { npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand();
|
|
4178
|
+
await npmInstallGlobalLatest2(CODEGRAPH_PACKAGE);
|
|
4176
4179
|
console.log(`[${logPrefix}] CodeGraph CLI installed.`);
|
|
4177
4180
|
return true;
|
|
4178
4181
|
} catch (err) {
|
|
@@ -4363,8 +4366,8 @@ var DESIGN_MD_PACKAGE = "@google/design.md";
|
|
|
4363
4366
|
async function installDesignMdCli(logPrefix) {
|
|
4364
4367
|
console.log(`[${logPrefix}] Installing DESIGN.md CLI (npm install -g ${DESIGN_MD_PACKAGE}@latest)...`);
|
|
4365
4368
|
try {
|
|
4366
|
-
const {
|
|
4367
|
-
await
|
|
4369
|
+
const { npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand2();
|
|
4370
|
+
await npmInstallGlobalLatest2(DESIGN_MD_PACKAGE);
|
|
4368
4371
|
console.log(`[${logPrefix}] DESIGN.md CLI installed.`);
|
|
4369
4372
|
return true;
|
|
4370
4373
|
} catch (err) {
|
|
@@ -4381,7 +4384,7 @@ var PEN_PACKAGE = "@pen.dev/cli";
|
|
|
4381
4384
|
var LEGACY_PEN_PACKAGE = "@pencil.dev/cli";
|
|
4382
4385
|
async function installPenCli(logPrefix) {
|
|
4383
4386
|
console.log(`[${logPrefix}] Removing legacy Pen CLI (npm uninstall -g ${LEGACY_PEN_PACKAGE})...`);
|
|
4384
|
-
const { runCommand: runCommand2 } = await loadRunCommand3();
|
|
4387
|
+
const { runCommand: runCommand2, npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand3();
|
|
4385
4388
|
try {
|
|
4386
4389
|
await runCommand2("npm", ["uninstall", "-g", LEGACY_PEN_PACKAGE]);
|
|
4387
4390
|
} catch (err) {
|
|
@@ -4389,7 +4392,7 @@ async function installPenCli(logPrefix) {
|
|
|
4389
4392
|
}
|
|
4390
4393
|
console.log(`[${logPrefix}] Installing Pen CLI (npm install -g ${PEN_PACKAGE}@latest)...`);
|
|
4391
4394
|
try {
|
|
4392
|
-
await
|
|
4395
|
+
await npmInstallGlobalLatest2(PEN_PACKAGE);
|
|
4393
4396
|
console.log(`[${logPrefix}] Pen CLI installed.`);
|
|
4394
4397
|
} catch (err) {
|
|
4395
4398
|
console.error(`[${logPrefix}] Failed to install Pen CLI: ${err.message}`);
|
|
@@ -4448,7 +4451,7 @@ async function installPlugin() {
|
|
|
4448
4451
|
async function installCli() {
|
|
4449
4452
|
console.log("[install] Installing claude-task-worker CLI (npm install -g claude-task-worker@latest)...");
|
|
4450
4453
|
try {
|
|
4451
|
-
await
|
|
4454
|
+
await npmInstallGlobalLatest(PLUGIN_NAME);
|
|
4452
4455
|
console.log("[install] claude-task-worker CLI installed.");
|
|
4453
4456
|
return true;
|
|
4454
4457
|
} catch (err) {
|
|
@@ -4500,7 +4503,7 @@ async function updatePlugin() {
|
|
|
4500
4503
|
async function updateCli() {
|
|
4501
4504
|
console.log("[update] Updating claude-task-worker CLI (npm install -g claude-task-worker@latest)...");
|
|
4502
4505
|
try {
|
|
4503
|
-
await
|
|
4506
|
+
await npmInstallGlobalLatest(PLUGIN_NAME2);
|
|
4504
4507
|
console.log("[update] claude-task-worker CLI updated.");
|
|
4505
4508
|
return true;
|
|
4506
4509
|
} catch (err) {
|
|
@@ -4570,34 +4573,8 @@ function version() {
|
|
|
4570
4573
|
}
|
|
4571
4574
|
}
|
|
4572
4575
|
|
|
4573
|
-
// src/commands/pencil.ts
|
|
4574
|
-
import { spawn as spawn3 } from "node:child_process";
|
|
4575
|
-
import { dirname as dirname4, join as join9 } from "node:path";
|
|
4576
|
-
import { fileURLToPath as fileURLToPath2, pathToFileURL } from "node:url";
|
|
4577
|
-
var HOOK_FILE = "pen-baseuri-fix.mjs";
|
|
4578
|
-
function buildPencilNodeOptions(existing, hookUrl) {
|
|
4579
|
-
return [`--import ${hookUrl}`, existing?.trim()].filter(Boolean).join(" ");
|
|
4580
|
-
}
|
|
4581
|
-
function pencil(args) {
|
|
4582
|
-
const hookPath = join9(dirname4(fileURLToPath2(import.meta.url)), HOOK_FILE);
|
|
4583
|
-
const child = spawn3("pencil", args, {
|
|
4584
|
-
stdio: "inherit",
|
|
4585
|
-
env: {
|
|
4586
|
-
...process.env,
|
|
4587
|
-
NODE_OPTIONS: buildPencilNodeOptions(process.env.NODE_OPTIONS, pathToFileURL(hookPath).href)
|
|
4588
|
-
}
|
|
4589
|
-
});
|
|
4590
|
-
child.on("error", (err) => {
|
|
4591
|
-
console.error(`[pencil] Failed to run pencil: ${err.message}`);
|
|
4592
|
-
process.exit(127);
|
|
4593
|
-
});
|
|
4594
|
-
child.on("exit", (code, signal) => {
|
|
4595
|
-
process.exit(signal ? 1 : code ?? 1);
|
|
4596
|
-
});
|
|
4597
|
-
}
|
|
4598
|
-
|
|
4599
4576
|
// src/dispatch-args.ts
|
|
4600
|
-
var PROJECT_INCOMPATIBLE_COMMANDS = ["init", "install", "update", "usage", "version"
|
|
4577
|
+
var PROJECT_INCOMPATIBLE_COMMANDS = ["init", "install", "update", "usage", "version"];
|
|
4601
4578
|
function collectFlagValues(argv, flag) {
|
|
4602
4579
|
const values = [];
|
|
4603
4580
|
for (let i = 0; i < argv.length; i++) {
|
|
@@ -4665,7 +4642,6 @@ Commands:
|
|
|
4665
4642
|
install Add the claude-task-worker marketplace, install the plugin, and install/update the CLI
|
|
4666
4643
|
update Update the claude-task-worker plugin/marketplace and the CLI itself
|
|
4667
4644
|
usage Notify current usage to Slack
|
|
4668
|
-
pencil <args...> Run the Pencil CLI with the asset base-URI fix loaded (passes every argument and stdin through)
|
|
4669
4645
|
version Print the installed claude-task-worker CLI version (aliases: --version, -v)
|
|
4670
4646
|
|
|
4671
4647
|
Workers:
|
|
@@ -4715,7 +4691,7 @@ if (!workerType) {
|
|
|
4715
4691
|
printUsage();
|
|
4716
4692
|
process.exit(1);
|
|
4717
4693
|
}
|
|
4718
|
-
if (workerType !== "all" && workerType !== "yolo" && workerType !== "init" && workerType !== "install" && workerType !== "update" && workerType !== "usage" &&
|
|
4694
|
+
if (workerType !== "all" && workerType !== "yolo" && workerType !== "init" && workerType !== "install" && workerType !== "update" && workerType !== "usage" && !WORKERS[workerType]) {
|
|
4719
4695
|
console.error(`Unknown command: ${workerType}`);
|
|
4720
4696
|
printUsage();
|
|
4721
4697
|
process.exit(1);
|
|
@@ -4846,8 +4822,6 @@ if (hasProjectFilter()) {
|
|
|
4846
4822
|
(async () => {
|
|
4847
4823
|
await update();
|
|
4848
4824
|
})();
|
|
4849
|
-
} else if (workerType === "pencil") {
|
|
4850
|
-
pencil(process.argv.slice(3));
|
|
4851
4825
|
} else if (workerType === "usage") {
|
|
4852
4826
|
(async () => {
|
|
4853
4827
|
const text = await buildTokenLimitText();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-task-worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.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",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"claude-task-worker": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc --noEmit && esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js
|
|
11
|
+
"build": "tsc --noEmit && esbuild src/index.ts --bundle --platform=node --format=esm --outfile=dist/index.js",
|
|
12
12
|
"dev": "tsc --noEmit --watch",
|
|
13
13
|
"lint": "eslint .",
|
|
14
14
|
"lint:fix": "eslint . --fix",
|
package/dist/pen-baseuri-fix.mjs
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// src/pen-baseuri-fix.ts
|
|
2
|
-
import { registerHooks } from "node:module";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
var BASE_URI_GETTER = /\[(_0x[0-9a-f]+)\((0x[0-9a-f]+)\)\]\(\)\{return this\[\1\((0x[0-9a-f]+)\)\]\|\|this\[\1\((0x[0-9a-f]+)\)\];\}/;
|
|
5
|
-
var PEN_CLI_MODULE = /@pen\.dev\/cli\/dist\/[^/]*\.mjs$/;
|
|
6
|
-
var ABSOLUTE_URI = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//;
|
|
7
|
-
function toAbsoluteUri(path) {
|
|
8
|
-
if (!path || ABSOLUTE_URI.test(path)) return path;
|
|
9
|
-
return `file://${resolve(path)}`;
|
|
10
|
-
}
|
|
11
|
-
globalThis.__penAbsURI = toAbsoluteUri;
|
|
12
|
-
registerHooks({
|
|
13
|
-
load(url, ctx, next) {
|
|
14
|
-
const loaded = next(url, ctx);
|
|
15
|
-
if (!PEN_CLI_MODULE.test(url) || !loaded.source) return loaded;
|
|
16
|
-
const source = String(loaded.source);
|
|
17
|
-
const match = BASE_URI_GETTER.exec(source);
|
|
18
|
-
if (!match) return loaded;
|
|
19
|
-
const [all, decode, methodKey, primaryKey, fallbackKey] = match;
|
|
20
|
-
return {
|
|
21
|
-
...loaded,
|
|
22
|
-
source: source.replace(
|
|
23
|
-
all,
|
|
24
|
-
`[${decode}(${methodKey})](){return globalThis.__penAbsURI(this[${decode}(${primaryKey})]||this[${decode}(${fallbackKey})]);}`
|
|
25
|
-
)
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
export {
|
|
30
|
-
toAbsoluteUri
|
|
31
|
-
};
|