speccore 8.3.340 → 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 (226) hide show
  1. package/.agents/skills/speccore-router/SKILL.md +0 -2
  2. package/README.en.md +3 -11
  3. package/README.md +3 -13
  4. package/dist/cli.js +1 -187
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/analyze.d.ts.map +1 -1
  7. package/dist/commands/analyze.js +530 -481
  8. package/dist/commands/analyze.js.map +1 -1
  9. package/dist/commands/completion.d.ts.map +1 -1
  10. package/dist/commands/completion.js +9 -7
  11. package/dist/commands/completion.js.map +1 -1
  12. package/dist/commands/doctor.js +3 -3
  13. package/dist/commands/doctor.js.map +1 -1
  14. package/dist/commands/done.js +1 -5
  15. package/dist/commands/done.js.map +1 -1
  16. package/dist/commands/execute.js +2 -2
  17. package/dist/commands/execute.js.map +1 -1
  18. package/dist/commands/help.js +5 -54
  19. package/dist/commands/help.js.map +1 -1
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +0 -7
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/pr.d.ts.map +1 -1
  24. package/dist/commands/pr.js +3 -5
  25. package/dist/commands/pr.js.map +1 -1
  26. package/dist/commands/search.js +1 -1
  27. package/dist/commands/search.js.map +1 -1
  28. package/dist/commands/update-env-configs.d.ts.map +1 -1
  29. package/dist/commands/update-env-configs.js +2 -1
  30. package/dist/commands/update-env-configs.js.map +1 -1
  31. package/dist/commands/update.d.ts +4 -0
  32. package/dist/commands/update.d.ts.map +1 -1
  33. package/dist/commands/update.js +41 -1
  34. package/dist/commands/update.js.map +1 -1
  35. package/dist/core/analyze-engine.js +3 -3
  36. package/dist/core/analyze-engine.js.map +1 -1
  37. package/dist/core/arbitration/l3-human-arbiter.js +1 -1
  38. package/dist/core/arbitration/l3-human-arbiter.js.map +1 -1
  39. package/dist/core/arbitration/verdict-generator.js +1 -1
  40. package/dist/core/arbitration/verdict-generator.js.map +1 -1
  41. package/dist/core/ask-engine.d.ts.map +1 -1
  42. package/dist/core/ask-engine.js +16 -42
  43. package/dist/core/ask-engine.js.map +1 -1
  44. package/dist/core/code-graph/reporter.d.ts.map +1 -1
  45. package/dist/core/code-graph/reporter.js +3 -12
  46. package/dist/core/code-graph/reporter.js.map +1 -1
  47. package/dist/core/code-graph/requirement-linker.js +1 -1
  48. package/dist/core/code-graph/requirement-linker.js.map +1 -1
  49. package/dist/core/code-scanner.js +1 -1
  50. package/dist/core/code-scanner.js.map +1 -1
  51. package/dist/core/deploy/engine.d.ts.map +1 -1
  52. package/dist/core/deploy/engine.js +58 -44
  53. package/dist/core/deploy/engine.js.map +1 -1
  54. package/dist/core/environment-config.d.ts +2 -0
  55. package/dist/core/environment-config.d.ts.map +1 -1
  56. package/dist/core/environment-config.js +6 -1
  57. package/dist/core/environment-config.js.map +1 -1
  58. package/dist/core/error-diagnosis.js +2 -2
  59. package/dist/core/error-diagnosis.js.map +1 -1
  60. package/dist/core/git-integration.d.ts +6 -0
  61. package/dist/core/git-integration.d.ts.map +1 -1
  62. package/dist/core/git-integration.js +11 -0
  63. package/dist/core/git-integration.js.map +1 -1
  64. package/dist/core/global-knowledge.js +1 -1
  65. package/dist/core/index-guard.d.ts.map +1 -1
  66. package/dist/core/index-guard.js +4 -26
  67. package/dist/core/index-guard.js.map +1 -1
  68. package/dist/core/intent-recognition.d.ts +1 -1
  69. package/dist/core/intent-recognition.d.ts.map +1 -1
  70. package/dist/core/intent-recognition.js +5 -63
  71. package/dist/core/intent-recognition.js.map +1 -1
  72. package/dist/core/prompt-builder.js +1 -1
  73. package/dist/core/prompt-builder.js.map +1 -1
  74. package/dist/core/prompt-plugins/analyze-graph-plugin.js +1 -1
  75. package/dist/core/prompt-plugins/analyze-graph-plugin.js.map +1 -1
  76. package/dist/core/structured-extractor.d.ts +6 -0
  77. package/dist/core/structured-extractor.d.ts.map +1 -1
  78. package/dist/core/structured-extractor.js +6 -0
  79. package/dist/core/structured-extractor.js.map +1 -1
  80. package/dist/core/unified-config.d.ts.map +1 -1
  81. package/dist/core/unified-config.js +29 -19
  82. package/dist/core/unified-config.js.map +1 -1
  83. package/dist/core/usage-analytics.js +1 -1
  84. package/dist/core/usage-analytics.js.map +1 -1
  85. package/package.json +1 -1
  86. package/templates/html/speccore-ask-guide.html +1 -1
  87. package/templates/html/speccore-ask-pipeline.html +1 -1
  88. package/templates/html/speccore-ask-result.html +1 -1
  89. package/templates/html/speccore-help.html +2 -2
  90. package/templates/speccore-yml-example.yml +24 -24
  91. package/dist/commands/audit.d.ts +0 -12
  92. package/dist/commands/audit.d.ts.map +0 -1
  93. package/dist/commands/audit.js +0 -540
  94. package/dist/commands/audit.js.map +0 -1
  95. package/dist/commands/backup.d.ts +0 -18
  96. package/dist/commands/backup.d.ts.map +0 -1
  97. package/dist/commands/backup.js +0 -102
  98. package/dist/commands/backup.js.map +0 -1
  99. package/dist/commands/baseline.d.ts +0 -13
  100. package/dist/commands/baseline.d.ts.map +0 -1
  101. package/dist/commands/baseline.js +0 -227
  102. package/dist/commands/baseline.js.map +0 -1
  103. package/dist/commands/chain.d.ts +0 -55
  104. package/dist/commands/chain.d.ts.map +0 -1
  105. package/dist/commands/chain.js +0 -501
  106. package/dist/commands/chain.js.map +0 -1
  107. package/dist/commands/clarify.d.ts +0 -17
  108. package/dist/commands/clarify.d.ts.map +0 -1
  109. package/dist/commands/clarify.js +0 -351
  110. package/dist/commands/clarify.js.map +0 -1
  111. package/dist/commands/code-index.d.ts +0 -21
  112. package/dist/commands/code-index.d.ts.map +0 -1
  113. package/dist/commands/code-index.js +0 -193
  114. package/dist/commands/code-index.js.map +0 -1
  115. package/dist/commands/context.d.ts +0 -10
  116. package/dist/commands/context.d.ts.map +0 -1
  117. package/dist/commands/context.js +0 -213
  118. package/dist/commands/context.js.map +0 -1
  119. package/dist/commands/current.d.ts +0 -10
  120. package/dist/commands/current.d.ts.map +0 -1
  121. package/dist/commands/current.js +0 -53
  122. package/dist/commands/current.js.map +0 -1
  123. package/dist/commands/dev.d.ts +0 -18
  124. package/dist/commands/dev.d.ts.map +0 -1
  125. package/dist/commands/dev.js +0 -854
  126. package/dist/commands/dev.js.map +0 -1
  127. package/dist/commands/diff.d.ts +0 -10
  128. package/dist/commands/diff.d.ts.map +0 -1
  129. package/dist/commands/diff.js +0 -160
  130. package/dist/commands/diff.js.map +0 -1
  131. package/dist/commands/global-status.d.ts +0 -9
  132. package/dist/commands/global-status.d.ts.map +0 -1
  133. package/dist/commands/global-status.js +0 -135
  134. package/dist/commands/global-status.js.map +0 -1
  135. package/dist/commands/graph.d.ts +0 -25
  136. package/dist/commands/graph.d.ts.map +0 -1
  137. package/dist/commands/graph.js +0 -523
  138. package/dist/commands/graph.js.map +0 -1
  139. package/dist/commands/handover.d.ts +0 -11
  140. package/dist/commands/handover.d.ts.map +0 -1
  141. package/dist/commands/handover.js +0 -170
  142. package/dist/commands/handover.js.map +0 -1
  143. package/dist/commands/health.d.ts +0 -7
  144. package/dist/commands/health.d.ts.map +0 -1
  145. package/dist/commands/health.js +0 -80
  146. package/dist/commands/health.js.map +0 -1
  147. package/dist/commands/history.d.ts +0 -9
  148. package/dist/commands/history.d.ts.map +0 -1
  149. package/dist/commands/history.js +0 -117
  150. package/dist/commands/history.js.map +0 -1
  151. package/dist/commands/impact.d.ts +0 -12
  152. package/dist/commands/impact.d.ts.map +0 -1
  153. package/dist/commands/impact.js +0 -238
  154. package/dist/commands/impact.js.map +0 -1
  155. package/dist/commands/import.d.ts +0 -19
  156. package/dist/commands/import.d.ts.map +0 -1
  157. package/dist/commands/import.js +0 -673
  158. package/dist/commands/import.js.map +0 -1
  159. package/dist/commands/knowledge.d.ts +0 -6
  160. package/dist/commands/knowledge.d.ts.map +0 -1
  161. package/dist/commands/knowledge.js +0 -94
  162. package/dist/commands/knowledge.js.map +0 -1
  163. package/dist/commands/lifecycle.d.ts +0 -9
  164. package/dist/commands/lifecycle.d.ts.map +0 -1
  165. package/dist/commands/lifecycle.js +0 -288
  166. package/dist/commands/lifecycle.js.map +0 -1
  167. package/dist/commands/merge-check.d.ts +0 -10
  168. package/dist/commands/merge-check.d.ts.map +0 -1
  169. package/dist/commands/merge-check.js +0 -183
  170. package/dist/commands/merge-check.js.map +0 -1
  171. package/dist/commands/notify.d.ts +0 -13
  172. package/dist/commands/notify.d.ts.map +0 -1
  173. package/dist/commands/notify.js +0 -63
  174. package/dist/commands/notify.js.map +0 -1
  175. package/dist/commands/rag-index.d.ts +0 -19
  176. package/dist/commands/rag-index.d.ts.map +0 -1
  177. package/dist/commands/rag-index.js +0 -286
  178. package/dist/commands/rag-index.js.map +0 -1
  179. package/dist/commands/recommend.d.ts +0 -13
  180. package/dist/commands/recommend.d.ts.map +0 -1
  181. package/dist/commands/recommend.js +0 -37
  182. package/dist/commands/recommend.js.map +0 -1
  183. package/dist/commands/refresh.d.ts +0 -21
  184. package/dist/commands/refresh.d.ts.map +0 -1
  185. package/dist/commands/refresh.js +0 -211
  186. package/dist/commands/refresh.js.map +0 -1
  187. package/dist/commands/rollback.d.ts +0 -8
  188. package/dist/commands/rollback.d.ts.map +0 -1
  189. package/dist/commands/rollback.js +0 -113
  190. package/dist/commands/rollback.js.map +0 -1
  191. package/dist/commands/status.d.ts +0 -7
  192. package/dist/commands/status.d.ts.map +0 -1
  193. package/dist/commands/status.js +0 -262
  194. package/dist/commands/status.js.map +0 -1
  195. package/dist/commands/trace.d.ts +0 -12
  196. package/dist/commands/trace.d.ts.map +0 -1
  197. package/dist/commands/trace.js +0 -163
  198. package/dist/commands/trace.js.map +0 -1
  199. package/dist/commands/tracker.d.ts +0 -2
  200. package/dist/commands/tracker.d.ts.map +0 -1
  201. package/dist/commands/tracker.js +0 -28
  202. package/dist/commands/tracker.js.map +0 -1
  203. package/dist/commands/verdict.d.ts +0 -16
  204. package/dist/commands/verdict.d.ts.map +0 -1
  205. package/dist/commands/verdict.js +0 -189
  206. package/dist/commands/verdict.js.map +0 -1
  207. package/dist/commands/workspace.d.ts +0 -20
  208. package/dist/commands/workspace.d.ts.map +0 -1
  209. package/dist/commands/workspace.js +0 -142
  210. package/dist/commands/workspace.js.map +0 -1
  211. package/dist/core/constraint-set.d.ts +0 -67
  212. package/dist/core/constraint-set.d.ts.map +0 -1
  213. package/dist/core/constraint-set.js +0 -151
  214. package/dist/core/constraint-set.js.map +0 -1
  215. package/dist/core/smart-recommend.d.ts +0 -16
  216. package/dist/core/smart-recommend.d.ts.map +0 -1
  217. package/dist/core/smart-recommend.js +0 -149
  218. package/dist/core/smart-recommend.js.map +0 -1
  219. package/dist/core/task-type-registry.d.ts +0 -110
  220. package/dist/core/task-type-registry.d.ts.map +0 -1
  221. package/dist/core/task-type-registry.js +0 -334
  222. package/dist/core/task-type-registry.js.map +0 -1
  223. package/dist/utils/mermaid-render.d.ts +0 -39
  224. package/dist/utils/mermaid-render.d.ts.map +0 -1
  225. package/dist/utils/mermaid-render.js +0 -284
  226. package/dist/utils/mermaid-render.js.map +0 -1
@@ -1,523 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.graphQueryCommand = graphQueryCommand;
4
- exports.graphRenderCommand = graphRenderCommand;
5
- exports.graphEntityCommand = graphEntityCommand;
6
- exports.graphRelatedCommand = graphRelatedCommand;
7
- exports.graphStatsCommand = graphStatsCommand;
8
- exports.graphPathCommand = graphPathCommand;
9
- /**
10
- * graph — 统一图谱查询命令
11
- * v7.0.0: 支持知识图谱(KnowledgeGraph) + 代码图谱(CodeGraph) 统一查询
12
- *
13
- * 用法:
14
- * speccore graph query <question> 自然语言查询两种图谱
15
- * speccore graph entity <id> 查询特定实体详情
16
- * speccore graph related <id> 查询关联实体(一阶邻居)
17
- * speccore graph stats 输出两种图谱统计
18
- * speccore graph path <from> <to> 查找两实体间最短路径
19
- */
20
- const logger_1 = require("../utils/logger");
21
- const fs_extra_1 = require("fs-extra");
22
- const path_1 = require("path");
23
- const knowledge_graph_1 = require("../core/knowledge-graph");
24
- const code_graph_1 = require("../core/code-graph");
25
- const graph_semantic_1 = require("../core/graph-semantic");
26
- const mermaid_render_1 = require("../utils/mermaid-render");
27
- // ═══════════════════════════════════════════════════════════
28
- // 知识图谱查询引擎
29
- // ═══════════════════════════════════════════════════════════
30
- /** 在知识图谱中搜索实体(关键词匹配 + 语义标签匹配) */
31
- function searchKnowledgeEntities(graph, keywords, limit = 10) {
32
- const results = [];
33
- for (const entity of Object.values(graph.entities)) {
34
- const text = `${entity.title} ${entity.type} ${entity.tags?.join(' ') || ''} ${entity.semanticTags?.join(' ') || ''} ${entity.description || ''} ${entity.businessRole || ''}`.toLowerCase();
35
- let score = 0;
36
- for (const kw of keywords) {
37
- const lowerKw = kw.toLowerCase();
38
- // 标题匹配权重最高
39
- if (entity.title.toLowerCase().includes(lowerKw))
40
- score += 5;
41
- // ID 精确匹配
42
- else if (entity.id.toLowerCase().includes(lowerKw))
43
- score += 4;
44
- // 语义标签匹配(v7.0.0+)
45
- else if (entity.semanticTags?.some(t => t.toLowerCase().includes(lowerKw)))
46
- score += 3;
47
- // 业务角色匹配(v7.0.0+)
48
- else if (entity.businessRole?.toLowerCase().includes(lowerKw))
49
- score += 3;
50
- // 类型匹配
51
- else if (entity.type.toLowerCase().includes(lowerKw))
52
- score += 2;
53
- // 通用文本匹配
54
- else if (text.includes(lowerKw))
55
- score += 1;
56
- }
57
- if (score > 0) {
58
- results.push({ entity, score });
59
- }
60
- }
61
- return results.sort((a, b) => b.score - a.score).slice(0, limit);
62
- }
63
- /** 获取实体的关联实体(一阶邻居) */
64
- function getRelatedEntities(graph, entityId) {
65
- const results = [];
66
- for (const rel of graph.relations) {
67
- if (rel.from === entityId) {
68
- const target = graph.entities[rel.to];
69
- if (target)
70
- results.push({ entity: target, relation: rel });
71
- }
72
- else if (rel.to === entityId) {
73
- const source = graph.entities[rel.from];
74
- if (source)
75
- results.push({ entity: source, relation: rel });
76
- }
77
- }
78
- return results;
79
- }
80
- /** 查找知识图谱中两实体间的路径(BFS) */
81
- function findKnowledgePath(graph, fromId, toId, maxDepth = 5) {
82
- const queue = [
83
- { id: fromId, path: [graph.entities[fromId]], rels: [] },
84
- ];
85
- const visited = new Set([fromId]);
86
- while (queue.length > 0) {
87
- const current = queue.shift();
88
- if (current.path.length > maxDepth)
89
- continue;
90
- if (current.id === toId && current.path.length > 1) {
91
- return { path: current.path, relations: current.rels };
92
- }
93
- for (const rel of graph.relations) {
94
- let nextId;
95
- if (rel.from === current.id)
96
- nextId = rel.to;
97
- else if (rel.to === current.id)
98
- nextId = rel.from;
99
- if (nextId && !visited.has(nextId)) {
100
- visited.add(nextId);
101
- const nextEntity = graph.entities[nextId];
102
- if (nextEntity) {
103
- queue.push({
104
- id: nextId,
105
- path: [...current.path, nextEntity],
106
- rels: [...current.rels, rel],
107
- });
108
- }
109
- }
110
- }
111
- }
112
- return null;
113
- }
114
- // ═══════════════════════════════════════════════════════════
115
- // 统一查询:融合知识图谱 + 代码图谱
116
- // ═══════════════════════════════════════════════════════════
117
- /** 统一查询两种图谱 */
118
- async function unifiedQuery(question, options) {
119
- const type = options.type || 'all';
120
- const limit = options.limit || 10;
121
- const smart = options.smart !== false; // 默认启用语义增强
122
- const cwd = process.cwd();
123
- logger_1.logger.info(`\n🔍 查询: "${question}"`);
124
- logger_1.logger.info(` 范围: ${type}${smart ? ' | 模式: 语义增强 (LLM)' : ' | 模式: 快速匹配'}`);
125
- // v7.0.0+: 语义扩展查询词
126
- let keywords = [];
127
- let semanticInfo = {};
128
- if (smart) {
129
- try {
130
- const expansion = await (0, graph_semantic_1.expandQuerySemantically)(question, { useLlm: true });
131
- keywords = expansion.keywords;
132
- semanticInfo = {
133
- intent: expansion.intent,
134
- domain: expansion.domain,
135
- queryType: expansion.queryType,
136
- };
137
- logger_1.logger.info(` 语义扩展: ${keywords.slice(0, 8).join(', ')}${keywords.length > 8 ? `... (${keywords.length} 个)` : ''}`);
138
- if (expansion.domain)
139
- logger_1.logger.info(` 业务域: ${expansion.domain}`);
140
- if (expansion.queryType)
141
- logger_1.logger.info(` 查询类型: ${expansion.queryType}`);
142
- }
143
- catch {
144
- // 降级到原始关键词
145
- keywords = extractRawKeywords(question);
146
- logger_1.logger.info(` 关键词: ${keywords.join(', ')} (本地提取)`);
147
- }
148
- }
149
- else {
150
- keywords = extractRawKeywords(question);
151
- logger_1.logger.info(` 关键词: ${keywords.join(', ')}`);
152
- }
153
- if (keywords.length === 0) {
154
- logger_1.logger.error('查询词太短,请提供更具体的关键词');
155
- return;
156
- }
157
- logger_1.logger.info('');
158
- let hasResults = false;
159
- // 1. 查询知识图谱(含语义排序)
160
- if (type === 'all' || type === 'knowledge') {
161
- const kg = await (0, knowledge_graph_1.loadKnowledgeGraph)(cwd);
162
- if (kg) {
163
- const kgLocalResults = searchKnowledgeEntities(kg, keywords, limit * 3); // 先取更多候选
164
- if (kgLocalResults.length > 0 && smart) {
165
- // LLM 语义排序
166
- const candidates = kgLocalResults.map(r => ({ entity: r.entity, localScore: r.score }));
167
- const ranked = await (0, graph_semantic_1.semanticRank)(question, candidates, { topK: limit * 2, useLlm: true });
168
- const finalResults = ranked.slice(0, limit);
169
- if (finalResults.length > 0) {
170
- hasResults = true;
171
- logger_1.logger.info(`📚 知识图谱匹配 (${finalResults.length} 个实体,语义排序):`);
172
- logger_1.logger.info('─'.repeat(60));
173
- for (const { entity, localScore, semanticScore, finalScore, reason } of finalResults) {
174
- const tags = entity.tags?.join(', ') || '';
175
- const semantic = entity.semanticTags?.join(', ') || '';
176
- const status = entity.status ? `[${entity.status}]` : '';
177
- logger_1.logger.info(` [综合:${finalScore.toFixed(1)} 本地:${localScore.toFixed(1)} 语义:${semanticScore.toFixed(1)}] ${entity.id}`);
178
- logger_1.logger.info(` 类型: ${entity.type} ${status}`);
179
- logger_1.logger.info(` 标题: ${entity.title}`);
180
- if (tags)
181
- logger_1.logger.info(` 标签: ${tags}`);
182
- if (semantic)
183
- logger_1.logger.info(` 语义: ${semantic}`);
184
- if (entity.businessRole)
185
- logger_1.logger.info(` 职责: ${entity.businessRole}`);
186
- if (reason)
187
- logger_1.logger.info(` 匹配理由: ${reason}`);
188
- if (entity.file)
189
- logger_1.logger.info(` 文件: ${entity.file}`);
190
- logger_1.logger.info('');
191
- }
192
- }
193
- }
194
- else if (kgLocalResults.length > 0) {
195
- hasResults = true;
196
- logger_1.logger.info(`📚 知识图谱匹配 (${kgLocalResults.length} 个实体):`);
197
- logger_1.logger.info('─'.repeat(60));
198
- for (const { entity, score } of kgLocalResults.slice(0, limit)) {
199
- const tags = entity.tags?.join(', ') || '';
200
- const semantic = entity.semanticTags?.join(', ') || '';
201
- const status = entity.status ? `[${entity.status}]` : '';
202
- logger_1.logger.info(` [${score.toFixed(1)}] ${entity.id}`);
203
- logger_1.logger.info(` 类型: ${entity.type} ${status}`);
204
- logger_1.logger.info(` 标题: ${entity.title}`);
205
- if (tags)
206
- logger_1.logger.info(` 标签: ${tags}`);
207
- if (semantic)
208
- logger_1.logger.info(` 语义: ${semantic}`);
209
- if (entity.businessRole)
210
- logger_1.logger.info(` 职责: ${entity.businessRole}`);
211
- if (entity.file)
212
- logger_1.logger.info(` 文件: ${entity.file}`);
213
- logger_1.logger.info('');
214
- }
215
- }
216
- }
217
- }
218
- // 2. 查询代码图谱
219
- if (type === 'all' || type === 'code') {
220
- const cg = await (0, code_graph_1.loadCodeGraph)(cwd);
221
- if (cg) {
222
- const cgResult = (0, code_graph_1.queryGraph)(cg, question);
223
- if (cgResult.nodes.length > 0) {
224
- hasResults = true;
225
- logger_1.logger.info(`💻 代码图谱匹配 (${cgResult.nodes.length} 个节点):`);
226
- logger_1.logger.info('─'.repeat(60));
227
- for (const node of cgResult.nodes.slice(0, limit)) {
228
- logger_1.logger.info(` • ${node.name} (${node.type})`);
229
- logger_1.logger.info(` 文件: ${node.filePath}:${node.line}`);
230
- if (node.snippet) {
231
- const snippet = node.snippet.length > 100
232
- ? node.snippet.slice(0, 100) + '...'
233
- : node.snippet;
234
- logger_1.logger.info(` 片段: ${snippet}`);
235
- }
236
- logger_1.logger.info('');
237
- }
238
- if (cgResult.nodes.length > limit) {
239
- logger_1.logger.info(` ... 及其他 ${cgResult.nodes.length - limit} 个节点`);
240
- }
241
- }
242
- }
243
- }
244
- if (!hasResults) {
245
- logger_1.logger.info('\n⚠️ 未在图谱中找到匹配结果,建议:');
246
- logger_1.logger.info(' 1. 先运行 speccore knowledge 构建知识图谱');
247
- logger_1.logger.info(' 2. 先运行 speccore code-index --graph 构建代码图谱');
248
- logger_1.logger.info(' 3. 使用更具体的关键词重试');
249
- if (!smart) {
250
- logger_1.logger.info(' 4. 尝试使用 --smart 模式启用语义增强查询');
251
- }
252
- }
253
- }
254
- /** 提取原始关键词 */
255
- function extractRawKeywords(question) {
256
- return question
257
- .toLowerCase()
258
- .replace(/[^\u4e00-\u9fa5a-z0-9\s]/g, ' ')
259
- .split(/\s+/)
260
- .filter(w => w.length >= 2);
261
- }
262
- // ═══════════════════════════════════════════════════════════
263
- // 子命令实现
264
- // ═══════════════════════════════════════════════════════════
265
- /** graph query — 自然语言查询 */
266
- async function graphQueryCommand(question, options) {
267
- await unifiedQuery(question, options);
268
- }
269
- /** graph render — 渲染 Mermaid 图表 */
270
- async function graphRenderCommand(filePath, options) {
271
- const cwd = process.cwd();
272
- const outputDir = options.output ? (0, path_1.join)(cwd, options.output) : undefined;
273
- // 模式1: 批量渲染 diagrams/ 目录下所有 .mmd
274
- if (options.all) {
275
- const diagramsDir = (0, path_1.join)(cwd, '.speccore', 'GLOBAL', 'diagrams');
276
- logger_1.logger.info(`\n🎨 批量渲染 Mermaid 图表: ${diagramsDir}\n`);
277
- const mmdResults = await (0, mermaid_render_1.renderAllMmdInDir)(diagramsDir, { outputDir });
278
- if (mmdResults.length === 0) {
279
- logger_1.logger.info(' 未找到 .mmd 文件');
280
- }
281
- else {
282
- logger_1.logger.info(`\n 共渲染 ${mmdResults.length} 个 .mmd 文件`);
283
- }
284
- return;
285
- }
286
- // 模式2: 从 Markdown 提取并渲染
287
- if (options.extract && filePath) {
288
- const fullPath = (0, path_1.isAbsolute)(filePath) ? filePath : (0, path_1.join)(cwd, filePath);
289
- logger_1.logger.info(`\n🎨 从 Markdown 提取 Mermaid: ${fullPath}\n`);
290
- const html = await (0, mermaid_render_1.renderFromMarkdown)(fullPath, { outputDir });
291
- if (html) {
292
- const outputName = (0, path_1.basename)(filePath, (0, path_1.extname)(filePath)) + '-diagrams.html';
293
- const outputPath = outputDir ? (0, path_1.join)(outputDir, outputName) : (0, path_1.join)((0, path_1.dirname)(fullPath), outputName);
294
- await (0, fs_extra_1.writeFile)(outputPath, html, 'utf-8');
295
- logger_1.logger.info(` ✓ 已生成: ${outputPath}`);
296
- }
297
- return;
298
- }
299
- // 模式3: 渲染单个 .mmd 文件
300
- if (filePath) {
301
- const fullPath = (0, path_1.isAbsolute)(filePath) ? filePath : (0, path_1.join)(cwd, filePath);
302
- logger_1.logger.info(`\n🎨 渲染 Mermaid: ${fullPath}\n`);
303
- const html = await (0, mermaid_render_1.renderMmdFile)(fullPath, { outputDir });
304
- if (html) {
305
- const outputName = (0, path_1.basename)(filePath, (0, path_1.extname)(filePath)) + '.html';
306
- const outputPath = outputDir ? (0, path_1.join)(outputDir, outputName) : (0, path_1.join)((0, path_1.dirname)(fullPath), outputName);
307
- await (0, fs_extra_1.writeFile)(outputPath, html, 'utf-8');
308
- logger_1.logger.info(` ✓ 已生成: ${outputPath}`);
309
- }
310
- return;
311
- }
312
- logger_1.logger.error('请提供文件路径,或使用 --all 批量渲染');
313
- logger_1.logger.info('用法:');
314
- logger_1.logger.info(' speccore graph render <file.mmd>');
315
- logger_1.logger.info(' speccore graph render --all');
316
- logger_1.logger.info(' speccore graph render --extract <file.md>');
317
- }
318
- /** graph entity — 查询特定实体 */
319
- async function graphEntityCommand(entityId, options) {
320
- const cwd = process.cwd();
321
- const type = options.type || 'all';
322
- logger_1.logger.info(`\n📍 实体详情: ${entityId}\n`);
323
- // 知识图谱
324
- if (type === 'all' || type === 'knowledge') {
325
- const kg = await (0, knowledge_graph_1.loadKnowledgeGraph)(cwd);
326
- if (kg && kg.entities[entityId]) {
327
- const e = kg.entities[entityId];
328
- logger_1.logger.info('📚 知识图谱实体:');
329
- logger_1.logger.info('─'.repeat(50));
330
- logger_1.logger.info(` ID: ${e.id}`);
331
- logger_1.logger.info(` 类型: ${e.type}`);
332
- logger_1.logger.info(` 标题: ${e.title}`);
333
- if (e.status)
334
- logger_1.logger.info(` 状态: ${e.status}`);
335
- if (e.platform)
336
- logger_1.logger.info(` 端: ${e.platform}`);
337
- if (e.tags?.length)
338
- logger_1.logger.info(` 标签: ${e.tags.join(', ')}`);
339
- if (e.semanticTags?.length)
340
- logger_1.logger.info(` 语义标签: ${e.semanticTags.join(', ')}`);
341
- if (e.businessRole)
342
- logger_1.logger.info(` 业务职责: ${e.businessRole}`);
343
- if (e.description)
344
- logger_1.logger.info(` 描述: ${e.description}`);
345
- if (e.file)
346
- logger_1.logger.info(` 文件: ${e.file}`);
347
- // 关联实体
348
- const related = getRelatedEntities(kg, entityId);
349
- if (related.length > 0) {
350
- logger_1.logger.info(`\n 🔗 关联实体 (${related.length} 个):`);
351
- for (const { entity, relation } of related) {
352
- const dir = relation.from === entityId ? '-->' : '<--';
353
- logger_1.logger.info(` ${dir} ${entity.id} [${relation.type}]`);
354
- }
355
- }
356
- logger_1.logger.info('');
357
- return;
358
- }
359
- }
360
- // 代码图谱
361
- if (type === 'all' || type === 'code') {
362
- const cg = await (0, code_graph_1.loadCodeGraph)(cwd);
363
- if (cg) {
364
- const result = (0, code_graph_1.explainNode)(cg, entityId);
365
- if (result.nodes.length > 0) {
366
- const target = result.nodes.find(n => n.id === entityId || n.name === entityId);
367
- logger_1.logger.info('💻 代码图谱节点:');
368
- logger_1.logger.info('─'.repeat(50));
369
- logger_1.logger.info(` 名称: ${target?.name || entityId}`);
370
- logger_1.logger.info(` 类型: ${target?.type}`);
371
- logger_1.logger.info(` 文件: ${target?.filePath}:${target?.line}`);
372
- if (target?.snippet)
373
- logger_1.logger.info(` 片段: ${target.snippet.slice(0, 150)}...`);
374
- logger_1.logger.info(` 度数: ${target?.degree || 'N/A'}`);
375
- logger_1.logger.info(` 社区: ${target?.community || 'N/A'}`);
376
- if (result.edges.length > 0) {
377
- logger_1.logger.info(`\n 🔗 连接 (${result.edges.length} 条):`);
378
- for (const edge of result.edges.slice(0, 15)) {
379
- const other = edge.source === target?.id
380
- ? result.nodes.find(n => n.id === edge.target)
381
- : result.nodes.find(n => n.id === edge.source);
382
- const dir = edge.source === target?.id ? '-->' : '<--';
383
- logger_1.logger.info(` ${dir} ${other?.name || '...'} [${edge.type}] (${edge.confidence})`);
384
- }
385
- }
386
- logger_1.logger.info('');
387
- return;
388
- }
389
- }
390
- }
391
- logger_1.logger.error(`未找到实体: ${entityId}`);
392
- logger_1.logger.info('提示: 使用 speccore graph query <关键词> 搜索实体 ID');
393
- }
394
- /** graph related — 查询关联实体 */
395
- async function graphRelatedCommand(entityId, options) {
396
- const cwd = process.cwd();
397
- const kg = await (0, knowledge_graph_1.loadKnowledgeGraph)(cwd);
398
- if (!kg || !kg.entities[entityId]) {
399
- logger_1.logger.error(`知识图谱中未找到实体: ${entityId}`);
400
- return;
401
- }
402
- const related = getRelatedEntities(kg, entityId);
403
- if (related.length === 0) {
404
- logger_1.logger.info(`实体 ${entityId} 没有关联实体`);
405
- return;
406
- }
407
- logger_1.logger.info(`\n🔗 ${entityId} 的关联实体 (${related.length} 个):\n`);
408
- // 按关系类型分组
409
- const byType = new Map();
410
- for (const item of related) {
411
- const list = byType.get(item.relation.type) || [];
412
- list.push(item);
413
- byType.set(item.relation.type, list);
414
- }
415
- for (const [relType, items] of byType) {
416
- logger_1.logger.info(` [${relType}] (${items.length} 个):`);
417
- for (const { entity } of items) {
418
- logger_1.logger.info(` • ${entity.id} — ${entity.title}`);
419
- if (entity.semanticTags?.length) {
420
- logger_1.logger.info(` 语义: ${entity.semanticTags.join(', ')}`);
421
- }
422
- }
423
- logger_1.logger.info('');
424
- }
425
- }
426
- /** graph stats — 图谱统计 */
427
- async function graphStatsCommand(options) {
428
- const cwd = process.cwd();
429
- const type = options.type || 'all';
430
- logger_1.logger.info('\n📊 知识图谱统计\n');
431
- logger_1.logger.info('─'.repeat(50));
432
- if (type === 'all' || type === 'knowledge') {
433
- const kg = await (0, knowledge_graph_1.loadKnowledgeGraph)(cwd);
434
- if (kg) {
435
- const entityCount = Object.keys(kg.entities).length;
436
- const withSemantic = Object.values(kg.entities).filter(e => e.semanticTags && e.semanticTags.length > 0).length;
437
- const withDesc = Object.values(kg.entities).filter(e => e.description).length;
438
- logger_1.logger.info('📚 知识图谱 (Knowledge Graph):');
439
- logger_1.logger.info(` 实体总数: ${entityCount}`);
440
- logger_1.logger.info(` 关系总数: ${kg.relations.length}`);
441
- logger_1.logger.info(` 迭代: ${kg.iteration}`);
442
- logger_1.logger.info(` 生成时间: ${kg.generated}`);
443
- logger_1.logger.info(` 需求: ${kg.stats.requirements}`);
444
- logger_1.logger.info(` 规格: ${kg.stats.specs}`);
445
- logger_1.logger.info(` 任务: ${kg.stats.tasks}`);
446
- logger_1.logger.info(` 子任务: ${kg.stats.subtasks}`);
447
- logger_1.logger.info(` 源码文件: ${kg.stats.sourceFiles}`);
448
- logger_1.logger.info(` 全局文档: ${kg.stats.globalDocs}`);
449
- logger_1.logger.info(` 业务模块: ${kg.stats.businessModules}`);
450
- logger_1.logger.info(` 含语义标签: ${withSemantic} (${Math.round(withSemantic / entityCount * 100)}%)`);
451
- logger_1.logger.info(` 含描述: ${withDesc} (${Math.round(withDesc / entityCount * 100)}%)`);
452
- }
453
- else {
454
- logger_1.logger.info('📚 知识图谱: 未构建 (运行 speccore knowledge)');
455
- }
456
- }
457
- if (type === 'all' || type === 'code') {
458
- const cg = await (0, code_graph_1.loadCodeGraph)(cwd);
459
- if (cg) {
460
- logger_1.logger.info('\n💻 代码图谱 (Code Graph):');
461
- logger_1.logger.info(` 节点总数: ${cg.metadata.totalNodes}`);
462
- logger_1.logger.info(` 边总数: ${cg.metadata.totalEdges}`);
463
- logger_1.logger.info(` 扫描文件: ${cg.metadata.scannedFiles}`);
464
- logger_1.logger.info(` 社区数: ${cg.communities.length}`);
465
- logger_1.logger.info(` God 节点: ${cg.godNodes.length}`);
466
- logger_1.logger.info(` 生成时间: ${cg.metadata.generatedAt}`);
467
- }
468
- else {
469
- logger_1.logger.info('\n💻 代码图谱: 未构建 (运行 speccore code-index --graph)');
470
- }
471
- }
472
- logger_1.logger.info('');
473
- }
474
- /** graph path — 查找两实体间路径 */
475
- async function graphPathCommand(from, to, options) {
476
- const cwd = process.cwd();
477
- const type = options.type || 'all';
478
- logger_1.logger.info(`\n🛤️ 路径查询: ${from} → ${to}\n`);
479
- // 优先查知识图谱
480
- if (type === 'all' || type === 'knowledge') {
481
- const kg = await (0, knowledge_graph_1.loadKnowledgeGraph)(cwd);
482
- if (kg) {
483
- const result = findKnowledgePath(kg, from, to);
484
- if (result) {
485
- logger_1.logger.info('📚 知识图谱路径:');
486
- logger_1.logger.info('─'.repeat(50));
487
- for (let i = 0; i < result.path.length; i++) {
488
- const entity = result.path[i];
489
- logger_1.logger.info(` ${i + 1}. ${entity.id} (${entity.type})`);
490
- logger_1.logger.info(` ${entity.title}`);
491
- if (i < result.path.length - 1) {
492
- const rel = result.relations[i];
493
- logger_1.logger.info(` [${rel.type}]${rel.metadata ? ` {${Object.entries(rel.metadata).map(([k, v]) => `${k}=${v}`).join(', ')}}` : ''}`);
494
- }
495
- }
496
- logger_1.logger.info(`\n 总步数: ${result.path.length - 1}\n`);
497
- return;
498
- }
499
- }
500
- }
501
- // 回退到代码图谱
502
- if (type === 'all' || type === 'code') {
503
- const cg = await (0, code_graph_1.loadCodeGraph)(cwd);
504
- if (cg) {
505
- const result = (0, code_graph_1.findPath)(cg, from, to);
506
- if (result.path && result.path.length > 0) {
507
- logger_1.logger.info('💻 代码图谱路径:');
508
- logger_1.logger.info('─'.repeat(50));
509
- for (let i = 0; i < result.path.length; i++) {
510
- const node = result.nodes.find(n => n.id === result.path[i]);
511
- logger_1.logger.info(` ${i + 1}. ${node?.name || result.path[i]} (${node?.type})`);
512
- if (i < result.path.length - 1 && result.edges[i]) {
513
- logger_1.logger.info(` [${result.edges[i].type}] (${result.edges[i].confidence})`);
514
- }
515
- }
516
- logger_1.logger.info(`\n 总步数: ${result.path.length - 1}\n`);
517
- return;
518
- }
519
- }
520
- }
521
- logger_1.logger.error(`未找到从 ${from} 到 ${to} 的路径`);
522
- }
523
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":";;AAkSA,8CAEC;AAGD,gDAwDC;AAGD,gDAwEC;AAGD,kDAmCC;AAGD,8CAiDC;AAGD,4CAmDC;AA1jBD;;;;;;;;;;GAUG;AACH,4CAAyC;AACzC,uCAAqC;AACrC,+BAAoE;AACpE,6DAKiC;AACjC,mDAAsF;AAEtF,2DAA+E;AAC/E,4DAAuH;AAUvH,8DAA8D;AAC9D,WAAW;AACX,8DAA8D;AAE9D,iCAAiC;AACjC,SAAS,uBAAuB,CAC9B,KAAqB,EACrB,QAAkB,EAClB,QAAgB,EAAE;IAElB,MAAM,OAAO,GAA6C,EAAE,CAAC;IAE7D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7L,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;YACjC,WAAW;YACX,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC7D,UAAU;iBACL,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC/D,kBAAkB;iBACb,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YACvF,kBAAkB;iBACb,IAAI,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YAC1E,OAAO;iBACF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;YACjE,SAAS;iBACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,sBAAsB;AACtB,SAAS,kBAAkB,CACzB,KAAqB,EACrB,QAAgB;IAEhB,MAAM,OAAO,GAAuD,EAAE,CAAC;IAEvE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0BAA0B;AAC1B,SAAS,iBAAiB,CACxB,KAAqB,EACrB,MAAc,EACd,IAAY,EACZ,WAAmB,CAAC;IAEpB,MAAM,KAAK,GAAiE;QAC1E,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;KACzD,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,SAAS;QAE7C,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACzD,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,MAA0B,CAAC;YAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;gBAAE,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;iBACxC,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;gBAAE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YAElD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,UAAU,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC;wBACT,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;wBACnC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8DAA8D;AAC9D,qBAAqB;AACrB,8DAA8D;AAE9D,eAAe;AACf,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,OAA0B;IAE1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,WAAW;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,eAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,GAAG,CAAC,CAAC;IACtC,eAAM,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;IAE5E,mBAAmB;IACnB,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,YAAY,GAA6D,EAAE,CAAC;IAEhF,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,IAAA,wCAAuB,EAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YAC9B,YAAY,GAAG;gBACb,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,SAAS,EAAE,SAAS,CAAC,SAAS;aAC/B,CAAC;YACF,eAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrH,IAAI,SAAS,CAAC,MAAM;gBAAE,eAAM,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,IAAI,SAAS,CAAC,SAAS;gBAAE,eAAM,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;YACX,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACxC,eAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,mBAAmB;IACnB,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,cAAc,GAAG,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAElF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;gBACvC,WAAW;gBACX,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACxF,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAY,EAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3F,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE5C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,UAAU,GAAG,IAAI,CAAC;oBAClB,eAAM,CAAC,IAAI,CAAC,cAAc,YAAY,CAAC,MAAM,aAAa,CAAC,CAAC;oBAC5D,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBACrF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzD,eAAM,CAAC,IAAI,CAAC,UAAU,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;wBACxH,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;wBACnD,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC1C,IAAI,IAAI;4BAAE,eAAM,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;wBAC5C,IAAI,QAAQ;4BAAE,eAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;wBACpD,IAAI,MAAM,CAAC,YAAY;4BAAE,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;wBAC1E,IAAI,MAAM;4BAAE,eAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;wBAClD,IAAI,MAAM,CAAC,IAAI;4BAAE,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC1D,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,UAAU,GAAG,IAAI,CAAC;gBAClB,eAAM,CAAC,IAAI,CAAC,cAAc,cAAc,CAAC,MAAM,QAAQ,CAAC,CAAC;gBACzD,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,eAAM,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrD,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;oBACnD,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC1C,IAAI,IAAI;wBAAE,eAAM,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;oBAC5C,IAAI,QAAQ;wBAAE,eAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;oBACpD,IAAI,MAAM,CAAC,YAAY;wBAAE,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC1E,IAAI,MAAM,CAAC,IAAI;wBAAE,eAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1D,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY;IACZ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,QAAQ,GAAG,IAAA,uBAAU,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,UAAU,GAAG,IAAI,CAAC;gBAClB,eAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;gBACzD,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;oBAClD,eAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;oBAChD,eAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;4BACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;4BACpC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;wBACjB,eAAM,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;oBACvC,CAAC;oBACD,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;gBACD,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;oBAClC,eAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,MAAM,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,eAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,eAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,eAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,cAAc;AACd,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,OAAO,QAAQ;SACZ,WAAW,EAAE;SACb,OAAO,CAAC,2BAA2B,EAAE,GAAG,CAAC;SACzC,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,8DAA8D;AAC9D,QAAQ;AACR,8DAA8D;AAE9D,2BAA2B;AACpB,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,OAA0B;IAClF,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,mCAAmC;AAC5B,KAAK,UAAU,kBAAkB,CACtC,QAA4B,EAC5B,OAA8D;IAE9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzE,iCAAiC;IACjC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjE,eAAM,CAAC,IAAI,CAAC,yBAAyB,WAAW,IAAI,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,MAAM,IAAA,kCAAiB,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACvE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,WAAW,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,iBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvE,eAAM,CAAC,IAAI,CAAC,+BAA+B,QAAQ,IAAI,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,IAAA,mCAAkB,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,GAAG,gBAAgB,CAAC;YAC5E,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;YACjG,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,eAAM,CAAC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,IAAA,iBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvE,eAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,IAAI,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,MAAM,IAAA,8BAAa,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,IAAA,eAAQ,EAAC,QAAQ,EAAE,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC;YACnE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;YACjG,MAAM,IAAA,oBAAS,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,eAAM,CAAC,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO;IACT,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,eAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAClD,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC7C,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;AAC7D,CAAC;AAED,4BAA4B;AACrB,KAAK,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAA0B;IACnF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,eAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,IAAI,CAAC,CAAC;IAExC,OAAO;IACP,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChC,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,MAAM;gBAAE,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,CAAC,QAAQ;gBAAE,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;gBAAE,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM;gBAAE,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,CAAC,YAAY;gBAAE,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,CAAC,WAAW;gBAAE,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,CAAC,IAAI;gBAAE,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAE5C,OAAO;YACP,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,eAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC;gBACnD,KAAK,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;oBAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;oBACvD,eAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;IACH,CAAC;IAED,OAAO;IACP,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAChF,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1B,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;gBAClD,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,QAAQ,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE,OAAO;oBAAE,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9E,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;gBACjD,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC,CAAC;gBAEpD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC;oBACtD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;wBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,EAAE;4BACtC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC;4BAC9C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;wBACjD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;wBACvD,eAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;gBACD,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;IACnC,eAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;AAC3D,CAAC;AAED,6BAA6B;AACtB,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAA0B;IACpF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,eAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,eAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,SAAS,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,QAAQ,QAAQ,WAAW,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;IAE/D,UAAU;IACV,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,eAAM,CAAC,IAAI,CAAC,OAAO,OAAO,MAAM,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC;QACpD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YAC/B,eAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;gBAChC,eAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,yBAAyB;AAClB,KAAK,UAAU,iBAAiB,CAAC,OAA0B;IAChE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7B,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACpD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAChH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAE9E,eAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,eAAM,CAAC,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;YACvC,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACtC,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/C,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5C,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/C,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;YACpD,eAAM,CAAC,IAAI,CAAC,aAAa,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5F,eAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACP,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAClD,eAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;YACpD,eAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,eAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,4BAA4B;AACrB,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,EAAU,EAAE,OAA0B;IACzF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IAEnC,eAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9C,UAAU;IACV,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,MAAM,EAAE,CAAC;gBACX,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1B,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9B,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC1D,eAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;oBACrC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBAChC,eAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxI,CAAC;gBACH,CAAC;gBACD,eAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;IACV,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,MAAM,GAAG,IAAA,qBAAQ,EAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,eAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC1B,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;oBAC5E,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClD,eAAM,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;oBACjF,CAAC;gBACH,CAAC;gBACD,eAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * handover - 生成交接文档命令
3
- * 汇总迭代关键信息、待办事项和风险点
4
- */
5
- export interface HandoverOptions {
6
- iteration?: string;
7
- output?: string;
8
- format?: string;
9
- }
10
- export declare function handoverCommand(options: HandoverOptions): Promise<void>;
11
- //# sourceMappingURL=handover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handover.d.ts","sourceRoot":"","sources":["../../src/commands/handover.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7E"}