speccore 6.97.0 → 7.1.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.
- package/.agents/agents/README.md +79 -0
- package/.agents/agents/spec-analyzer.md +41 -0
- package/.agents/agents/spec-architect.md +57 -0
- package/.agents/agents/spec-change-detector.md +55 -0
- package/.agents/agents/spec-clarifier.md +83 -0
- package/.agents/agents/spec-executor.md +41 -0
- package/.agents/agents/spec-gatekeeper.md +84 -0
- package/.agents/agents/spec-global-analyzer.md +111 -0
- package/.agents/agents/spec-knowledge-curator.md +54 -0
- package/.agents/agents/spec-reviewer.md +46 -0
- package/.agents/agents/spec-security-auditor.md +56 -0
- package/.agents/agents/spec-tester.md +120 -0
- package/README.md +25 -1
- package/dist/cli.js +55 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +179 -40
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/config.js +15 -4
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/graph.d.ts +25 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +523 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +229 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration-from-global.js +2 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +2 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +12 -5
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/code-graph/parser.d.ts.map +1 -1
- package/dist/core/code-graph/parser.js +21 -1
- package/dist/core/code-graph/parser.js.map +1 -1
- package/dist/core/graph-semantic.d.ts +51 -0
- package/dist/core/graph-semantic.d.ts.map +1 -0
- package/dist/core/graph-semantic.js +371 -0
- package/dist/core/graph-semantic.js.map +1 -0
- package/dist/core/incremental-analyzer.js +1 -1
- package/dist/core/incremental-analyzer.js.map +1 -1
- package/dist/core/knowledge-graph.d.ts +3 -0
- package/dist/core/knowledge-graph.d.ts.map +1 -1
- package/dist/core/knowledge-graph.js +190 -0
- package/dist/core/knowledge-graph.js.map +1 -1
- package/dist/core/platform-addition.js +3 -3
- package/dist/core/platform-addition.js.map +1 -1
- package/dist/core/rag-engine.d.ts +30 -0
- package/dist/core/rag-engine.d.ts.map +1 -1
- package/dist/core/rag-engine.js +78 -0
- package/dist/core/rag-engine.js.map +1 -1
- package/dist/utils/mermaid-render.d.ts +39 -0
- package/dist/utils/mermaid-render.d.ts.map +1 -0
- package/dist/utils/mermaid-render.js +284 -0
- package/dist/utils/mermaid-render.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface GraphQueryOptions {
|
|
2
|
+
iteration?: string;
|
|
3
|
+
type?: 'all' | 'knowledge' | 'code';
|
|
4
|
+
limit?: number;
|
|
5
|
+
/** v7.0.0+: 启用 LLM 语义增强(默认 true) */
|
|
6
|
+
smart?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** graph query — 自然语言查询 */
|
|
9
|
+
export declare function graphQueryCommand(question: string, options: GraphQueryOptions): Promise<void>;
|
|
10
|
+
/** graph render — 渲染 Mermaid 图表 */
|
|
11
|
+
export declare function graphRenderCommand(filePath: string | undefined, options: {
|
|
12
|
+
all?: boolean;
|
|
13
|
+
extract?: boolean;
|
|
14
|
+
output?: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
/** graph entity — 查询特定实体 */
|
|
17
|
+
export declare function graphEntityCommand(entityId: string, options: GraphQueryOptions): Promise<void>;
|
|
18
|
+
/** graph related — 查询关联实体 */
|
|
19
|
+
export declare function graphRelatedCommand(entityId: string, options: GraphQueryOptions): Promise<void>;
|
|
20
|
+
/** graph stats — 图谱统计 */
|
|
21
|
+
export declare function graphStatsCommand(options: GraphQueryOptions): Promise<void>;
|
|
22
|
+
/** graph path — 查找两实体间路径 */
|
|
23
|
+
export declare function graphPathCommand(from: string, to: string, options: GraphQueryOptions): Promise<void>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAyBA,UAAU,iBAAiB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAkQD,2BAA2B;AAC3B,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnG;AAED,mCAAmC;AACnC,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED,4BAA4B;AAC5B,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEpG;AAED,6BAA6B;AAC7B,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCrG;AAED,yBAAyB;AACzB,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDjF;AAED,4BAA4B;AAC5B,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD1G"}
|
|
@@ -0,0 +1,523 @@
|
|
|
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 = filePath.startsWith('/') ? 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 = filePath.startsWith('/') ? 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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -45,6 +45,14 @@ export declare function initSkillsDir(projectRoot: string): Promise<void>;
|
|
|
45
45
|
* v6.88.0+: 初始化 HOOKS 生命周期钩子
|
|
46
46
|
*/
|
|
47
47
|
export declare function initHooksDir(projectRoot: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* 同步 AGENTS.md — 将 .speccore/AGENTS/ 和 .speccore/RULES/ 下的规范投影到 AGENTS.md
|
|
50
|
+
*
|
|
51
|
+
* 文件名约定:
|
|
52
|
+
* - `*.inline.md` → 内容内联到 AGENTS.md
|
|
53
|
+
* - `*.md` → 只生成索引链接
|
|
54
|
+
*/
|
|
55
|
+
export declare function syncAgentsMd(projectRoot: string): Promise<void>;
|
|
48
56
|
/**
|
|
49
57
|
* 检查受保护文件是否需要升级提示。
|
|
50
58
|
* 文件已存在时不覆盖,但告诉用户模板有什么新变化。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,gBAAgB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAO,CAAC;AAOvE,yDAAyD;AACzD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7F;AAED,6BAA6B;AAC7B,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC1F;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrE;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,gBAAgB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAO,CAAC;AAOvE,yDAAyD;AACzD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7F;AAED,6BAA6B;AAC7B,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC1F;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrE;AAiwBD,eAAO,MAAM,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EA0BnD,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+IpG;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EACpC,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Ff;AA8FD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCtE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGrE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAatE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAarE;AAOD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4HrE;AAuID;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsI/F;AAGD,uBAAuB;AACvB,wBAAgB,uBAAuB,IAAI,MAAM,CA2ChD;AAED,uBAAuB;AACvB,wBAAgB,sBAAsB,IAAI,MAAM,CAuF/C"}
|