bingocode 1.1.57 → 1.1.58

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bingocode",
3
- "version": "1.1.57",
3
+ "version": "1.1.58",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "claude": "bin/claude-win.cjs",
@@ -17,6 +17,8 @@ import { TopToolbar } from '../manager/TopToolbar.tsx';
17
17
 
18
18
  // 主题切换(Hook)
19
19
  import { useTheme } from '../components/design-system/ThemeProvider.js';
20
+ import { createRequire } from 'module';
21
+ const require = createRequire(import.meta.url);
20
22
  // Markdown 渲染(纯函数,不依赖 AppStateProvider context)
21
23
  import { applyMarkdown } from '../utils/markdown.js';
22
24
  import { Ansi } from '../ink/Ansi.js';
@@ -289,18 +291,15 @@ export const CliMenuManager: React.FC = () => {
289
291
  // 动态定位 server 入口,兼容开发环境 (.ts) 和打包环境 (.js)
290
292
  let entry = "";
291
293
  try {
292
- // 方案 1: 基于 import.meta.url 动态计算 (最通用)
293
- const __filename = fileURLToPath(import.meta.url);
294
- const __dirname = path.dirname(__filename);
294
+ // 利用 Node.js 的模块解析机制寻找 bingocode 包的根目录
295
+ // 这种方法在 npm install -g 这种复杂路径下最可靠
296
+ const bingoPkgPath = require.resolve('bingocode/package.json');
297
+ const root = path.dirname(bingoPkgPath);
295
298
 
296
- // 方案 2: 尝试包内的几种标准结构
297
- const pkgRoot = path.resolve(__dirname, '../../'); // 从 src/manager 向上两级到根目录
298
299
  const possiblePaths = [
299
- path.join(__dirname, '../server/index.ts'), // 结构 1: src/manager -> src/server
300
- path.join(__dirname, '../server/index.js'),
301
- path.join(pkgRoot, 'src/server/index.ts'), // 结构 2: root -> src/server
302
- path.join(pkgRoot, 'dist/server.js'),
303
- path.resolve(process.argv[1], '../../src/server/index.ts'), // 结构 3: 从 bin 文件位置反推
300
+ path.join(root, 'src/server/index.ts'),
301
+ path.join(root, 'src/server/index.js'),
302
+ path.join(root, 'dist/server.js')
304
303
  ];
305
304
 
306
305
  for (const p of possiblePaths) {
@@ -310,18 +309,22 @@ export const CliMenuManager: React.FC = () => {
310
309
  }
311
310
  }
312
311
  } catch (e) {
313
- // Fallback: 如果上面的动态探测挂了,尝试最后的大招:
314
- // 既然 package.json 里的 name 是 bingocode,我们可以尝试寻找它
315
- try {
316
- // 这里不做具体的 require.resolve 以免在非 node 环境报错,但可以手动拼
317
- entry = path.join(process.cwd(), 'node_modules/bingocode/src/server/index.ts');
318
- } catch {}
312
+ // Fallback: 如果 require.resolve 失败(比如还没发布为包),使用现有的路径逻辑
313
+ const __filename = fileURLToPath(import.meta.url);
314
+ const __dirname = path.dirname(__filename);
315
+ const pkgRoot = path.resolve(__dirname, '../../');
316
+
317
+ const fbPaths = [
318
+ path.join(__dirname, '../server/index.ts'),
319
+ path.join(pkgRoot, 'src/server/index.ts'),
320
+ ];
321
+ for (const p of fbPaths) {
322
+ if (fs.existsSync(p)) { entry = p; break; }
323
+ }
319
324
  }
320
325
 
321
326
  if (!entry || !fs.existsSync(entry)) {
322
- // 最后的诊断信息:显示一下我找过哪里,方便用户反馈
323
- const lastTry = path.resolve(import.meta.dir || "", '../server/index.ts');
324
- setBootErr(`无法定位服务器入口文件。请确保 src/server/index.ts 存在。\n尝试路径: ${entry || '未找到'}`);
327
+ setBootErr(`无法定位服务器入口文件。\n最后尝试路径: ${entry || '未探测到'}`);
325
328
  return;
326
329
  }
327
330