speccore 8.3.333 → 8.3.341

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 (309) hide show
  1. package/.agents/skills/spec-ask/SKILL.md +4 -0
  2. package/.agents/skills/spec-unitize/SKILL.md +9 -1
  3. package/.agents/skills/speccore-router/SKILL.md +12 -11
  4. package/README.en.md +3 -11
  5. package/README.md +3 -13
  6. package/dist/cli.js +64 -206
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/analyze.d.ts.map +1 -1
  9. package/dist/commands/analyze.js +530 -481
  10. package/dist/commands/analyze.js.map +1 -1
  11. package/dist/commands/ask.d.ts.map +1 -1
  12. package/dist/commands/ask.js +6 -0
  13. package/dist/commands/ask.js.map +1 -1
  14. package/dist/commands/completion.d.ts.map +1 -1
  15. package/dist/commands/completion.js +9 -7
  16. package/dist/commands/completion.js.map +1 -1
  17. package/dist/commands/doc2spec.d.ts +44 -1
  18. package/dist/commands/doc2spec.d.ts.map +1 -1
  19. package/dist/commands/doc2spec.js +257 -5
  20. package/dist/commands/doc2spec.js.map +1 -1
  21. package/dist/commands/doctor.js +3 -3
  22. package/dist/commands/doctor.js.map +1 -1
  23. package/dist/commands/done.js +1 -5
  24. package/dist/commands/done.js.map +1 -1
  25. package/dist/commands/execute.js +118 -66
  26. package/dist/commands/execute.js.map +1 -1
  27. package/dist/commands/help.js +6 -54
  28. package/dist/commands/help.js.map +1 -1
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +71 -47
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/iteration/create.d.ts.map +1 -1
  33. package/dist/commands/iteration/create.js +72 -10
  34. package/dist/commands/iteration/create.js.map +1 -1
  35. package/dist/commands/iteration/taskify.d.ts.map +1 -1
  36. package/dist/commands/iteration/taskify.js +133 -35
  37. package/dist/commands/iteration/taskify.js.map +1 -1
  38. package/dist/commands/pr.d.ts.map +1 -1
  39. package/dist/commands/pr.js +24 -2
  40. package/dist/commands/pr.js.map +1 -1
  41. package/dist/commands/prompts.d.ts +6 -0
  42. package/dist/commands/prompts.d.ts.map +1 -1
  43. package/dist/commands/prompts.js +19 -10
  44. package/dist/commands/prompts.js.map +1 -1
  45. package/dist/commands/search.js +1 -1
  46. package/dist/commands/search.js.map +1 -1
  47. package/dist/commands/status-panel.d.ts.map +1 -1
  48. package/dist/commands/status-panel.js +23 -34
  49. package/dist/commands/status-panel.js.map +1 -1
  50. package/dist/commands/unitize.d.ts +3 -0
  51. package/dist/commands/unitize.d.ts.map +1 -1
  52. package/dist/commands/unitize.js +32 -9
  53. package/dist/commands/unitize.js.map +1 -1
  54. package/dist/commands/update-env-configs.d.ts.map +1 -1
  55. package/dist/commands/update-env-configs.js +2 -1
  56. package/dist/commands/update-env-configs.js.map +1 -1
  57. package/dist/commands/update.d.ts +4 -0
  58. package/dist/commands/update.d.ts.map +1 -1
  59. package/dist/commands/update.js +41 -1
  60. package/dist/commands/update.js.map +1 -1
  61. package/dist/commands/welcome.d.ts.map +1 -1
  62. package/dist/commands/welcome.js +41 -0
  63. package/dist/commands/welcome.js.map +1 -1
  64. package/dist/core/analyze-engine.js +3 -3
  65. package/dist/core/analyze-engine.js.map +1 -1
  66. package/dist/core/arbitration/l3-human-arbiter.js +1 -1
  67. package/dist/core/arbitration/l3-human-arbiter.js.map +1 -1
  68. package/dist/core/arbitration/verdict-generator.js +1 -1
  69. package/dist/core/arbitration/verdict-generator.js.map +1 -1
  70. package/dist/core/ask-context.d.ts.map +1 -1
  71. package/dist/core/ask-context.js +14 -3
  72. package/dist/core/ask-context.js.map +1 -1
  73. package/dist/core/ask-engine.d.ts.map +1 -1
  74. package/dist/core/ask-engine.js +55 -49
  75. package/dist/core/ask-engine.js.map +1 -1
  76. package/dist/core/code-graph/reporter.d.ts.map +1 -1
  77. package/dist/core/code-graph/reporter.js +3 -12
  78. package/dist/core/code-graph/reporter.js.map +1 -1
  79. package/dist/core/code-graph/requirement-linker.js +1 -1
  80. package/dist/core/code-graph/requirement-linker.js.map +1 -1
  81. package/dist/core/code-scanner.js +1 -1
  82. package/dist/core/code-scanner.js.map +1 -1
  83. package/dist/core/deploy/engine.d.ts.map +1 -1
  84. package/dist/core/deploy/engine.js +58 -44
  85. package/dist/core/deploy/engine.js.map +1 -1
  86. package/dist/core/environment-config.d.ts +13 -0
  87. package/dist/core/environment-config.d.ts.map +1 -1
  88. package/dist/core/environment-config.js +28 -1
  89. package/dist/core/environment-config.js.map +1 -1
  90. package/dist/core/error-diagnosis.js +2 -2
  91. package/dist/core/error-diagnosis.js.map +1 -1
  92. package/dist/core/git-integration.d.ts +5 -7
  93. package/dist/core/git-integration.d.ts.map +1 -1
  94. package/dist/core/git-integration.js +137 -12
  95. package/dist/core/git-integration.js.map +1 -1
  96. package/dist/core/global-knowledge.d.ts.map +1 -1
  97. package/dist/core/global-knowledge.js +25 -11
  98. package/dist/core/global-knowledge.js.map +1 -1
  99. package/dist/core/handoff-generator.d.ts.map +1 -1
  100. package/dist/core/handoff-generator.js +3 -1
  101. package/dist/core/handoff-generator.js.map +1 -1
  102. package/dist/core/index-guard.d.ts.map +1 -1
  103. package/dist/core/index-guard.js +4 -26
  104. package/dist/core/index-guard.js.map +1 -1
  105. package/dist/core/intent-recognition.d.ts +1 -1
  106. package/dist/core/intent-recognition.d.ts.map +1 -1
  107. package/dist/core/intent-recognition.js +68 -68
  108. package/dist/core/intent-recognition.js.map +1 -1
  109. package/dist/core/knowledge-graph.d.ts.map +1 -1
  110. package/dist/core/knowledge-graph.js +6 -4
  111. package/dist/core/knowledge-graph.js.map +1 -1
  112. package/dist/core/name-validator.d.ts.map +1 -1
  113. package/dist/core/name-validator.js +41 -20
  114. package/dist/core/name-validator.js.map +1 -1
  115. package/dist/core/pinyin-initials.d.ts +10 -0
  116. package/dist/core/pinyin-initials.d.ts.map +1 -0
  117. package/dist/core/pinyin-initials.js +44 -0
  118. package/dist/core/pinyin-initials.js.map +1 -0
  119. package/dist/core/prompt-builder.js +1 -1
  120. package/dist/core/prompt-builder.js.map +1 -1
  121. package/dist/core/prompt-plugins/analyze-graph-plugin.js +1 -1
  122. package/dist/core/prompt-plugins/analyze-graph-plugin.js.map +1 -1
  123. package/dist/core/reindex-engine.js +4 -4
  124. package/dist/core/reindex-engine.js.map +1 -1
  125. package/dist/core/skeleton-residue.d.ts +13 -0
  126. package/dist/core/skeleton-residue.d.ts.map +1 -1
  127. package/dist/core/skeleton-residue.js +83 -14
  128. package/dist/core/skeleton-residue.js.map +1 -1
  129. package/dist/core/spec-merger.d.ts.map +1 -1
  130. package/dist/core/spec-merger.js +3 -2
  131. package/dist/core/spec-merger.js.map +1 -1
  132. package/dist/core/state.d.ts +10 -0
  133. package/dist/core/state.d.ts.map +1 -1
  134. package/dist/core/state.js +20 -1
  135. package/dist/core/state.js.map +1 -1
  136. package/dist/core/structured-extractor.d.ts +6 -0
  137. package/dist/core/structured-extractor.d.ts.map +1 -1
  138. package/dist/core/structured-extractor.js +6 -0
  139. package/dist/core/structured-extractor.js.map +1 -1
  140. package/dist/core/task-paths.d.ts +12 -0
  141. package/dist/core/task-paths.d.ts.map +1 -1
  142. package/dist/core/task-paths.js +33 -1
  143. package/dist/core/task-paths.js.map +1 -1
  144. package/dist/core/unified-config.d.ts +7 -1
  145. package/dist/core/unified-config.d.ts.map +1 -1
  146. package/dist/core/unified-config.js +70 -21
  147. package/dist/core/unified-config.js.map +1 -1
  148. package/dist/core/unit-staffing.d.ts +21 -4
  149. package/dist/core/unit-staffing.d.ts.map +1 -1
  150. package/dist/core/unit-staffing.js +59 -12
  151. package/dist/core/unit-staffing.js.map +1 -1
  152. package/dist/core/usage-analytics.js +1 -1
  153. package/dist/core/usage-analytics.js.map +1 -1
  154. package/dist/core/validator.d.ts.map +1 -1
  155. package/dist/core/validator.js +45 -5
  156. package/dist/core/validator.js.map +1 -1
  157. package/dist/core/verify-report-aggregator.d.ts.map +1 -1
  158. package/dist/core/verify-report-aggregator.js +19 -2
  159. package/dist/core/verify-report-aggregator.js.map +1 -1
  160. package/dist/utils/task-utils.d.ts +4 -1
  161. package/dist/utils/task-utils.d.ts.map +1 -1
  162. package/dist/utils/task-utils.js +30 -4
  163. package/dist/utils/task-utils.js.map +1 -1
  164. package/package.json +4 -3
  165. package/templates/deploy-examples.yaml +33 -5
  166. package/templates/html/speccore-ask-explain.html +1 -1
  167. package/templates/html/speccore-ask-guide.html +1 -1
  168. package/templates/html/speccore-ask-match.html +1 -1
  169. package/templates/html/speccore-ask-pipeline.html +1 -1
  170. package/templates/html/speccore-ask-result.html +1 -1
  171. package/templates/html/speccore-help.html +2 -2
  172. package/templates/speccore-yml-example.yml +174 -54
  173. package/templates/verify-spec-example.yaml +66 -1
  174. package/dist/commands/audit.d.ts +0 -12
  175. package/dist/commands/audit.d.ts.map +0 -1
  176. package/dist/commands/audit.js +0 -540
  177. package/dist/commands/audit.js.map +0 -1
  178. package/dist/commands/backup.d.ts +0 -18
  179. package/dist/commands/backup.d.ts.map +0 -1
  180. package/dist/commands/backup.js +0 -102
  181. package/dist/commands/backup.js.map +0 -1
  182. package/dist/commands/baseline.d.ts +0 -13
  183. package/dist/commands/baseline.d.ts.map +0 -1
  184. package/dist/commands/baseline.js +0 -227
  185. package/dist/commands/baseline.js.map +0 -1
  186. package/dist/commands/chain.d.ts +0 -55
  187. package/dist/commands/chain.d.ts.map +0 -1
  188. package/dist/commands/chain.js +0 -501
  189. package/dist/commands/chain.js.map +0 -1
  190. package/dist/commands/clarify.d.ts +0 -17
  191. package/dist/commands/clarify.d.ts.map +0 -1
  192. package/dist/commands/clarify.js +0 -351
  193. package/dist/commands/clarify.js.map +0 -1
  194. package/dist/commands/code-index.d.ts +0 -21
  195. package/dist/commands/code-index.d.ts.map +0 -1
  196. package/dist/commands/code-index.js +0 -193
  197. package/dist/commands/code-index.js.map +0 -1
  198. package/dist/commands/context.d.ts +0 -10
  199. package/dist/commands/context.d.ts.map +0 -1
  200. package/dist/commands/context.js +0 -213
  201. package/dist/commands/context.js.map +0 -1
  202. package/dist/commands/current.d.ts +0 -10
  203. package/dist/commands/current.d.ts.map +0 -1
  204. package/dist/commands/current.js +0 -53
  205. package/dist/commands/current.js.map +0 -1
  206. package/dist/commands/dev.d.ts +0 -18
  207. package/dist/commands/dev.d.ts.map +0 -1
  208. package/dist/commands/dev.js +0 -854
  209. package/dist/commands/dev.js.map +0 -1
  210. package/dist/commands/diff.d.ts +0 -10
  211. package/dist/commands/diff.d.ts.map +0 -1
  212. package/dist/commands/diff.js +0 -160
  213. package/dist/commands/diff.js.map +0 -1
  214. package/dist/commands/global-status.d.ts +0 -9
  215. package/dist/commands/global-status.d.ts.map +0 -1
  216. package/dist/commands/global-status.js +0 -135
  217. package/dist/commands/global-status.js.map +0 -1
  218. package/dist/commands/graph.d.ts +0 -25
  219. package/dist/commands/graph.d.ts.map +0 -1
  220. package/dist/commands/graph.js +0 -523
  221. package/dist/commands/graph.js.map +0 -1
  222. package/dist/commands/handover.d.ts +0 -11
  223. package/dist/commands/handover.d.ts.map +0 -1
  224. package/dist/commands/handover.js +0 -170
  225. package/dist/commands/handover.js.map +0 -1
  226. package/dist/commands/health.d.ts +0 -7
  227. package/dist/commands/health.d.ts.map +0 -1
  228. package/dist/commands/health.js +0 -80
  229. package/dist/commands/health.js.map +0 -1
  230. package/dist/commands/history.d.ts +0 -9
  231. package/dist/commands/history.d.ts.map +0 -1
  232. package/dist/commands/history.js +0 -117
  233. package/dist/commands/history.js.map +0 -1
  234. package/dist/commands/impact.d.ts +0 -12
  235. package/dist/commands/impact.d.ts.map +0 -1
  236. package/dist/commands/impact.js +0 -238
  237. package/dist/commands/impact.js.map +0 -1
  238. package/dist/commands/import.d.ts +0 -19
  239. package/dist/commands/import.d.ts.map +0 -1
  240. package/dist/commands/import.js +0 -673
  241. package/dist/commands/import.js.map +0 -1
  242. package/dist/commands/knowledge.d.ts +0 -6
  243. package/dist/commands/knowledge.d.ts.map +0 -1
  244. package/dist/commands/knowledge.js +0 -94
  245. package/dist/commands/knowledge.js.map +0 -1
  246. package/dist/commands/lifecycle.d.ts +0 -9
  247. package/dist/commands/lifecycle.d.ts.map +0 -1
  248. package/dist/commands/lifecycle.js +0 -288
  249. package/dist/commands/lifecycle.js.map +0 -1
  250. package/dist/commands/merge-check.d.ts +0 -10
  251. package/dist/commands/merge-check.d.ts.map +0 -1
  252. package/dist/commands/merge-check.js +0 -183
  253. package/dist/commands/merge-check.js.map +0 -1
  254. package/dist/commands/notify.d.ts +0 -13
  255. package/dist/commands/notify.d.ts.map +0 -1
  256. package/dist/commands/notify.js +0 -63
  257. package/dist/commands/notify.js.map +0 -1
  258. package/dist/commands/rag-index.d.ts +0 -19
  259. package/dist/commands/rag-index.d.ts.map +0 -1
  260. package/dist/commands/rag-index.js +0 -286
  261. package/dist/commands/rag-index.js.map +0 -1
  262. package/dist/commands/recommend.d.ts +0 -13
  263. package/dist/commands/recommend.d.ts.map +0 -1
  264. package/dist/commands/recommend.js +0 -37
  265. package/dist/commands/recommend.js.map +0 -1
  266. package/dist/commands/refresh.d.ts +0 -21
  267. package/dist/commands/refresh.d.ts.map +0 -1
  268. package/dist/commands/refresh.js +0 -211
  269. package/dist/commands/refresh.js.map +0 -1
  270. package/dist/commands/rollback.d.ts +0 -8
  271. package/dist/commands/rollback.d.ts.map +0 -1
  272. package/dist/commands/rollback.js +0 -113
  273. package/dist/commands/rollback.js.map +0 -1
  274. package/dist/commands/status.d.ts +0 -7
  275. package/dist/commands/status.d.ts.map +0 -1
  276. package/dist/commands/status.js +0 -262
  277. package/dist/commands/status.js.map +0 -1
  278. package/dist/commands/trace.d.ts +0 -12
  279. package/dist/commands/trace.d.ts.map +0 -1
  280. package/dist/commands/trace.js +0 -163
  281. package/dist/commands/trace.js.map +0 -1
  282. package/dist/commands/tracker.d.ts +0 -2
  283. package/dist/commands/tracker.d.ts.map +0 -1
  284. package/dist/commands/tracker.js +0 -28
  285. package/dist/commands/tracker.js.map +0 -1
  286. package/dist/commands/verdict.d.ts +0 -16
  287. package/dist/commands/verdict.d.ts.map +0 -1
  288. package/dist/commands/verdict.js +0 -189
  289. package/dist/commands/verdict.js.map +0 -1
  290. package/dist/commands/workspace.d.ts +0 -20
  291. package/dist/commands/workspace.d.ts.map +0 -1
  292. package/dist/commands/workspace.js +0 -142
  293. package/dist/commands/workspace.js.map +0 -1
  294. package/dist/core/constraint-set.d.ts +0 -67
  295. package/dist/core/constraint-set.d.ts.map +0 -1
  296. package/dist/core/constraint-set.js +0 -151
  297. package/dist/core/constraint-set.js.map +0 -1
  298. package/dist/core/smart-recommend.d.ts +0 -16
  299. package/dist/core/smart-recommend.d.ts.map +0 -1
  300. package/dist/core/smart-recommend.js +0 -149
  301. package/dist/core/smart-recommend.js.map +0 -1
  302. package/dist/core/task-type-registry.d.ts +0 -110
  303. package/dist/core/task-type-registry.d.ts.map +0 -1
  304. package/dist/core/task-type-registry.js +0 -334
  305. package/dist/core/task-type-registry.js.map +0 -1
  306. package/dist/utils/mermaid-render.d.ts +0 -39
  307. package/dist/utils/mermaid-render.d.ts.map +0 -1
  308. package/dist/utils/mermaid-render.js +0 -284
  309. package/dist/utils/mermaid-render.js.map +0 -1
@@ -10,6 +10,39 @@ exports.checkTaskNameConflict = checkTaskNameConflict;
10
10
  */
11
11
  const fs_extra_1 = require("fs-extra");
12
12
  const path_1 = require("path");
13
+ const task_paths_1 = require("./task-paths");
14
+ /**
15
+ * 收集迭代下的任务模块目录(v8.3.337+:兼容 030-tasks 新旧布局)
16
+ * - 030-tasks/Task-*(旧布局直接层)
17
+ * - 030-tasks/{type}/{模块}(新布局:模块名=功能单元名)
18
+ * - Iteration-NNN/Task-* 直接层(历史布局兜底)
19
+ * depth ≤ 1 按功能单元名识别模块后停止深入,避免误收端目录/子任务目录。
20
+ */
21
+ async function collectTaskDirs(iterPath) {
22
+ const dirs = [];
23
+ const collect = async (dir, depth) => {
24
+ try {
25
+ const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
26
+ for (const entry of entries) {
27
+ if (!entry.isDirectory())
28
+ continue;
29
+ if (entry.name.startsWith('Task-') || (depth <= 1 && (0, task_paths_1.isTaskModuleDirName)(entry.name))) {
30
+ dirs.push((0, path_1.join)(dir, entry.name));
31
+ }
32
+ else if (!entry.name.startsWith('.')) {
33
+ await collect((0, path_1.join)(dir, entry.name), depth + 1);
34
+ }
35
+ }
36
+ }
37
+ catch { /* 跳过 */ }
38
+ };
39
+ const tasksDir = (0, path_1.join)(iterPath, '030-tasks');
40
+ if (await (0, fs_extra_1.pathExists)(tasksDir))
41
+ await collect(tasksDir, 0);
42
+ else
43
+ await collect(iterPath, 0);
44
+ return dirs;
45
+ }
13
46
  /**
14
47
  * 扫描所有迭代名称(去Iteration-NNN-前缀,返回原始 name 部分)
15
48
  */
@@ -37,17 +70,11 @@ async function getAllTaskNames() {
37
70
  if (!iter.isDirectory() || !iter.name.startsWith('Iteration-'))
38
71
  continue;
39
72
  const iterPath = (0, path_1.join)(cwd, iter.name);
40
- try {
41
- const entries = await (0, fs_extra_1.readdir)(iterPath, { withFileTypes: true });
42
- for (const entry of entries) {
43
- if (!entry.isDirectory() || !entry.name.startsWith('Task-'))
44
- continue;
45
- const name = await readTaskName((0, path_1.join)(iterPath, entry.name));
46
- if (name.length > 0)
47
- allTasks.push(name);
48
- }
73
+ for (const taskDir of await collectTaskDirs(iterPath)) {
74
+ const name = await readTaskName(taskDir);
75
+ if (name.length > 0)
76
+ allTasks.push(name);
49
77
  }
50
- catch { /* 跳过 */ }
51
78
  }
52
79
  return allTasks;
53
80
  }
@@ -92,18 +119,12 @@ async function checkTaskNameConflict(name, excludeName) {
92
119
  if (!iter.isDirectory() || !iter.name.startsWith('Iteration-'))
93
120
  continue;
94
121
  const iterPath = (0, path_1.join)(cwd, iter.name);
95
- try {
96
- const entries = await (0, fs_extra_1.readdir)(iterPath, { withFileTypes: true });
97
- for (const entry of entries) {
98
- if (!entry.isDirectory() || !entry.name.startsWith('Task-'))
99
- continue;
100
- const taskName = await readTaskName((0, path_1.join)(iterPath, entry.name));
101
- if (taskName === name && taskName !== excludeName) {
102
- conflicts.push({ name: taskName, iteration: iter.name });
103
- }
122
+ for (const taskDir of await collectTaskDirs(iterPath)) {
123
+ const taskName = await readTaskName(taskDir);
124
+ if (taskName === name && taskName !== excludeName) {
125
+ conflicts.push({ name: taskName, iteration: iter.name });
104
126
  }
105
127
  }
106
- catch { /* skip */ }
107
128
  }
108
129
  return conflicts;
109
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"name-validator.js","sourceRoot":"","sources":["../../src/core/name-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"name-validator.js","sourceRoot":"","sources":["../../src/core/name-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 姓名 → 拼音首字母串(小写)
3
+ * - 张三 → zs
4
+ * - 张三丰 → zsf
5
+ * - John → j
6
+ * - 张三 John → zsj
7
+ * 空串/纯符号 → ''
8
+ */
9
+ export declare function toPinyinInitials(name: string): string;
10
+ //# sourceMappingURL=pinyin-initials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinyin-initials.d.ts","sourceRoot":"","sources":["../../src/core/pinyin-initials.ts"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBrD"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPinyinInitials = toPinyinInitials;
4
+ /**
5
+ * pinyin-initials —— 姓名转拼音首字母(v8.3.337+)
6
+ *
7
+ * 用于 Git 分支后缀兜底:子任务 owner 未显式配置后缀时,
8
+ * 自动取姓名拼音首字母作为分支后缀(张三 → -zs,John → -j,张三丰 → -zsf)。
9
+ * 中文用 pinyin-pro 逐字转拼音取首字母;英文段取单词首字母;非字母字符跳过。
10
+ */
11
+ const pinyin_pro_1 = require("pinyin-pro");
12
+ /**
13
+ * 姓名 → 拼音首字母串(小写)
14
+ * - 张三 → zs
15
+ * - 张三丰 → zsf
16
+ * - John → j
17
+ * - 张三 John → zsj
18
+ * 空串/纯符号 → ''
19
+ */
20
+ function toPinyinInitials(name) {
21
+ const trimmed = name.trim();
22
+ if (!trimmed)
23
+ return '';
24
+ let out = '';
25
+ // 按「连续汉字 / 连续字母 / 其他」切分段落:
26
+ // 汉字段逐字转拼音取首字母(张三 → zs);字母段视为一个英文词取首字母(John → j);
27
+ // 空格/符号段跳过。注意 pinyin-pro 的 type:'array' 对非汉字按单字符切分,
28
+ // 直接遍历会把 John 拆成 j-o-h-n,故先自行分段。
29
+ const segments = trimmed.split(/([\u4e00-\u9fa5]+|[a-zA-Z]+)/).filter(Boolean);
30
+ for (const seg of segments) {
31
+ if (/^[\u4e00-\u9fa5]+$/.test(seg)) {
32
+ const arr = (0, pinyin_pro_1.pinyin)(seg, { toneType: 'none', type: 'array' });
33
+ for (const py of arr) {
34
+ if (py && /[a-z]/i.test(py[0]))
35
+ out += py[0].toLowerCase();
36
+ }
37
+ }
38
+ else if (/^[a-zA-Z]+$/.test(seg)) {
39
+ out += seg[0].toLowerCase();
40
+ }
41
+ }
42
+ return out;
43
+ }
44
+ //# sourceMappingURL=pinyin-initials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinyin-initials.js","sourceRoot":"","sources":["../../src/core/pinyin-initials.ts"],"names":[],"mappings":";;AAiBA,4CAoBC;AArCD;;;;;;GAMG;AACH,2CAAoC;AAEpC;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,2BAA2B;IAC3B,kDAAkD;IAClD,oDAAoD;IACpD,iCAAiC;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/E,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAa,CAAC;YACzE,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -2122,7 +2122,7 @@ async function buildPrompt(command, options) {
2122
2122
  listLines.push(`| ${priority} | \`${match.file}\` | ${reasons.join(' / ')} (score:${match.score}) | ${clues.join(';') || '—'} |`);
2123
2123
  }
2124
2124
  if (sortedMatches.length > 15) {
2125
- listLines.push(`| … | 其余 ${sortedMatches.length - 15} 个关联文件 | 运行 \`speccore code-index --show\` 查看全量索引 | — |`);
2125
+ listLines.push(`| … | 其余 ${sortedMatches.length - 15} 个关联文件 | 运行 \`speccore reindex\` 查看全量索引 | — |`);
2126
2126
  }
2127
2127
  listLines.push('');
2128
2128
  listLines.push('### 🔍 深读协议(宿主 AI 执行)');