@simonyea/holysheep-cli 2.1.73 → 2.1.75

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.
@@ -4155,11 +4155,11 @@ var require_package = __commonJS({
4155
4155
  "package.json"(exports2, module2) {
4156
4156
  module2.exports = {
4157
4157
  name: "@simonyea/holysheep-cli",
4158
- version: "2.1.73",
4158
+ version: "2.1.75",
4159
4159
  description: "Claude Code/Cursor/Cline API relay for China \u2014 \xA51=$1, WeChat/Alipay payment, no credit card, no VPN. One command setup for all AI coding tools.",
4160
4160
  scripts: {
4161
4161
  build: "node scripts/build.mjs",
4162
- test: "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js",
4162
+ test: "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js && node tests/qwen-code-config.test.js && node tests/codebuddy-config.test.js",
4163
4163
  prepublishOnly: "npm run build && npm test && node scripts/check-tarball-size.js"
4164
4164
  },
4165
4165
  keywords: [
package/dist/index.js CHANGED
@@ -12,11 +12,11 @@ var require_package = __commonJS({
12
12
  "package.json"(exports2, module2) {
13
13
  module2.exports = {
14
14
  name: "@simonyea/holysheep-cli",
15
- version: "2.1.73",
15
+ version: "2.1.75",
16
16
  description: "Claude Code/Cursor/Cline API relay for China \u2014 \xA51=$1, WeChat/Alipay payment, no credit card, no VPN. One command setup for all AI coding tools.",
17
17
  scripts: {
18
18
  build: "node scripts/build.mjs",
19
- test: "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js",
19
+ test: "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js && node tests/qwen-code-config.test.js && node tests/codebuddy-config.test.js",
20
20
  prepublishOnly: "npm run build && npm test && node scripts/check-tarball-size.js"
21
21
  },
22
22
  keywords: [
@@ -6193,9 +6193,9 @@ var require_aionui_runtime_fetcher = __commonJS({
6193
6193
  var http2 = require("http");
6194
6194
  var USER_CACHE_DIR = path.join(os.homedir(), ".holysheep", "aionui-runtime");
6195
6195
  var VENDOR_DIR = path.join(__dirname, "vendor", "aionui");
6196
- var DEFAULT_RUNTIME_URL = "https://mail.holysheep.ai/app/cli/aionui-runtime-v1.9.18-holysheep-hs35.tar.gz";
6197
- var DEFAULT_RUNTIME_SHA256 = "8f0378f8e15d7668429b02e196877e93d8b773055ce6953d83f9b2567b493a99";
6198
- var DEFAULT_RUNTIME_VERSION = "1.9.18-holysheep-hs35";
6196
+ var DEFAULT_RUNTIME_URL = "https://www.holysheep.ai/app/desktop/aionui-runtime-v1.9.18-holysheep-hs36.tar.gz";
6197
+ var DEFAULT_RUNTIME_SHA256 = "26a6d9f649237a0e254e53a73c89aed0b93f7183fc2b5c0f0db264a44c93bad0";
6198
+ var DEFAULT_RUNTIME_VERSION = "1.9.18-holysheep-hs36";
6199
6199
  function isValidRuntimeDir(dir) {
6200
6200
  if (!dir) return false;
6201
6201
  try {
@@ -6550,6 +6550,255 @@ var require_gemini_cli = __commonJS({
6550
6550
  }
6551
6551
  });
6552
6552
 
6553
+ // src/tools/qwen-code.js
6554
+ var require_qwen_code = __commonJS({
6555
+ "src/tools/qwen-code.js"(exports2, module2) {
6556
+ var fs = require("fs");
6557
+ var path = require("path");
6558
+ var os = require("os");
6559
+ var CONFIG_DIR = path.join(os.homedir(), ".qwen");
6560
+ var CONFIG_FILE = path.join(CONFIG_DIR, ".env");
6561
+ var MARKER_BEGIN = "# >>> HolySheep BEGIN >>>";
6562
+ var MARKER_END = "# <<< HolySheep END <<<";
6563
+ var DEFAULT_OPENAI_MODEL = "gpt-5.5";
6564
+ var DEFAULT_ANTHROPIC_MODEL = "claude-sonnet-4-6";
6565
+ function stripManagedBlock(content) {
6566
+ if (!content) return "";
6567
+ const text = String(content).replace(/\r\n/g, "\n");
6568
+ const re = new RegExp(
6569
+ `(?:^|\\n)\\s*${escapeRegex(MARKER_BEGIN)}[\\s\\S]*?${escapeRegex(MARKER_END)}\\s*(?:\\n|$)`,
6570
+ "g"
6571
+ );
6572
+ return text.replace(re, "\n");
6573
+ }
6574
+ __name(stripManagedBlock, "stripManagedBlock");
6575
+ function escapeRegex(s) {
6576
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
6577
+ }
6578
+ __name(escapeRegex, "escapeRegex");
6579
+ function buildManagedBlock(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6580
+ const cleanOpenAi = String(baseUrlOpenAI || "https://api.holysheep.ai/v1").replace(/\/+$/, "");
6581
+ const cleanAnthropic = String(baseUrlAnthropicNoV1 || "https://api.holysheep.ai").replace(/\/+$/, "");
6582
+ return [
6583
+ MARKER_BEGIN,
6584
+ "# Managed by holysheep-cli \u2014 do not edit between markers.",
6585
+ "# Run `hs reset qwen-code` to remove this block; user-added env lines",
6586
+ "# outside this block are preserved.",
6587
+ `OPENAI_API_KEY=${apiKey}`,
6588
+ `OPENAI_BASE_URL=${cleanOpenAi}`,
6589
+ `OPENAI_MODEL=${DEFAULT_OPENAI_MODEL}`,
6590
+ `ANTHROPIC_BASE_URL=${cleanAnthropic}`,
6591
+ `ANTHROPIC_AUTH_TOKEN=${apiKey}`,
6592
+ `ANTHROPIC_MODEL=${DEFAULT_ANTHROPIC_MODEL}`,
6593
+ MARKER_END
6594
+ ].join("\n");
6595
+ }
6596
+ __name(buildManagedBlock, "buildManagedBlock");
6597
+ function readSafe() {
6598
+ try {
6599
+ if (fs.existsSync(CONFIG_FILE)) {
6600
+ return fs.readFileSync(CONFIG_FILE, "utf8");
6601
+ }
6602
+ } catch {
6603
+ }
6604
+ return "";
6605
+ }
6606
+ __name(readSafe, "readSafe");
6607
+ function writeManaged(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6608
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
6609
+ const existing = readSafe();
6610
+ const stripped = stripManagedBlock(existing);
6611
+ const block = buildManagedBlock(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI);
6612
+ const userPart = stripped.replace(/\n{3,}/g, "\n\n").replace(/^\n+|\n+$/g, "");
6613
+ const out = userPart ? `${userPart}
6614
+
6615
+ ${block}
6616
+ ` : `${block}
6617
+ `;
6618
+ fs.writeFileSync(CONFIG_FILE, out, { encoding: "utf8", mode: 384 });
6619
+ try {
6620
+ fs.chmodSync(CONFIG_FILE, 384);
6621
+ } catch {
6622
+ }
6623
+ }
6624
+ __name(writeManaged, "writeManaged");
6625
+ module2.exports = {
6626
+ name: "Qwen Code",
6627
+ id: "qwen-code",
6628
+ // See header comment — npx fallback means the CLI is "always available"
6629
+ // from aionui's perspective, so we always want auto-config to run.
6630
+ checkInstalled() {
6631
+ return true;
6632
+ },
6633
+ isConfigured() {
6634
+ const content = readSafe();
6635
+ return content.includes(MARKER_BEGIN) && content.includes(MARKER_END);
6636
+ },
6637
+ configure(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6638
+ if (!apiKey) {
6639
+ throw new Error("qwen-code.configure: apiKey is required");
6640
+ }
6641
+ writeManaged(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI);
6642
+ return {
6643
+ file: CONFIG_FILE,
6644
+ hot: true
6645
+ };
6646
+ },
6647
+ reset() {
6648
+ if (!fs.existsSync(CONFIG_FILE)) return;
6649
+ const stripped = stripManagedBlock(readSafe());
6650
+ const cleaned = stripped.replace(/^\n+|\n+$/g, "");
6651
+ if (cleaned) {
6652
+ fs.writeFileSync(CONFIG_FILE, cleaned + "\n", "utf8");
6653
+ } else {
6654
+ fs.writeFileSync(CONFIG_FILE, "", "utf8");
6655
+ }
6656
+ },
6657
+ getConfigPath() {
6658
+ return CONFIG_FILE;
6659
+ },
6660
+ hint: "Qwen Code \u901A\u8FC7 ~/.qwen/.env \u8BFB\u53D6 OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL\uFF1B\u542F\u52A8\u540E\u7ACB\u5373\u751F\u6548",
6661
+ launchCmd: "qwen",
6662
+ installCmd: "npm install -g @qwen-code/qwen-code",
6663
+ docsUrl: "https://qwenlm.github.io/qwen-code-docs/en/users/configuration/auth/",
6664
+ envVarFormat: "openai",
6665
+ // Exposed for tests / future tooling.
6666
+ __internal: {
6667
+ MARKER_BEGIN,
6668
+ MARKER_END,
6669
+ DEFAULT_OPENAI_MODEL,
6670
+ DEFAULT_ANTHROPIC_MODEL,
6671
+ stripManagedBlock,
6672
+ buildManagedBlock
6673
+ }
6674
+ };
6675
+ }
6676
+ });
6677
+
6678
+ // src/tools/codebuddy.js
6679
+ var require_codebuddy = __commonJS({
6680
+ "src/tools/codebuddy.js"(exports2, module2) {
6681
+ var fs = require("fs");
6682
+ var path = require("path");
6683
+ var os = require("os");
6684
+ var CONFIG_DIR = path.join(os.homedir(), ".codebuddy");
6685
+ var CONFIG_FILE = path.join(CONFIG_DIR, ".env");
6686
+ var MARKER_BEGIN = "# >>> HolySheep BEGIN >>>";
6687
+ var MARKER_END = "# <<< HolySheep END <<<";
6688
+ var DEFAULT_OPENAI_MODEL = "gpt-5.5";
6689
+ var DEFAULT_ANTHROPIC_MODEL = "claude-sonnet-4-6";
6690
+ function escapeRegex(s) {
6691
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
6692
+ }
6693
+ __name(escapeRegex, "escapeRegex");
6694
+ function stripManagedBlock(content) {
6695
+ if (!content) return "";
6696
+ const text = String(content).replace(/\r\n/g, "\n");
6697
+ const re = new RegExp(
6698
+ `(?:^|\\n)\\s*${escapeRegex(MARKER_BEGIN)}[\\s\\S]*?${escapeRegex(MARKER_END)}\\s*(?:\\n|$)`,
6699
+ "g"
6700
+ );
6701
+ return text.replace(re, "\n");
6702
+ }
6703
+ __name(stripManagedBlock, "stripManagedBlock");
6704
+ function buildManagedBlock(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6705
+ const cleanOpenAi = String(baseUrlOpenAI || "https://api.holysheep.ai/v1").replace(/\/+$/, "");
6706
+ const cleanAnthropic = String(baseUrlAnthropicNoV1 || "https://api.holysheep.ai").replace(/\/+$/, "");
6707
+ return [
6708
+ MARKER_BEGIN,
6709
+ "# Managed by holysheep-cli \u2014 do not edit between markers.",
6710
+ "# Run `hs reset codebuddy` to remove this block; user-added env lines",
6711
+ "# outside this block (e.g. CODEBUDDY_INTERNET_ENVIRONMENT) are preserved.",
6712
+ `CODEBUDDY_API_KEY=${apiKey}`,
6713
+ `CODEBUDDY_BASE_URL=${cleanOpenAi}`,
6714
+ `OPENAI_API_KEY=${apiKey}`,
6715
+ `OPENAI_BASE_URL=${cleanOpenAi}`,
6716
+ `OPENAI_MODEL=${DEFAULT_OPENAI_MODEL}`,
6717
+ `ANTHROPIC_BASE_URL=${cleanAnthropic}`,
6718
+ `ANTHROPIC_AUTH_TOKEN=${apiKey}`,
6719
+ `ANTHROPIC_MODEL=${DEFAULT_ANTHROPIC_MODEL}`,
6720
+ MARKER_END
6721
+ ].join("\n");
6722
+ }
6723
+ __name(buildManagedBlock, "buildManagedBlock");
6724
+ function readSafe() {
6725
+ try {
6726
+ if (fs.existsSync(CONFIG_FILE)) {
6727
+ return fs.readFileSync(CONFIG_FILE, "utf8");
6728
+ }
6729
+ } catch {
6730
+ }
6731
+ return "";
6732
+ }
6733
+ __name(readSafe, "readSafe");
6734
+ function writeManaged(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6735
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
6736
+ const existing = readSafe();
6737
+ const stripped = stripManagedBlock(existing);
6738
+ const block = buildManagedBlock(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI);
6739
+ const userPart = stripped.replace(/\n{3,}/g, "\n\n").replace(/^\n+|\n+$/g, "");
6740
+ const out = userPart ? `${userPart}
6741
+
6742
+ ${block}
6743
+ ` : `${block}
6744
+ `;
6745
+ fs.writeFileSync(CONFIG_FILE, out, { encoding: "utf8", mode: 384 });
6746
+ try {
6747
+ fs.chmodSync(CONFIG_FILE, 384);
6748
+ } catch {
6749
+ }
6750
+ }
6751
+ __name(writeManaged, "writeManaged");
6752
+ module2.exports = {
6753
+ name: "CodeBuddy",
6754
+ id: "codebuddy",
6755
+ checkInstalled() {
6756
+ return true;
6757
+ },
6758
+ isConfigured() {
6759
+ const content = readSafe();
6760
+ return content.includes(MARKER_BEGIN) && content.includes(MARKER_END);
6761
+ },
6762
+ configure(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI) {
6763
+ if (!apiKey) {
6764
+ throw new Error("codebuddy.configure: apiKey is required");
6765
+ }
6766
+ writeManaged(apiKey, baseUrlAnthropicNoV1, baseUrlOpenAI);
6767
+ return {
6768
+ file: CONFIG_FILE,
6769
+ hot: true
6770
+ };
6771
+ },
6772
+ reset() {
6773
+ if (!fs.existsSync(CONFIG_FILE)) return;
6774
+ const stripped = stripManagedBlock(readSafe());
6775
+ const cleaned = stripped.replace(/^\n+|\n+$/g, "");
6776
+ if (cleaned) {
6777
+ fs.writeFileSync(CONFIG_FILE, cleaned + "\n", "utf8");
6778
+ } else {
6779
+ fs.writeFileSync(CONFIG_FILE, "", "utf8");
6780
+ }
6781
+ },
6782
+ getConfigPath() {
6783
+ return CONFIG_FILE;
6784
+ },
6785
+ hint: "CodeBuddy \u901A\u8FC7 ~/.codebuddy/.env \u8BFB\u53D6 CODEBUDDY_API_KEY / CODEBUDDY_BASE_URL\uFF08\u7B2C\u4E09\u65B9\u6A21\u5F0F\uFF09\uFF1B\u4E2D\u56FD\u7248/iOA \u7248\u7528\u6237\u8BF7\u81EA\u884C\u8BBE\u7F6E CODEBUDDY_INTERNET_ENVIRONMENT",
6786
+ launchCmd: "codebuddy",
6787
+ installCmd: "npm install -g @tencent-ai/codebuddy-code",
6788
+ docsUrl: "https://www.codebuddy.ai/docs/cli/env-vars",
6789
+ envVarFormat: "openai",
6790
+ __internal: {
6791
+ MARKER_BEGIN,
6792
+ MARKER_END,
6793
+ DEFAULT_OPENAI_MODEL,
6794
+ DEFAULT_ANTHROPIC_MODEL,
6795
+ stripManagedBlock,
6796
+ buildManagedBlock
6797
+ }
6798
+ };
6799
+ }
6800
+ });
6801
+
6553
6802
  // src/webui/workspace-store.js
6554
6803
  var require_workspace_store = __commonJS({
6555
6804
  "src/webui/workspace-store.js"(exports2, module2) {
@@ -9263,6 +9512,8 @@ var require_aionui_wrapper = __commonJS({
9263
9512
  var codexTool = require_codex();
9264
9513
  var droidTool = require_droid();
9265
9514
  var hermesTool = require_hermes();
9515
+ var qwenCodeTool = require_qwen_code();
9516
+ var codebuddyTool = require_codebuddy();
9266
9517
  var openclawTool = require_openclaw();
9267
9518
  var BRIDGE_DIR = path.join(os.homedir(), ".holysheep");
9268
9519
  var BRIDGE_CRED_FILE = path.join(BRIDGE_DIR, "aionui-bridge.json");
@@ -10345,6 +10596,18 @@ var require_aionui_wrapper = __commonJS({
10345
10596
  tool: geminiTool,
10346
10597
  settingsHint: "~/.gemini/settings.json (selectedAuthType only \u2014 HolySheep key does not proxy Gemini)",
10347
10598
  configureArgs: [apiKey, BASE_URL_ANTHROPIC, BASE_URL_OPENAI]
10599
+ },
10600
+ {
10601
+ id: "qwen-code",
10602
+ tool: qwenCodeTool,
10603
+ settingsHint: "~/.qwen/.env (OPENAI_* + ANTHROPIC_* envs)",
10604
+ configureArgs: [apiKey, BASE_URL_ANTHROPIC, BASE_URL_OPENAI]
10605
+ },
10606
+ {
10607
+ id: "codebuddy",
10608
+ tool: codebuddyTool,
10609
+ settingsHint: "~/.codebuddy/.env (CODEBUDDY_* + OPENAI_* + ANTHROPIC_* envs)",
10610
+ configureArgs: [apiKey, BASE_URL_ANTHROPIC, BASE_URL_OPENAI]
10348
10611
  }
10349
10612
  ];
10350
10613
  for (const s of siblings) {
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@simonyea/holysheep-cli",
3
- "version": "2.1.73",
3
+ "version": "2.1.75",
4
4
  "description": "Claude Code/Cursor/Cline API relay for China — ¥1=$1, WeChat/Alipay payment, no credit card, no VPN. One command setup for all AI coding tools.",
5
5
  "scripts": {
6
6
  "build": "node scripts/build.mjs",
7
- "test": "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js",
7
+ "test": "node tests/droid.test.js && node tests/workspace-store.test.js && node tests/runtime-stale-upgrade.test.js && node tests/hermes.test.js && node tests/preflight.test.js && node tests/opencode-auth-purge.test.js && node tests/shell-winpath.test.js && node tests/openclaw-atomic-write.test.js && node tests/openclaw-disable-auth-direct.test.js && node tests/opencode-default-model.test.js && node tests/paths-bundled.test.js && node tests/aionui-runtime-resources.test.js && node tests/aionui-wrapper-claude-proxy.test.js && node tests/aionui-wrapper-probe.test.js && node tests/aionui-wrapper-proxy-integration.test.js && node tests/aionui-wrapper-all-clis-autoconf.test.js && node tests/aionui-wrapper-env-signal.test.js && node tests/aionui-wrapper-csp-rewrite.test.js && node tests/aionui-wrapper-version-status.test.js && node tests/claude-proxy-daemon.test.js && node tests/claude-proxy-vscode-settings.test.js && node tests/claude-proxy-vscode-env.test.js && node tests/acptypes-patch.test.js && node tests/codex-approval-policy.test.js && node tests/version-check.test.js && node tests/runclaude-missing-binary.test.js && node tests/claude-code-configure-preserve.test.js && node tests/webui-claude-proxy-virtual-tool.test.js && node tests/webui-claude-proxy-ui.test.js && node tests/webui-response-consumer.test.js && node tests/webui-claude-proxy-install-gating.test.js && node tests/claude-code-windows-local-bin.test.js && node tests/qwen-code-config.test.js && node tests/codebuddy-config.test.js",
8
8
  "prepublishOnly": "npm run build && npm test && node scripts/check-tarball-size.js"
9
9
  },
10
10
  "keywords": [