speccore 1.0.0

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.
Files changed (196) hide show
  1. package/README.en.md +401 -0
  2. package/README.md +401 -0
  3. package/bin/speccore +2 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +450 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/archive.d.ts +10 -0
  9. package/dist/commands/archive.d.ts.map +1 -0
  10. package/dist/commands/archive.js +138 -0
  11. package/dist/commands/archive.js.map +1 -0
  12. package/dist/commands/audit.d.ts +10 -0
  13. package/dist/commands/audit.d.ts.map +1 -0
  14. package/dist/commands/audit.js +278 -0
  15. package/dist/commands/audit.js.map +1 -0
  16. package/dist/commands/baseline.d.ts +13 -0
  17. package/dist/commands/baseline.d.ts.map +1 -0
  18. package/dist/commands/baseline.js +227 -0
  19. package/dist/commands/baseline.js.map +1 -0
  20. package/dist/commands/bugfix.d.ts +13 -0
  21. package/dist/commands/bugfix.d.ts.map +1 -0
  22. package/dist/commands/bugfix.js +181 -0
  23. package/dist/commands/bugfix.js.map +1 -0
  24. package/dist/commands/change.d.ts +14 -0
  25. package/dist/commands/change.d.ts.map +1 -0
  26. package/dist/commands/change.js +150 -0
  27. package/dist/commands/change.js.map +1 -0
  28. package/dist/commands/config.d.ts +7 -0
  29. package/dist/commands/config.d.ts.map +1 -0
  30. package/dist/commands/config.js +110 -0
  31. package/dist/commands/config.js.map +1 -0
  32. package/dist/commands/dashboard.d.ts +9 -0
  33. package/dist/commands/dashboard.d.ts.map +1 -0
  34. package/dist/commands/dashboard.js +209 -0
  35. package/dist/commands/dashboard.js.map +1 -0
  36. package/dist/commands/demo.d.ts +10 -0
  37. package/dist/commands/demo.d.ts.map +1 -0
  38. package/dist/commands/demo.js +151 -0
  39. package/dist/commands/demo.js.map +1 -0
  40. package/dist/commands/execute.d.ts +18 -0
  41. package/dist/commands/execute.d.ts.map +1 -0
  42. package/dist/commands/execute.js +127 -0
  43. package/dist/commands/execute.js.map +1 -0
  44. package/dist/commands/global-status.d.ts +9 -0
  45. package/dist/commands/global-status.d.ts.map +1 -0
  46. package/dist/commands/global-status.js +135 -0
  47. package/dist/commands/global-status.js.map +1 -0
  48. package/dist/commands/goal.d.ts +15 -0
  49. package/dist/commands/goal.d.ts.map +1 -0
  50. package/dist/commands/goal.js +282 -0
  51. package/dist/commands/goal.js.map +1 -0
  52. package/dist/commands/handover.d.ts +11 -0
  53. package/dist/commands/handover.d.ts.map +1 -0
  54. package/dist/commands/handover.js +169 -0
  55. package/dist/commands/handover.js.map +1 -0
  56. package/dist/commands/health.d.ts +7 -0
  57. package/dist/commands/health.d.ts.map +1 -0
  58. package/dist/commands/health.js +80 -0
  59. package/dist/commands/health.js.map +1 -0
  60. package/dist/commands/help.d.ts +10 -0
  61. package/dist/commands/help.d.ts.map +1 -0
  62. package/dist/commands/help.js +93 -0
  63. package/dist/commands/help.js.map +1 -0
  64. package/dist/commands/history.d.ts +9 -0
  65. package/dist/commands/history.d.ts.map +1 -0
  66. package/dist/commands/history.js +87 -0
  67. package/dist/commands/history.js.map +1 -0
  68. package/dist/commands/impact.d.ts +12 -0
  69. package/dist/commands/impact.d.ts.map +1 -0
  70. package/dist/commands/impact.js +238 -0
  71. package/dist/commands/impact.js.map +1 -0
  72. package/dist/commands/import.d.ts +15 -0
  73. package/dist/commands/import.d.ts.map +1 -0
  74. package/dist/commands/import.js +366 -0
  75. package/dist/commands/import.js.map +1 -0
  76. package/dist/commands/init.d.ts +6 -0
  77. package/dist/commands/init.d.ts.map +1 -0
  78. package/dist/commands/init.js +564 -0
  79. package/dist/commands/init.js.map +1 -0
  80. package/dist/commands/iteration/create.d.ts +7 -0
  81. package/dist/commands/iteration/create.d.ts.map +1 -0
  82. package/dist/commands/iteration/create.js +141 -0
  83. package/dist/commands/iteration/create.js.map +1 -0
  84. package/dist/commands/iteration/split.d.ts +9 -0
  85. package/dist/commands/iteration/split.d.ts.map +1 -0
  86. package/dist/commands/iteration/split.js +165 -0
  87. package/dist/commands/iteration/split.js.map +1 -0
  88. package/dist/commands/iteration-from-global.d.ts +11 -0
  89. package/dist/commands/iteration-from-global.d.ts.map +1 -0
  90. package/dist/commands/iteration-from-global.js +294 -0
  91. package/dist/commands/iteration-from-global.js.map +1 -0
  92. package/dist/commands/plan.d.ts +12 -0
  93. package/dist/commands/plan.d.ts.map +1 -0
  94. package/dist/commands/plan.js +126 -0
  95. package/dist/commands/plan.js.map +1 -0
  96. package/dist/commands/progress.d.ts +10 -0
  97. package/dist/commands/progress.d.ts.map +1 -0
  98. package/dist/commands/progress.js +89 -0
  99. package/dist/commands/progress.js.map +1 -0
  100. package/dist/commands/rename.d.ts +14 -0
  101. package/dist/commands/rename.d.ts.map +1 -0
  102. package/dist/commands/rename.js +298 -0
  103. package/dist/commands/rename.js.map +1 -0
  104. package/dist/commands/report.d.ts +10 -0
  105. package/dist/commands/report.d.ts.map +1 -0
  106. package/dist/commands/report.js +124 -0
  107. package/dist/commands/report.js.map +1 -0
  108. package/dist/commands/research.d.ts +14 -0
  109. package/dist/commands/research.d.ts.map +1 -0
  110. package/dist/commands/research.js +181 -0
  111. package/dist/commands/research.js.map +1 -0
  112. package/dist/commands/retro.d.ts +10 -0
  113. package/dist/commands/retro.d.ts.map +1 -0
  114. package/dist/commands/retro.js +130 -0
  115. package/dist/commands/retro.js.map +1 -0
  116. package/dist/commands/spec.d.ts +8 -0
  117. package/dist/commands/spec.d.ts.map +1 -0
  118. package/dist/commands/spec.js +155 -0
  119. package/dist/commands/spec.js.map +1 -0
  120. package/dist/commands/status.d.ts +7 -0
  121. package/dist/commands/status.d.ts.map +1 -0
  122. package/dist/commands/status.js +48 -0
  123. package/dist/commands/status.js.map +1 -0
  124. package/dist/commands/sync-global.d.ts +13 -0
  125. package/dist/commands/sync-global.d.ts.map +1 -0
  126. package/dist/commands/sync-global.js +218 -0
  127. package/dist/commands/sync-global.js.map +1 -0
  128. package/dist/commands/sync.d.ts +13 -0
  129. package/dist/commands/sync.d.ts.map +1 -0
  130. package/dist/commands/sync.js +170 -0
  131. package/dist/commands/sync.js.map +1 -0
  132. package/dist/commands/task/new.d.ts +13 -0
  133. package/dist/commands/task/new.d.ts.map +1 -0
  134. package/dist/commands/task/new.js +195 -0
  135. package/dist/commands/task/new.js.map +1 -0
  136. package/dist/commands/template-add.d.ts +12 -0
  137. package/dist/commands/template-add.d.ts.map +1 -0
  138. package/dist/commands/template-add.js +65 -0
  139. package/dist/commands/template-add.js.map +1 -0
  140. package/dist/commands/validate.d.ts +10 -0
  141. package/dist/commands/validate.d.ts.map +1 -0
  142. package/dist/commands/validate.js +37 -0
  143. package/dist/commands/validate.js.map +1 -0
  144. package/dist/commands/welcome.d.ts +9 -0
  145. package/dist/commands/welcome.d.ts.map +1 -0
  146. package/dist/commands/welcome.js +166 -0
  147. package/dist/commands/welcome.js.map +1 -0
  148. package/dist/core/context.d.ts +31 -0
  149. package/dist/core/context.d.ts.map +1 -0
  150. package/dist/core/context.js +145 -0
  151. package/dist/core/context.js.map +1 -0
  152. package/dist/core/global-layer.d.ts +124 -0
  153. package/dist/core/global-layer.d.ts.map +1 -0
  154. package/dist/core/global-layer.js +456 -0
  155. package/dist/core/global-layer.js.map +1 -0
  156. package/dist/core/index.d.ts +8 -0
  157. package/dist/core/index.d.ts.map +1 -0
  158. package/dist/core/index.js +24 -0
  159. package/dist/core/index.js.map +1 -0
  160. package/dist/core/intent-recognition.d.ts +48 -0
  161. package/dist/core/intent-recognition.d.ts.map +1 -0
  162. package/dist/core/intent-recognition.js +485 -0
  163. package/dist/core/intent-recognition.js.map +1 -0
  164. package/dist/core/state.d.ts +26 -0
  165. package/dist/core/state.d.ts.map +1 -0
  166. package/dist/core/state.js +187 -0
  167. package/dist/core/state.js.map +1 -0
  168. package/dist/core/template-engine.d.ts +28 -0
  169. package/dist/core/template-engine.d.ts.map +1 -0
  170. package/dist/core/template-engine.js +57 -0
  171. package/dist/core/template-engine.js.map +1 -0
  172. package/dist/core/validator.d.ts +26 -0
  173. package/dist/core/validator.d.ts.map +1 -0
  174. package/dist/core/validator.js +246 -0
  175. package/dist/core/validator.js.map +1 -0
  176. package/dist/core/yaml-parser.d.ts +25 -0
  177. package/dist/core/yaml-parser.d.ts.map +1 -0
  178. package/dist/core/yaml-parser.js +113 -0
  179. package/dist/core/yaml-parser.js.map +1 -0
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.d.ts.map +1 -0
  182. package/dist/index.js +18 -0
  183. package/dist/index.js.map +1 -0
  184. package/dist/utils/file.d.ts +29 -0
  185. package/dist/utils/file.d.ts.map +1 -0
  186. package/dist/utils/file.js +126 -0
  187. package/dist/utils/file.js.map +1 -0
  188. package/dist/utils/git.d.ts +25 -0
  189. package/dist/utils/git.d.ts.map +1 -0
  190. package/dist/utils/git.js +77 -0
  191. package/dist/utils/git.js.map +1 -0
  192. package/dist/utils/logger.d.ts +41 -0
  193. package/dist/utils/logger.d.ts.map +1 -0
  194. package/dist/utils/logger.js +184 -0
  195. package/dist/utils/logger.js.map +1 -0
  196. package/package.json +49 -0
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ /**
3
+ * import - 多项目导入命令
4
+ * 将存量项目导入到全量层(GLOBAL/PROJECTS/),填充全量需求和索引
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.importCommand = importCommand;
8
+ const fs_extra_1 = require("fs-extra");
9
+ const path_1 = require("path");
10
+ const logger_1 = require("../utils/logger");
11
+ const global_layer_1 = require("../core/global-layer");
12
+ async function importCommand(options) {
13
+ const spinner = new logger_1.Spinner('Importing project to global layer');
14
+ spinner.start();
15
+ try {
16
+ // 新逻辑:多项目导入到全量层
17
+ if (options.project) {
18
+ const projectName = options.project;
19
+ const projectPath = options.path || `./${projectName}`;
20
+ const projectType = (options.type || 'backend');
21
+ await importToGlobalLayer(projectName, projectPath, projectType);
22
+ spinner.stop('Project imported to global layer');
23
+ return;
24
+ }
25
+ // 兼容旧逻辑
26
+ const sources = (options.source || 'all').split(',');
27
+ const results = [];
28
+ for (const source of sources) {
29
+ switch (source.trim()) {
30
+ case 'code':
31
+ results.push(await importCode(options.path || './'));
32
+ break;
33
+ case 'prd':
34
+ results.push(await importPRD(options.path || './PRD.md'));
35
+ break;
36
+ case 'prototype':
37
+ results.push(await importPrototype(options.url || ''));
38
+ break;
39
+ case 'all':
40
+ results.push(await autoDetectImport(options.path || './'));
41
+ break;
42
+ default:
43
+ logger_1.logger.warn(`Unknown source type: ${source}`);
44
+ }
45
+ }
46
+ spinner.stop('Import completed');
47
+ for (const result of results) {
48
+ logger_1.logger.info(result);
49
+ }
50
+ }
51
+ catch (error) {
52
+ spinner.fail(`Import failed: ${error}`);
53
+ throw error;
54
+ }
55
+ }
56
+ /**
57
+ * 多项目导入到全量层
58
+ */
59
+ async function importToGlobalLayer(projectName, projectPath, projectType) {
60
+ // 1. 检查路径
61
+ if (!(await (0, fs_extra_1.pathExists)(projectPath))) {
62
+ throw new Error(`Project path not found: ${projectPath}`);
63
+ }
64
+ // 2. 检查全局层是否已初始化
65
+ const globalDir = (0, path_1.join)(process.cwd(), '.speccore', 'GLOBAL');
66
+ if (!(await (0, fs_extra_1.pathExists)(globalDir))) {
67
+ throw new Error('Global layer not initialized. Run: speccore init');
68
+ }
69
+ // 3. 读取当前全量索引
70
+ const index = await (0, global_layer_1.readGlobalIndex)();
71
+ // 4. 扫描项目代码
72
+ logger_1.logger.info(`🔍 Scanning project: ${projectName} (${projectType})`);
73
+ const scanResult = await scanProject(projectPath, projectType);
74
+ logger_1.logger.info(` Found ${scanResult.apis.length} API endpoints, ${scanResult.models.length} data models`);
75
+ // 5. 生成需求条目
76
+ const requirements = [];
77
+ let nextId = parseInt((0, global_layer_1.getNextReqId)(index).replace('REQ-', ''), 10);
78
+ for (const api of scanResult.apis) {
79
+ const reqId = `REQ-${String(nextId++).padStart(3, '0')}`;
80
+ requirements.push({
81
+ id: reqId,
82
+ name: api.name,
83
+ description: `API: ${api.method} ${api.path}\n${api.description || '从代码分析提取的功能描述'}`,
84
+ });
85
+ }
86
+ // 如果没有扫描到 API,生成一个占位需求
87
+ if (requirements.length === 0) {
88
+ const reqId = `REQ-${String(nextId++).padStart(3, '0')}`;
89
+ requirements.push({
90
+ id: reqId,
91
+ name: `${projectName} 项目导入`,
92
+ description: `从 ${projectPath} 导入的项目,类型: ${projectType}`,
93
+ });
94
+ }
95
+ // 6. 创建项目目录和文件
96
+ await (0, global_layer_1.ensureProjectDir)(projectName);
97
+ const entries = await (0, global_layer_1.writeProjectRequirements)(projectName, projectType, requirements, scanResult.techStack);
98
+ await (0, global_layer_1.writeProjectMetadata)(projectName, projectType, scanResult.techStack, scanResult.repoUrl);
99
+ // 7. 更新全量索引
100
+ for (const entry of entries) {
101
+ await (0, global_layer_1.appendReqToIndex)(entry);
102
+ }
103
+ await (0, global_layer_1.upsertProjectInIndex)({
104
+ name: projectName,
105
+ type: projectType,
106
+ reqCount: entries.length,
107
+ implemented: entries.filter((e) => e.status === '📦 已有实现').length,
108
+ inProgress: 0,
109
+ pending: 0,
110
+ lastImport: new Date().toISOString().split('T')[0],
111
+ });
112
+ // 8. 更新版本
113
+ const newVersion = (0, global_layer_1.bumpGlobalVersion)(index.version);
114
+ await (0, global_layer_1.updateIndexVersion)(newVersion);
115
+ // 9. 更新 OVERVIEW.md 和 CHANGELOG.md
116
+ await updateGlobalOverview(projectName, projectType);
117
+ await updateGlobalChangelog(`导入项目 ${projectName}`, newVersion);
118
+ // 10. 输出报告
119
+ logger_1.logger.info('');
120
+ logger_1.logger.info('✅ 项目导入完成!');
121
+ logger_1.logger.info('');
122
+ logger_1.logger.info('📊 导入摘要:');
123
+ logger_1.logger.info(` 项目名称: ${projectName}`);
124
+ logger_1.logger.info(` 项目类型: ${projectType}`);
125
+ logger_1.logger.info(` 识别接口: ${scanResult.apis.length} 个`);
126
+ logger_1.logger.info(` 数据模型: ${scanResult.models.length} 个`);
127
+ logger_1.logger.info(` 生成需求: ${entries.map((e) => e.id).join(', ')}`);
128
+ logger_1.logger.info('');
129
+ logger_1.logger.info('📁 已创建:');
130
+ logger_1.logger.info(` GLOBAL/PROJECTS/${projectName}/REQUIREMENT.md`);
131
+ logger_1.logger.info(` GLOBAL/PROJECTS/${projectName}/METADATA.md`);
132
+ logger_1.logger.info('');
133
+ logger_1.logger.info('📋 已更新:');
134
+ logger_1.logger.info(' GLOBAL/INDEX.md(需求映射 + 项目列表)');
135
+ logger_1.logger.info(' GLOBAL/OVERVIEW.md');
136
+ logger_1.logger.info('');
137
+ logger_1.logger.info('📋 下一步:');
138
+ logger_1.logger.info(' speccore global-status 查看全量层状态');
139
+ logger_1.logger.info(' speccore iteration-from-global 从全量层生成期次');
140
+ }
141
+ async function scanProject(projectPath, projectType) {
142
+ const result = {
143
+ apis: [],
144
+ models: [],
145
+ techStack: '',
146
+ repoUrl: '',
147
+ };
148
+ const absPath = (0, path_1.join)(process.cwd(), projectPath);
149
+ if (projectType === 'backend') {
150
+ // 扫描后端项目
151
+ // 尝试读取 pom.xml (Java/Maven)
152
+ const pomPath = (0, path_1.join)(absPath, 'pom.xml');
153
+ if (await (0, fs_extra_1.pathExists)(pomPath)) {
154
+ const pom = await (0, fs_extra_1.readFile)(pomPath, 'utf-8');
155
+ const groupMatch = pom.match(/<groupId>([^<]+)<\/groupId>/);
156
+ const artifactMatch = pom.match(/<artifactId>([^<]+)<\/artifactId>/);
157
+ if (groupMatch && artifactMatch) {
158
+ result.techStack = `Java Maven: ${groupMatch[1]}:${artifactMatch[1]}`;
159
+ }
160
+ }
161
+ // 扫描 package.json (Node.js)
162
+ const pkgPath = (0, path_1.join)(absPath, 'package.json');
163
+ if (await (0, fs_extra_1.pathExists)(pkgPath)) {
164
+ const pkg = JSON.parse(await (0, fs_extra_1.readFile)(pkgPath, 'utf-8'));
165
+ result.techStack = `Node.js: ${pkg.name || 'unnamed'}`;
166
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
167
+ if (deps['@nestjs/core'])
168
+ result.techStack += ' (NestJS)';
169
+ else if (deps['express'])
170
+ result.techStack += ' (Express)';
171
+ }
172
+ // 扫描 src/ 目录寻找 Controller/路由
173
+ const srcDir = (0, path_1.join)(absPath, 'src');
174
+ if (await (0, fs_extra_1.pathExists)(srcDir)) {
175
+ result.apis = await scanApiEndpoints(srcDir);
176
+ }
177
+ }
178
+ else if (['web', 'h5', 'miniapp'].includes(projectType)) {
179
+ // 扫描前端项目
180
+ const pkgPath = (0, path_1.join)(absPath, 'package.json');
181
+ if (await (0, fs_extra_1.pathExists)(pkgPath)) {
182
+ const pkg = JSON.parse(await (0, fs_extra_1.readFile)(pkgPath, 'utf-8'));
183
+ result.techStack = `${projectType}: ${pkg.name || 'unnamed'}`;
184
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
185
+ if (deps['vue'])
186
+ result.techStack += ' (Vue)';
187
+ else if (deps['react'])
188
+ result.techStack += ' (React)';
189
+ else if (deps['@angular/core'])
190
+ result.techStack += ' (Angular)';
191
+ // 扫描 pages/ 目录
192
+ const pagesDir = (0, path_1.join)(absPath, 'src', 'pages');
193
+ if (await (0, fs_extra_1.pathExists)(pagesDir)) {
194
+ const pages = await (0, fs_extra_1.readdir)(pagesDir, { withFileTypes: true });
195
+ for (const page of pages.filter((p) => p.isDirectory())) {
196
+ result.apis.push({
197
+ method: 'PAGE',
198
+ path: `/${page.name}`,
199
+ name: `${page.name} 页面`,
200
+ description: `${projectType} 页面`,
201
+ });
202
+ }
203
+ }
204
+ }
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * 递归扫描 API 端点
210
+ */
211
+ async function scanApiEndpoints(srcDir) {
212
+ const apis = [];
213
+ async function scan(dir) {
214
+ if (!(await (0, fs_extra_1.pathExists)(dir)))
215
+ return;
216
+ const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
217
+ for (const entry of entries) {
218
+ const fullPath = (0, path_1.join)(dir, entry.name);
219
+ if (entry.isDirectory()) {
220
+ await scan(fullPath);
221
+ }
222
+ else if ([
223
+ '.java', '.ts', '.js', '.go', '.py',
224
+ ].includes((0, path_1.extname)(entry.name))) {
225
+ const content = await (0, fs_extra_1.readFile)(fullPath, 'utf-8');
226
+ // Java Spring
227
+ const javaMatches = content.matchAll(/@(GetMapping|PostMapping|PutMapping|DeleteMapping|PatchMapping|RequestMapping)\s*(?:\([^)]*\))?\s*(?:@[^(\n]*\s*)*(?:public\s+\S+\s+)?(\w+)\s*\(/g);
228
+ for (const match of javaMatches) {
229
+ const annMethod = match[1];
230
+ const funcName = match[2];
231
+ // Try to extract path
232
+ const pathMatch = content.substring(match.index || 0, (match.index || 0) + 200).match(/@\w+Mapping\s*\(\s*(?:value\s*=\s*)?["']([^"']+)["']/);
233
+ const apiPath = pathMatch ? pathMatch[1] : '/';
234
+ apis.push({
235
+ method: annMethod.replace('Mapping', '').toUpperCase(),
236
+ path: apiPath,
237
+ name: funcName ? funcName.replace(/([A-Z])/g, ' $1').trim() : apiPath,
238
+ description: `从 ${entry.name} 扫描到的 API 端点`,
239
+ });
240
+ }
241
+ // TypeScript NestJS
242
+ const tsMatches = content.matchAll(/@(Get|Post|Put|Delete|Patch)\s*\(\s*(?:['"]([^'"]*)['"]\s*)?\)/g);
243
+ for (const match of tsMatches) {
244
+ apis.push({
245
+ method: match[1],
246
+ path: match[2] || '/',
247
+ name: match[2] ? match[2].replace(/^\//, '').replace(/\//g, ' ') : 'API',
248
+ description: `从 ${entry.name} 扫描到的 NestJS 端点`,
249
+ });
250
+ }
251
+ // Express routes
252
+ const expressMatches = content.matchAll(/(?:app|router)\.(get|post|put|delete|patch)\s*\(\s*['"]([^'"]+)['"]/g);
253
+ for (const match of expressMatches) {
254
+ apis.push({
255
+ method: match[1].toUpperCase(),
256
+ path: match[2],
257
+ name: match[2].replace(/^\//, '').replace(/\//g, ' '),
258
+ description: `从 ${entry.name} 扫描到的 Express 路由`,
259
+ });
260
+ }
261
+ }
262
+ }
263
+ }
264
+ await scan(srcDir);
265
+ return apis;
266
+ }
267
+ // ============================================================
268
+ // 全局文件更新
269
+ // ============================================================
270
+ async function updateGlobalOverview(projectName, projectType) {
271
+ const overviewPath = (0, path_1.join)(process.cwd(), '.speccore', 'GLOBAL', 'OVERVIEW.md');
272
+ if (!(await (0, fs_extra_1.pathExists)(overviewPath)))
273
+ return;
274
+ let content = await (0, fs_extra_1.readFile)(overviewPath, 'utf-8');
275
+ const today = new Date().toISOString().split('T')[0];
276
+ const newEntry = `| ${projectName} | ${projectType} | 已导入 | - |`;
277
+ if (content.includes('_待导入_')) {
278
+ content = content.replace('| _待导入_ | - | - | - |', newEntry);
279
+ }
280
+ await (0, fs_extra_1.writeFile)(overviewPath, content);
281
+ }
282
+ async function updateGlobalChangelog(description, version) {
283
+ const changelogPath = (0, path_1.join)(process.cwd(), '.speccore', 'GLOBAL', 'CHANGELOG.md');
284
+ if (!(await (0, fs_extra_1.pathExists)(changelogPath)))
285
+ return;
286
+ let content = await (0, fs_extra_1.readFile)(changelogPath, 'utf-8');
287
+ const today = new Date().toISOString().split('T')[0];
288
+ const newEntry = `| ${today} | ${version} | 导入 | ${description} | SpecCore |`;
289
+ if (content.includes('_暂无记录_')) {
290
+ content = content.replace('| _暂无记录_ | v1.0 | 创建 | 全量层模板初始化 | - |', newEntry);
291
+ }
292
+ else {
293
+ // 在变更记录表后面追加
294
+ const firstEntry = content.indexOf('|', content.indexOf('## 变更记录'));
295
+ const endOfLine = content.indexOf('\n', firstEntry);
296
+ if (endOfLine > 0) {
297
+ content = content.slice(0, endOfLine + 1) + newEntry + '\n' + content.slice(endOfLine + 1);
298
+ }
299
+ }
300
+ await (0, fs_extra_1.writeFile)(changelogPath, content);
301
+ }
302
+ // ============================================================
303
+ // 旧版兼容函数
304
+ // ============================================================
305
+ async function importCode(sourcePath) {
306
+ if (!(await (0, fs_extra_1.pathExists)(sourcePath))) {
307
+ throw new Error(`Path not found: ${sourcePath}`);
308
+ }
309
+ const statsObj = await (0, fs_extra_1.stat)(sourcePath);
310
+ if (!statsObj.isDirectory()) {
311
+ throw new Error(`Path must be a directory: ${sourcePath}`);
312
+ }
313
+ const entries = await (0, fs_extra_1.readdir)(sourcePath, { withFileTypes: true });
314
+ const files = entries.filter((e) => e.isFile() && ['.java', '.ts', '.js', '.py', '.go'].includes((0, path_1.extname)(e.name)));
315
+ logger_1.logger.info(`Legacy mode: Found ${files.length} source files.`);
316
+ logger_1.logger.info('💡 Tip: Use speccore import --project=<name> --path=<path> --type=<type> for global layer import.');
317
+ return `Found ${files.length} source files in ${sourcePath}`;
318
+ }
319
+ async function importPRD(prdPath) {
320
+ if (!(await (0, fs_extra_1.pathExists)(prdPath))) {
321
+ throw new Error(`PRD file not found: ${prdPath}`);
322
+ }
323
+ const content = await (0, fs_extra_1.readFile)(prdPath, 'utf-8');
324
+ const requirements = extractRequirements(content);
325
+ logger_1.logger.info(`Extracted ${requirements.length} requirements (legacy mode)`);
326
+ return `Imported PRD from ${prdPath}: ${requirements.length} requirements`;
327
+ }
328
+ function extractRequirements(content) {
329
+ const requirements = [];
330
+ const patterns = [
331
+ /(?:需求|Requirement)\s*[::]\s*(.+)/g,
332
+ /(?:功能|Feature)\s*[::]\s*(.+)/g,
333
+ /\d+\.\s+(.+)/g,
334
+ ];
335
+ for (const pattern of patterns) {
336
+ const matches = content.matchAll(pattern);
337
+ for (const match of matches) {
338
+ requirements.push(match[1].trim());
339
+ }
340
+ }
341
+ return requirements;
342
+ }
343
+ async function importPrototype(url) {
344
+ if (!url) {
345
+ throw new Error('Prototype URL is required');
346
+ }
347
+ logger_1.logger.info(`Importing prototype from ${url}`);
348
+ return `Prototype imported from ${url}`;
349
+ }
350
+ async function autoDetectImport(sourcePath) {
351
+ logger_1.logger.info('💡 Tip: Use speccore import --project=<name> --path=<path> --type=<type> for global layer import.');
352
+ logger_1.logger.info('Auto-detecting project structure...');
353
+ const results = [];
354
+ if (await (0, fs_extra_1.pathExists)((0, path_1.join)(sourcePath, 'src'))) {
355
+ results.push(await importCode(sourcePath));
356
+ }
357
+ const prdFiles = ['PRD.md', 'README.md', 'docs/PRD.md'];
358
+ for (const prdFile of prdFiles) {
359
+ if (await (0, fs_extra_1.pathExists)((0, path_1.join)(sourcePath, prdFile))) {
360
+ results.push(await importPRD((0, path_1.join)(sourcePath, prdFile)));
361
+ break;
362
+ }
363
+ }
364
+ return results.join('\n');
365
+ }
366
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface InitOptions {
2
+ mode?: string;
3
+ force?: boolean;
4
+ }
5
+ export declare function initCommand(options: InitOptions): Promise<void>;
6
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ErE"}