@simonyea/holysheep-cli 2.1.60 → 2.1.62
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 +1 -1
- package/dist/index.js +79 -2
- package/package.json +1 -1
package/dist/configure-worker.js
CHANGED
|
@@ -4090,7 +4090,7 @@ var require_package = __commonJS({
|
|
|
4090
4090
|
"package.json"(exports2, module2) {
|
|
4091
4091
|
module2.exports = {
|
|
4092
4092
|
name: "@simonyea/holysheep-cli",
|
|
4093
|
-
version: "2.1.
|
|
4093
|
+
version: "2.1.62",
|
|
4094
4094
|
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.",
|
|
4095
4095
|
scripts: {
|
|
4096
4096
|
build: "node scripts/build.mjs",
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ 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.62",
|
|
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",
|
|
@@ -9400,6 +9400,83 @@ var require_aionui_wrapper = __commonJS({
|
|
|
9400
9400
|
document.body.appendChild(d);
|
|
9401
9401
|
return d;
|
|
9402
9402
|
}
|
|
9403
|
+
// [v2.1.61] DOM-level fallback: hide Aion CLI / qwen / codebuddy from agent
|
|
9404
|
+
// pickers. acpTypes patch covers ACP-based agents, but aionrs ("Aion CLI")
|
|
9405
|
+
// is an AionUi-internal built-in scattered across multiple bundle chunks
|
|
9406
|
+
// with no central registry -- DOM hiding is the only reliable approach.
|
|
9407
|
+
// We use MutationObserver because the agent picker is rendered lazily.
|
|
9408
|
+
(function(){
|
|
9409
|
+
// Substrings to hide. Match in element text content (whole-token aware).
|
|
9410
|
+
var HIDE = [
|
|
9411
|
+
{label:'Aion CLI', test:function(t){return /\\bAion ?CLI\\b/i.test(t)}},
|
|
9412
|
+
{label:'Qwen Code', test:function(t){return /\\bQwen ?Code\\b/i.test(t)}},
|
|
9413
|
+
{label:'CodeBuddy', test:function(t){return /\\bCodeBuddy\\b/i.test(t)}},
|
|
9414
|
+
];
|
|
9415
|
+
function shouldHide(el){
|
|
9416
|
+
// Only consider leaf-ish nodes that look like a pickable item:
|
|
9417
|
+
// role=menuitem|option|listitem, OR <button>, OR <li>, OR clickable div
|
|
9418
|
+
var tag = el.tagName;
|
|
9419
|
+
var role = el.getAttribute && el.getAttribute('role');
|
|
9420
|
+
var isPick = (role==='menuitem' || role==='option' || role==='listitem') ||
|
|
9421
|
+
tag==='LI' || tag==='BUTTON' ||
|
|
9422
|
+
(tag==='DIV' && el.children.length<=8 && el.textContent.length<60);
|
|
9423
|
+
if(!isPick) return null;
|
|
9424
|
+
// Skip already hidden + skip the settings page (Aion CLI Settings is OK)
|
|
9425
|
+
if(el.dataset.hsHidden) return null;
|
|
9426
|
+
var txt = (el.textContent||'').trim();
|
|
9427
|
+
if(!txt || txt.length>120) return null;
|
|
9428
|
+
for(var i=0;i<HIDE.length;i++){
|
|
9429
|
+
if(HIDE[i].test(txt) && !/setting/i.test(txt)) return HIDE[i].label;
|
|
9430
|
+
}
|
|
9431
|
+
return null;
|
|
9432
|
+
}
|
|
9433
|
+
function sweep(){
|
|
9434
|
+
// Only run on /guid (onboarding) and any agent-picker dialogs (we widen
|
|
9435
|
+
// it because the picker also appears in chat). Easy heuristic: any page.
|
|
9436
|
+
var nodes = document.querySelectorAll('button, li, [role=menuitem], [role=option], [role=listitem], div');
|
|
9437
|
+
var geminiNodes = [];
|
|
9438
|
+
for(var i=0;i<nodes.length;i++){
|
|
9439
|
+
var hit = shouldHide(nodes[i]);
|
|
9440
|
+
if(hit){
|
|
9441
|
+
nodes[i].style.display='none';
|
|
9442
|
+
nodes[i].dataset.hsHidden=hit;
|
|
9443
|
+
continue;
|
|
9444
|
+
}
|
|
9445
|
+
// [v2.1.62] Move Gemini to the end of its sibling list. gemini is an
|
|
9446
|
+
// AionUi-internal agent (not in acpTypes), so the .sort() injected
|
|
9447
|
+
// there can't reach it. Detect by exact-ish text match and re-parent.
|
|
9448
|
+
if(!nodes[i].dataset.hsMovedGemini){
|
|
9449
|
+
var t = (nodes[i].textContent||'').trim();
|
|
9450
|
+
// Match "Gemini" / "Gemini CLI" / "Gemini API" but not "gemini-with-google-auth" deep DOM
|
|
9451
|
+
if(t.length<=40 && /^Gemini( |$|CLI|API|-)/i.test(t)){
|
|
9452
|
+
// Pick the right granularity: a leaf-ish picker item, not the page heading
|
|
9453
|
+
var role = nodes[i].getAttribute && nodes[i].getAttribute('role');
|
|
9454
|
+
var tag = nodes[i].tagName;
|
|
9455
|
+
var isPick = role==='menuitem'||role==='option'||role==='listitem'||tag==='LI'||tag==='BUTTON'||
|
|
9456
|
+
(tag==='DIV'&&nodes[i].children.length<=8&&t.length<60);
|
|
9457
|
+
if(isPick) geminiNodes.push(nodes[i]);
|
|
9458
|
+
}
|
|
9459
|
+
}
|
|
9460
|
+
}
|
|
9461
|
+
// Re-parent each gemini item to be the last child of its parent. Done
|
|
9462
|
+
// after the scan so we don't perturb iteration. Tag dataset to avoid
|
|
9463
|
+
// re-moving on the next observer tick.
|
|
9464
|
+
geminiNodes.forEach(function(g){
|
|
9465
|
+
try{
|
|
9466
|
+
var p = g.parentNode;
|
|
9467
|
+
if(!p) return;
|
|
9468
|
+
if(p.lastChild===g){g.dataset.hsMovedGemini='1';return}
|
|
9469
|
+
p.appendChild(g); // moves existing node to the end
|
|
9470
|
+
g.dataset.hsMovedGemini='1';
|
|
9471
|
+
}catch(e){}
|
|
9472
|
+
});
|
|
9473
|
+
}
|
|
9474
|
+
sweep();
|
|
9475
|
+
if(typeof MutationObserver==='function'){
|
|
9476
|
+
var mo = new MutationObserver(function(){clearTimeout(window.__hsHideTimer);window.__hsHideTimer=setTimeout(sweep,50)});
|
|
9477
|
+
mo.observe(document.body,{childList:true,subtree:true});
|
|
9478
|
+
}
|
|
9479
|
+
})();
|
|
9403
9480
|
// 1) Static startup warnings
|
|
9404
9481
|
(function(){
|
|
9405
9482
|
if(sessionStorage.getItem(DISMISS_KEY))return;
|
|
@@ -9541,7 +9618,7 @@ var require_aionui_wrapper = __commonJS({
|
|
|
9541
9618
|
const re = new RegExp(`(${id}:\\{[^{}]*?enabled:)!0`, "g");
|
|
9542
9619
|
out = out.replace(re, "$1!1");
|
|
9543
9620
|
}
|
|
9544
|
-
const PRIORITY = ["codex", "claude", "opencode"];
|
|
9621
|
+
const PRIORITY = ["codex", "claude", "opencode", "droid"];
|
|
9545
9622
|
const priorityJs = JSON.stringify(PRIORITY);
|
|
9546
9623
|
const filterMapRe = /(Object\.entries\([a-z]\)\.filter\(\([^)]*\)=>[^)]*\))\.map\(/;
|
|
9547
9624
|
const m = out.match(filterMapRe);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simonyea/holysheep-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.62",
|
|
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",
|