@sciagent/cli 1.0.63 → 1.0.66

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/bin/sciagent.js CHANGED
@@ -10,6 +10,9 @@ const path = require('path');
10
10
  const fs = require('fs');
11
11
  const os = require('os');
12
12
 
13
+ // 当前版本号 - 与 postinstall.js 和 package.json 保持同步
14
+ const CURRENT_VERSION = '1.0.66';
15
+
13
16
  // 平台和架构映射
14
17
  const PLATFORM_MAP = {
15
18
  linux: 'linux',
@@ -54,7 +57,19 @@ function getBinaryPath() {
54
57
  : path.join(os.homedir(), '.sciagent', 'bin');
55
58
  const homeBinPath = path.join(homeBinDir, binName);
56
59
  if (fs.existsSync(homeBinPath)) {
57
- return homeBinPath;
60
+ const stats = fs.statSync(homeBinPath);
61
+ if (stats.size > 10 * 1024 * 1024) {
62
+ // 检查版本是否匹配
63
+ const versionFile = path.join(homeBinDir, '.version');
64
+ if (fs.existsSync(versionFile)) {
65
+ const installedVersion = fs.readFileSync(versionFile, 'utf8').trim();
66
+ if (installedVersion !== CURRENT_VERSION) {
67
+ console.warn(`⚠️ Binary version mismatch: installed=${installedVersion}, expected=${CURRENT_VERSION}`);
68
+ console.warn(` Run 'npm install -g @sciagent/cli' to update`);
69
+ }
70
+ }
71
+ return homeBinPath;
72
+ }
58
73
  }
59
74
 
60
75
  // 方法1: 从optionalDependencies安装的包中查找
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sciagent/cli",
3
- "version": "1.0.63",
3
+ "version": "1.0.66",
4
4
  "description": "SciAgent CLI - AI Research Assistant",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -15,11 +15,11 @@
15
15
  "postinstall": "node scripts/postinstall.js"
16
16
  },
17
17
  "optionalDependencies": {
18
- "@sciagent/cli-linux-x64": "1.0.63",
18
+ "@sciagent/cli-linux-x64": "1.0.66",
19
19
  "@sciagent/cli-linux-arm64": "1.0.39",
20
20
  "@sciagent/cli-darwin-x64": "1.0.39",
21
21
  "@sciagent/cli-darwin-arm64": "1.0.39",
22
- "@sciagent/cli-win32-x64": "1.0.63",
22
+ "@sciagent/cli-win32-x64": "1.0.66",
23
23
  "@sciagent/cli-win32-arm64": "1.0.39"
24
24
  },
25
25
  "keywords": [
@@ -27,7 +27,7 @@ const ARCH_MAP = {
27
27
  };
28
28
 
29
29
  // 当前版本号 - 每次发布时同步更新
30
- const CURRENT_VERSION = '1.0.63';
30
+ const CURRENT_VERSION = '1.0.66';
31
31
 
32
32
  // GitHub Releases 回退版本列表(当当前版本的 release 不存在时尝试)
33
33
  const GITHUB_FALLBACK_VERSIONS = ['1.0.50', '1.0.48', '1.0.46', '1.0.40', '1.0.38', '1.0.36'];
@@ -103,20 +103,46 @@ function checkBinaryInstalled(platform, arch) {
103
103
  return { installed: true, path: homeBinPath };
104
104
  } else {
105
105
  console.log(` ℹ️ 已安装版本 ${installedVersion} != 目标版本 ${CURRENT_VERSION},需要更新`);
106
+ // 版本不匹配,删除旧文件强制重新下载
107
+ try {
108
+ fs.unlinkSync(homeBinPath);
109
+ console.log(` ℹ️ 已删除旧版二进制文件: ${homeBinPath}`);
110
+ } catch (e) {
111
+ console.log(` ⚠️ 无法删除旧版文件: ${e.message}`);
112
+ }
113
+ return { installed: false };
106
114
  }
107
115
  } else {
108
116
  console.log(` ℹ️ 二进制版本未知,需要重新下载`);
117
+ // 版本未知,删除文件强制重新下载
118
+ try {
119
+ fs.unlinkSync(homeBinPath);
120
+ console.log(` ℹ️ 已删除无版本标记的二进制文件: ${homeBinPath}`);
121
+ } catch (e) {
122
+ console.log(` ⚠️ 无法删除文件: ${e.message}`);
123
+ }
124
+ return { installed: false };
109
125
  }
110
126
  }
111
127
  }
112
128
 
113
- // 检查 npm 包路径
129
+ // 检查 npm 包路径(仅当 homeBinPath 不存在时)
130
+ // 注意:npm 包中的二进制可能是空壳(< 10MB),需要验证大小
114
131
  try {
115
132
  const packagePath = require.resolve(`${packageName}/bin/${binName}`);
116
- return { installed: true, path: packagePath };
133
+ if (fs.existsSync(packagePath)) {
134
+ const stats = fs.statSync(packagePath);
135
+ if (stats.size > 10 * 1024 * 1024) {
136
+ return { installed: true, path: packagePath };
137
+ } else {
138
+ console.log(` ℹ️ npm 包中的二进制文件太小 (${stats.size} bytes),是空壳包`);
139
+ }
140
+ }
117
141
  } catch (e) {
118
- return { installed: false };
142
+ // 包未安装
119
143
  }
144
+
145
+ return { installed: false };
120
146
  }
121
147
 
122
148
  function checkCodebuddyBinaryInstalled() {
@@ -623,7 +649,7 @@ function installBinaryPackage(platform, arch) {
623
649
  // 版本回退列表:优先使用已知包含实际二进制文件的版本
624
650
  // 1.0.44+ 的 npm 包因超过 250MB 限制只有空壳,需要从服务器下载
625
651
  // 1.0.40/1.0.38/1.0.36 包含完整的二进制文件
626
- const FALLBACK_VERSIONS = [CURRENT_VERSION, '1.0.62', '1.0.61', '1.0.48', '1.0.46', '1.0.40', '1.0.38', '1.0.36'];
652
+ const FALLBACK_VERSIONS = [CURRENT_VERSION, '1.0.63', '1.0.61', '1.0.48', '1.0.46', '1.0.40', '1.0.38', '1.0.36'];
627
653
 
628
654
  let npmCmd = 'npm';
629
655
  const isGlobal = process.env.npm_config_global === 'true' ||