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 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デザイン先行ワークフロー使用時のみ(要ログイン。呼び出しは `claude-task-worker pencil` 経由) |
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デザイン先行ワークフローを使うなら**インストール後に一度ログインしておく**(`.pen` を触らないので `claude-task-worker pencil` ラッパー経由でなくてよい)。
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 { runCommand: runCommand2 } = await loadRunCommand();
4175
- await runCommand2("npm", ["install", "-g", `${CODEGRAPH_PACKAGE}@latest`]);
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 { runCommand: runCommand2 } = await loadRunCommand2();
4367
- await runCommand2("npm", ["install", "-g", `${DESIGN_MD_PACKAGE}@latest`]);
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 runCommand2("npm", ["install", "-g", `${PEN_PACKAGE}@latest`]);
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 runCommand("npm", ["install", "-g", "claude-task-worker@latest"]);
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 runCommand("npm", ["install", "-g", "claude-task-worker@latest"]);
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", "pencil"];
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" && workerType !== "pencil" && !WORKERS[workerType]) {
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.90.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 && esbuild src/pen-baseuri-fix.ts --bundle --platform=node --format=esm --outfile=dist/pen-baseuri-fix.mjs",
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",
@@ -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
- };