claude-task-worker 0.89.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",
@@ -4141,7 +4144,7 @@ var updateDesignMdWorker = createScheduledWorker({
4141
4144
  init_table();
4142
4145
 
4143
4146
  // src/commands/init.ts
4144
- import { mkdir as mkdir2, writeFile as writeFile2, readFile as readFile2, access } from "node:fs/promises";
4147
+ import { mkdir as mkdir2, writeFile as writeFile2, access } from "node:fs/promises";
4145
4148
 
4146
4149
  // src/commands/codegraph.ts
4147
4150
  import { mkdir, readFile, writeFile } from "node:fs/promises";
@@ -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) {
@@ -4229,122 +4232,6 @@ async function ensureCodegraphGitIgnore(logPrefix) {
4229
4232
  }
4230
4233
  }
4231
4234
 
4232
- // src/commands/design-md.ts
4233
- async function loadRunCommand2() {
4234
- return await Promise.resolve().then(() => (init_run_command(), run_command_exports));
4235
- }
4236
- var DESIGN_MD_PACKAGE = "@google/design.md";
4237
- async function installDesignMdCli(logPrefix) {
4238
- console.log(`[${logPrefix}] Installing DESIGN.md CLI (npm install -g ${DESIGN_MD_PACKAGE}@latest)...`);
4239
- try {
4240
- const { runCommand: runCommand2 } = await loadRunCommand2();
4241
- await runCommand2("npm", ["install", "-g", `${DESIGN_MD_PACKAGE}@latest`]);
4242
- console.log(`[${logPrefix}] DESIGN.md CLI installed.`);
4243
- return true;
4244
- } catch (err) {
4245
- console.error(`[${logPrefix}] Failed to install DESIGN.md CLI: ${err.message}`);
4246
- return false;
4247
- }
4248
- }
4249
-
4250
- // src/commands/pen.ts
4251
- async function loadRunCommand3() {
4252
- return await Promise.resolve().then(() => (init_run_command(), run_command_exports));
4253
- }
4254
- var PEN_PACKAGE = "@pen.dev/cli";
4255
- var LEGACY_PEN_PACKAGE = "@pencil.dev/cli";
4256
- async function installPenCli(logPrefix) {
4257
- console.log(`[${logPrefix}] Removing legacy Pen CLI (npm uninstall -g ${LEGACY_PEN_PACKAGE})...`);
4258
- const { runCommand: runCommand2 } = await loadRunCommand3();
4259
- try {
4260
- await runCommand2("npm", ["uninstall", "-g", LEGACY_PEN_PACKAGE]);
4261
- } catch (err) {
4262
- console.error(`[${logPrefix}] Skipped removing legacy Pen CLI: ${err.message}`);
4263
- }
4264
- console.log(`[${logPrefix}] Installing Pen CLI (npm install -g ${PEN_PACKAGE}@latest)...`);
4265
- try {
4266
- await runCommand2("npm", ["install", "-g", `${PEN_PACKAGE}@latest`]);
4267
- console.log(`[${logPrefix}] Pen CLI installed.`);
4268
- } catch (err) {
4269
- console.error(`[${logPrefix}] Failed to install Pen CLI: ${err.message}`);
4270
- return false;
4271
- }
4272
- await warnIfPenLoggedOut(logPrefix);
4273
- return true;
4274
- }
4275
- async function warnIfPenLoggedOut(logPrefix) {
4276
- const { runCommand: runCommand2 } = await loadRunCommand3();
4277
- try {
4278
- await runCommand2("pencil", ["status"]);
4279
- } catch {
4280
- console.log(
4281
- `[${logPrefix}] Pen CLI is not authenticated. Run \`pencil login\` (or set PEN_CLI_KEY) before using .pen designs.`
4282
- );
4283
- }
4284
- }
4285
-
4286
- // src/commands/install.ts
4287
- init_run_command();
4288
- var PLUGIN_NAME = "claude-task-worker";
4289
- var MARKETPLACE_NAME = "claude-task-worker";
4290
- var MARKETPLACE_SOURCE = "getty104/claude-task-worker";
4291
- var GLOBAL_NPM_PACKAGES = [PLUGIN_NAME, CODEGRAPH_PACKAGE, DESIGN_MD_PACKAGE, PEN_PACKAGE];
4292
- async function printGlobalPackageVersions(logPrefix) {
4293
- console.log(`[${logPrefix}] Installed versions:`);
4294
- try {
4295
- await runCommand("npm", ["ls", "-g", "--depth=0", ...GLOBAL_NPM_PACKAGES]);
4296
- } catch (err) {
4297
- console.error(`[${logPrefix}] Some packages are missing from the global install: ${err.message}`);
4298
- }
4299
- }
4300
- async function addMarketplace() {
4301
- console.log(`[install] Adding marketplace: ${MARKETPLACE_SOURCE}...`);
4302
- try {
4303
- await runCommand("claude", ["plugin", "marketplace", "add", MARKETPLACE_SOURCE]);
4304
- console.log("[install] Marketplace added.");
4305
- } catch (err) {
4306
- console.error(
4307
- `[install] Failed to add marketplace (already added is expected and safe to ignore): ${err.message}`
4308
- );
4309
- }
4310
- }
4311
- async function installPlugin() {
4312
- console.log(`[install] Installing plugin: ${PLUGIN_NAME}@${MARKETPLACE_NAME}...`);
4313
- try {
4314
- await runCommand("claude", ["plugin", "install", `${PLUGIN_NAME}@${MARKETPLACE_NAME}`]);
4315
- console.log("[install] Plugin installed. Restart your Claude Code session to apply.");
4316
- return true;
4317
- } catch (err) {
4318
- console.error(`[install] Failed to install plugin: ${err.message}`);
4319
- return false;
4320
- }
4321
- }
4322
- async function installCli() {
4323
- console.log("[install] Installing claude-task-worker CLI (npm install -g claude-task-worker@latest)...");
4324
- try {
4325
- await runCommand("npm", ["install", "-g", "claude-task-worker@latest"]);
4326
- console.log("[install] claude-task-worker CLI installed.");
4327
- return true;
4328
- } catch (err) {
4329
- console.error(`[install] Failed to install claude-task-worker CLI: ${err.message}`);
4330
- return false;
4331
- }
4332
- }
4333
- async function install() {
4334
- console.log("[install] Starting install...");
4335
- await addMarketplace();
4336
- const pluginOk = await installPlugin();
4337
- const cliOk = await installCli();
4338
- const codegraphOk = await installCodegraphCli("install");
4339
- const designMdOk = await installDesignMdCli("install");
4340
- const penOk = await installPenCli("install");
4341
- await printGlobalPackageVersions("install");
4342
- if (!pluginOk || !cliOk || !codegraphOk || !designMdOk || !penOk) {
4343
- process.exitCode = 1;
4344
- }
4345
- console.log("[install] Done.");
4346
- }
4347
-
4348
4235
  // src/commands/init.ts
4349
4236
  var LABELS = [
4350
4237
  { name: "cc-need-human-check", color: "eb1700" },
@@ -4444,45 +4331,6 @@ async function createConfig(force) {
4444
4331
  const result = await writeFileWithMode(CONFIG_PATH, JSON.stringify(initialConfig, null, 2), force);
4445
4332
  logWriteResult(result, CONFIG_PATH);
4446
4333
  }
4447
- var PROJECT_SETTINGS_PATH = ".claude/settings.json";
4448
- function mergePluginSettings(current) {
4449
- const marketplaces = { ...current.extraKnownMarketplaces ?? {} };
4450
- marketplaces[MARKETPLACE_NAME] = { source: { source: "github", repo: MARKETPLACE_SOURCE } };
4451
- const plugins = { ...current.enabledPlugins ?? {} };
4452
- plugins[`${PLUGIN_NAME}@${MARKETPLACE_NAME}`] = true;
4453
- return { ...current, extraKnownMarketplaces: marketplaces, enabledPlugins: plugins };
4454
- }
4455
- async function registerPluginInSettings() {
4456
- let current = {};
4457
- try {
4458
- const raw = await readFile2(PROJECT_SETTINGS_PATH, "utf-8");
4459
- const parsed = JSON.parse(raw);
4460
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
4461
- console.log(`[init] Skipped: ${PROJECT_SETTINGS_PATH} is not a JSON object`);
4462
- return;
4463
- }
4464
- current = parsed;
4465
- } catch (err) {
4466
- if (err.code !== "ENOENT") {
4467
- console.log(`[init] Skipped: failed to read ${PROJECT_SETTINGS_PATH}: ${err.message}`);
4468
- return;
4469
- }
4470
- }
4471
- const merged = mergePluginSettings(current);
4472
- if (JSON.stringify(merged) === JSON.stringify(current)) {
4473
- console.log(`[init] Already registered: ${PLUGIN_NAME}@${MARKETPLACE_NAME} in ${PROJECT_SETTINGS_PATH}`);
4474
- return;
4475
- }
4476
- try {
4477
- await mkdir2(".claude", { recursive: true });
4478
- await writeFile2(PROJECT_SETTINGS_PATH, `${JSON.stringify(merged, null, 2)}
4479
- `, "utf-8");
4480
- } catch (err) {
4481
- console.log(`[init] Skipped: failed to write ${PROJECT_SETTINGS_PATH}: ${err.message}`);
4482
- return;
4483
- }
4484
- console.log(`[init] Registered ${PLUGIN_NAME}@${MARKETPLACE_NAME} in ${PROJECT_SETTINGS_PATH}`);
4485
- }
4486
4334
  async function init(options = {}) {
4487
4335
  const force = options.force ?? false;
4488
4336
  console.log(`[init] Creating labels...${force ? " (force mode)" : ""}`);
@@ -4502,8 +4350,6 @@ async function init(options = {}) {
4502
4350
  await mkdir2(".github/workflows", { recursive: true });
4503
4351
  const workflowPath = ".github/workflows/assign-creator-on-cc-triage-scope.yml";
4504
4352
  logWriteResult(await writeFileWithMode(workflowPath, ASSIGN_CREATOR_WORKFLOW, force), workflowPath);
4505
- console.log("[init] Registering the plugin in project settings...");
4506
- await registerPluginInSettings();
4507
4353
  console.log("[init] Creating config file...");
4508
4354
  await createConfig(force);
4509
4355
  console.log("[init] Setting up CodeGraph...");
@@ -4512,6 +4358,122 @@ async function init(options = {}) {
4512
4358
  console.log("[init] Done.");
4513
4359
  }
4514
4360
 
4361
+ // src/commands/design-md.ts
4362
+ async function loadRunCommand2() {
4363
+ return await Promise.resolve().then(() => (init_run_command(), run_command_exports));
4364
+ }
4365
+ var DESIGN_MD_PACKAGE = "@google/design.md";
4366
+ async function installDesignMdCli(logPrefix) {
4367
+ console.log(`[${logPrefix}] Installing DESIGN.md CLI (npm install -g ${DESIGN_MD_PACKAGE}@latest)...`);
4368
+ try {
4369
+ const { npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand2();
4370
+ await npmInstallGlobalLatest2(DESIGN_MD_PACKAGE);
4371
+ console.log(`[${logPrefix}] DESIGN.md CLI installed.`);
4372
+ return true;
4373
+ } catch (err) {
4374
+ console.error(`[${logPrefix}] Failed to install DESIGN.md CLI: ${err.message}`);
4375
+ return false;
4376
+ }
4377
+ }
4378
+
4379
+ // src/commands/pen.ts
4380
+ async function loadRunCommand3() {
4381
+ return await Promise.resolve().then(() => (init_run_command(), run_command_exports));
4382
+ }
4383
+ var PEN_PACKAGE = "@pen.dev/cli";
4384
+ var LEGACY_PEN_PACKAGE = "@pencil.dev/cli";
4385
+ async function installPenCli(logPrefix) {
4386
+ console.log(`[${logPrefix}] Removing legacy Pen CLI (npm uninstall -g ${LEGACY_PEN_PACKAGE})...`);
4387
+ const { runCommand: runCommand2, npmInstallGlobalLatest: npmInstallGlobalLatest2 } = await loadRunCommand3();
4388
+ try {
4389
+ await runCommand2("npm", ["uninstall", "-g", LEGACY_PEN_PACKAGE]);
4390
+ } catch (err) {
4391
+ console.error(`[${logPrefix}] Skipped removing legacy Pen CLI: ${err.message}`);
4392
+ }
4393
+ console.log(`[${logPrefix}] Installing Pen CLI (npm install -g ${PEN_PACKAGE}@latest)...`);
4394
+ try {
4395
+ await npmInstallGlobalLatest2(PEN_PACKAGE);
4396
+ console.log(`[${logPrefix}] Pen CLI installed.`);
4397
+ } catch (err) {
4398
+ console.error(`[${logPrefix}] Failed to install Pen CLI: ${err.message}`);
4399
+ return false;
4400
+ }
4401
+ await warnIfPenLoggedOut(logPrefix);
4402
+ return true;
4403
+ }
4404
+ async function warnIfPenLoggedOut(logPrefix) {
4405
+ const { runCommand: runCommand2 } = await loadRunCommand3();
4406
+ try {
4407
+ await runCommand2("pencil", ["status"]);
4408
+ } catch {
4409
+ console.log(
4410
+ `[${logPrefix}] Pen CLI is not authenticated. Run \`pencil login\` (or set PEN_CLI_KEY) before using .pen designs.`
4411
+ );
4412
+ }
4413
+ }
4414
+
4415
+ // src/commands/install.ts
4416
+ init_run_command();
4417
+ var PLUGIN_NAME = "claude-task-worker";
4418
+ var MARKETPLACE_NAME = "claude-task-worker";
4419
+ var MARKETPLACE_SOURCE = "getty104/claude-task-worker";
4420
+ var GLOBAL_NPM_PACKAGES = [PLUGIN_NAME, CODEGRAPH_PACKAGE, DESIGN_MD_PACKAGE, PEN_PACKAGE];
4421
+ async function printGlobalPackageVersions(logPrefix) {
4422
+ console.log(`[${logPrefix}] Installed versions:`);
4423
+ try {
4424
+ await runCommand("npm", ["ls", "-g", "--depth=0", ...GLOBAL_NPM_PACKAGES]);
4425
+ } catch (err) {
4426
+ console.error(`[${logPrefix}] Some packages are missing from the global install: ${err.message}`);
4427
+ }
4428
+ }
4429
+ async function addMarketplace() {
4430
+ console.log(`[install] Adding marketplace: ${MARKETPLACE_SOURCE}...`);
4431
+ try {
4432
+ await runCommand("claude", ["plugin", "marketplace", "add", MARKETPLACE_SOURCE]);
4433
+ console.log("[install] Marketplace added.");
4434
+ } catch (err) {
4435
+ console.error(
4436
+ `[install] Failed to add marketplace (already added is expected and safe to ignore): ${err.message}`
4437
+ );
4438
+ }
4439
+ }
4440
+ async function installPlugin() {
4441
+ console.log(`[install] Installing plugin: ${PLUGIN_NAME}@${MARKETPLACE_NAME}...`);
4442
+ try {
4443
+ await runCommand("claude", ["plugin", "install", `${PLUGIN_NAME}@${MARKETPLACE_NAME}`]);
4444
+ console.log("[install] Plugin installed. Restart your Claude Code session to apply.");
4445
+ return true;
4446
+ } catch (err) {
4447
+ console.error(`[install] Failed to install plugin: ${err.message}`);
4448
+ return false;
4449
+ }
4450
+ }
4451
+ async function installCli() {
4452
+ console.log("[install] Installing claude-task-worker CLI (npm install -g claude-task-worker@latest)...");
4453
+ try {
4454
+ await npmInstallGlobalLatest(PLUGIN_NAME);
4455
+ console.log("[install] claude-task-worker CLI installed.");
4456
+ return true;
4457
+ } catch (err) {
4458
+ console.error(`[install] Failed to install claude-task-worker CLI: ${err.message}`);
4459
+ return false;
4460
+ }
4461
+ }
4462
+ async function install() {
4463
+ console.log("[install] Starting install...");
4464
+ await addMarketplace();
4465
+ const pluginOk = await installPlugin();
4466
+ const cliOk = await installCli();
4467
+ const codegraphOk = await installCodegraphCli("install");
4468
+ const designMdOk = await installDesignMdCli("install");
4469
+ const penOk = await installPenCli("install");
4470
+ await printGlobalPackageVersions("install");
4471
+ if (!pluginOk || !cliOk || !codegraphOk || !designMdOk || !penOk) {
4472
+ process.exitCode = 1;
4473
+ }
4474
+ console.log("[install] Done.");
4475
+ }
4476
+
4515
4477
  // src/commands/update.ts
4516
4478
  init_run_command();
4517
4479
  var PLUGIN_NAME2 = "claude-task-worker";
@@ -4541,7 +4503,7 @@ async function updatePlugin() {
4541
4503
  async function updateCli() {
4542
4504
  console.log("[update] Updating claude-task-worker CLI (npm install -g claude-task-worker@latest)...");
4543
4505
  try {
4544
- await runCommand("npm", ["install", "-g", "claude-task-worker@latest"]);
4506
+ await npmInstallGlobalLatest(PLUGIN_NAME2);
4545
4507
  console.log("[update] claude-task-worker CLI updated.");
4546
4508
  return true;
4547
4509
  } catch (err) {
@@ -4611,34 +4573,8 @@ function version() {
4611
4573
  }
4612
4574
  }
4613
4575
 
4614
- // src/commands/pencil.ts
4615
- import { spawn as spawn3 } from "node:child_process";
4616
- import { dirname as dirname4, join as join9 } from "node:path";
4617
- import { fileURLToPath as fileURLToPath2, pathToFileURL } from "node:url";
4618
- var HOOK_FILE = "pen-baseuri-fix.mjs";
4619
- function buildPencilNodeOptions(existing, hookUrl) {
4620
- return [`--import ${hookUrl}`, existing?.trim()].filter(Boolean).join(" ");
4621
- }
4622
- function pencil(args) {
4623
- const hookPath = join9(dirname4(fileURLToPath2(import.meta.url)), HOOK_FILE);
4624
- const child = spawn3("pencil", args, {
4625
- stdio: "inherit",
4626
- env: {
4627
- ...process.env,
4628
- NODE_OPTIONS: buildPencilNodeOptions(process.env.NODE_OPTIONS, pathToFileURL(hookPath).href)
4629
- }
4630
- });
4631
- child.on("error", (err) => {
4632
- console.error(`[pencil] Failed to run pencil: ${err.message}`);
4633
- process.exit(127);
4634
- });
4635
- child.on("exit", (code, signal) => {
4636
- process.exit(signal ? 1 : code ?? 1);
4637
- });
4638
- }
4639
-
4640
4576
  // src/dispatch-args.ts
4641
- var PROJECT_INCOMPATIBLE_COMMANDS = ["init", "install", "update", "usage", "version", "pencil"];
4577
+ var PROJECT_INCOMPATIBLE_COMMANDS = ["init", "install", "update", "usage", "version"];
4642
4578
  function collectFlagValues(argv, flag) {
4643
4579
  const values = [];
4644
4580
  for (let i = 0; i < argv.length; i++) {
@@ -4706,7 +4642,6 @@ Commands:
4706
4642
  install Add the claude-task-worker marketplace, install the plugin, and install/update the CLI
4707
4643
  update Update the claude-task-worker plugin/marketplace and the CLI itself
4708
4644
  usage Notify current usage to Slack
4709
- pencil <args...> Run the Pencil CLI with the asset base-URI fix loaded (passes every argument and stdin through)
4710
4645
  version Print the installed claude-task-worker CLI version (aliases: --version, -v)
4711
4646
 
4712
4647
  Workers:
@@ -4756,7 +4691,7 @@ if (!workerType) {
4756
4691
  printUsage();
4757
4692
  process.exit(1);
4758
4693
  }
4759
- 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]) {
4760
4695
  console.error(`Unknown command: ${workerType}`);
4761
4696
  printUsage();
4762
4697
  process.exit(1);
@@ -4887,8 +4822,6 @@ if (hasProjectFilter()) {
4887
4822
  (async () => {
4888
4823
  await update();
4889
4824
  })();
4890
- } else if (workerType === "pencil") {
4891
- pencil(process.argv.slice(3));
4892
4825
  } else if (workerType === "usage") {
4893
4826
  (async () => {
4894
4827
  const text = await buildTokenLimitText();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-task-worker",
3
- "version": "0.89.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
- };