bingocode 1.1.147 → 1.1.149

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.
@@ -1,39 +1,7 @@
1
1
  {
2
2
  "permissions": {
3
3
  "allow": [
4
- "Read(//c/Users/qi.lin/.claude/**)",
5
- "Bash(dir \"F:\\\\Leanchy\\\\VirtuosAgent\\\\BingoCode\\\\src\\\\server\\\\proxy\")",
6
- "Bash(ls src/**/)",
7
- "Bash(cat config/*.json)",
8
- "Bash(git:*)",
9
- "WebFetch(domain:docs.anthropic.com)",
10
- "WebSearch",
11
- "WebFetch(domain:www.anthropic.com)",
12
- "Bash(grep -v \"node_modules\\\\|bun:\\\\|bun/\\\\|bun@\\\\|\\\\.bun\\\\|bunfig\\\\|bundl\\\\|bunny\\\\|abun\\\\|debug\\\\|comment\\\\|//.*bun\\\\|bunta\\\\|buno\")",
13
- "Bash(grep:*)",
14
- "Bash(node:*)",
15
- "WebFetch(domain:www.npmjs.com)",
16
- "WebFetch(domain:raw.githubusercontent.com)",
17
- "WebFetch(domain:anthropic.com)",
18
- "WebFetch(domain:unpkg.com)",
19
- "WebFetch(domain:registry.npmjs.org)",
20
- "Bash(npm info:*)",
21
- "Bash(cd /tmp)",
22
- "Bash(npm pack:*)",
23
- "Bash(ls -lh *.tgz)",
24
- "Bash(tar xzf:*)",
25
- "Bash(mkdir -p /tmp/old-pkg)",
26
- "Read(//tmp/old-pkg/**)",
27
- "Bash(mkdir -p /tmp/old-v1)",
28
- "Bash(/dev/null ls:*)",
29
- "Bash(find F:LeanchyVirtuosAgentBingoCode -maxdepth 3 -type f -name *.ts -o -name *.js -o -name *.json)",
30
- "Bash(find F:LeanchyVirtuosAgentBingoCodesrc -name yoloClassifier* -o -name *yolo*)",
31
- "Bash(bun --print \"import {feature} from ''bun:bundle''; console.log\\(feature\\(''TRANSCRIPT_CLASSIFIER''\\)\\)\")",
32
- "Bash(bun:*)",
33
- "Bash(find F:LeanchyVirtuosAgentBingoCode -name *.plugin.* -o -name *plugin.ts)",
34
- "Bash(find F:LeanchyVirtuosAgentBingoCodesrc -name globalConfig* -o -name *.globalConfig*)",
35
- "Read(//f/Leanchy/VirtuosAgent/BingoCode/**)",
36
- "Bash(python -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\(list\\(d.keys\\(\\)\\)[:20]\\)\")"
4
+ "Bash(bun run:*)"
37
5
  ]
38
6
  }
39
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingocode",
3
- "version": "1.1.147",
3
+ "version": "1.1.149",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "claude": "bin/claude-win.cjs",
@@ -590,11 +590,7 @@ export const CliMenuManager: React.FC = () => {
590
590
  const langOrder: Lang[] = ['en', 'zh', 'ja'];
591
591
  const nextLang = langOrder[(langOrder.indexOf(lang) + 1) % langOrder.length];
592
592
  setLang(nextLang);
593
- try {
594
- const cfg = getGlobalConfig();
595
- cfg.language = nextLang;
596
- saveGlobalConfig(cfg);
597
- } catch {}
593
+ try { saveGlobalConfig(current => ({ ...current, language: nextLang })); } catch {}
598
594
  return;
599
595
  }
600
596
 
@@ -605,11 +601,7 @@ export const CliMenuManager: React.FC = () => {
605
601
  const idx = Math.max(0, order.indexOf(curr as any));
606
602
  const next = order[(idx + 1) % order.length];
607
603
  setTheme(next as any);
608
- try {
609
- const cfg = getGlobalConfig();
610
- cfg.theme = next as any;
611
- saveGlobalConfig(cfg);
612
- } catch {}
604
+ try { saveGlobalConfig(current => ({ ...current, theme: next as any })); } catch {}
613
605
  return;
614
606
  }
615
607
 
@@ -617,7 +609,7 @@ export const CliMenuManager: React.FC = () => {
617
609
  if (input === 'o' || input === 'O') {
618
610
  setAnimEnabled(v => {
619
611
  const next = !v;
620
- try { const cfg = getGlobalConfig(); cfg.uiAnimEnabled = next; saveGlobalConfig(cfg); } catch {}
612
+ try { saveGlobalConfig(current => ({ ...current, uiAnimEnabled: next })); } catch {}
621
613
  return next;
622
614
  });
623
615
  return;
@@ -626,7 +618,7 @@ export const CliMenuManager: React.FC = () => {
626
618
  if (input === 't' || input === 'T') {
627
619
  setTipsEnabled(v => {
628
620
  const next = !v;
629
- try { const cfg = getGlobalConfig(); cfg.uiTipsEnabled = next; saveGlobalConfig(cfg); } catch {}
621
+ try { saveGlobalConfig(current => ({ ...current, uiTipsEnabled: next })); } catch {}
630
622
  return next;
631
623
  });
632
624
  return;
@@ -1259,11 +1251,7 @@ export const CliMenuManager: React.FC = () => {
1259
1251
  initialIndex={tS.langOptions.findIndex(o => o.value === lang)}
1260
1252
  onSelect={(item: { label: string; value: Lang }) => {
1261
1253
  setLang(item.value);
1262
- try {
1263
- const cfg = getGlobalConfig();
1264
- cfg.language = item.value;
1265
- saveGlobalConfig(cfg);
1266
- } catch {}
1254
+ try { saveGlobalConfig(current => ({ ...current, language: item.value })); } catch {}
1267
1255
  setSettingsStage('list');
1268
1256
  }}
1269
1257
  />
@@ -163,7 +163,19 @@ export function modelSupportsAutoMode(model: string): boolean {
163
163
  // External: firstParty-only at launch (PI probes not wired for
164
164
  // Bedrock/Vertex/Foundry yet). Checked before allowModels so the GB
165
165
  // override can't enable auto mode on unsupported providers.
166
- if (process.env.USER_TYPE !== 'ant' && getAPIProvider() !== 'firstParty') {
166
+ // NOTE(leanchy): For BingoCode fork, bypass the provider check when
167
+ // the user has explicitly opted into auto mode AND set the env var.
168
+ // Original: if (process.env.USER_TYPE !== 'ant' && getAPIProvider() !== 'firstParty')
169
+ const autoModeOptIn = getFeatureValue_CACHED_MAY_BE_STALE<{ enabled?: string }>(
170
+ 'tengu_auto_mode_config',
171
+ {},
172
+ )
173
+ if (
174
+ process.env.USER_TYPE !== 'ant' &&
175
+ getAPIProvider() !== 'firstParty' &&
176
+ !isEnvTruthy(process.env.CLAUDE_CODE_ENABLE_AUTO_WITH_ANY_PROVIDER) &&
177
+ autoModeOptIn?.enabled !== 'enabled'
178
+ ) {
167
179
  return false
168
180
  }
169
181
  // GrowthBook override: tengu_auto_mode_config.allowModels force-enables
@@ -1,27 +0,0 @@
1
- ---
2
- name: core-protocol
3
- description: 核心协议:定义终态导向、信息性价比、全权授权与知识沉淀的闭环逻辑。
4
- ---
5
-
6
- # 核心协议 (Core Protocol)
7
-
8
- ## 1. 终态逆向 (Inverse Engineering)
9
- - **定义**:从交付终态倒推执行路径。
10
- - **准则**:
11
- - 启动即确认验收标准(Definition of Done)。
12
- - 中间步骤若无法被终态验证,视作无效动作。
13
- - 进度汇报仅包含:当前状态 -> 距终态剩余缺口。
14
-
15
- ## 2. 信息性价比 (Information Density)
16
- - **定义**:MAX(信息量 / 字符占用)。
17
- - **准则**:
18
- - 禁止废话、过渡句、礼貌语。
19
- - 结论前置,逻辑后附。
20
- - 沟通即协议:将重复性共识固化为 Skill 记录。
21
-
22
- ## 3. 授权与沉淀 (Delegation & Accumulation)
23
- - **定义**:一次性协议定义撬动无限次高质量执行。
24
- - **准则**:
25
- - **全权委托**:在协议框架内拥有修改、删除、重写权,无需小碎步确认。
26
- - **纠错即协议**:凡被纠正,立即将正确逻辑沉淀至 Skill,禁止二次触发同类纠错。
27
- - **角色分层**:AI 作为高度抽象的执行引擎,用户作为终态验收器。
@@ -1,25 +0,0 @@
1
- ---
2
- name: diagnostic-protocol
3
- description: 诊断与修改协议:定义证据驱动、最小侵入与可控熵减的防御性编程逻辑。
4
- ---
5
-
6
- # 诊断协议 (Diagnostic Protocol)
7
-
8
- ## 1. 证据驱动 (Evidence-Driven)
9
- - **路径**:观察事实 -> 提取证据 -> 定位根因 -> 输出方案 -> 执行。
10
- - **准则**:
11
- - 无证据禁止修改。
12
- - 严禁猜测、体感修复或盲目重试。
13
- - 日志、调用链、内存快照是唯一修改合法性证明。
14
-
15
- ## 2. 可控熵减 (Controlled Entropy)
16
- - **逻辑**:视“不必要的变化”为系统威胁。
17
- - **准则**:
18
- - **最小侵入**:改动范围限制在根因点,禁止扩大化重构(除非显式要求)。
19
- - **反向溯源**:报错点非故障源,必须跨层级追踪至控制流源头。
20
- - **风险前置**:先写测试/探针验证猜想,风险闭环后再应用补丁。
21
-
22
- ## 3. 状态闭环 (State Closure)
23
- - **准则**:
24
- - 任何临时调试代码必须在交付前物理清除。
25
- - 修改后必须通过环境拉取验证,确保持续集成有效。
@@ -1,22 +0,0 @@
1
- ---
2
- name: evolution-protocol
3
- description: 演进协议:定义动态解耦、系统抽象与协议优先的架构逻辑。
4
- ---
5
-
6
- # 演进协议 (Evolution Protocol)
7
-
8
- ## 1. 动态解耦 (Dynamic Decoupling)
9
- - **准则**:
10
- - 禁止硬编码:业务逻辑与配置物理隔离。
11
- - 路径依赖最小化:所有资源定位应具备动态发现或配置注入能力。
12
-
13
- ## 2. 系统抽象 (Abstration First)
14
- - **逻辑**:不解决具体问题,解决此类问题的模式。
15
- - **准则**:
16
- - 发现两次重复逻辑即进行接口/配置化抽象。
17
- - 复用优先:修改前先通过全量检索确认是否存在已有组件或工具类。
18
-
19
- ## 3. 协议语义化 (Semantic Protocol)
20
- - **准则**:
21
- - 模块间调用必须有清晰的契约(Interface/Type)。
22
- - 代码即文档:通过自解释命名和逻辑分层减少外部文档依赖。