@icyfenix-dmla/cli 2026.5.13-1007 → 2026.5.13-2349

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": "@icyfenix-dmla/cli",
3
- "version": "2026.5.13-1007",
3
+ "version": "2026.5.13-2349",
4
4
  "description": "DMLA 沙箱服务命令行工具",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,12 +1,19 @@
1
1
  # shared 模块包初始化
2
2
  # 包含统计学习系列文档中可复用的类定义
3
+ #
4
+ # 注意:不在此处自动导入子模块,避免加载不必要的依赖
5
+ # 使用时请直接导入需要的模块,例如:
6
+ # from shared.sequence_models.poetry_lstm import PoetryLSTM
7
+ # from shared.linear.logistic_regression import LogisticRegression
3
8
 
4
- from .bayesian import *
5
- from .cnn import *
6
- from .gan import *
7
- from .linear import *
8
- from .neural import *
9
- from .sequence_models import *
10
- from .svm import *
11
- from .tree import *
12
- from .unsupervised import *
9
+ __all__ = [
10
+ 'bayesian',
11
+ 'cnn',
12
+ 'gan',
13
+ 'linear',
14
+ 'neural',
15
+ 'sequence_models',
16
+ 'svm',
17
+ 'tree',
18
+ 'unsupervised',
19
+ ]
@@ -66,7 +66,7 @@ const DATASETS = [
66
66
  id: 'chinese-poetry',
67
67
  name: 'Chinese Poetry (古诗词)',
68
68
  url: 'https://www.modelscope.cn/datasets/icyfenix/Chinese-Poetry.git',
69
- size: '~50MB',
69
+ size: '~380MB',
70
70
  format: 'git',
71
71
  targetDir: 'datasets/chinese-poetry',
72
72
  source: 'ModelScope (icyfenix)'
@@ -851,7 +851,66 @@ async function downloadDataset(dataPath, dataset) {
851
851
  } catch (error) {
852
852
  console.log()
853
853
  console.log(chalk.red(`下载失败: ${error.message}`))
854
- console.log(chalk.yellow('您可以稍后重试'))
854
+
855
+ // 检查是否有不完整的数据残留
856
+ const hasIncompleteData = fs.existsSync(targetDir)
857
+
858
+ if (hasIncompleteData) {
859
+ console.log(chalk.yellow(`目录 ${targetDir} 存在不完整数据`))
860
+ }
861
+
862
+ // 提供重试或删除选项
863
+ while (true) {
864
+ try {
865
+ const choices = ['重试下载']
866
+ if (hasIncompleteData) {
867
+ choices.push('删除不完整数据并返回')
868
+ }
869
+ choices.push('保留现状并返回')
870
+
871
+ const { choice } = await prompt({
872
+ type: 'select',
873
+ name: 'choice',
874
+ message: '如何处理?',
875
+ choices,
876
+ styles: {
877
+ primary: chalk.cyan.bold
878
+ }
879
+ })
880
+
881
+ if (choice === '重试下载') {
882
+ // 删除不完整数据后重试
883
+ if (hasIncompleteData && fs.existsSync(targetDir)) {
884
+ console.log(chalk.gray('删除不完整数据...'))
885
+ fs.rmSync(targetDir, { recursive: true, force: true })
886
+ }
887
+ console.log(chalk.gray('重新下载...'))
888
+ console.log()
889
+ // 递归调用自身重试
890
+ await downloadDataset(dataPath, dataset)
891
+ return // 重试成功后退出
892
+ } else if (choice === '删除不完整数据并返回') {
893
+ fs.rmSync(targetDir, { recursive: true, force: true })
894
+ console.log(chalk.gray('不完整数据已删除'))
895
+ return
896
+ } else {
897
+ // 保留现状并返回
898
+ // 创建标记文件表明数据不完整
899
+ if (!fs.existsSync(targetDir)) {
900
+ fs.mkdirSync(targetDir, { recursive: true })
901
+ }
902
+ fs.writeFileSync(path.join(targetDir, '.lfs-incomplete'), `下载失败: ${error.message}`)
903
+ console.log(chalk.yellow('已保留不完整数据,可稍后重试'))
904
+ return
905
+ }
906
+ } catch (promptError) {
907
+ if (isUserCancel(promptError)) {
908
+ console.log(chalk.gray('返回上一级'))
909
+ return
910
+ }
911
+ throw promptError
912
+ }
913
+ }
855
914
  }
856
915
  }
857
916
 
@@ -548,13 +548,28 @@ export function clearCache() {
548
548
  }
549
549
 
550
550
  /**
551
- * 获取共享模块路径(CLI 包中的 shared 目录)
551
+ * 获取共享模块路径
552
552
  * @returns {string}
553
553
  */
554
554
  export function getSharedModulesPath() {
555
- // 返回 CLI 包根目录,包含 shared 目录
556
- // 路径: packages/cli/src/server/ -> ../.. -> packages/cli/
557
- return path.resolve(__dirname, '../..')
555
+ // 优先使用环境变量指定的路径
556
+ if (process.env.SHARED_MODULES_PATH) {
557
+ return process.env.SHARED_MODULES_PATH
558
+ }
559
+
560
+ // 检测运行模式
561
+ // 源码目录运行: local-server/src/ -> shared 在 local-server/shared/
562
+ // CLI 包运行: packages/cli/src/server/ -> shared 在 packages/cli/shared/
563
+ const currentDir = __dirname
564
+
565
+ // 检查是否为源码目录运行(local-server/src/)
566
+ if (currentDir.includes('local-server/src')) {
567
+ // 源码目录: local-server/src/ -> local-server/shared/
568
+ return path.resolve(currentDir, '../shared')
569
+ }
570
+
571
+ // CLI 包运行: packages/cli/src/server/ -> packages/cli/shared/
572
+ return path.resolve(currentDir, '../../shared')
558
573
  }
559
574
 
560
575
  /**
package/version.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "buildTime": "2026-05-13T02:08:13.257Z",
3
- "cliVersion": "2026.5.13-1007"
2
+ "buildTime": "2026-05-13T15:50:26.143Z",
3
+ "cliVersion": "2026.5.13-2349"
4
4
  }