@simonyea/holysheep-cli 2.1.74 → 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.
- package/dist/configure-worker.js +2 -2
- package/dist/index.js +265 -2
- package/package.json +2 -2
package/dist/configure-worker.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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: [
|
|
@@ -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.
|
|
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": [
|